铁路行车组织之放射形专用线取送车顺序问题(自行设计MATLB代码)

关于该问题的原理参见中国大学mooc华东交通大学魏堂建老师的《铁路行车组织》课程

运行结果和书上的是一致的,多多指教

一,代码

A=input('请输入取送情况,第一列为专用线代号,第二列为取送走行时间,第三列为装车作业时间:');
[y, k]=max(A(:, 3));%找出装货时间最长并返回行数k,最大值y
B=perms(A(:,1));%将取车股道随机排列
[a,b]=size(B);
j=1;
%取车部分
for i=1:a
    if B(i,1)==A(k,1)
        A1(j,:)= B(i,:);%A1为取车路线情况
        j=j+1;     
    end    
end
%A2为时差
[a,b]=size(A1);
for i=1:a
    C=A;
    for j=1:b
        m=1;
        while m<=k
            if C(m,1)==A1(i,j)
                A2(i,j)= C(m,3)-sum(C(:,2)); 
                C(m,2)=0;
                break 
            end
            m=m+1;
        end
    end
end
A2(A2<0)=0;
%送车部分
for i=1:a
    n1=0;
    n2=0;
    D=A;
    [rind, r]=sort(A2(i,:));
    for j=1:b
        D(j,:)= A(A1(i,r(j)),:);
        r(1,j)=A1(i,r(j));
    end
    for m=1:b
        t1=rind(m)-n1-n2; %n1为行车时间,n2为装车的等待时间
        if t1<0
            t1=0;
        end
        n1=n1+D(m,2);
        n2=n2+t1;  
    end 
    T1(i,:)=[r, n2];   
end
T=[A1,T1]
            

二,结果

铁路行车组织之放射形专用线取送车顺序问题(自行设计MATLB代码)_第1张图片

 铁路行车组织之放射形专用线取送车顺序问题(自行设计MATLB代码)_第2张图片

铁路行车组织之放射形专用线取送车顺序问题(自行设计MATLB代码)_第3张图片

 

你可能感兴趣的:(铁路行车组织之放射形专用线取送车顺序问题(自行设计MATLB代码))