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

📄 matlab遗传算法在车间布局优化中的应用.txt

📁 MATLAB绘制出权值wv和阀值bv确定的误差曲面
💻 TXT
字号:
遗传算法在车间布局优化中的应用2007/06/02 23:39车间大小(5m*5m),放置5台设备,工件在各设备间的传输次数表如下
     m1    m2    m3    m4    m5
m1   0     572   1559 157   0
m2   15    0     26    0     2
m3   6     54    0     64    36
m4   0     14    37    0     38
m5   7     4     0     22    0

设备的尺寸表如下
m1       m2       m3       m4       m5
3*3      1*0.8   1.5*0.8 1.5*0.8 0.8*0.7

dxij=0.8 dyij=0.5

分析
车间设备布局最优设计应使得各设备间的运输距离最短,即
另外,各设备在车间中均需占有一定面积,设备间还需要为操作人员留有一定的活动空间,因此在车间设备布局设计中还需要考虑一些约束条件.
间距约束:设备间应保持一定的间距,即
边界约束:设备在X,Y方向的布置不应超过车间的长度尺寸,即
分别表示车间在X,Y方向上的宽度











h,g

遗传算法参数设置:选择实数编码,种群中的个体数目为10,最大代数为100,交叉概率为0.9,变异概率为0.04

适应值函数如下
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;

求解过程如下
%维数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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -