Struct sim::SimOptions [−][src]
pub struct SimOptions { pub run_name: String, pub use_freeform_policy_everywhere: bool, pub dont_block_the_box: bool, pub recalc_lanechanging: bool, pub break_turn_conflict_cycles: bool, pub 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: String
Used to distinguish savestates for running the same scenario.
use_freeform_policy_everywhere: bool
Ignore 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.
dont_block_the_box: bool
Prevent a vehicle from starting a turn if their target lane is already full, since this may mean they’ll get stuck blocking the intersection.
recalc_lanechanging: bool
As a vehicle follows a route, opportunistically make small changes to use a different lane, based on some score of “least-loaded” lane.
break_turn_conflict_cycles: bool
If a cycle of vehicles depending on each other to turn is detected, temporarily allow “blocking the box” to try to break gridlock.
handle_uber_turns: bool
Enable 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.
alerts: AlertHandler
When a warning is encountered during simulation, specifies how to respond.
infinite_parking: bool
Ignore 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: bool
Allow 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: bool
Don’t collect any analytics. Only useful for benchmarking and debugging gridlock more quickly.
Implementations
Trait Implementations
Returns the “default value” for a type. Read more
Auto Trait Implementations
impl RefUnwindSafe for SimOptions
impl Send for SimOptions
impl Sync for SimOptions
impl Unpin for SimOptions
impl UnwindSafe for SimOptions
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert 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
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self