ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:24.50KB ,
资源ID:15220794      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15220794.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(流水线车间生产调度的遗传算法MATLAB源代码Word格式文档下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

流水线车间生产调度的遗传算法MATLAB源代码Word格式文档下载.docx

1、% Y1p 最优方案中,各工件各工序的开始时刻,可根据它绘出甘特图% Y2p 最优方案中,各工件各工序的结束时刻,可根据它绘出甘特图% Y3p 最优方案中,各工件各工序使用的机器编号% Xp 最优决策变量的值,决策变量是一个实数编码的mn矩阵% LC1 收敛曲线1,各代最优个体适应值的记录% LC2 收敛曲线2,各代群体平均适应值的记录% 最后,程序还将绘出三副图片:两条收敛曲线图和甘特图(各工件的调度时序图)%第一步:变量初始化m,n=size(T);%m是总工件数,n是总工序数Xp=zeros(m,n);%最优决策变量LC1=zeros(1,M);%收敛曲线1LC2=zeros(1,N);

2、%收敛曲线2%第二步:随机产生初始种群farm=cell(1,N);%采用细胞结构存储种群for k=1:N X=zeros(m,n); for j=1:n for i=1:m X(i,j)=1+(P(j)-eps)*rand; end end farmk=X;endcounter=0;%设置迭代计数器while counterM%停止条件为达到最大迭代次数 %第三步:交叉 newfarm=cell(1,N);%交叉产生的新种群存在其中 Ser=randperm(N); for i=1:2:(N-1) A=farmSer(i);%父代个体 Manner=unidrnd(2);%随机选择交叉方式

3、 if Manner=1 cp=unidrnd(m-1);%随机选择交叉点 %双亲双子单点交叉 a=A(1:cp,:);B(cp+1):m,:);%子代个体 b=B(1:A(cp+1): else cp=unidrnd(n-1); b=B(:,1:cp),A(:,(cp+1):n); newfarmi=a;%交叉后的子代存入newfarm newfarmi+1=b; %新旧种群合并 FARM=farm,newfarm; %第四步:选择复制 FITNESS=zeros(1,2*N); fitness=zeros(1,N); plotif=0;(2*N) X=FARMi; Z=COST(X,T,P

4、,plotif);%调用计算费用的子函数 FITNESS(i)=Z; %选择复制采取两两随机配对竞争的方式,具有保留最优个体的能力 Ser=randperm(2*N); f2=FITNESS(Ser(2*i); if f1rand;%变异概率为Pm X=farmi; I=unidrnd(m); J=unidrnd(n); X(I,J)=1+(P(J)-eps)*rand; farmi=X; farmpos(1)=Xp; counter=counter+1%输出结果并绘图figure(1);plotif=1;X=Xp;Zp,Y1p,Y2p,Y3p=COST(X,T,P,plotif);figur

5、e(2);plot(LC1);figure(3);plot(LC2);function Zp,Y1p,Y2p,Y3p=COST(X,T,P,plotif)% JSPGA的内联子函数,用于求调度方案的Makespan值% X 调度方案的编码矩阵,是一个实数编码的m% plotif 是否绘甘特图的控制参数% Y1p 最优方案中,各工件各工序的开始时刻% Y2p 最优方案中,各工件各工序的结束时刻m,n=size(X);Y1p=zeros(m,n);Y2p=zeros(m,n);Y3p=zeros(m,n);计算第一道工序的安排Q1=zeros(m,1);Q2=zeros(m,1);R=X(:,1)

6、;%取出第一道工序Q3=floor(R);%向下取整即得到各工件在第一道工序使用的机器的编号%下面计算各工件第一道工序的开始时刻和结束时刻for i=1:P(1)%取出机器编号 pos=find(Q3=i);%取出使用编号为i的机器为其加工的工件的编号 lenpos=length(pos); if lenpos=1 Q1(pos(1)=0; if lenpos=2 for j=2:lenpos Q1(pos(j)=Q2(pos(j-1); Q2(pos(j)=Q2(pos(j-1)+T(pos(j),1); endY1p(:,1)=Q1;Y3p(:,1)=Q3;%第三步:计算剩余工序的安排fo

7、r k=2: R=X(:,k);%取出第k道工序 Q3=floor(R);%向下取整即得到各工件在第k道工序使用的机器的编号 %下面计算各工件第k道工序的开始时刻和结束时刻P(k)%取出机器编号 pos=find(Q3=i); lenpos=length(pos); EndTime=Y2p(pos,k-1);%取出这些机器在上一个工序中的结束时刻 POS=zeros(1,lenpos);%上一个工序完成时间由早到晚的排序 for jj=1: POS(jj)=ppp(1); EndTime(ppp(1)=Inf; end %根据上一个工序完成时刻的早晚,计算各工件第k道工序的开始时刻和结束时刻 Q1(pos(POS(1)=Y2p(pos(POS(1),k-1); Q2(pos(POS(1)=Q1(pos(POS(1)+T(pos(POS(1),k);%前一个工件的结束时刻 if lenpos for j=2: Q1(pos(POS(j)=Y2p(pos(POS(j),k-1);%预定的开始时刻为上一个工序的结束时刻 if Q1(pos(POS(j)Q2(pos(POS(j-1)%如果比前面的工件的结束时刻还早 Q1(pos(POS(j)=Q2(pos(POS(j-1); end end Y1p(:,k)=Q1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1