📄 16-多目标优化问题的理想有效解.m
字号:
% 圆柱螺旋弹簧的多目标优化设计
% 设计变量:簧丝直径x(1)=d,中径x(2)=D2,圈数x(3)=n
% 1----主程序(极小极大值函数fminimax)
% 设计变量的初始值
x0=[6.2;39;5];
% 设计变量的下限与上限
lb=[2.5;27.5;3];
ub=[9;51;6];
% 线性不等式约束(g6(x)-g11(x))中设计变量的系数矩阵(非零元素)
a=zeros(6,3);
a(1,1)=-1;
a(2,1)= 1;
a(3,1)=-1;a(3,2)=-1;
a(4,1)= 1;a(4,2)= 1;
a(5,3)=-1;
a(6,3)= 1;
% 线性不等式约束(g6(x)-g11(x))中的常数项列阵
b=[-2.5;9;-30;60;-3;6]';
% 没有等式约束,参数Aeq和beq定义为空矩阵符号“[ ]”
L=[0.9434 42.5514 1.709e-3];
% 多目标优化函数fminimax(调目标函数TH_dmbyh_fTS和非线性约束函数TH_dmbyh_gTS)
for i=1:4
H=[11*L(1)-i*L(1) 11.5*L(2)-i*L(2) 13.5*L(3)-i*L(3)];
[x,fn]=fminimax('TH_dmbyh_fTS',x0,a,b,[],[],lb,ub,'TH_dmbyh_gTS',[],L,H);
for j=1:3
ff(j)=fn(j)*(H(j)-L(j))+L(j); % 将各分目标函数还原成实际值
end
f1(i)=ff(1);f2(i)=ff(2);f3(i)=1./ff(3); % 将各分目标最优值赋给各数组
end
disp ' ******** 圆柱螺旋弹簧多目标优化设计最优解 ********'
fprintf (1,' 簧丝直径 x(1)* d = %3.4f mm \n',x(1))
fprintf (1,' 弹簧中径 x(2)* D2 = %3.4f mm \n',x(2))
fprintf (1,' 弹簧圈数 x(3)* n = %3.4f 圈 \n',x(3))
fprintf (1,' 弹簧结构重量 f1* W = %3.4f N \n',ff(1))
fprintf (1,' 弹簧自由高度 f2* H0 = %3.4f mm \n',ff(2))
fprintf (1,' 弹簧自振频率 f3* fr = %3.4f Hz \n',1/ff(3))
% 调用多维约束优化非线性约束函数(TH_dmbyh_gTS)计算最优点x*的性能约束函数值
g=TH_dmbyh_gTS(x,L,H);
disp ' ######## 最优点的性能约束函数值 ########'
fprintf (1,' 弹簧强度约束函数值 g1* = %3.4f \n',g(1))
fprintf (1,' 弹簧指数约束函数值 g2* = %3.4f \n',g(2))
fprintf (1,' 弹簧稳定性约束函数值 g3* = %3.4f \n',g(3))
fprintf (1,' 弹簧无共振约束函数值 g4* = %3.4f \n',g(4))
fprintf (1,' 弹簧刚度约束函数值 g5* = %3.4f \n',g(5))
disp ' ======== 最优点的边界约束函数值 ========'
fprintf (1,' 簧丝直径下限约束函数值 g6* = %3.4f \n',-b(1)-x(1))
fprintf (1,' 上限约束函数值 g7* = %3.4f \n',x(1)-b(2))
fprintf (1,' 弹簧外径下限约束函数值 g8* = %3.4f \n',-b(3)-x(2))
fprintf (1,' 上限约束函数值 g9* = %3.4f \n',x(2)-b(4))
fprintf (1,' 工作圈数下限约束函数值 g10* = %3.4f \n',-b(5)-x(3))
fprintf (1,' 上限约束函数值 g11* = %3.4f \n',x(3)-b(6))
% 描述多目标优化决策的极小极大值和理想平面
[fsort]=sort([f1;f2;f3]); % 对数组f1,f2,f3元素按升序进行排序
disp ' &&&&&&&& 多目标的极小极大值矩阵 &&&&&&&&'
disp (fsort)
subplot(1,2,1);
plot3([fsort(1,1)],[fsort(2,1)],[fsort(3,1)],'go');
hold on;
plot3([fsort(1,2)],[fsort(2,2)],[fsort(3,2)],'ro');
plot3([fsort(1,3)],[fsort(2,3)],[fsort(3,3)],'co');
plot3([fsort(1,4)],[fsort(2,4)],[fsort(3,4)],'b*');
grid;
title('多目标函数的极小极大值');
xlabel('结构重量 f1 (N)');
ylabel('自由高度 f2 (mm)');
zlabel('自振频率 f3 (Hz)');
rotate3d;
subplot(1,2,2);
plot3([ff(1),0,0],[0,ff(2),0],[0,0,1/ff(3)],'r*-');
grid;
title('多目标函数的理想平面')
xlabel('结构重量 f1 (N)');
ylabel('自由高度 f2 (mm)');
zlabel('自振频率 f3 (Hz)');
rotate3d; % 鼠标控制三维视角变化的函数
% 2----圆柱螺旋弹簧的多目标优化设计的目标函数(TH_dmbyh_fTS)
function [f]=TH_dmbyh_fTS(x,L,H);
% 钢的密度7.5e-6kg/mm^3;重力加速度9.80665m/s^2
p=7.5e-6;gl=9.80665;
% 对各分目标函数进行相同数量级的变换 ff=(f-L)/(H-L)
f1=p*gl*pi^2*x(1)^2*x(2)*(x(3)+1.8)/4; % 弹簧重量
f(1)=(f1-L(1))/(H(1)-L(1));
f2=x(1)*(x(3)+1.3)+18.25; % 弹簧自由高度
f(2)=(f2-L(2))/(H(2)-L(2));
f3=2.809e-6*x(2)^2*x(3)/x(1); % 弹簧自振频率的倒数
f(3)=(f3-L(3))/(H(3)-L(3));
% 3----圆柱螺旋弹簧的多目标优化设计的非线性不等式约束函数(TH_dmbyh_gTS)
function [g,ceq]=TH_dmbyh_gTS(x,L,H);
% 载荷F=680N;许用应力t=405MPa;工作频率fr=25;工作行程h=16.59
% 弹簧曲度系数K=1.6/C^0.14(当工作循环次数N>1e3时);稳定临界高径比HD=5.3
F=680;t=405;K=1.6;HD=5.3;fr=25;h=16.59;G=8e4;
g(1)=8*K*F/pi*x(2)^0.86/x(1)^2.86-t;
g(2)=6-x(2)/x(1);
g(3)=(x(3)+1.3)*x(1)+18.25-HD*x(2);
g(4)=10*fr-3.56e5*x(1)/x(2)^2/x(3);
g(5)=F-h*G/8*x(1)^4/x(2)^3/x(3);
ceq=[];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -