Stochastic User Equilibrium: Method of Successive Averages AZAREL CHAMORRO OBRA M1福田研究室1
Assignment based on perceived cost (eg: travel time) Travel Time is flow-dependent. Link performance function Equilibrium: No user can minimize their travel time by unilaterally changing their path.
2
Equilibrium Optimization problem: move size α A descent vector for search direction is always found. Forced algorithm: it will always converge Therefore, solution at iteration n is the average of the variables y in preceding iterations.
3

Network loading models: 。Travel time is constant Stochastic User Equilibrium: 。Travel time depends on flow 。User Equilibrium conditions are particular case
Network loading models: 。Travel time is constant Stochastic User Equilibrium: 。Travel time depends on flow 。User Equilibrium conditions are particular case
X 5 Tpurple = To + 2000
0) Preliminaries: Stochastic network loading considering initial travel times (free flow speed) tg. Link flows x1 are calculated. 1) Considering link function, calculate new travel times t n = t a (x n ), ∀ a 2) Direction finding: New auxiliary link flows y are calculated according to the new travel times th 3)Movement: xn+1 = xn + − (yn − xn) 4) Convergence: if convergence is achieved algorithm is stopped. Else next iteration n.
6

Step size is always reduced at iterating: “forcing convergence”. Flow average over last m iterations is a reliable parameter. FLOW Figure 12.4 Network example with two paths connecting a single O-D pair. Figure 12.5 Convergence pattern of the MSA for the network in Figure 12.4; the case of relatively large perception variance ( θ = 1.0) and relatively high congestion 7
177 178 179 180 iteration = 1 param = 10 x_n = [row[:] for row in lf] temp = [row[:] for row in x_n] criterion = 0.05 convergence = 1 m n = [row[:] for row in m] If as Link Flow Matrix fo can be redefined 181 182 183 184 185 fo=[ [0,(lf[0][1]/2000)**5,(lf[0][2]/3000)**5,(lf[0][3]/3000)**5,0],   # A (0) [(lf[1][0]/2000)**5,0,0,(lf[1][3]/2000)**5,0],   # B (1) [(lf[2][0]/3000)**5,0,0,(lf[2][3]/2000)**5,(lf[2][4]/2000)**5],   # C (2) [(lf[3][0]/3000)**5,(lf[3][1]/2000)**5,(lf[3][2]/2000)**5,0,(lf[3][4]/3000)**5],   # D (3) [0,0,(1f[4][2]/2000)**5,(1f[4][3]/3000)**5,0],   # E  (4) 1 186 187 188 189 190 191 192 193 194 #Preliminary: Copy m flwhile convergence>criterion and iteration < 100: #Step 1: Set m n a function of flow 196 for i in range(0, len(m_n)): for j in range(0,len(m_n[0])): m_n[i][j] = (m[i][j] + fo[i][j]) 195 197 198 199 200 201 202 8
204   31 |#Step 2: Perform stochastic network flow algorithm on m n for link flow matrix y n y_n = link_flow(m_n) 205 206 207 foー[ 208 209 210 211 212 213 214 215 216 217  218 219 円220中221   3 222 223 224 225 print('MSA result for iteration ' + str(iteration)) print(x_n) [0,(y_n[0][1]/2000)**5,(y_n[0][2]/3000)**5,(y_n[0][3]/3000)**5,0],   # a (0) [(y n[1][0]/2000)**5,0,0,(y n[1][3]/2000)**5,0],   # B (1) [(y_n[2][0]/3000)**5,0,0,(y_n[2][3]/2000)**5,(y_n[2][4]/2000)**5],    # C (2) [(y_n[3][0]/3000)**5,(y_n[3][1]/2000)**5,(y_n[3][2]/2000)**5,0,(y_n[3][4]/3000)**5],   # D (3) [0,0,(y_n[4][2]/2000)**5,(y_n[4][3]/3000)**5,0],   # E (4) #Step 3: Set x_n = x_n + (1/n) * (y_n - x_n) for i in range(0, len(x_n)): for j in range(0,len(x_n[0])): temp[i][j] = x_n[i][j] for i in range(0, len(m_n)): for j in range(0,len(m_n[0])): x_n[i][j] = x_n[i][j] + (1 / iteration) * (y_n[i][j] - x_n[i][j]) iteration = iteration + 1 226