function [fit1,fit2]=fit(pro_m,mac_m)%采用传统的双层解码方式 求最大完工时间makespan 表示最后一个完成工序的时间 global N H SH TM time; e=[0 0 0]; finish={}; for i=1:N%初始化完成时间矩阵 for j=1:H(i) finish{i,j}=e; end end mt=cell(1,N); for i=1:N%初始化机器最大完成时间数组 mt{i}=e; end s1=pro_m; s2=zeros(1,SH); p=zeros(1,N); for i=1:SH p(s1(i))=p(s1(i))+1;%记录过程是否加工完成 完成一次加一 s2(i)=p(s1(i));%记录加工过程中,工件的次数 end for i=1:SH t1=s1(i);%记录到当前是那个工件 t2=s2(i);%记录当前工件是加工到第几次 mm(i)=mac_m(1,sum(H(1,1:t1-1))+t2);%提取该工序该次加工的机器选择,因为机器码的排列表示该工件第几次加工所选的机器,是一段表示一个工件 end
时间: 2024-03-04 12:50:32 浏览: 144
这是一段MATLAB代码,根据变量名和注释,这段代码应该是实现了一个双层解码方式来求解最大完工时间的问题。其中,pro_m表示工件加工顺序,mac_m表示每个工件每个工序选择的机器,N表示工件数量,H表示每个工件的工序数量,SH表示总的工序数量,e表示初始时间,finish表示每个工件每个工序的完成时间,mt表示每个机器的最大完成时间,s1表示当前工件加工的顺序,s2表示当前工件加工的次数,p表示每个工件完成的次数,mm表示每个工序对应的机器。
相关问题
function draw(pro_m,mac_m)%采用传统的双层解码方式 求最大完工时间makespan 表示最后一个完成工序的时间 global N H SH TM time; e=[0 0 0]; O_Font='Bookman Old Style'; n_Font='Times New Roman'; number_size=8; O_size=9; dot_size=6; O_up=2.2; dot_up=1.8;
这段代码是一个 MATLAB 函数,用于绘制车间调度问题的甘特图。其中,pro_m 和 mac_m 分别表示生产任务矩阵和机器任务矩阵,N 和 H 分别表示生产任务数和机器数,SH 和 TM 分别表示生产任务的开始时间和完成时间,time 表示总的生产时间。
具体解码方式是双层解码,通过计算每个任务在每台机器上的完成时间,选择最早完成的时间作为任务的完成时间。最终求得的 makespan 表示最后一个完成工序的时间。
函数中定义了一些绘图相关的参数,如字体、字号、线条大小等,用于美化甘特图的显示效果。
需要注意的是,这段代码只是绘图部分,需要先通过其他算法求解车间调度问题的最优解,然后将最优解传入该函数进行绘图。
function [fit1,fit2,fit3]=fitDFJSP(p_chrom,m_chrom,f_chrom)
这是一个函数的定义,输入参数为三个染色体(p_chrom,m_chrom,f_chrom),输出为三个适应度值(fit1,fit2,fit3)。该函数可能是用于求解DFJSP(Dynamic Flexible Job Shop Scheduling Problem)的适应度函数。DFJSP是一种动态的、柔性的作业车间调度问题,需要考虑不同作业和机器之间的关系以及调度过程中的不确定性因素。
阅读全文