for i=1:SH p(s1(i))=p(s1(i))+1;%记录过程是否加工完成 完成一次加一 s2(i)=p(s1(i));%记录加工过程中,工件的次数 end
时间: 2024-03-04 21:50:51 浏览: 15
这也是MATLAB语言的代码。该代码使用了一个循环结构,循环次数为SH。在每次循环中,将p(s1(i))的值加1,其中s1是一个长度为SH的向量,p是一个长度为N的向量,N为元素个数。同时,将p(s1(i))的值赋值给s2(i)。这个代码片段的作用是记录加工过程中工件的次数,并且判断工件是否已经加工完成。
相关问题
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
这段代码的作用是将一个生产过程中的产品按照顺序进行加工,并记录每个产品加工的次数。
具体来说,这段代码的输入为一个生产过程的产品序列 pro_m,其中 pro_m(i) 表示第 i 个产品的编号。输出为一个记录每个产品加工次数的向量 s2,其中 s2(i) 表示第 i 个产品加工的次数。同时,代码中使用向量 p 记录每个产品是否加工完成,其中 p(i) 表示编号为 i 的产品是否加工完成,如果完成则 p(i) 的值加 1。
具体实现方法是,通过循环遍历生产过程中的每一个产品 i,将 p(s1(i)) 的值加 1,表示编号为 s1(i) 的产品已经加工完成了一次。同时,将 s2(i) 的值设置为 p(s1(i)),表示编号为 s1(i) 的产品已经加工了 s2(i) 次。
需要注意的是,这段代码中的常量 SH 和 N 没有给出具体的定义,可能需要根据上下文进行推断。
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
这是一段MATLAB代码,根据变量名和注释,这段代码应该是实现了一个双层解码方式来求解最大完工时间的问题。其中,pro_m表示工件加工顺序,mac_m表示每个工件每个工序选择的机器,N表示工件数量,H表示每个工件的工序数量,SH表示总的工序数量,e表示初始时间,finish表示每个工件每个工序的完成时间,mt表示每个机器的最大完成时间,s1表示当前工件加工的顺序,s2表示当前工件加工的次数,p表示每个工件完成的次数,mm表示每个工序对应的机器。