📄 example5_18.m
字号:
function [sol,eval]=f554(sol,options)
x(1:5)=sol(1:5);
y(1:5)=sol(6:10);
%传输次数矩阵
a=[0 572 1559 157 0;
15 0 26 0 2;
6 54 0 64 36;
0 14 37 0 38;
7 4 0 22 0];
%x方向尺寸向量
S=[3 1 1.5 1.5 0.8];
%y方向尺寸向量
L=[3 0.8 0.8 0.8 0.7];
%设备x,y在x方向上的最小间距
dxijmin=0.8;
%设备x,y在y方向上的最小间距
dyijmin=0.5;
%车间尺寸
H=5;
G=5;
for i=1:5
for j=1:5
delta1(i,j)=abs(x(i)-x(j))-(S(i)+S(j))/2-dxijmin;
delta2(i,j)=abs(y(i)-y(j))-(L(i)+L(j))/2-dyijmin;
%设备i,j之间的距离
d(i,j)=sqrt((x(i)-x(j)).^2+(y(i)-y(j)).^2);
end
end
%约束1
delta11=min(min(delta1));
%约束2
delta22=min(min(delta2));
summ1=0;
for i=1:4
summ1=summ1+abs(abs(x(i)-x(i+1))+(S(i)+S(i+1))/2);
end
%约束3
summ11=H-summ1;
summ2=0;
for i=1:4
summ2=summ2+abs(abs(y(i)-y(i+1))+(L(i)+L(i+1))/2);
end
%约束4
summ22=G-summ2;
if ((delta11>=0)&(delta22>=0)&(summ11>=0)&(summ22>=0))
fsum=0;
for i=1:5
for j=1:5
fsum=fsum+a(i,j)*d(i,j);
end
end
eval=fsum;
else
%惩罚项
eval=-500;
end
eval=-eval;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -