⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example5_18.m

📁 MATLAB7辅助控制系统设计与仿真 第5章
💻 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 + -