?? matlab遺傳算法在車間布局優(yōu)化中的應用.txt
字號:
遺傳算法在車間布局優(yōu)化中的應用2007/06/02 23:39車間大小(5m*5m),放置5臺設備,工件在各設備間的傳輸次數(shù)表如下
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
分析
車間設備布局最優(yōu)設計應使得各設備間的運輸距離最短,即
另外,各設備在車間中均需占有一定面積,設備間還需要為操作人員留有一定的活動空間,因此在車間設備布局設計中還需要考慮一些約束條件.
間距約束:設備間應保持一定的間距,即
邊界約束:設備在X,Y方向的布置不應超過車間的長度尺寸,即
分別表示車間在X,Y方向上的寬度
h,g
遺傳算法參數(shù)設置:選擇實數(shù)編碼,種群中的個體數(shù)目為10,最大代數(shù)為100,交叉概率為0.9,變異概率為0.04
適應值函數(shù)如下
function [sol,eval]=f554(sol,options)
x(1:5)=sol(1:5);
y(1:5)=sol(6:10);
%傳輸次數(shù)矩陣
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;
求解過程如下
%維數(shù)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;
%設置參數(shù)邊界
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
% 調(diào)用遺傳函數(shù)
[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 + -