基于遗传算法的车间布局优化MATLAB源码.doc

上传人:b**** 文档编号:14733529 上传时间:2023-06-26 格式:DOC 页数:5 大小:44KB
下载 相关 举报
基于遗传算法的车间布局优化MATLAB源码.doc_第1页
第1页 / 共5页
基于遗传算法的车间布局优化MATLAB源码.doc_第2页
第2页 / 共5页
基于遗传算法的车间布局优化MATLAB源码.doc_第3页
第3页 / 共5页
基于遗传算法的车间布局优化MATLAB源码.doc_第4页
第4页 / 共5页
基于遗传算法的车间布局优化MATLAB源码.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于遗传算法的车间布局优化MATLAB源码.doc

《基于遗传算法的车间布局优化MATLAB源码.doc》由会员分享,可在线阅读,更多相关《基于遗传算法的车间布局优化MATLAB源码.doc(5页珍藏版)》请在冰点文库上搜索。

基于遗传算法的车间布局优化MATLAB源码.doc

基于遗传算法的车间布局优化MATLAB源码

车间布局优化是将加工设备、物料输送设备、工作单元和通道走廊等布置物体合理地放置在一个有限的生产车间内的过程。

车间布局优化模型是一个含有较为复杂约束的非线性连续优化模型,可以使用遗传算法进行优化。

%%车间布局遗传禁忌搜索算法仿真主界面

%%第一步:

设置问题实例

Li=[38;16;30;40;48;32;46];%车间长度

Wi=[28;36;16;18;24;28;16];%车间宽度

%每单位距离每单位物流量的物料搬运费用

P=[

0,2,3,2,5,4,4;

0,0,5,2,2,3,4;

0,0,0,1,5,4,3;

0,0,0,0,1,5,1;

0,0,0,0,0,4,5;

0,0,0,0,0,0,1;

0,0,0,0,0,0,0

];

%物料搬运的频率

F=[

0,2,2,1,0,2,1;

0,0,2,1,1,2,2;

0,0,0,2,1,2,1;

0,0,0,0,2,1,2;

0,0,0,0,0,2,1;

0,0,0,0,0,0,1;

0,0,0,0,0,0,0

];

%物流量

Q=[

0,10,6,8,4,6,1;

0,0,3,2,5,4,4;

0,0,0,6,8,6,5;

0,0,0,0,5,8,1;

0,0,0,0,0,8,1;

0,0,0,0,0,0,5;

0,0,0,0,0,0,0

];

%物料搬运速率

V=[

0,4,4,4,4,4,4;

0,0,2,2,2,2,2;

0,0,0,2,2,2,2;

0,0,0,0,3,3,3;

0,0,0,0,0,3,3;

0,0,0,0,0,0,2;

0,0,0,0,0,0,0

];

L=200;%矩形区域的长度,x轴

W=120;%矩形区域的宽度,y轴

minDX=10;%各车间的最小水平间距

minDY=10;%各车间的最小垂直间距

minDS=10;%各车间到区域边界的最小距离

%%

pop_size=400;

max_gen=500;

Pm=0.3;

kc=0.5;

kt=0.5;

PLambda=1000;

PK=1000;

n=size(P,1);

LB=zeros(2*n,1);

UB=zeros(2*n,1);

fori=1:

n

LB(2*i-1)=0.5*Li(i)+minDS;

LB(2*i)=0.5*Wi(i)+minDS;

UB(2*i-1)=L-0.5*Li(i)-minDS;

UB(2*i)=W-0.5*Wi(i)-minDS;

end

%%调用遗传算法

figure(3)

[BESTX,BESTY,ALLX,ALLY]=GAUCP2(max_gen,pop_size,Pm,LB,UB,L,W,Li,Wi,P,F,Q,V,minDX,minDY,kc,kt,PLambda,PK);

X=BESTX{max_gen};

disp('遗传算法输出的最优结果为');

disp(X);

figure(4)

PlotFigure(X,Li,Wi,L,W);

function[BESTX,BESTY,ALLX,ALLY]=GAUCP2(K,N,Pm,LB,UB,PL,PW,PLi,PWi,PP,PF,PQ,PV,PminDX,PminDY,Pkc,Pkt,PLambda,PK)

%%此函数实现遗传算法,用于车间布局优化

%%输入参数列表

%K迭代次数

%N种群规模,要求是偶数

