pub struct SimOptions {
pub run_name: String,
pub use_freeform_policy_everywhere: bool,
pub allow_block_the_box: bool,
pub dont_recalc_lanechanging: bool,
pub dont_break_turn_conflict_cycles: bool,
pub dont_handle_uber_turns: bool,
pub enable_pandemic_model: Option<XorShiftRng>,
pub alerts: AlertHandler,
pub infinite_parking: bool,
pub disable_turn_conflicts: bool,
pub skip_analytics: bool,
}Expand description
Options controlling the traffic simulation.
Fields§
§run_name: StringUsed to distinguish savestates for running the same scenario.
use_freeform_policy_everywhere: boolIgnore all stop signs and traffic signals, instead using a “freeform” policy to control access to intersections. If a requested turn doesn’t conflict with an already accepted one, immediately accept it. FIFO ordering, no balancing between different movements.
allow_block_the_box: boolAllow a vehicle to start a turn, even if their target lane is already full. This may mean they’ll get stuck blocking the intersection.
dont_recalc_lanechanging: boolNormally as a vehicle follows a route, it opportunistically make small changes to use a different lane, based on some score of “least-loaded” lane. Disable this default behavior.
dont_break_turn_conflict_cycles: boolNormally if a cycle of vehicles depending on each other to turn is detected, temporarily allow “blocking the box” to try to break gridlock. Disable this default behavior.
dont_handle_uber_turns: boolDisable experimental handling for “uber-turns”, sequences of turns through complex intersections with short roads. “Locks” the entire movement before starting, and ignores red lights after starting.
enable_pandemic_model: Option<XorShiftRng>Enable an experimental SEIR pandemic model. This requires an RNG seed, which can be the same or different from the one used for the rest of the simulation.
alerts: AlertHandlerWhen a warning is encountered during simulation, specifies how to respond.
infinite_parking: boolIgnore parking data in the map and instead treat every building as if it has unlimited capacity for vehicles.
Some maps always have this hardcoded on – see the code for the list.
disable_turn_conflicts: boolAllow all agents to immediately proceed into an intersection, even if they’d hit another agent. Obviously this destroys realism of the simulation, but can be used to debug gridlock. Also implies freeform_policy, so vehicles ignore traffic signals.
skip_analytics: boolDon’t collect any analytics. Only useful for benchmarking and debugging gridlock more quickly.
Implementations§
Source§impl SimOptions
impl SimOptions
pub fn new(run_name: &str) -> SimOptions
Trait Implementations§
Source§impl Clone for SimOptions
impl Clone for SimOptions
Source§fn clone(&self) -> SimOptions
fn clone(&self) -> SimOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for SimOptions
impl Default for SimOptions
Source§fn default() -> SimOptions
fn default() -> SimOptions
Source§impl StructOpt for SimOptions
impl StructOpt for SimOptions
Source§fn from_clap(matches: &ArgMatches<'_>) -> Self
fn from_clap(matches: &ArgMatches<'_>) -> Self
clap::ArgMatches. It’s guaranteed to succeed
if matches originates from an App generated by [StructOpt::clap] called on
the same type, otherwise it must panic.§fn from_args() -> Selfwhere
Self: Sized,
fn from_args() -> Selfwhere
Self: Sized,
std::env::args_os).
Calls clap::Error::exit on failure, printing the error message and aborting the program.§fn from_args_safe() -> Result<Self, Error>where
Self: Sized,
fn from_args_safe() -> Result<Self, Error>where
Self: Sized,
std::env::args_os).
Unlike [StructOpt::from_args], returns clap::Error on failure instead of aborting the program,
so calling .exit is up to you.§fn from_iter<I>(iter: I) -> Self
fn from_iter<I>(iter: I) -> Self
Vec of your making.
Print the error message and quit the program in case of failure. Read more§fn from_iter_safe<I>(iter: I) -> Result<Self, Error>
fn from_iter_safe<I>(iter: I) -> Result<Self, Error>
Vec of your making. Read moreAuto Trait Implementations§
impl Freeze for SimOptions
impl RefUnwindSafe for SimOptions
impl Send for SimOptions
impl Sync for SimOptions
impl Unpin for SimOptions
impl UnwindSafe for SimOptions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.