Scenario File Parameters#
All top-level parameters are first read by POLARIS through the scenario_abm.json file (or simple the scenario file). Parameters in this file include high-level flags to turn on and off large features, and also filenames to point to additional parameter files that are specific to enable or control a feature.
Top Level Parameters#
These are the top level parameters that are available in the scenario.json file which is the first argument to the POLARIS exectuable.
These parameters are read in in the Scenario_Methods.h header file.
Category |
Parameter Name |
Description |
Default |
Data Type |
---|---|---|---|---|
ABM Controls | read_trip_factors |
Controls the percentage of trips that need to be read in from the demand database by trip type (External, TNC, or Fixed) |
nan |
nan |
activity_start_time_model_file_name |
initialize start time model with file path in Integrated_Model |
start_time_duration_data_new.txt |
string |
|
mode_choice_model_file |
pass parameter into mode_choice_option_type::static_initialize in Integrated_Model |
0 |
string |
|
activity_generation_model_file |
activity generation activity rates by person type in json format |
0 |
string |
|
destination_choice_model_file |
pass parameter into destination_choice_option_type::static_initialize in Integrated_Model |
0 |
string |
|
telecommute_choice_model_file |
pass parameter into telecommute_chooser_type::static_initialize in Integrated_Model |
0 |
string |
|
transit_pass_choice_model_file |
pass parameter into ecommerce_chooser_type::static_initialize in Integrated_Model |
0 |
string |
|
escooter_use_level_choice_model_file |
Escooter use related model parameters |
0 |
string |
|
ecommerce_choice_model_file |
pass parameter into ecommerce_chooser_type::static_initialize in Integrated_Model |
0 |
string |
|
cav_wtp_model_file |
pass parameter into vehicle_technology_chooser_type::static_initialize in Integrated_Model |
0 |
string |
|
vehicle_reduction_model_file |
Model to lower HH vehicle ownership using Menon et al.'s probit model. Used primarily by UT only. |
nan |
nan |
|
use_on_demand_delivery |
Controls turning on and off ODD demand |
FALSE |
bool |
|
delivery_choice_model_file |
On-demand delivery related parameters for estimating demand only |
nan |
nan |
|
utility_based_choice |
boolean flag indicating that location choice should be based on maximum individual utility with consistently seeded random utility |
FALSE |
bool |
|
Capacity Adjustments | capacity_adjustment_highway |
if _link_type is EXPRESSWAY or FREEWAY, then save parameter as capacity_adjustment_factor in Link_Implementation |
1 |
double |
capacity_adjustment_arterial |
if _link_type is ARTERIAL, then save parameter as capacity_adjustment_factor in Link_Implementation |
1 |
double |
|
EV Controls | use_retail_electricity_rates |
Flag to set whether retail or wholesale rates are used for electricity pricing |
FALSE |
bool |
Public_Charger_Access_For_Fleets |
Flag that allows shared vehicles to charge at public EVCS |
FALSE |
bool |
|
Private_Charger_Access_For_PVs |
Flag that allows personal vehicles to charge at private EVCS |
FALSE |
bool |
|
EVCS Generator Controls | GENERATE_EVCS |
Flag to enable heuristic EVCS generation |
FALSE |
bool |
evcs_generator_file_name |
File that holds parameters related to heuristic EVCS generation |
nan |
string |
|
General simulation controls | model_directory |
The top-level directory in which the simulation is running |
Directory in which the scenario.json resides |
Path |
input_directory |
The directory containing the inputs for the current simulation (i.e. previous iteration) |
model_directory |
Path |
|
starting_time_hh_mm |
The first time step to consider within the simulation |
0 |
int |
|
ending_time_hh_mm |
The last time step to consider within the simulation |
172800 |
int |
|
simulation_interval_length_in_second |
How long (in seconds) is each step through the simulation |
6 |
int |
|
use_link_based_routing |
true = restrict routing to activity locations to link+dir, false = route to an activity location on a link using either direction |
FALSE |
bool |
|
seed |
seed = abs( sin( iseed( ) + _internal_id + 1 ) ) in Intersection_Implementation |
0 |
unsigned long |
|
skim_seed |
Parameter to change initial seed for location sampling for car skim generation |
0 |
unsigned long |
|
zone_sample_fraction |
Parameter to adjust size of destination choice set per person and activity. Note this is a fraction of total zones and the actual number of zones used will be calculated as max(1.0, number_of_zones * zone_sample_fraction). |
1 |
float |
|
database_name |
the prefix used in all database filenames, i.e. **Chicago**-Supply.sqlite |
0 |
string |
|
input_directory |
Directory in which input databases can be found, generally a previous iteration or a backup folder; if a relative path is provided it will be interpreted relative to the model_directory |
nan |
string |
|
num_simulation_intervals_per_assignment_interval |
parameter * simulation_interval_length = assignment_interval_length |
50 |
int |
|
early_exit |
Causes the simulation to exit the simulation after the specified operation, valid options are: {after_pop_synth, after_loc_choice, after_activity_gen} |
nan |
nan |
|
Network simulation controls | merging_mode |
Used to determine intersection supply allocation from multiple incoming flows, one of {0: DRIVING_RULE, 1: PROPORTION_TO_DEMAND, 2: PROPORTION_TO_LINK, 3: PROPORTION_TO_LANE, 4: PRIORITY_BASED} |
PROPORTION_TO_DEMAND |
int |
node_control_flag |
when set, indicates that read_intersection_control_data is available, else intersection_type = NO_CONTROL and control_plan is allocated and initialized |
0 |
int |
|
ramp_metering_flag |
if true, then read from ramp_metering_data |
FALSE |
bool |
|
input_result_database_name |
required for time-dependent routing |
0 |
string |
|
jam_density_constraints_enforced |
if true, then enforce jam density constraints when computing intersection flow |
TRUE |
bool |
|
maximum_flow_rate_constraints_enforced |
if true, then whether to enforce maximum flow rate constraints when computing intersection flow |
TRUE |
bool |
|
pretrip_informed_market_share |
_has_pretrip_information = (Uniform_RNG.Next_Rand < parameter) in Person_Implementations |
0.5 |
double |
|
realtime_informed_vehicle_market_share |
if (Uniform_RNG.Next_Rand <= parameter), then _enroute_information_type = WITH_REALTIME_INFORMATION, else NO_REALTIME_INFORMATION in Vehicle_Implementation |
0.5 |
double |
|
information_compliance_rate_mean |
what average proportion of travelers respond to the ITS warnings |
1 |
double |
|
information_compliance_rate_standard_deviation |
standard deviation for information_compliance_rate_mean |
0.5 |
double |
|
minimum_travel_time_saving_mean |
saved as mtts mean to compute triangular_random_variable in Vehicle_Implemenation |
1 |
double |
|
use_realtime_travel_time_for_enroute_switching |
if true, then call realtime_forward_link_turn_travel_time; set as use_realtime_travel_time in Turn_Movement_Implementation |
FALSE |
bool |
|
minimum_delay_ratio_for_enroute_switching |
threshold for the ratio of delay time / travel time before agents will consider switching route due to outside information |
3 |
double |
|
minimum_delay_seconds_for_enroute_switching |
threshold for the absolute delay time before agents will consider switching route due to outside information |
300 |
double |
|
enroute_switching_on_excessive_delay |
whether to enable enroute switching for travelers who have been delayed significantly |
TRUE |
bool |
|
fix_connectivity_penetration_rate_cv |
if true then the CV fleet will be synthesized using a fixed proportion of connected vehicles. The rate to be used is specified in the 'connectivity_penetration_rate_cv' parameter |
nan |
nan |
|
connectivity_penetration_rate_cv |
Specifies the fixed proportion of connected vehicles in the synthesized CV fleet (if fix_connectivity_penetration_rate_cv is true) |
nan |
nan |
|
minimum_seconds_from_arrival_for_enroute_switching |
0 |
300 |
double |
|
jam_density |
Jam density (for all road types) in vehicles per mile per lane |
0 |
integer |
|
convergence_mode |
Sets up a special mode of fixed-trips (no mode choice, etc) for DTA convergence |
nan |
nan |
|
capacity_expressway |
Maximum throughput of expressway in veh/h/lane |
0 |
integer |
|
capacity_arterial |
maximum throughput of arterials in veh/h/lane |
0 |
integer |
|
capacity_local |
maximum throughput of locals in veh/h/lane |
0 |
integer |
|
traffic_midblock_start_end |
Trips start and end at midblock as opposed to starting at the beggining of first link and ending when enters the last link. |
nan |
boolean |
|
force_no_street_parking_in_all_links |
Curb impacts (next parameter) applies when the road has no street parking. Forcing it not to have will make all links prone to vehicles to block lanes when finishing its trip |
nan |
boolean |
|
curb_hold_for_curb_time |
vehicles block up to one lane by a certain time when the trip ends |
nan |
boolean |
|
curb_lanes_blocked |
value between 0 and 1 stating the share of a lane capacity is lost by a stopped vehicle |
nan |
float |
|
curb_time_sov_seconds |
Time in which lane is blocked by the end of the trip for SOV vehicles |
nan |
integer |
|
curb_time_tnc_seconds |
Time in which lane is blocked by the end of the trip for TNC vehicles |
nan |
integer |
|
curb_time_freight_seconds |
Time in which lane is blocked by the end of the trip for freight vehicles |
nan |
integer |
|
speed_delta_logging |
when traffic model == "LAGRANGIAN" it sets as threshold for storing speed trajectory. Consecutive sample speeds within the threshold may be grouped |
nan |
float |
|
threshold_conflicting_all_stop_seconds |
0 |
0 |
0 |
|
threshold_conflicting_two_way_stop_seconds |
0 |
0 |
0 |
|
threshold_conflicting_signalized_seconds |
0 |
0 |
0 |
|
spacing_shift_by_mode |
A dictionary from mode string to the desired spacing shift to be used in the traffic simulation |
nan |
string |
|
Output controls | deflate_level |
The compression level to use for HDF outputs, higher levels give better compression at the expense of runtime |
3 |
int |
write_activity_output |
if true, then log Person_Scheduler_Implementations and output with Person_Data_Logger_Implementations |
FALSE |
bool |
|
write_demand_to_database |
if true, then write person data log to demand sqlite database |
FALSE |
bool |
|
count_integrated_in_network_vehicles_only |
if true, then decrement or increment in-network vehicles counter in Link_Implementation |
FALSE |
bool |
|
output_directory |
The directory into which all simulation outputs will be writen; if a relative path is provided it will be interpreted relative to the model_directory |
0 |
string |
|
write_node_control_state |
if true, then run function by the same name in Network_Implementation_Results |
FALSE |
bool |
|
write_network_link_flow |
if true, then run function by the same name in Network_Implementation_Results |
FALSE |
bool |
|
write_network_link_turn_time |
if true, then run function by the same name in Network_Implementation_Results |
FALSE |
bool |
|
write_output_summary |
if true, then run function by the same name in Network_Implementation_Results |
TRUE |
bool |
|
output_link_moe_for_simulation_interval |
if true, then output link moe in each simulation interval |
FALSE |
bool |
|
output_turn_movement_moe_for_simulation_interval |
if true, then output link moe to database and output turn movement moe in Network_Implementation_Results |
FALSE |
bool |
|
output_network_moe_for_simulation_interval |
if true, then output network level MOE stats to csv at each simulation interval |
FALSE |
bool |
|
write_vehicle_trajectory |
if true, write a sample of vehicles trajectories to the Path tables |
FALSE |
bool |
|
vehicle_trajectory_sample_rate |
the proportion of vehicles to write trajectory data for |
1 |
double |
|
write_skim_tables |
if true, then open output files: highway, transit, and highway cost in NetworkModel |
FALSE |
bool |
|
output_highway_skim_file |
one of three files written when write_skim_tables is true in NetworkModel |
highway_skim_file_out.txt |
string |
|
output_transit_skim_file |
one of three files written when write_skim_tables is true in NetworkModel |
transit_skim_file_out.txt |
string |
|
write_planned_activity_table |
if true, then write activities at plan time to Planned_Activity table. Includes dropped activities due to planning failures. This is mainly used for debuging. |
FALSE |
bool |
|
output_link_moe_for_assignment_interval |
if true, then output link moe to database in Network_Implementation_Results |
FALSE |
bool |
|
output_turn_movement_moe_for_assignment_interval |
if true, then output turn movement moe to database in Network_Implementation_Results |
FALSE |
bool |
|
Population synthesizer controls | read_population_from_database |
Controls how population is generated, read from Demand database (True) or synthesized (False) |
FALSE |
bool |
percent_to_synthesize |
The population sampling rate, it should be balanced by an appropriate traffic_scale_factor. It also affects the proportion of population read from the database when not synthesising. |
1 |
double |
|
ipf_tolerance |
assigned to Tolerance in Solver_Settings_Implementation |
0.01 |
double |
|
marginal_tolerance |
... |
5 |
int |
|
maximum_iterations |
assigned to Iterations in Solver_Settings_Implementation |
100 |
int |
|
write_marginal_output |
if true, then write data to "marginal_distributions.csv" and also output parameters used |
FALSE |
bool |
|
write_full_output |
if true, then write data to "joint_distributions.csv" and also output parameters used |
FALSE |
bool |
|
popsyn_control_file |
initialize PopSyn_Implementations with file path |
popsyn_control_file.txt |
string |
|
use_external_popsyn_solver |
Use user-provided PopSynth IPF/Integerization functions from external DLL/SO |
FALSE |
bool |
|
external_popsyn_solver_filename |
filename of the external PopSynth funcationality DLL/SO |
PopSynAPI.dll |
string |
|
replan |
Controls whether various sub-models are re-run against a population read from database or if previous outputs from the DB are used. Allowed sub-keys are 'workplaces', 'transit_pass_holding', 'escooter_participation', 'vehicle_ownership', telecommute_frequency' and the default if not provided is false |
FALSE |
dict[string,bool] |
|
replan_workplaces |
DEPRECATED, use replan parameter instead |
nan |
nan |
|
replan_mobility_options |
DEPRECATED, use replan parameter instead |
nan |
nan |
|
replan_delivery_options |
DEPRECATED, use replan parameter instead |
nan |
nan |
|
traffic_scale_factor |
Scale for the traffic flow model for traffic flow discretization; value 1 means no scaling applied; lower value updates capacity and jam density linearly |
0 |
float |
|
Routing and skimming controls | aggregate_routing |
if true, then reset route planning in Activity_Implementations and used to determine aggregation properties in Person_Mover_Prototype |
FALSE |
bool |
input_highway_skim_file |
one of three files read when write_skim_tables is true in NetworkModel |
0 |
string |
|
input_transit_skim_file |
one of three files read when write_skim_tables is true in NetworkModel |
0 |
string |
|
read_skim_tables |
if do_skimming is true, then set parameter to read_input; if read_input is true then set read_transit and read_highway_cost = true, but set to false if corresponding input file cannot be opened |
FALSE |
bool |
|
skim_averaging_factor |
Weight applied to skims generated during simulation before averaging with (1-weight) applied to skims read in from input |
nan |
nan |
|
skim_minimum_sov_speed |
A mimimum speed threshold to be applied to the skimmed travel times (relative to the skimmed distance) |
5 |
float |
|
skim_interval_endpoint_minutes |
if parameter is not found, then use_skim_intervals = false and search for skim_interval_length_minutes and set do_skimming = true in Scenario_Prototype |
0 |
IntArray |
|
skim_interval_length_minutes |
if skim_interval_endpoint_minutes is not found, then read parameter |
1440 |
int |
|
enroute_switching_enabled |
if true, then call check_enroute_switching in Vehicle_Implementation |
TRUE |
bool |
|
time_dependent_routing |
if true, then call initialize_moe_data; if true, then call construct_time_dependent_routable_network in Network_Implementation;if false, then call compute_static_network_path, else call compute_time_dependent_network_path in Routing_Implementation and Vehicle_Implementation |
FALSE |
bool |
|
time_dependent_routing_weight_shape |
save as _ttime_weight_shape in Routable_Network_Implementation |
2 |
double |
|
time_dependent_routing_weight_scale |
save as _ttime_weight_scale in Routable_Network_Implementation |
1000 |
double |
|
time_dependent_routing_weight_factor |
save as _ttime_weight_factor in Routable_Network_Implementation |
1 |
double |
|
time_dependent_routing_weight_factor_affects_choice |
If true, MSA based approach (factor=1/iteration_num) is applied in conjunction with the gap based approach for rerouting decision. If false - only gap is used. |
nan |
nan |
|
time_dependent_routing_weight_factor_affects_calculation |
If true, information mixing on link travel time calculation is affected by the TDR weight factor (i.e. 1/iteration_num). |
nan |
nan |
|
time_dependent_routing_gap_calculation_strategy |
time_dependent_routing_gap_calculation_strategy |
nan |
nan |
|
long_distance_trip_threshold_in_miles |
The threshold (crow-flies miles) above which a trip is considered 'long-distance' for adding additional 'stop' penalties at traffic signals or stop signs |
nan |
float |
|
long_distance_freight_stopping_penalty |
The additional routing 'stop' penalty (seconds) added to 'long-distance' freight trips at traffic signals or stop signs |
nan |
float |
|
long_distance_passenger_stopping_penalty |
The additional routing 'stop' penalty (seconds) added to 'long-distance' passenger trips at traffic signals or stop signs |
nan |
float |
|
multimodal_routing |
enable multimodal logic |
0 |
bool |
|
EV_charging |
Flag to control if detailed electric vehicle behavior is modeled (includes discharging, queueing at charging station, SoC tracking) |
nan |
nan |
|
use_ML_model_for_battery_discharge |
Flag to control whether the TensorflowLite model is used for predicting electric vehicle discharging |
nan |
nan |
|
ML_model_filename |
TensorflowLite model name to predict link-level electric vehicle discharging |
nan |
nan |
|
use_heterogenous_VOT |
Allows person and trip-specific VOT values for weight in the generalized cost of routing |
nan |
nan |
|
multimodal_routing_model_file |
pass parameter into routable_network_type |
0 |
string |
|
Scenario controls | cav_market_penetration |
if Next_Rand <= parameter, then autonomous vehicle capability is set true, else is set false in Vehicle_Implementation |
0 |
double |
cav_vott_adjustment |
if autonomous vehicle capability is set true, then return parameter from Value_of_Travel_Time_Adjustment in Person_Properties_Implementation |
1 |
double |
|
simulate_cacc |
if parameter is true, then update capacity_adjustment_factor in Link_Implementation |
FALSE |
bool |
|
flexible_work_percentage |
if Uniform_RNG.Next_Rand < parameter, then set flex_work = 1.0 in Telecommute_Choice_Implementation |
0.12 |
double |
|
use_tmc |
if use_network_events is true, then if parameter is true, then initialize Traffic_Management_Center interface in Integrated_Model |
FALSE |
bool |
|
use_network_events |
if true, then initialize Network_Event_Manager interface; if true then subscribe events in Integrated_Model |
FALSE |
bool |
|
Shared Mobility Controls | use_micromobility |
Enable using micromobility operators and dockless fleets |
FALSE |
bool |
micromobility_fleet_model_file |
Micromobility operations-related parameter file name |
nan |
string |
|
TNC Controls | tnc_operator_chooser_model_file |
File name that holds parameters related to the operator chooser choice model |
nan |
string |
tnc_fleet_model_file |
File name that holds parameters needed to initialize and run the TNC module |
nan |
string |
|
use_tnc_system |
Boolean that sets whether we use the on-demand TNC module |
nan |
boolean |
|
tnc_feedback |
Boolean to improve TNC operations using historical data |
nan |
boolean |
|
tnc_driver_model_file |
File name that holds parameters related to modeling human drivers in the TNC module |
nan |
nan |
|
Unknown Grouping | simulation_year |
The year in which the simulation is occurring |
nan |
nan |
snapshot_period |
interval of time (seconds) between network snapshot write events |
300 |
int |
|
do_planner_routing |
if true, then Schedule_New_Routing and assign the movement plan to the persons activity schedule in Activity_Implementations |
FALSE |
bool |
|
vehicle_tracking_list_file_name |
if parameter is not found, then use_vehicle_tracking_list = false, else vehicle_trajectory_sample_rate = 0.0 and use_vehicle_tracking_list = true |
0 |
string |
|
compare_with_historic_moe |
if true and start_of_current_simulation_interval_absolute % assignment_interval_length == 0, then call read_historic_link_moe function in Network_Implementation |
FALSE |
bool |
|
historic_network_moe_file_path_name |
if compare_with_historic_moe is true, then open input file and throw exception if not successful in Scenario_Prototype |
historic_realtime_moe_network.csv |
string |
|
historic_link_moe_file_path_name |
if compare_with_historic_moe is true, then open input file and throw exception if not successful in Scenario_Prototype |
historic_moe_link.csv |
string |
|
read_normal_day_link_moe |
if true and start_of_current_simulation_interval_absolute % assignment_interval_length == 0, then call function with same name in Network_Implementation |
FALSE |
bool |
|
normal_day_link_moe_file_path_name |
if read_normal_day_link_moe is true, then open input file and throw exception if not successful in Scenario_Prototype |
normal_day_moe_link.csv |
string |
|
historic_demand_moe_directory |
0 |
0 |
string |
|
output_network_moe_for_assignment_interval |
if true, then output network moe to database in Network_Implementation_Results |
FALSE |
bool |
|
load_analyze_link_groups_from_file |
if true, then call read_analyze_link_groups in Network_Implemenetation |
FALSE |
bool |
|
analyze_link_groups_file_path_name |
0 |
analyze_link_groups |
string |
|
write_ttime_distribution_from_network_model |
if true, then call write_ttime_distribution function in Network_Implementation |
FALSE |
bool |
|
vehicle_trajectory_output_threshold |
0 |
-1 |
int |
|
vehicle_taking_action |
if true, then make_suggestion( MOVE_TO_NEXT_LINK ) in Turn_Movement_Implementation;if true, then call start_agent function in Vehicle_Implementation |
FALSE |
bool |
|
relative_indifference_band_route_choice_mean |
saved as rib mean to compute triangular_random_variable in Vehicle_Implementation |
0.1 |
double |
|
multimodal_network_input |
if false, then call clean_isolated_intersections; if true then set do_this_link = true; if true then set do_this_connection = true in Network_DB_Reader_Implementations |
FALSE |
bool |
|
enroute_excessive_delay_factor |
used in above condition for minimum_delay_ratio_form_enroute_switching |
1 |
double |
|
EV_default_Wh_per_mile |
Default value to convert Wh needed to travel one mile in an electric vehicle |
nan |
nan |
|
accident_event_duration_reduction |
save as _end_time = _end_time * accident_event_duration_reduction in Network_Event_Implementations |
1 |
double |
|
calculate_realtime_moe |
if true, then call calculate_moe_for_simulation_interval in Intersection_Implementation; call calculate_realtime_network_moe and output_moe_for_simulation_interval in Network_Implementation |
TRUE |
bool |
|
buildings_geometry_file |
if parameter is not found, then use_buildings = false in Scenario_Prototype |
0 |
string |
|
Vehicle Choice Model | vehicle_distribution_file_name |
initialize vehicle choice model with parameter in Integrated_Model |
vehicle_distribution.txt |
string |
EVCS Generation Parameters#
These are the electric vehicle charging station (EVCS) Generation parameters that control siting and sizing new EVCS. The parameters are contained within the file that is specified in the scenario.json via parameter evcs_generator_file_name.
These parameters are read in in the EV_Charging_Station_Generator_Methods.h header file.
Category |
Parameter Name |
Description |
Default |
Data Type |
---|---|---|---|---|
EVCS Generator Controls | generator_strategy |
String that specifies which strategy is being loaded for EVCS siting |
nan |
string |
MAX_EVCS_DIST_MILES |
Maximum distance in miles to reach the next nearby EVCS, instead of instantly generating a new one |
10 |
float |
|
MAX_EVCS_WAIT_MINUTES |
Maximum wait time in minutes at an EVCS before a new DCFC plug is generated |
30 |
float |
|
capital_cost_evcs_gen |
One-time cost in dollars to generate a new EVCS |
100000 |
float |
|
evcs_life_span |
Expected duration of operations of an EVCS for cost comparison |
10 |
float |
|
capital_cost_added_plug |
One-time cost in dollars of generating a new DCFC plug |
1000 |
float |
|
land_cost_evcs_gen |
Vector of land cost by area type to consider when siting an EVCS |
nan |
FloatArray |
|
default_unit_price_charged_per_kwh |
Default cost in dollar per KWh charged when using a newly generated charging station |
0 |
float |
|
EVCS_MAX_DCFC_PLUGS |
Max number of DCFC plugs allowed for generation at any single EVCS |
nan |
integar |
|
EVCS_MIN_DCFC_PLUGS |
Starting default number of plugs at a generated EVCS |
3 |
integar |
|
EVCS_MAX_QUEUE |
Threshold of queue length beyond which an additional plug is added if generating new EVCS |
nan |
integar |