Road Test Demonstration Model

Model Operation

emat.model.core_python.core_python_examples.Road_Capacity_Investment(free_flow_time=60, initial_capacity=100, alpha=0.15, beta=4.0, input_flow=100, value_of_time=0.01, unit_cost_expansion=1, interest_rate=0.03, yield_curve=0.01, expand_capacity=10, amortization_period=30, interest_rate_lock=False, debt_type='GO Bond', lane_width=10, **kwargs)[source]

A fictitious example model for road capacity investment.

This model simulates a capacity expansion investment on a single network link. The link volume-delay function is governed by the BPR function.

This model is a bit contrived, because it is designed to explicitly demonstrate a wide variety of EMAT features in a transportation planning model that is as simple as possible. For example, the policy levers are structured so that there is one of each dtype (float, int, bool, and categorical).

Parameters:
  • free_flow_time (float, default 60) – The free flow travel time on the link.
  • initial_capacity (float, default 100) – The pre-expansion capacity on the link.
  • alpha (float, default 0.15) – Alpha parameter to the BPR volume-delay function.
  • beta (float, default 4.0) – Beta parameter to the BPR volume-delay function.
  • input_flow (float, default 100) – The future input flow on the link.
  • value_of_time (float, default 0.01) – The value of a unit of travel time savings per unit of flow on the link.
  • unit_cost_expansion (float, default 1) – The present marginal cost of adding one unit of capacity to the link (assumes no economies of scale on expansion cost)
  • interest_rate (float, default 0.03) – The interest rate actually incurred for revenue bonds amortized over 15 years. The interest rate for general obligation bonds is assumed to be 0.0025 less than this value.
  • yield_curve (float, default 0.01) – The marginal increase in the interest_rate if the amortization period is 50 years instead of 15. The yield curve is assumed to be linearly projected to all other possible amortization periods
  • expand_capacity (float, default 10) – The amount of capacity expansion actually constructed.
  • amortization_period (int, default 30) – The time period over which the construction costs are amortized.
  • interest_rate_lock (bool, default False) – Whether interest rates are locked at the assumed current rate of 0.03 / 0.01 or allowed to float.
  • debt_type ('GO Bond', 'Rev Bond', 'Paygo') – Type of financing. General obligation bonds are assumed to have a lower interest rate than revenue bonds, but may be politically less desirable. Pay-as-you-go financing incurs no actual interest costs, but requires actually having the funds available.
  • lane_width (float, default 10) – The width of lanes on the roadway. This parameter is intentionally wacky, causing massive congestion for any value other than 10, to demonstrate what might happen with broken model inputs.
Returns:

no_build_travel_time

The average travel time on the link if no capacity expansion was constructed.

build_travel_time

The average travel time on the link after expansion.

time_savings

The average travel time savings as a result of the expansion.

value_of_time_savings

The total value of the travel time savings, accounting for the time savings per traveler, the total flow, and the value of time.

present_cost_expansion

The present cost of building the expansion

cost_of_capacity_expansion

The annual payment to finance the expansion, when amortized.

net_benefits

The value of the time savings minus the annual payment.

Return type:

dict

Model Scope Definition

The model exploratory scope is defined in a YAML text file. In this example, the scope is given by:

  1---
  2# EMAT Road Test Scope Definition
  3
  4scope:
  5    name: EMAT Road Test
  6    desc: prototype run
  7
  8
  9inputs:
 10
 11    free_flow_time:
 12        shortname: Free Flow Time
 13        ptype: constant
 14        desc: Free flow travel time on road segment
 15        dtype: float
 16        default: 60
 17        dist: constant
 18        corr: []
 19
 20    initial_capacity:
 21        shortname: Init Capacity
 22        ptype: constant
 23        desc: Initial capacity on road segment
 24        dtype: float
 25        default: 100
 26        dist: constant
 27        corr: []
 28
 29    alpha:
 30        ptype: uncertainty
 31        desc: BPR Alpha parameter
 32        dtype: float
 33        default: 0.15
 34        min: 0.10
 35        max: 0.20
 36        dist: uniform
 37        corr: []
 38
 39    beta:
 40        ptype: uncertainty
 41        desc: BPR Beta parameter
 42        default: 4.0
 43        min: 3.5
 44        max: 5.5
 45        dist: uniform
 46        corr: []
 47
 48    input_flow:
 49        shortname: Input Flow
 50        ptype: uncertainty
 51        desc: Average Flow input on link
 52        default: 100
 53        min: 80
 54        max: 150
 55        dist: uniform
 56        corr: []
 57
 58    value_of_time:
 59        shortname: Value of Time
 60        ptype: uncertainty
 61        desc: Value of a unit of travel time savings per person
 62        default: 0.075
 63        min: 0.001
 64        max: 0.250
 65        dist:
 66            name: pert
 67            peak: 0.075
 68        corr: []
 69
 70    unit_cost_expansion:
 71        shortname: Unit Cost Expand
 72        ptype: uncertainty
 73        desc: Per unit cost of capacity expansion
 74        dtype: float
 75        default: 100
 76        min: 95
 77        max: 145
 78        dist: uniform
 79        corr: []
 80
 81    expand_capacity:
 82        shortname: Expand Amount
 83        ptype: policy lever
 84        desc: How much to expand capacity
 85        dtype: float
 86        default: 10.0
 87        min: 0
 88        max: 100
 89
 90    amortization_period:
 91        shortname: Amortization
 92        ptype: policy lever
 93        desc: Time period over which the investment is amortized
 94        dtype: int
 95        default: 30
 96        min: 15
 97        max: 50
 98
 99    debt_type:
100        shortname: Debt Type
101        desc: Type of financing
102        ptype: policy lever
103        dtype: cat
104        default: GO Bond
105        values:
106            - GO Bond
107            - Rev Bond
108            - Paygo
109
110    interest_rate_lock:
111        shortname: Rate Lock
112        ptype: policy lever
113        desc: Whether to lock in present interest rates of 0.03 (15 year) to 0.04 (50 years)
114        dtype: bool
115        default: False
116
117    interest_rate:
118        shortname: Interest Rate
119        ptype: uncertainty
120        desc: Interest rate for investment amortization in 15 years
121        dtype: float
122        default: 0.03
123        min: 0.025
124        max: 0.04
125        dist: uniform
126        corr: []
127
128    yield_curve:
129        shortname: Yield Curve
130        ptype: uncertainty
131        desc: Excess interest rate for investment amortization in 50 years
132        dtype: float
133        default: 0.01
134        min: -0.0025
135        max: 0.02
136        dist: uniform
137        corr: []
138
139
140outputs:
141
142    no_build_travel_time:
143        shortname: No Build Time
144        kind: info
145        metamodeltype: logxp-linear(-59)
146
147    build_travel_time:
148        shortname: Build Time
149        kind: minimize
150        metamodeltype: logxp-linear(-59)
151
152    time_savings:
153        shortname: Time Savings
154        kind: maximize
155        metamodeltype: log-linear
156
157    value_of_time_savings:
158        shortname: Value Time Save
159        desc: Implied total value of travel time savings over all travelers
160        kind: maximize
161        metamodeltype: log-linear
162
163    net_benefits:
164        shortname: Net Benefits
165        kind: maximize
166
167    cost_of_capacity_expansion:
168        shortname: Cost of Expand
169        kind: minimize
170        metamodeltype: log-linear
171
172    present_cost_expansion:
173        shortname: Present Cost
174        kind: info
175        metamodeltype: log-linear
176
177...