example5_19.m

来自「MATLAB7辅助控制系统设计与仿真 第5章」· M 代码 · 共 61 行

M
61
字号
%维数n=5
%车间尺寸
H=5;
G=5;
%x方向尺寸向量
S=[3 1 1.5 1.5 0.8];
smin=min(S)/2;
%y方向尺寸向量
L=[3 0.8 0.8 0.8 0.7];
lmin=min(L)/2;
%设备x,y在x方向上的最小间距
dxijmin=0.8;
%设备x,y在y方向上的最小间距
dyijmin=0.5;
%设置参数边界
bounds =[smin H;smin H;smin H;smin H;smin H;
lmin G;lmin G;lmin G;lmin G;lmin G];
% 生成初始种群,大小为10,且满足约束条件
flag=0;
while flag<11
  init=initializega(1,bounds,'f554');
  x(1:5)=init(1:5);
  y(1:5)=init(6:10);
  
  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;    
      end
  end
  
  %约束1
  delta11=min(min(delta1));
  %约束2
  delta22=min(min(delta2));
  
  summ1=0;
  for i=1:4
    summ1=summ1+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(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))
    flag=flag+1;
    initPop(flag,:)=init;
  else
    continue;
  end
end
% 调用遗传函数
[p endPop bpop trace] = ga(bounds,'f554',[],initPop,[1e-5 1 1],'maxGenTerm',100,…
'normGeomSelect',[0.08],['arithXover'], [20], 'nonUnifMutation',[2 1 3]);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?