44inf = float ('inf' )
55
66
7- def netflow (OD , T0 , C , n = 100 , alpha = 1 , beta = 2 ):
7+ def netflow (OD , T0 , C , n = 100 , alpha = 1 , beta = .5 ):
88 m = len (T0 )
99
1010 # 初始化
@@ -28,7 +28,7 @@ def updateT():
2828 updateQ (OD / n , P )
2929 T = updateT ()
3030
31- return Q , T
31+ return Q , T , T / T0 - 1
3232
3333
3434if __name__ == "__main__" :
@@ -40,9 +40,9 @@ def updateT():
4040 [inf , inf , inf , inf ]
4141 ])
4242 OD = np .array ([
43- [0 , 0 , 0 , 1000 ],
44- [0 , 0 , 0 , 0 ],
43+ [0 , 200 , 0 , 1000 ],
4544 [0 , 0 , 0 , 0 ],
45+ [0 , 0 , 0 , 200 ],
4646 [0 , 0 , 0 , 0 ]
4747 ])
4848 C = np .array ([
@@ -52,26 +52,37 @@ def updateT():
5252 [1 , 1 , 1 , 1 ]
5353 ])
5454
55- def evalue (Q ,T ):
55+
56+ def evalue (Q , T , J ):
5657 RT = T [(T != inf )]
5758 QT = (Q * T ).flatten ()
5859 QT = QT [~ np .isnan (QT )]
59- J = ( T / T0 ) .flatten ()
60+ J = J .flatten ()
6061 J = J [~ np .isnan (J )]
6162 return {
62- '平均道路通行时间' :np .mean (RT ),
63- '加权路网通行时耗' :np .sum (QT ),
64- '路网拥堵指数' :np .mean (J )
63+ '平均道路通行时间' : np .mean (RT ),
64+ '加权路网通行时耗' : np .sum (QT ),
65+ '路网拥堵指数' : np .mean (np . log ( J ) )
6566 }
6667
6768 print ('增加道路1-4之前:' )
68- Q , T = netflow (OD ,T0 ,C )
69+ Q , T , J = netflow (OD , T0 , C )
6970 print ('Q=' , Q )
70- print ('evalue=' ,evalue (Q ,T ))
71+ print ('J=' , J )
72+ eval0 = evalue (Q , T , J )
73+ print ('evalue=' , eval0 )
7174
7275 print ('增加道路1-4之后:' )
73- T0 [0 ,3 ] = 1.5
74- C [0 ,3 ] = 100
75- Q , T = netflow (OD ,T0 ,C )
76+ T0 [0 , 3 ] = 1.5
77+ C [0 , 3 ] = 75
78+ Q , T , J = netflow (OD , T0 , C )
7679 print ('Q=' , Q )
77- print ('evalue=' ,evalue (Q ,T ))
80+ print ('J=' , J )
81+ eval1 = evalue (Q , T , J )
82+ print ('evalue=' , eval1 )
83+
84+ def eval_enhance (eval0 ,eval1 ):
85+ for (k , v0 ), (_ , v1 ) in zip (eval0 .items (), eval1 .items ()):
86+ print (f'{ k } 提高:{ (v0 - v1 )/ v0 * 100 } %' )
87+ print ('网络提升效果:' )
88+ eval_enhance (eval0 ,eval1 )
0 commit comments