例4 某地有如图2所示的一个公路网,每天上班时间有6千辆小汽车要从居民区 A 前往工作区D。经过长期观察,我们得到了图中5条道路上每辆汽车的平均行驶时间和 汽车流量之间的关系,如表4所示,那么,长期来看,这些汽车将如何在每条道路上分布? , M0 m; m: y4 U& D
3 K8 Q) H& H. r: d 5 y9 R" E' L; h& R
X- s8 [$ k" l) F9 L' }! e' ]% t' v! |! l) m. o8 n
% C+ k1 ]' M, U. Z7 C* q(1)问题分析 p, y( e0 k1 s( K- S4 o
5 I, X$ M7 w, z
这个问题看起来似乎与前面几个例子完全不同,但实际上交通流与市场经济活动类似,也存在着均衡。 7 p9 T7 h8 E& T% @" o9 ]8 H/ G6 Q* O; n- U# a2 \+ P6 ?
我们可以想象有一个协调者,正如前面几个例子中的所谓中间商可以理解为市场规律一样,实际上这里的所谓协调者也可以认为是交通流的规律。交通流的规律就是每辆 汽车都将选择使自己从 A到D运行时间少的路线,其必然的结果是无论走哪条路线 从 A到D,终花费的时间应该是一样的(否则,花费时间较长的那条线路上的部分 汽车就会改变自己的路线,以缩短自己的行驶时间)。( c( y ~% O. Y6 Y% T7 i: y
8 M8 E5 r3 Q$ m$ A" m7 v' ?
也就是说,长期来看,这些汽车在每条道路上的分布将达到均衡状态(所谓均衡, 这里的含义就是每辆汽车都不能仅仅通过自身独自改变道路,节省其行驶时间)。在这种想法下,我们来建立线性规划模型。 $ w3 h8 J- v8 C: b( ^% m3 w7 m* h) ?+ `2 v
(2)优化模型- y8 v- j! r: u0 ?- Z5 w2 {
7 N4 e& J4 H2 T3 i& ~
交通流的规律要求所有道路上的流量达到均衡,我们仍然类似例1和例2来考虑问 题。如果车流量是一辆车一辆车增加的,那么在每条道路上车流量小于2时,车流量会有一个分布规律;当某条道路上流量正好超过2时,新加入的一辆车需要选择使自己堵 塞时间短的道路。这就提示我们把同一条道路上的流量分布分解成不同性质的三个部分。也就是说,我们用 Y(AB) 表示道路 AB 上的总的流量,并进一步把它分解成三部分:$ t7 w$ G2 ?& u% [2 w
8 t' |& G( C* ^3 s* ai)道路 AB 上的流量不超过2时的流量,用X (2, AB)表示; % V4 A7 g* y$ j* y
# f& |3 N/ S0 Bii)道路 AB 上的流量超过2但不超过3时,超过2的流量部分用 X (3, AB) 表示; : K7 ^% _- D& F ! K6 i* z! \6 Q0 Miii)道路 AB 上的流量超过3但不超过4时,超过3的流量部分用 X (4, AB) 表示。 % R" E; c/ X1 n( h- L , g: z' {* K8 H. G, k, y" ?) k依次类推,对道路AC,BC,BD,CD , ,, 上同理可以定义类似的决策变量。因此,问题中总共有20个决策变量 和 , Y- X ^! g$ C; }3 S# t 6 |* }& q8 u9 f# m+ Y. W, C% x- U
问题的目标应当是使总的堵塞时间小。用 表示流量 对应的堵塞时间( 即表3中的数据,是对每辆车而言的),我们看看用 [ j为道路] 作为总堵塞时间是否合适。很容易理解:后面加入道路的车辆可能又会造成前面进入道路的车辆的进一步堵塞,如流量为3时,原先流量为2的车辆实际上也只能按 的时间通过,而不是 。也就是说, 并不是总堵塞时间。但是我们也可以发现 关于i是单调增加的,即不断增加的车流只会使以前的堵塞加剧而不可能使以前的堵塞减缓。所以,关于决策变量 而言, [ j为道路] 与我们希望优化的目标的单调性是一致的。因此,可以用 [ j为道路] 作为目标函数进行优化。. x: v/ k. ]! `5 `% ?9 n
' y% H3 c/ m& i+ W+ L
约束条件有三类: 3 ^( B* m2 ]) }+ L: v: u! @2 B7 d" ^7 o1 K6 z+ y
i)每条道路上的总流量Y 等于该道路上的分流量 X 的和; / p$ ^; r; B1 M' h5 l8 o: @. {1 p B- D1 X
ii)道路交汇处A,B,C,D(一般称为节点)的流量守恒(即进入量等于流出量); 2 j- [' d1 ]* ?; E3 g3 S+ Y( {5 [# g' Q* N+ X, a% }
iii)决策变量的上限限制,如 等。; F N' r, k* U4 w
& _" s% t B3 _0 Y% F 于是对应的优化模型很容易直接写出(略)。 3 G, t- s6 _2 Y# u# C 5 U+ w' t* P: v$ p/ w(3)模型求解 . y0 X! D' Z$ {% l' N A1 T ; ~2 ] m* H f' a$ g" F编写LINGO程序如下: ; _ W7 [" _- r1 D k. F4 B0 z* _4 p; t$ g! d
MODEL: 1 f0 N- v! W; F7 C4 u; n4 K& a
TITLE 交通流均衡; " [4 m8 R" a) _" x
SETS: * l) E! u5 C. {9 U( D! ?/ P ROAD/AB,AC,BC,BD,CD/:Y; 8 R# t7 ]+ j5 l; F3 ~1 D+ w9 Q; Y
CAR/2,3,4/; ; s8 C9 l V: l! |8 d' D LINK(CAR,ROAD): T, X; ! K" j( l4 X: V' s# g
ENDSETS . f, |8 C. d9 S; \
DATA: / g( G7 R0 k% g. {* W2 u/ w" u! L9 w
! 行驶时间(分钟) ; * R# b. s' n$ b* [+ n7 z+ ~' e% _ T=20,52,12,52,20 ( x* h; Y8 C6 i) B 30,53,13,53,30 7 |# H S$ B7 t( N2 n0 a$ S
40,54,14,54,40; " `4 n9 A2 X2 j
ENDDATA7 T* n- u1 {" |: b% [
[OBJ] MIN=@SUM(LINK: T*X); ! 目标函数; % [% S& i# u! B3 C6 m6 _9 J
! 四个节点的流量守恒条件; % z. Y/ Z% E4 e/ }
[NODE_A] Y(@INDEX(AB))+Y(@INDEX(AC)) = 6; " f$ G4 ]# Z* n[NODE_B] Y(@INDEX(AB))=Y(@INDEX(BC))+Y(@INDEX(BD)); - R$ a/ U$ n5 l( z
[NODE_C] Y(@INDEX(AC))+Y(@INDEX(BC))=Y(@INDEX(CD)); 9 x) `/ S" ~" M. u& l[NODE_D] Y(@INDEX(BD))+Y(@INDEX(CD))=6; 8 Y7 Z z9 u8 D% D$ n i" ]; w
! 每条道路上的总流量Y等于该道路上的分流量X的和; / M0 e" Z6 j, V8 T@FOR( ROAD(I): [ROAD_LIM] @SUM(CAR(J): X(J,I)) = Y(I)); 4 m5 a$ {- K0 }. U5 e
! 每条道路的分流量X的上下界设定; ; n- L4 F! y9 {5 ?0 _7 N@FOR(LINK(I,J)|I#EQ#1: @BND(0,X(I,J),2) ); ; |/ o. T1 i# y2 O$ Y@FOR(LINK(I,J)|I#GT#1: @BND(0,X(I,J),1) ); : k9 W/ a( n/ d% l; [
END : j* X q+ ^( g( v& X6 M8 `* T3 h可以指出的是,上面4个节点的流量守恒条件中,其实只有3个是独立的(也就是说,第4个条件总可以从其它3个方程推导出来),因此从中去掉任何一个都不会影响到计算结果。 1 V9 R: o6 |0 ]9 ]% I, O1 m - R& }* }2 D# \5 m* b(4)结果解释0 Z0 b6 }, W1 K- v