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 cancel_drivers_delay_threshold: Option<Duration>,
    pub delay_trips_instead_of_cancelling: Option<Duration>,
    pub skip_analytics: bool,
}

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.

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.

cancel_drivers_delay_threshold: Option<Duration>

If present, cancel any driving trips who will pass through a road currently experiencing delays beyond this threshold.

delay_trips_instead_of_cancelling: Option<Duration>

Instead of cancelling trips due to cancel_drivers_delay_threshold or congestion capping, delay the start of the trip by this amount, and try again. If conditions are still problematic, repeat a fixed 3 times before cancelling.

skip_analytics: bool

Don’t collect any analytics. Only useful for benchmarking and debugging gridlock more quickly.

Implementations

impl SimOptions[src]

pub fn from_args(args: &mut CmdArgs, rng_seed: u64) -> SimOptions[src]

impl SimOptions[src]

pub fn new(run_name: &str) -> SimOptions[src]

Trait Implementations

impl Clone for SimOptions[src]

impl Default for SimOptions[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any

impl<T> DowncastSync for T where
    T: Any + Send + Sync

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,