多目标遗传算法优化
铣削正交试验结果
序
号
v c
(m/min)
f z
(mm/z)
a e
(mm)
a p
(mm)
F
(N)
Ra
(μm)
1 40 0.0
2 0.25 4 46.
3 0.174
2 40 0.04 0.5 6 59.7 0.211
3 40 0.06 0.75 8 106.5 0.288
4 40 0.08 1.0 10 123.0 0.348
5 60 0.02 0.25 8 99.3 0.252
6 60 0.04 0.5 10 134.0 0.302
7 60 0.06 1.0 4 139.7 0.238
8 60 0.08 0.75 6 130.4 0.276
9 80 0.02 0.75 10 255.8 0.298
10 80 0.04 1.0 8 255.8 0.288
11 80 0.06 0.25 6 110.4 0.259
12 80 0.08 0.5 4 140.8 0.258
13 100 0.02 1.0 6 314.2 0.240
14 100 0.04 0.75 4 233.4 0.239
15 100 0.06 0.5 10 278.6 0.330
16 100 0.08 0.25 8 144.7 0.328
说明:
1.建立切削力和表面粗糙度模型
如: 3.190.08360.8250.5640.454
10c e p
z
F v f a a
-
=(1)
a R=此模型你们来拟合(上面有实验数据,剩下的两个方程已经是我帮你们拟合好的了)(2)
10002/
c z p e
Q v f a a D
π
=-⋅⋅⋅⋅(3)变量约束范围:
40100
0.020.08
0.25 1.0
210
c
z
e
p
v
f
a
a
≤≤
⎧
⎪≤≤
⎪
⎨≤≤
⎪
⎪≤≤
⎩
公式(1)和(2)值越小越好,公式(3)值越大越好。
π=3.14 D=8
2.请将多目标优化操作过程录像(同时考虑三个方程,优化出最优的自变量数值),方便我后续进行修改;将能保存的所有图片及源文件发给我;将最优解多组发给我,类似于下图(黄色部分为达到的要求)
遗传算法的结果:
程序如下:
clear; clc;
% 遗传算法直接求解多目标优化
D=8;
% Function handle to the fitness function
F=(X)[10^(3.19)*(X(1).^(-0.0836)).*(X(2).^0.825).*(X(3).^0.564).*(X(4).^0.454)]; Ra=(X)[10^(-0.92146)*(X(1).^0.14365).*(X(2).^0.16065).*(X(3).^0.047691).*(X(4).^0. 38457)];
Q=(X)[-1000*2*X(1).*X(2).*X(3).*X(4)/(pi*D)];
nvars = 4; % Number of decision variables
lb = [40, 0.02,0.25, 2]; % Lower bound
ub = [100,0.08, 1.0,10]; % Upper bound
A = []; b = []; % No linear inequality constraints
Aeq = []; beq = []; % No linear equality constraints
% 遗传算法设定约束
gaoptimset('ParetoFraction',0.3,'PopulationSize',200,'Generations',300,'StallGenLimi t',200,'TolFun',1e-100,'PlotFcns',gaplotpareto);
% the data of Pareto1
FUN=(X)[F(X);Ra(X)];
[x,fval] = gamultiobj(FUN,nvars,A,b,Aeq,beq,lb,ub,options);
% 开启一个新的图形
figure;
% 画出Pareto1
plot(fval(:,1),fval(:,2),'mp');
% 画出网格
grid on;
% 设定横坐标
xlabel('F');
% 设定纵坐标
ylabel('Ra');
% 设定题目
title('Pareto front 1');
% the data of Pareto2
FUN=(X)[F(X);Q(X)];
[x,fval] = gamultiobj(FUN,nvars,A,b,Aeq,beq,lb,ub,options);
% 开启一个新的图形
figure;
% 画出Pareto2
plot(fval(:,1),fval(:,2),'mp');
% 画出网格
grid on;
% 设定横坐标
xlabel('F');
% 设定纵坐标
ylabel('Q');
% 设定题目
title('Pareto front 2');
% the data of Pareto3
FUN=(X)[Ra(X);Q(X)];
[x,fval] = gamultiobj(FUN,nvars,A,b,Aeq,beq,lb,ub,options);
% 开启一个新的图形
figure;
% 画出Pareto3
plot(fval(:,1),fval(:,2),'mp');
% 画出网格
% 设定横坐标
xlabel('Ra');
% 设定纵坐标
ylabel('Q');
% 设定题目
title('Pareto front 3');
% the data of Pareto (F,Ra,Q)
FUN=(X)[F(X);Ra(X);Q(X)];
[x,fval] = gamultiobj(FUN,nvars,A,b,Aeq,beq,lb,ub,options);
% 开启一个新的图形
figure;
% 画出Pareto4
plot3(fval(:,1),fval(:,2),fval(:,3),'m.');
% 画出网格
grid on;
% 设定横坐标
xlabel('F');
% 设定纵坐标
ylabel('Ra');
% 设定竖坐标
zlabel('Q');
% 设定题目
title('Pareto front 4');
% 重新设定遗传算法
options =
gaoptimset('ParetoFraction',0.3,'PopulationSize',5,'Generations',1000,'StallGenLimit' ,200,'TolFun',1e-100,'PlotFcns',gaplotpareto);
% 遗传算法求解
[x,fval] = gamultiobj(FUN,nvars,A,b,Aeq,beq,lb,ub,options);
% 显示结果
format shortg
xfval=[x,fval]
% 保存结果到Excel
xfval=round(xfval*10000)/10000;
xlswrite('data.xlsx',xfval,'sheet1','A1')。