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 15:50:32 浏览: 140
exp2fit_lsqcurvefit_NOISE_exp2fit_
这是一段MATLAB代码,根据变量名和注释,这段代码应该是实现了一个双层解码方式来求解最大完工时间的问题。其中,pro_m表示工件加工顺序,mac_m表示每个工件每个工序选择的机器,N表示工件数量,H表示每个工件的工序数量,SH表示总的工序数量,e表示初始时间,finish表示每个工件每个工序的完成时间,mt表示每个机器的最大完成时间,s1表示当前工件加工的顺序,s2表示当前工件加工的次数,p表示每个工件完成的次数,mm表示每个工序对应的机器。
阅读全文