调度站 公交车调度模型
1 个停车场位于 A0 (故可视作环行线,见下图) 设仅 (车辆由此发出) B1 记
v:公交车速度;
t(k): 第k次发车时刻(k=1,2,……,N);
d(j): 第Bj站到第Bj+1站的距离(km)(j=1,2,……,25);
t1(k,j):第k次发车到达第j站的时刻:t1(k,j)=t(k)+[d(1)+d(2)+……+d(j))]/v; (j=2,……,26) T: 公交车环行周期(h);
mu:矩阵元素mu(i,j)为第i个时间段第j个站上车人数(i=1,2,……,18, j=1,2,……,26); md:矩阵元素md(i,j)为第i个时间段第j个站下车人数(i=1,2,……,18, j=1,2,……,26);; z(k,j): 第k次发车第j个站启车时乘客增量:z(k,j)=f(t(k),j)×[t(k,j)-t(k-1,j)]( j=1,2,……,25);其中
?0,t(k)?5andt(k)?23f(t(k),j)?? ?mu(i1,j)?md(i2,j),else其中i1?[t(k)?(d(1)?...?d(j?1))/v]?4,i2?[t(k?1)]?4d25 d1 d2 dj-1 dj dj+1 B2 Bj-1 Bj Bj+1 d13 B13 B26 B14
s(k,j):第k次发车第j站启车时车上乘客数 s(k,j)=[z(k,1)+ z(k,2)+……+z(k,j)] ( j=1,2,……,25);
优化模型
目标函数:max t(k)
?t(k)?t(k?1)??10;?25?1s(k,j)??50;约束条件:? ??25j?1?s(k,j)??120,j?1,2,3,...,25;?sets: fache/1/:t;
distance/1..25/:d; time_stage/1..18/; zhan/1..26/:i0,i1,i3;
link1(time_stage,zhan):mu,md;
link(fache,zhan):f,s,z;
!link2(fache,time_stage):tj,z; endsets data: v=20;
d=1.56,1,0.44,1.2,0.97,2.29,1.3,2,0.73,1,0.5,1.62,1.6,0.5,1,0.73,2.04,1.26,2.29,1,1.2,0.4,1,1.03,0.53;
mu=22,3,4,2,4,4,3,3,3,1,1,0,371,60,52,43,76,90,48,83,85,26,45,45,11,0
795,143,167,84,151,188,109,137,130,45,53,16,1990,376,333,256,589,594,315,622,510,176,308,307,68,0,
2328,380,427,224,420,455,272,343,331,126,138,45,3626,634,528,447,948,868,523,958,904,259,465,454,99,0,
2706,374,492,224,404,532,333,345,354,120,153,46,2064,322,305,235,477,549,271,486,439,157,275,234,60,0,
1556,204,274,125,235,308,162,203,198,76,99,27,1186,205,166,147,281,304,172,324,267,78,143,162,36,0,
902,147,183,82,155,206,120,150,143,50,59,18,923,151,120,108,215,214,119,212,201,75,123,112,26,0,
847,130,132,67,127,150,108,104,107,41,48,15,957,181,157,133,254,264,135,253,260,74,138,117,30,0,
706,90,118,66,105,144,92,95,88,34,40,12,873,141,140,108,215,204,129,232,221,65,103,112,26,0,
770,97,126,59,102,133,97,102,104,36,43,13,779,141,103,84,186,185,103,211,173,66,108,97,23,0,
839,133,156,69,130,165,101,118,120,42,49,15,625,104,108,82,162,180,90,185,170,49,75,85,20,0,
1110,170,189,79,169,194,141,152,166,54,64
,9,635,124,98,82,152,180,80,185,150,49,85,85,20,0,
1837,260,330,146,305,404,229,277,253,95,122,34,1493,299,240,199,396,404,210,428,390,120,208,197,49,0,
3020,474,587,248,468,649,388,432,452,157,205,56,2011,379,311,230,497,479,296,586,508,140,250,259,61,0,
1966,350,399,204,328,471,289,335,342,122,132,40,691,124,107,89,167,165,108,201,194,53,93,82,22,0,
939,130,165,88,138,187,124,143,147,48,56,17,350,64,55,46,91,85,50,88,89,27,48,47,11,0,
640,107,126,69,112,153,87,102,94,36,43,13,304,50,43,36,72,75,40,77,60,22,38,37,9,0, 636,110,128,56,105,144,82,95,98,34,40,12,209,37,32,26,53,55,29,47,52,16,28,27,6,0, 294,43,51,24,46,58,35,41,42,15,17,5,19,3,3,2,5,5,3,5,5,1,3,2,1,0; md=0,21,1,6,7,7,5,3,4,2,3,9,8,9,13,20,48,45,81,32,18,24,25,85,57,
0,70,40,40,184,205,195,147,93,109,75,108,271,99,105,164,239,588,542,800,407,208,300,288,921,615,
0,294,156,157,710,780,849,545,374,444,265,373,958,205,227,272
461,1058,1097,1793,801,469,560,636,1871,1459,
0,266,158,149,756,827,856,529,367,428,237,376,1167,106,123,169,300,634,621,971,440,245,339,408,1132,759,
0,157,100,80,410,511,498,336,199,276,136,219,556,81,75,120,181,407,411,551,250,136,187,233,774,483,
0,103,59,59,246,346,320,191,147,185,96,154,438,52,55,81,136,299,280,442,178,105,153,167,532,385,
0,94,48,48,199,238,256,175,122,143,68,128,346,54,58,84,131,321,291,420,196,119,159,153,534,340,
0,70,40,40,174,215,205,127,103,119,65,98,261,46,49,71,111,263,256,389,164,111,134,148,488,333,
0,75,43,43,166,210,209,136,90,127,60,115,309,39,41,70,103,221,197,297,137,85,113,116,384,263,
0,84,48,48,219,238,246,155,112,153,78,118,346,36,39,47,78,189,176,339,139,80,97,120,383,239,
0,110,73,63,253,307,341,215,136,167,102,144,425,36,39,57,88,209,196,339,129,80,107,110,353,229,
0,175,96,106,459,617,549,401,266,304,162,269,784,80,85,135,194,450,441,731,335,157,255,251,800,557,
0,330,193,194,737,934,1016,606,416,494,278,448,1249,110,118,171,257,694,573,957,390,253,293,378,1228,793,
0,223,129,150,635,787,690,505,304,423,246,320,1010,45,48,80,108,237,231,390,150,89,131,125,428,336,
0,113,59,59,266,306,290,201,147,155,86,154,398,22,23,34,63,116,108,196,83,48,64,66,204,139,
0,75,43,43,186,230,219,146,90,127,70,95,319,16,17,24,38,80,84,143,59,34,46,47,160,117,
0,73,41,42,190,243,192,132,107,123,67,101,290,14,14,21,33,78,63,125,62,30,40,41,128,92,
0,35,20,20,87,108,92,69,47,60,33,49,136,3 3,5,8,18,17,27,12,7,9,9,32,21; t1=5;
f=22,-18,3,-4,-3,-3,-2,0,-1,-1,-2,-9,363,13,20, enddata init: t2=5.1; endinit max=t2-t1; t2-t1<10/60;
@for(zhan(j)|j#eq#1:i0(j)=t2);
@for(zhan(j)|j#ge#2:i0(j)=t2+@sum(zhan(n)|n#le#(j-1)#and#n#ge#2:d(n))/v);
@for(zhan(j):i1(j)=@floor(i0(j))-4);
@for(zhan(j):f(1,j)=@free(mu(i1(j),j)-md(i1(j),j))); !@for(zhan(j):z(1,j)=f(2,j)*(t2-t1)); !@for(zhan(j):s(1,j)=@sum(zhan(j):z(1,j)));
!@for(zhan(j):@sum(zhan(j):s(1,j))/26>=50); !@for(zhan(j):s(1,j)<120);
!@for(fache(k)|k#gt#1: t(k)-t(k-1)<=10/60; !t(k)-t(k-1)>1/60; !t(k)>t(k-1);
!@for(link2(k,j):tj(k,j)=t(k)+@sum(zhan(n)|n#lt#(j-1):d(j))/v); !@for(zhan(j)|j#eq#1:i0(j)=t(k));
!@for(zhan(j)|j#gt#1:i0(j)=t(k)+@sum(zhan(n)|n#le#(j-1) #and# n#gt#2:d(n)/v);!);
!@for(zhan(j)|j#le#25:i1(j)=@floor(i0(j)));!+@if(@mod(i0(j),1)#eq#0,0,1)-4);
!@for(zhan(j)|j#eq#1:i3(j)=-4+@if(@mod(i0(j),1)#eq#0,0,1));
!z(k,j)=(mu(i1(j),j)-md(i1(j),j))*(tj(k,j)-tj(k-1,j));