遗传算法多目标函数优化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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');
%画出网格
grid on;
多目标遗传算法优化
铣削正交试验结果
序
号
vc
(m/min)
fz
(mm/z)
ae
(mm)
ap
(mm)
F
(N)
Ra
(μm)
1
40
0.02
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.6945
7.6443
117.28
0.2673
-837.413
69.4951
0.0201
0.5936
2.0301
44.4569
0.1507
-133.923
程序如下
clear; clc;
%遗传算法直接求解多目标优化
D=8;
% Function handle to the fitness function
A = []; b = []; % No linear inequality constraints
Aeq = []; beq = []; % No linear equality constraints
%遗传算法设定约束
options = gaoptimset('ParetoFraction',0.3,'PopulationSize',200,'Generations',300,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
F=@(X)[10^(3.19)*(X(1).^(-0.0836)).*(X(2).^0.825).*(X(3).^Biblioteka Baidu.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)];
%开启一个新的图形
figure;
%画出Pareto4
plot3(fval(:,1),fval(:,2),fval(:,3),'m.');
%画出网格
grid on;
%设定横坐标
xlabel('F');
%设定纵坐标
ylabel('Ra');
%设定竖坐标
zlabel('Q');
%设定题目
title('Pareto front 4');
ap
F
Ra
Q
69.4951
0.0201
0.5936
2.0301
44.4569
0.1507
-133.923
77.7604
0.08
0.8004
7.7189
298.8056
0.3241
-3058.34
69.8432
0.0429
0.7923
7.316
175.0653
0.2827
-1383.01
70.213
0.0282
%重新设定遗传算法
options = gaoptimset('ParetoFraction',0.3,'PopulationSize',5,'Generations',1000,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
%开启一个新的图形
figure;
%画出Pareto2
plot(fval(:,1),fval(:,2),'mp');
%画出网格
grid on;
%设定横坐标
xlabel('F');
%设定纵坐标
ylabel('Q');
%设定题目
title('Pareto front 2');
% the data of Pareto3
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.建立切削力和表面粗糙度模型
如: (1)
此模型你们来拟合(上面有实验数据,剩下的两个方程已经是我帮你们拟合好的了)(2)
%画出网格
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);
(3)
变量约束范围:
公式(1)和(2)值越小越好,公式(3)值越大越好。π=3.14 D=8
2.请将多目标优化操作过程录像(同时考虑三个方程,优化出最优的自变量数值),方便我后续进行修改;将能保存的所有图片及源文件发给我;将最优解多组发给我,类似于下图(黄色部分为达到的要求)
遗传算法的结果
vc
fz
ae
%设定横坐标
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);
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
% 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');
%遗传算法求解
[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')
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
[x,fval] = gamultiobj(FUN,nvars,A,b,Aeq,beq,lb,ub,options);
%开启一个新的图形
figure;
%画出Pareto3
plot(fval(:,1),fval(:,2),'mp');
%画出网格
grid on;
多目标遗传算法优化
铣削正交试验结果
序
号
vc
(m/min)
fz
(mm/z)
ae
(mm)
ap
(mm)
F
(N)
Ra
(μm)
1
40
0.02
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.6945
7.6443
117.28
0.2673
-837.413
69.4951
0.0201
0.5936
2.0301
44.4569
0.1507
-133.923
程序如下
clear; clc;
%遗传算法直接求解多目标优化
D=8;
% Function handle to the fitness function
A = []; b = []; % No linear inequality constraints
Aeq = []; beq = []; % No linear equality constraints
%遗传算法设定约束
options = gaoptimset('ParetoFraction',0.3,'PopulationSize',200,'Generations',300,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
F=@(X)[10^(3.19)*(X(1).^(-0.0836)).*(X(2).^0.825).*(X(3).^Biblioteka Baidu.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)];
%开启一个新的图形
figure;
%画出Pareto4
plot3(fval(:,1),fval(:,2),fval(:,3),'m.');
%画出网格
grid on;
%设定横坐标
xlabel('F');
%设定纵坐标
ylabel('Ra');
%设定竖坐标
zlabel('Q');
%设定题目
title('Pareto front 4');
ap
F
Ra
Q
69.4951
0.0201
0.5936
2.0301
44.4569
0.1507
-133.923
77.7604
0.08
0.8004
7.7189
298.8056
0.3241
-3058.34
69.8432
0.0429
0.7923
7.316
175.0653
0.2827
-1383.01
70.213
0.0282
%重新设定遗传算法
options = gaoptimset('ParetoFraction',0.3,'PopulationSize',5,'Generations',1000,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
%开启一个新的图形
figure;
%画出Pareto2
plot(fval(:,1),fval(:,2),'mp');
%画出网格
grid on;
%设定横坐标
xlabel('F');
%设定纵坐标
ylabel('Q');
%设定题目
title('Pareto front 2');
% the data of Pareto3
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.建立切削力和表面粗糙度模型
如: (1)
此模型你们来拟合(上面有实验数据,剩下的两个方程已经是我帮你们拟合好的了)(2)
%画出网格
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);
(3)
变量约束范围:
公式(1)和(2)值越小越好,公式(3)值越大越好。π=3.14 D=8
2.请将多目标优化操作过程录像(同时考虑三个方程,优化出最优的自变量数值),方便我后续进行修改;将能保存的所有图片及源文件发给我;将最优解多组发给我,类似于下图(黄色部分为达到的要求)
遗传算法的结果
vc
fz
ae
%设定横坐标
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);
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
% 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');
%遗传算法求解
[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')
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