%Pm变异概率

%LB决策变量的下界,M×1的向量

%UB决策变量的上界,M×1的向量

%%输出参数列表

%BESTXK×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体

%BESTYK×1矩阵,记录每一代的最优个体的评价函数值

%ALLXK×1细胞结构,每一个元素是M×N矩阵,记录全部个体

%ALLYK×N矩阵,记录全部个体的评价函数值

%%第一步:

M=length(LB);%决策变量的个数

%种群初始化,每一列是一个样本

farm=zeros(M,N);

fori=1:

M

x=unifrnd(LB(i),UB(i),1,N);

farm(i,:

)=x;

end

%输出变量初始化

ALLX=cell(K,1);%细胞结构,每一个元素是M×N矩阵,记录每一代的个体

ALLY=zeros(K,N);%K×N矩阵,记录每一代评价函数值

BESTX=cell(K,1);%细胞结构,每一个元素是M×1向量,记录每一代的最优个体

BESTY=zeros(K,1);%K×1矩阵,记录每一代的最优个体的评价函数值

k=1;%迭代计数器初始化

%%第二步:

迭代过程

whilek<=K

%%以下是交叉过程

newfarm=zeros(M,2*N);

Ser=randperm(N);%两两随机配对的配对表

A=farm(:

Ser

(1));

B=farm(:

Ser

(2));

P0=unidrnd(M-1);

a=[A(1:

P0,:

);B((P0+1):

end,:

)];%产生子代a

b=[B(1:

P0,:

);A((P0+1):

end,:

)];%产生子代b

newfarm(:

2*N-1)=a;%加入子代种群

newfarm(:

2*N)=b;

fori=1:

(N-1)

A=farm(:

Ser(i));

B=farm(:

Ser(i+1));

P0=unidrnd(M-1);

a=[A(1:

P0,:

);B((P0+1):

end,:

)];

b=[B(1:

P0,:

);A((P0+1):

end,:

)];

newfarm(:

2*i-1)=a;

newfarm(:

2*i)=b;

end

FARM=[farm,newfarm];

%%选择复制

SER=randperm(3*N);

FITNESS=zeros(1,3*N);

fitness=zeros(1,N);

fori=1:

(3*N)

Beta=FARM(:

i);

SE=FIT(Beta,PL,PW,PLi,PWi,PP,PF,PQ,PV,PminDX,PminDY,Pkc,Pkt,PLambda,PK);

FITNESS(i)=SE;

end

fori=1:

N

f1=FITNESS(SER(3*i-2));

f2=FITNESS(SER(3*i-1));

f3=FITNESS(SER(3*i));

iff1<=f2&&f1<=f3

farm(:

i)=FARM(:

SER(3*i-2));

fitness(:

i)=FITNESS(:

SER(3*i-2));

elseiff2<=f1&&f2<=f3

farm(:

i)=FARM(:

SER(3*i-1));

fitness(:

i)=FITNESS(:

SER(3*i-1));

else

farm(:

i)=FARM(:

SER(3*i));

fitness(:

i)=FITNESS(:

SER(3*i));

end

end

%%记录最佳个体和收敛曲线

X=farm;

Y=fitness;

ALLX{k}=X;

ALLY(k,:

)=Y;

minY=min(Y);

pos=find(Y==minY);

BESTX{k}=X(:

pos

(1));

BESTY(k)=minY;

%%变异

fori=1:

N

ifPm>rand&&pos

(1)~=i

AA=farm(:

i);

BB=GaussMutation(AA,LB,UB);

forj=1:

M

BB(j,1)=unifrnd(LB(j),UB(j),1,1);

end

farm(:

i)=BB;

end

end

disp(k);

k=k+1;

end

%%绘图

BESTY2=BESTY;

BESTX2=BESTX;

fork=1:

K

TempY=BESTY(1:

k);

minTempY=min(TempY);

posY=find(TempY==minTempY);

BESTY2(k)=minTempY;

BESTX2{k}=BESTX{posY

(1)};

end

BESTY=BESTY2;

BESTX=BESTX2;

MeanBESTY=mean(ALLY');

plot(-BESTY,'-ks','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',1)

holdon

plot(-MeanBESTY,'-ro','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',1)

ylabel('Fitness');

xlabel('Iterations');

legend('BestFitness','AverageFitness','FontName','TimesNewRoman','FontSize',10)

gridon

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2