遗传算法多目标函数优化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多目标遗传算法优化
铣削正交试验结果
序
号
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.4 54)];
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
% 遗传算法设定约束
options =
gaoptimset('ParetoFraction',0.3,'PopulationSize',200,'Generations',300,'Sta llGenLimit',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');