-
Notifications
You must be signed in to change notification settings - Fork 7
Beckmann (BMW) Traffic Assignment Model
The **Beckmann Traffic Assignment Model** (BMW model), introduced by Beckmann, McGuire, and Winsten, provides a mathematical framework for solving the **User Equilibrium (UE)** problem in traffic assignment. It converts the UE problem into a convex optimization problem, allowing us to compute traffic flows that minimize travel times across a network.
The Beckmann transformation allows us to formulate the UE problem as a **convex minimization problem**. This approach is based on the concept that travelers will adjust their routes until no individual can reduce their travel time by switching paths, achieving a state of equilibrium.
The objective function, often known as the **Beckmann objective function**, is given by:
<math>Z_{\text{UE}}(x) = \sum_{a \in C} \int_0^{x_a} t_a(u) \, du</math>
where:
- <math>t_a(u)</math> is the travel time on link <math>a</math> as a function of flow <math>u</math>.
- <math>x_a</math> is the flow on link <math>a</math>.
In many cases, the travel time function <math>t_a(u)</math> is represented using the **Bureau of Public Roads (BPR) function**:
<math>t_a(u) = t_a^0 \left( 1 + \alpha \left( \frac{u}{\text{capacity}_a} \right)^{\beta} \right)</math>
where:
- <math>t_a^0</math>: Free-flow travel time on link <math>a</math>,
- <math>\alpha</math> and <math>\beta</math>: Parameters defining the sensitivity of travel time to congestion,
- <math>\text{capacity}_a</math>: Capacity of link <math>a</math>.
The Beckmann model for User Equilibrium is formulated as follows:
<math>\min_{x_a} Z_{\text{UE}}(x) = \sum_{a \in C} t_a^0 \left( x_a + \frac{\alpha x_a^{\beta + 1}}{\text{capacity}_a^{\beta} \cdot (\beta + 1)} \right)</math>
This objective function minimizes the cumulative travel time across all links in the network, balancing flows based on link congestion levels.
For each origin-destination (OD) pair <math>(r, s)</math>, the flow conservation constraint ensures that the total flow on paths between <math>r</math> and <math>s</math> equals the demand, <math>q_{rs}</math>:
<math>\sum_{p \in \mathcal{P}_{rs}} f_p = q_{rs} \quad \forall r, s</math>
where:
- <math>q_{rs}</math>: Total demand between origin <math>r</math> and destination <math>s</math>,
- <math>f_p</math>: Flow on path <math>p</math> between nodes <math>r</math> and <math>s</math>,
- <math>\mathcal{P}_{rs}</math>: Set of all paths between the origin-destination pair <math>(r, s)</math>.
The flow on each link <math>x_a</math> must be non-negative:
<math>x_a \geq 0 \quad \forall a \in C</math>
This constraint ensures that flows are feasible within the physical network.
In a Pyomo implementation, the network structure is defined by nodes and links, with parameters such as free flow time, capacity, and demand. The BPR-based objective function and flow conservation constraints can be coded as follows:
<syntaxhighlight lang="python"> from pyomo.environ import *- Define model
- Define the sets of nodes and links
- Define parameters for free flow time and capacity on each link
- BPR parameters
- Demand and node indicators
- Define Pyomo variables for link flows
- Define the Beckmann objective function
- Flow conservation constraints
- Solve the problem
- Display results
- Beckmann, M., McGuire, C., & Winsten, C. (1956). Studies in the Economics of Transportation. Yale University Press.
- Bureau of Public Roads (1964). Traffic Assignment Manual. U.S. Department of Commerce.
Note: This model assumes a static demand and flow assignment. For dynamic models, further temporal considerations may be integrated.