生产计划与控制实践大作业2.docx_第1页
生产计划与控制实践大作业2.docx_第2页
生产计划与控制实践大作业2.docx_第3页
生产计划与控制实践大作业2.docx_第4页
生产计划与控制实践大作业2.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

生产计划与控制实践大作业遗传算法求解车间作业调度问题课程名称: 生产计划与控制实践 报告题目: 遗传算法求解车间作业调度问题 指导老师: 高杰 组员姓名: 王佳昀、姚泽坤、方正 所在组号: 第 十 二 组 二0一 四 年 12 月 22 日1、问题回顾车间作业调度问题(1)ppt中例子(如下图所示)的求解编写matlab 遗传算法ga_jsp函数m文件代码(源代码较长)见附录之后在命令窗口调用ga_jsp函数求解的文件主程序编写如下:% 文件主体部分clc,clear %清除命令窗口,清除工作空间nind = 40; %种群所包含个体数目maxgen = 50; %最大遗传代数ggap = 0.9; %代沟p_cross = 0.8; %交叉率p_mutation = 0.6; %变异率jm=1 2 3;1 3 2;2 1 3;% 工序机器矩阵t=3 3 2;1 5 3;3 2 3;%加工时间矩阵makespan = ga_jsp(nind,maxgen,ggap,p_cross,p_mutation,jm,t);fprintf(最小加工流程时间为:n)disp(makespan)程序运行结果如下:最小加工流程时间为11,比课件图中给出的两种方案用时少,此方案更优图中201表示第二个工件的第一道工序,其余类推(2)公邮中txt文本 fisher and thompson 6x6 instance的求解采用与(1)相同的方法,输入工序机器矩阵jm和加工时间矩阵t即可求解其中:jm=3 1 2 4 6 5;2 3 5 6 1 4;3 4 6 1 2 5;2 1 3 4 5 6;3 2 5 6 1 4;2 4 6 1 5 3;% 工序机器矩阵t=1 3 6 7 3 6;8 5 10 10 10 4;5 4 8 9 1 7;5 5 5 3 8 9;9 3 5 4 3 1;3 3 9 10 4 1;%加工时间矩阵运行结果截图:附录1 matlab 遗传算法ga_jsp函数m文件的部分主要代码(由于代码较长,此处仅保留了主函数代码):function makespan = ga_jsp(nind,maxgen,ggap,p_cross,p_mutation,jm,t)% 程序功能说明%基于遗传算法的作业车间调度问题的求解程序(ga_jsp)%=输入变量= %nind :种群所包含个体的数目 %maxgen :最大遗传代数 %ggap :代沟 %p_cross :交叉概率 %p_mutation :变异概率 %jm :各工序的可选机器集合,为mn的元胞矩阵,m为机器数(工序),n为工件数 %t :加工时间矩阵 %=输出变量= %makespan :最小的最大完工时间% 主函数程序部分gen = 0; %迭代计数器jmnumber = max_cell(jm); %调用max_cell子函数求机器的数量pnumber,mnumber = size(jm); %pnumber为工件个数,mnumber为工序个数trace = zeros(2,maxgen); %寻优结果的初始值,一行存放各代的最优解,一行存放各代解的均值totalop_number = pnumber*mnumber; %工序总个数%(1)初始化number = zeros(1,pnumber); %number存放每个工件的工序数,pnumber工件个数for i = 1:pnumber number(i) = mnumber; %mnumber工序个数end%染色体个体编码:代码分为两层,第一层表示工序,第二层表示机器chrom = zeros(nind,2*totalop_number); %染色体的长度为2*totalop_numberfor j = 1:nind %逐代寻优 wpnumbertemp = number; for i = 1:totalop_number %随机产生工序 val = unidrnd(pnumber); while wpnumbertemp(val) = 0 val = unidrnd(pnumber); end %第一层代码表示工序 chrom(j,i) = val; wpnumbertemp(val) = wpnumbertemp(val)-1; %第二层代码表示机器 temp = jmval,mnumber-wpnumbertemp(val); sizetemp = length(temp); %随机产成工序机器 chrom(j,i+totalop_number) = unidrnd(sizetemp); endend%(2)计算目标函数值pval,objv,p,s = cal(chrom,jmnumber,t,jm); %调用子函数程序cal求个体适应度值%(3)循环寻找最优解while gen trace(1,gen) val1 = pval; val2 = p; minval = trace(1,gen); stemp = s; endend%(4)当前最佳值pval = val1; %工序时间p = val2; %工序 s = stemp; %调度基因含机器基因%(5)描绘解的变化figure(1) %打开绘制解/均值随迭代次数的变化情况的图形窗口plot(trace(1,:),b-); %最优解hold on;plot(trace(2,:),r-.); %解的均值grid on;xlabel(迭代次数);ylabel(适应度值(时间单位));legend(解的变化,种群均值的变化);title(解/均值随迭代次数的变化情况);makespan = min(trace(1,:); %整批工件的完工时间(最长流程加工时间)的最小值%(6)显示最优解figure(2); %打开绘制工件加工排序甘特图的图形窗口mp = s(1,pnumber*mnumber+1:pnumber*mnumber*2); %调出机器排序for i = 1:totalop_number val = p(1,i); a = (mod(val,100); %工序 b = (val-a)/100); %工件 temp = jmb,a; mtext = temp(mp(1,i); x1 = pval(1,i); %工序的开工时间 x2 = pval(2,i); %工序的完工时间 y1 = mtext-0.5; %0.5为甘特图矩形条的宽度,该数字可以更改 y2 = mtext; %用于绘制矩形条的高度 plotrec(x1,x2,mtext); %调用p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论