关于该问题的原理参见中国大学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=