Road Network
Table of Contents
CSV / Parquet representation
In METROPOLIS2, a road network is composed of a collection of edges and a collection of vehicle types. A road network is thus represented by two CSV or Parquet files:
edges.parquet(oredges.csv)vehicles.parquet(orvehicles.csv)
Edges
| Column | Data type | Conditions | Constraints | Description |
|---|---|---|---|---|
edge_id | Integer | Mandatory | No duplicate value, no negative value | Identifier of the edge (used in some input files and used in the output). |
source | Integer | Mandatory | No negative value | Identifier of the source node of the edge. |
target | Integer | Mandatory | No negative value, different from source | Identifier of the target node of the edge. |
speed | Float | Mandatory | Positive number | The base speed on the edge when there is no congestion, in meters per second. |
length | Float | Mandatory | Positive number | The length of the edge, from source node to target node, in meters. |
lanes | Float | Optional | Positive number | The number of lanes on the edge (for this edge’s direction). The default value is 1. |
speed_density.type | String | Optional | Possible values: "FreeFlow", "Bottleneck", "ThreeRegimes" | Type of speed-density function used to compute congested travel time. If null, the free-flow speed-density function is used. |
speed_density.capacity | Float | Mandatory if speed_density.type is "Bottleneck", ignored otherwise | Positive number | Capacity of the road’s bottleneck when using the bottleneck speed-density function. Value is expressed in meters of vehicle headway per second. |
speed_density.min_density | Float | Mandatory if speed_density.type is "ThreeRegimes", ignored othewise | Between 0.0 and 1.0 | Edge density below which the speed is equal to free-flow speed. |
speed_density.jam_density | Float | Mandatory if speed_density.type is "ThreeRegimes", ignored othewise | Between 0.0 and 1.0, larger than speed_density.min_density | Edge density above which the speed is equal to speed_density.jam_speed. |
speed_density.jam_speed | Float | Mandatory if speed_density.type is "ThreeRegimes", ignored othewise | Positive number | Speed at which all the vehicles travel in case of traffic jam, in meters per second. |
speed_density.beta | Float | Mandatory if speed_density.type is "ThreeRegimes", ignored othewise | Positive number | Parameter to compute the speed in the intermediate congested case. |
bottleneck_flow | Float | Optional | Positive number | Maximum incoming and outgoing flow of vehicles at the edge’s entry and exit bottlenecks, in PCE per second. In null, the incoming and outgoing flow capacities are assumed to be infinite. |
constant_travel_time | Float | Optional | Positive number | Constant travel-time penalty for each vehicle traveling through the edge, in seconds. If null, there is no travel-time penalty. |
overtaking | Boolean | Optional | If true, a vehicle that is pending at the end of the edge to enter its outgoing edge is not prevending the following vehicles to access their outgoing edges. Default value is true. |
Vehicle types
| Column | Data type | Conditions | Constraints | Description |
|---|---|---|---|---|
vehicle_id | Integer | Mandatory | No duplicate value, no negative value | Identifier of the vehicle type |
headway | Float | Mandatory | Non-negative value | Typical length, in meters, between two vehicles, from head to head. |
pce | Float | Optional | Non-negative value | Passenger car equivalent of this vehicle type, used to compute bottleneck flows. Default value is 1. |
speed_function.type | String | Optional | Possible values: "Base", "UpperBound", "Multiplicator", "Piecewise" | Type of the function used to convert from the base edge speed to the vehicle-specific edge speed. If null, the base speed is used. |
speed_function.upper_bound | Float | Mandatory if speed_function.type is "UpperBound", ignored otherwise | Positive number | Maximum speed allowed for the vehicle type, in meters per second. |
speed_function.coef | Float | Mandatory if speed_function.type is "Multiplicator", ignored otherwise | Positive number | Multiplicator applied to the edge’s base speed to compute the vehicle-specific speed. |
speed_function.x | List of Float | Mandatory if speed_function.type is "Piecewise", ignored otherwise | Positive numbers in increasing order | Base speed values, in meters per second, for the piece-wise linear function. |
speed_function.y | List of Float | Mandatory is speed_function.type is "Piecewise", ignored otherwise | Positive numbers, same number of values as speed_function.x | Vehicle-specific speed values for the piece-wise linear function. |
allowed_edges | List of Integer | Optional | Values must be existing edge_id in the edges file | Indices of the edges that this vehicle type is allowed to take. If null, all edges are allowed (unless specificed in restricted_edges). |
restricted_edges | List of Integer | Optional | Values must be existing edge_id in the edges file | Indices of the edges that this vehicle type cannot take. |
Additional constraints
- There must be no edges with the same pair
(source, target)(i.e., no parallel edges).