列车运行图MATLAB程序(19页).doc
-%第一个%设6:42时间为0时刻,转换如下。a1=6 7 7 7 7 7 7 8 8 9 9 9 9 9 10 10 10 10 10 10 11 11 12 12 12 12 13 13 14 14 15 15 15 16 16 16 16 17 17 17 17 18 18 18 18 19 20 21;b1=42 0 10 22 33 40 52 15 30 12 17 22 27 40 5 10 15 28 45 50 33 43 7 13 34 43 5 18 25 43 6 40 45 0 18 35 57 3 19 32 37 2 12 36 42 22 47 6;c1=7*ones(1,length(a1);d1=60*(a1-c1)+b1+18;e1=7 7 7 8 8 8 8 8 9 9 9 10 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 14 15 15 15 16 16 16 16 17 17 18 18 18 18 18 19 19 19 20 21 21;f1=23 41 58 3 15 28 37 56 11 53 58 10 15 21 46 51 3 9 26 31 14 24 48 54 15 24 46 15 6 24 47 21 26 48 59 23 38 0 7 13 18 43 0 17 30 17 35 47;g=7*ones(1,length(a1);h1=60*(e1-g)+f1+18;%输入经历时间,求众数,得到一个差值矩阵f。x1=414148414248454141414148484141414841414141414141414141574141414141484148415748414141484148554841'v1=mode(x1)j1=x1-v1;disp(j1)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n1=(j1+abs(j1)/2;m1=j1;m1(find(j1>0)=0;%选取可行列车z1=zeros(1,d1(end)-d1(1)+1);%(或zeros(1,d(end)-d(1))y11=d1(1):1:d1(end);for k=1:length(x1)-1for i=1:d1(end)-d1(1)+1 if d1(k+1)-y11(i)+m1(k+1)>=5 && y11(i)-d1(k)-n1(k)>=5; z1(i)=y11(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l1=zeros(1,length(d1)+50);t1=zeros(1,d1(end)-d1(1)+1);for i=1:d1(end)-d1(1) if z1(i)+1=z1(i+1) k=k+1;end if z1(i)>z1(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d1(end)-d1(1)+1 g=d1(end)-d1(1)+1; end l1(g)=z1(g); end k=1;endendl1(find(l1=0)=;%找到l中0的位置,并令其为空,即删除w1=l1+v1;y13=0.1*ones(1,length(l1);y14=41*ones(1,length(w1);for i=1:length(l1) plot(l1(i),w1(i),y13(i),y14(i);hold onendy11=0.1*ones(1,length(d1);y12=41*ones(1,length(h1);for i=1:length(d1)plot(d1(i),h1(i),y11(i),y12(i);hold onend %第二个%设6:42时间为0时刻,转换如下。a2=8 8 8 10 10 10 11 13 14 15 16 19 20;b2=6 44 58 0 24 53 16 32 23 58 28 19 19;c2=7*ones(1,length(a2);d2=60*(a2-c2)+b2+18;e2=8 9 9 10 10 11 11 13 14 16 16 19 20;f2=24 4 16 18 42 11 34 50 43 16 46 37 37;g=7*ones(1,length(a2);h1=60*(e2-g)+f2+18;%输入经历时间,求众数,得到一个差值矩阵f。x2=18201818181818182018181818'v2=mode(x2)j2=x2-v2;disp(j2)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n2=(j2+abs(j2)/2;m2=j2;m2(find(j2>0)=0;%选取可行列车z2=zeros(1,d2(end)-d2(1)+1);%(或zeros(1,d(end)-d(1))y21=d2(1):1:d2(end);for k=1:length(x2)-1for i=1:d2(end)-d2(1)+1 if d2(k+1)-y21(i)+m2(k+1)>=5 && y21(i)-d2(k)-n2(k)>=5; z2(i)=y21(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l2=zeros(1,length(d2)+50);t2=zeros(1,d2(end)-d2(1)+1);for i=1:d2(end)-d2(1) if z2(i)+1=z2(i+1) k=k+1;end if z2(i)>z2(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d2(end)-d2(1)+1 g=d2(end)-d2(1)+1; end l2(g)=z2(g); end k=1;endendl2(find(l2=0)=;%找到l中0的位置,并令其为空,即删除w2=l2+v2;y23=41*ones(1,length(l2);y24=59*ones(1,length(w2);for i=1:length(l2) plot(l2(i),w2(i),y23(i),y24(i);hold onendy21=41*ones(1,length(d2);y22=59*ones(1,length(h1);for i=1:length(d2)plot(d2(i),h1(i),y21(i),y22(i);hold onend%第三个%设6:42时间为0时刻,转换如下。a3=7 8 9 9 10 10 11 11 12 13 14 15 16 16 17 18 19 19 19 20;b3=50 26 6 18 20 50 13 36 56 52 52 51 28 48 26 10 10 39 58 39;c3=7*ones(1,length(a3);d3=60*(a3-c3)+b3+18;e3=8 8 9 9 10 11 11 11 13 14 15 16 16 17 17 18 19 20 20 21;f3=13 49 31 41 43 13 36 59 19 15 16 21 51 11 49 33 33 2 21 2;g=7*ones(1,length(a3);h3=60*(e3-g)+f3+18;%输入经历时间,求众数,得到一个差值矩阵f。x3=2323252323222323232324302322232323232323'v3=mode(x3)j3=x3-v3;disp(j3)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n3=(j3+abs(j3)/2;m3=j3;m3(find(j3>0)=0;%选取可行列车z3=zeros(1,d3(end)-d3(1)+1);%(或zeros(1,d(end)-d(1))y31=d3(1):1:d3(end);for k=1:length(x3)-1for i=1:d3(end)-d3(1)+1 if d3(k+1)-y31(i)+m3(k+1)>=5 && y31(i)-d3(k)-n3(k)>=5; z3(i)=y31(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l3=zeros(1,length(d3)+50);t3=zeros(1,d3(end)-d3(1)+1);for i=1:d3(end)-d3(1) if z3(i)+1=z3(i+1) k=k+1;end if z3(i)>z3(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d3(end)-d3(1)+1 g=d3(end)-d3(1)+1; end l3(g)=z3(g); end k=1;endendl3(find(l3=0)=;%找到l中0的位置,并令其为空,即删除w3=l3+v3;y33=59*ones(1,length(l3);y34=82*ones(1,length(w3);for i=1:length(l3) plot(l3(i),w3(i),y33(i),y34(i);hold onendy31=59*ones(1,length(d3);y32=82*ones(1,length(h3);for i=1:length(d3)plot(d3(i),h3(i),y31(i),y32(i);hold onend %第四个%设6:42时间为0时刻,转换如下。a4=7 8 8 8 8 8 9 9 9 10 10 11 11 11 13 13 13 13 15 15 16 16 16 18 18 19 20 20;b4=0 0 21 28 48 57 9 15 25 51 59 16 39 57 21 32 42 56 7 47 5 24 54 4 36 42 9 39;c4=7*ones(1,length(a4);d4=60*(a4-c4)+b4+18;e4=7 8 8 8 9 9 9 9 10 11 11 11 12 12 13 14 14 14 15 16 16 16 17 18 19 20 20 21;f4=27 27 49 56 16 32 37 42 0 19 27 44 15 25 49 0 10 24 35 15 33 59 29 31 4 10 37 7;g=7*ones(1,length(a4);h4=60*(e4-g)+f4+18;%输入经历时间,求众数,得到一个差值矩阵f。x4=27272828283528273528282836282828282828282835352728282828'v4=mode(x4)j4=x4-v4;disp(j4)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n4=(j4+abs(j4)/2;m4=j4;m4(find(j4>0)=0;%选取可行列车z4=zeros(1,d4(end)-d4(1)+1);%(或zeros(1,d(end)-d(1))y41=d4(1):1:d4(end);for k=1:length(x4)-1for i=1:d4(end)-d4(1)+1 if d4(k+1)-y41(i)+m4(k+1)>=5 && y41(i)-d4(k)-n4(k)>=5; z4(i)=y41(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l4=zeros(1,length(d4)+50);t4=zeros(1,d4(end)-d4(1)+1);for i=1:d4(end)-d4(1) if z4(i)+1=z4(i+1) k=k+1;end if z4(i)>z4(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d4(end)-d4(1)+1 g=d4(end)-d4(1)+1; end l4(g)=z4(g); end k=1;endendl4(find(l4=0)=;%找到l中0的位置,并令其为空,即删除w4=l4+v4;y43=82*ones(1,length(l4);y44=110*ones(1,length(w4);for i=1:length(l4) plot(l4(i),w4(i),y43(i),y44(i);hold onendy41=82*ones(1,length(d4);y42=110*ones(1,length(h4);for i=1:length(d4)plot(d4(i),h4(i),y41(i),y42(i);hold onend %第五个 %设6:42时间为0时刻,转换如下。a5=7 8 8 9 9 9 10 11 12 14 14 15 16 16 17 18;b5=29 29 51 19 39 44 2 21 18 19 34 39 17 35 45 33;c5=7*ones(1,length(a5);d5=60*(a5-c5)+b5+18;e5=7 8 9 9 9 10 10 11 12 14 14 15 16 16 18 18;f5=45 45 7 35 55 0 18 37 34 35 50 55 33 51 1 49;g=7*ones(1,length(a5);h5=60*(e5-g)+f5+18;%输入经历时间,求众数,得到一个差值矩阵f。x5=16161616161616161616161616161616'v5=mode(x5)j5=x5-v5;disp(j5)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n5=(j5+abs(j5)/2;m5=j5;m5(find(j5>0)=0;%选取可行列车z5=zeros(1,d5(end)-d5(1)+1);%(或zeros(1,d(end)-d(1))y51=d5(1):1:d5(end);for k=1:length(x5)-1for i=1:d5(end)-d5(1)+1 if d5(k+1)-y51(i)+m5(k+1)>=5 && y51(i)-d5(k)-n5(k)>=5; z5(i)=y51(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l5=zeros(1,length(d5)+50);t5=zeros(1,d5(end)-d5(1)+1);for i=1:d5(end)-d5(1) if z5(i)+1=z5(i+1) k=k+1;end if z5(i)>z5(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d5(end)-d5(1)+1 g=d5(end)-d5(1)+1; end l5(g)=z5(g); end k=1;endendl5(find(l5=0)=;%找到l中0的位置,并令其为空,即删除w5=l5+v5;y53=110*ones(1,length(l5);y54=126*ones(1,length(w5);for i=1:length(l5) plot(l5(i),w5(i),y53(i),y54(i);hold onendy51=110*ones(1,length(d5);y52=126*ones(1,length(h5);for i=1:length(d5)plot(d5(i),h5(i),y51(i),y52(i);hold onend %第六个%设6:42时间为0时刻,转换如下。a6=8 9 10 10 11 13 13 14 15 15 16 16 17 18 18 18 19 19 19;b6=58 16 2 46 3 23 47 53 16 58 41 53 30 3 11 34 30 40 56;c6=7*ones(1,length(a6);d6=60*(a6-c6)+b6+18;e6=9 9 10 11 11 13 14 15 15 16 16 17 17 18 18 18 19 19 20;f6=15 33 20 3 20 40 4 10 33 15 58 10 47 20 28 51 47 57 13;g=7*ones(1,length(a6);h6=60*(e6-g)+f6+18;%输入经历时间,求众数,得到一个差值矩阵f。x6=17171817171717171717171717171717171717'v6=mode(x6)j6=x6-v6;disp(j6)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n6=(j6+abs(j6)/2;m6=j6;m6(find(j6>0)=0;%选取可行列车z6=zeros(1,d6(end)-d6(1)+1);%(或zeros(1,d(end)-d(1))y61=d6(1):1:d6(end);for k=1:length(x6)-1for i=1:d6(end)-d6(1)+1 if d6(k+1)-y61(i)+m6(k+1)>=5 && y61(i)-d6(k)-n6(k)>=5; z6(i)=y61(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l6=zeros(1,length(d6)+50);t6=zeros(1,d6(end)-d6(1)+1);for i=1:d6(end)-d6(1) if z6(i)+1=z6(i+1) k=k+1;end if z6(i)>z6(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d6(end)-d6(1)+1 g=d6(end)-d6(1)+1; end l6(g)=z6(g); end k=1;endendl6(find(l6=0)=;%找到l中0的位置,并令其为空,即删除w6=l6+v6;y63=126*ones(1,length(l6);y64=143*ones(1,length(w6);for i=1:length(l6) plot(l6(i),w6(i),y63(i),y64(i);hold onendy61=126*ones(1,length(d6);y62=143*ones(1,length(h6);for i=1:length(d6)plot(d6(i),h6(i),y61(i),y62(i);hold onend%第七个%设6:42时间为0时刻,转换如下。a7=9 11 12 13 14 14 15 17 18 19 21;b7=17 5 16 42 6 21 13 12 22 36 40;c7=7*ones(1,length(a7);d7=60*(a7-c7)+b7+18;e7=9 11 12 13 14 14 15 17 18 19 21;f7=32 20 31 57 21 36 27 27 37 51 55;g=7*ones(1,length(a7);h7=60*(e7-g)+f7+18;%输入经历时间,求众数,得到一个差值矩阵f。x7=1515151515151515151515'v7=mode(x7)j7=x7-v7;disp(j7)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n7=(j7+abs(j7)/2;m7=j7;m7(find(j7>0)=0;%选取可行列车z7=zeros(1,d7(end)-d7(1)+1);%(或zeros(1,d(end)-d(1))y71=d7(1):1:d7(end);for k=1:length(x7)-1for i=1:d7(end)-d7(1)+1 if d7(k+1)-y71(i)+m7(k+1)>=5 && y71(i)-d7(k)-n7(k)>=5; z7(i)=y71(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l7=zeros(1,length(d7)+50);t7=zeros(1,d7(end)-d7(1)+1);for i=1:d7(end)-d7(1) if z7(i)+1=z7(i+1) k=k+1;end if z7(i)>z7(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d7(end)-d7(1)+1 g=d7(end)-d7(1)+1; end l7(g)=z7(g); end k=1;endendl7(find(l7=0)=;%找到l中0的位置,并令其为空,即删除w7=l7+v7;y73=143*ones(1,length(l7);y74=158*ones(1,length(w7);for i=1:length(l7) plot(l7(i),w7(i),y73(i),y74(i);hold onendy71=143*ones(1,length(d7);y72=158*ones(1,length(h7);for i=1:length(d7)plot(d7(i),h7(i),y71(i),y72(i);hold onend %第八个%设6:42时间为0时刻,转换如下。a8=9 10 11 12 14 14 18 19 19 20 21;b8=16 49 6 17 23 38 50 40 53 52 21;c8=7*ones(1,length(a8);d8=60*(a8-c8)+b8+18;e8=9 11 11 12 14 14 19 19 20 21 21;f8=32 5 22 33 39 54 6 56 9 8 37;g=7*ones(1,length(a8);h8=60*(e8-g)+f8+18;%输入经历时间,求众数,得到一个差值矩阵f。x8=1616161616161616161616'v8=mode(x8)j8=x8-v8;disp(j8)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n8=(j8+abs(j8)/2;m8=j8;m8(find(j8>0)=0;%选取可行列车z8=zeros(1,d8(end)-d8(1)+1);%(或zeros(1,d(end)-d(1))y81=d8(1):1:d8(end);for k=1:length(x8)-1for i=1:d8(end)-d8(1)+1 if d8(k+1)-y81(i)+m8(k+1)>=5 && y81(i)-d8(k)-n8(k)>=5; z8(i)=y81(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l8=zeros(1,length(d8)+50);t8=zeros(1,d8(end)-d8(1)+1);for i=1:d8(end)-d8(1) if z8(i)+1=z8(i+1) k=k+1;end if z8(i)>z8(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d8(end)-d8(1)+1 g=d8(end)-d8(1)+1; end l8(g)=z8(g); end k=1;endendl8(find(l8=0)=;%找到l中0的位置,并令其为空,即删除w8=l8+v8;y83=158*ones(1,length(l8);y84=174*ones(1,length(w8);for i=1:length(l8) plot(l8(i),w8(i),y83(i),y84(i);hold onendy81=158*ones(1,length(d8);y82=174*ones(1,length(h8);for i=1:length(d8)plot(d8(i),h8(i),y81(i),y82(i);hold onend %第九个%设6:42时间为0时刻,转换如下。a9=9 10 11 11 11 12 12 14 15 16 17 17 18 18 19 19 19 19 20 20 20 20 21 21 21 22;b9=34 49 17 24 52 30 35 41 27 48 28 59 17 58 3 8 21 58 11 17 27 43 10 21 39 19;c9=7*ones(1,length(a9);d9=60*(a9-c9)+b9+18;e9=9 11 11 12 12 12 12 15 15 17 17 18 18 19 19 19 19 20 20 20 20 21 21 21 22 23;f9=55 11 38 7 15 51 56 2 48 9 49 20 38 19 24 29 43 19 32 38 48 5 31 42 0 1;g=7*ones(1,length(a9);h9=60*(e9-g)+f9+18;%输入经历时间,求众数,得到一个差值矩阵f。x9=2122214323212121212121212121212122212121212221212142'v9=mode(x9)j9=x9-v9;disp(j9)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。n9=(j9+abs(j9)/2;m9=j9;m9(find(j9>0)=0;%选取可行列车z9=zeros(1,d9(end)-d9(1)+1);%(或zeros(1,d(end)-d(1))y91=d9(1):1:d9(end);for k=1:length(x9)-1for i=1:d9(end)-d9(1)+1 if d9(k+1)-y91(i)+m9(k+1)>=5 && y91(i)-d9(k)-n9(k)>=5; z9(i)=y91(i); end endend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l9=zeros(1,length(d9)+50);t9=zeros(1,d9(end)-d9(1)+1);for i=1:d9(end)-d9(1) if z9(i)+1=z9(i+1) k=k+1;end if z9(i)>z9(i+1) r=floor(k-1)/5)+1; for u=1:r g=i-k+1+5*(u-1); if g>d9(end)-d9(1)+1 g=d9(end)-d9(1)+1; end l9(g)=z9(g); end k=1;endendl9(find(l9=0)=;%找到l中0的位置,并令其为空,即删除w9=l9+v9;y93=174*ones(1,length(l9);y94=195*ones(1,length(w9);for i=1:length(l9) plot(l9(i),w9(i),y93(i),y94(i);hold onendy91=174*ones(1,length(d9);y92=195*ones(1,length(h9);for i=1:length(d9)plot(d9(i),h9(i),y91(i),y92(i);hold onendgtext('北京西');gtext('保定东');gtext('定州东');gtext('石家庄北');gtext('邢台东');gtext('邯郸东');gtext('安阳东');gtext('鹤壁东');gtext('新乡东');gtext('郑州东');-第 19 页-