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 (or edges.csv)
  • vehicles.parquet (or vehicles.csv)

Edges

ColumnData typeConditionsConstraintsDescription
edge_idIntegerMandatoryNo duplicate value, no negative valueIdentifier of the edge (used in some input files and used in the output).
sourceIntegerMandatoryNo negative valueIdentifier of the source node of the edge.
targetIntegerMandatoryNo negative value, different from sourceIdentifier of the target node of the edge.
speedFloatMandatoryPositive numberThe base speed on the edge when there is no congestion, in meters per second.
lengthFloatMandatoryPositive numberThe length of the edge, from source node to target node, in meters.
lanesFloatOptionalPositive numberThe number of lanes on the edge (for this edge’s direction). The default value is 1.
speed_density.typeStringOptionalPossible 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.capacityFloatMandatory if speed_density.type is "Bottleneck", ignored otherwisePositive numberCapacity 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_densityFloatMandatory if speed_density.type is "ThreeRegimes", ignored othewiseBetween 0.0 and 1.0Edge density below which the speed is equal to free-flow speed.
speed_density.jam_densityFloatMandatory if speed_density.type is "ThreeRegimes", ignored othewiseBetween 0.0 and 1.0, larger than speed_density.min_densityEdge density above which the speed is equal to speed_density.jam_speed.
speed_density.jam_speedFloatMandatory if speed_density.type is "ThreeRegimes", ignored othewisePositive numberSpeed at which all the vehicles travel in case of traffic jam, in meters per second.
speed_density.betaFloatMandatory if speed_density.type is "ThreeRegimes", ignored othewisePositive numberParameter to compute the speed in the intermediate congested case.
bottleneck_flowFloatOptionalPositive numberMaximum 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_timeFloatOptionalPositive numberConstant travel-time penalty for each vehicle traveling through the edge, in seconds. If null, there is no travel-time penalty.
overtakingBooleanOptionalIf 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

ColumnData typeConditionsConstraintsDescription
vehicle_idIntegerMandatoryNo duplicate value, no negative valueIdentifier of the vehicle type
headwayFloatMandatoryNon-negative valueTypical length, in meters, between two vehicles, from head to head.
pceFloatOptionalNon-negative valuePassenger car equivalent of this vehicle type, used to compute bottleneck flows. Default value is 1.
speed_function.typeStringOptionalPossible 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_boundFloatMandatory if speed_function.type is "UpperBound", ignored otherwisePositive numberMaximum speed allowed for the vehicle type, in meters per second.
speed_function.coefFloatMandatory if speed_function.type is "Multiplicator", ignored otherwisePositive numberMultiplicator applied to the edge’s base speed to compute the vehicle-specific speed.
speed_function.xList of FloatMandatory if speed_function.type is "Piecewise", ignored otherwisePositive numbers in increasing orderBase speed values, in meters per second, for the piece-wise linear function.
speed_function.yList of FloatMandatory is speed_function.type is "Piecewise", ignored otherwisePositive numbers, same number of values as speed_function.xVehicle-specific speed values for the piece-wise linear function.
allowed_edgesList of IntegerOptionalValues must be existing edge_id in the edges fileIndices of the edges that this vehicle type is allowed to take. If null, all edges are allowed (unless specificed in restricted_edges).
restricted_edgesList of IntegerOptionalValues must be existing edge_id in the edges fileIndices 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).