还剩6页未读,继续阅读
文本内容:
车间作业调度问题(JSP)的遗传算法通用MATLAB源代码车间作业调度问题(JSP)是一类满意任务配置和依次约束要求的资源安排问题,是最难的组合优化问题之一下面的MATLAB源代码可用于求解标准JSP问题,虽然采纳的是最一般的遗传算法,但在编解码环节,采纳了非常奇妙的设计,可以大幅提高搜寻效率function[S_bestT_minLC]=JSPGA(MNPcPmQW)%%车间作业调度问题遗传算法%GreenSim团队专业级算法设计代写程序%欢迎访问GreenSim团队主页/greensim%%输入参数列表%M遗传算法进化代数%N种群规模%Pc交叉概率%Pm变异概率%Q机器序号矩阵%W操作时间矩阵%%输出参数列表%S_best最优调度方案,mXl的细胞结构,每个细胞单元为LaX2的矩阵%Tmin最优调度方案对应的最短调度时间%%第一步参数初始化[nk]=sizeQ;%n为工件总数k为工序总数m=maxmaxQ;%m为机器总数S_best=cellm1;T_min=inf;LC二zeros1M;%%其次步产生初始种群farm=InitPopNQWnkm;%调用产生初始种群的子函数counter=0;%设置迭代计数器whilecounterVM%停止条件为达到最大迭代次数%%第三步交叉FARM=CrossfarmPcm;%调用交叉子函数%%第四步变异FARM=MutateFARMPmm;%调用变异子函数%%第五步修正算子FARM二ModifyFARMQWnk;%调用修正子函数%%第六步计算适应值FITNESS=FitFARM;%调用计算适应值的子函数%%第七步选择复制[farmfitness]=SelectFARMFITNESS;%调用选择复制子函数%%第八步记录和更新[S_bestT_minLC]=UpdataS_bestT_minLCfarmfitnesscounter;%记录和更新子函数counter=counter+l;dispcounter;endfunctionFARM=CrossfarmPcm%%子函数交叉子函数%%输入参数列表%farm交叉操作之前的种群%Pc交叉概率%Q机器序号矩阵,nXk的矩阵%W操作时间矩阵,nXk的矩阵%n工件总数%k工序总数%m机器总数%%输出参数列表%FARM输出种群N=sizefarm2;newfarm=cellm2*N;SER=randpermN;A=farm:1;B=farm:N;pos=unidrndm-1;AA=[A1:pos:;Bpos+l:end:];BB=[B1:pos:;Apos+1:end:];newfarm:1=AA;newfarm:2=BB;fori=1:N-lA=farm:SERi;B=farm:SERi+l;pos=unidrndm-1;AA=[A1:pos:;Bpos+l:end:];BB=[B1:pos:;Apos+l:end:];newfarm:2*i+l=AA;newfarm:2*i+2=BB;endfori=1:2*NifPcrandA=newfarm:i;forj=l:mAj=A{j};L=sizeAj2;ifL2pos=unidrndL-2+1;Bj=[Aj:1Aj pos+1:endAj:2:pos];A{j}=Bj;endendnewfarm:i=A;endendFARM=[farmnewfarm];functionFARM二MutateFARMPmm%%子函数变异子函数%%输入参数列表%FARM交叉操作之后新旧种群的合并种群%Pm变异概率%%输出参数列表%FARM输出种群NN=sizeFARM2;fori=l:NNifPmrandA=FARM:i;forj=l:mAj=A{j};L=sizeAj2;ifL2pos=randpermL-l+1;posl=pos1;pos2=pos2;temp=Aj:posl;Aj:posl=Aj:pos2;Aj:pos2=temp;A{j}=Aj;endendFARM:i=A;endend%GreenSim团队一一专业级算法设计代写程序%欢迎访问GreenSim团队主页/greensim%%子函数记录和更新子函数%%输入参数列表%S_best最优调度方案,nXl的细胞结构,每个细胞单元为LaX2的矩阵%T_min最优调度方案对应的最短调度时间%LC历史最优适应值收敛曲线%farm种群%fitness种群的适应值%counter计数器%%输出参数列表%S_best最优调度方案,mXl的细胞结构,每个细胞单元为LaX2的矩阵%T_min最优调度方案对应的最短调度时间%LC历史最优适应值收敛曲线minfitness=minfitness;pos=findfitness==minfitness;POS=pos1;ifminfitness=T_minT_min=minfitness;S_best=farm:POS;endLCcounter+1=T_min;源代码运行结果展示。