www.gusucode.com > 《MATLAB智能算法30个案例》分析源代码 > 《MATLAB智能算法30个案例》分析源代码/code/chapter11/caltime.m

    function PVal=caltime(S,P,JmNumber,T,Jm)

% 功能说明:    根据调度工序,计算出调度工序时间
% 输入参数:
%        P     为调度工序  
%        JmNumber    为机器个数
%        T     为各工件各工序的加工时间 
%        Jm    为各工件各工序使用的机器 
% 输出参数:
%        PVal  为调度工序开始加工时间及完成时间


%  工件个数 工序个数 
[PNumber MNumber]=size(Jm);

%取机器基因,取基因的一半
 M=S(1,PNumber*MNumber+1:PNumber*MNumber*2); 
 
%工序总个数
WNumber=length(P);

%初始化
TM=zeros(1,JmNumber);
TP=zeros(1,PNumber);
PVal=zeros(2,WNumber);

%计算调度工序时间
for i=1: WNumber 
    
    % 取机器号
    val= P(1,i);
    a=(mod(val,100)); %工序
    b=((val-a)/100);  %工件
    Temp=Jm{b,a};
    m=Temp(M(1,i));
    
    %取加工时间
    Temp=T{b,a};
    t=Temp(M(1,i));
    
    %取机器加工本工序的开始时间和前面一道工序的完成时间
    TMval=TM(1,m);
    TPval=TP(1,b); 
    
    %机器加工本工序的开始时间 大于前面一道工序的完成时 ,取机器加工本工序的开始时间
    if TMval>TPval 
        val=TMval;
     %取前面一道工序的完成时间  
    else
        val=TPval;
    end
    
    %计算时间
    PVal(1,i)=val;
    PVal(2,i)=val+t;
    
    %记录本次工序的机器时间和工序时间
    TM(1,m)=PVal(2,i);
    TP(1,b)=PVal(2,i); 
end