Struct sim::sim::SimOptions

source ·
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: 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.

§allow_block_the_box: bool

Allow 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: bool

Normally 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: bool

Normally 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: bool

Disable 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: 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§

source§

impl SimOptions

source

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

Trait Implementations§

source§

impl Clone for SimOptions

source§

fn clone(&self) -> SimOptions

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Default for SimOptions

source§

fn default() -> SimOptions

Returns the “default value” for a type. Read more
source§

impl StructOpt for SimOptions

source§

fn clap<'a, 'b>() -> App<'a, 'b>

Returns clap::App corresponding to the struct.
source§

fn from_clap(matches: &ArgMatches<'_>) -> Self

Builds the struct from 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() -> Self
where Self: Sized,

Builds the struct from the command line arguments (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,

Builds the struct from the command line arguments (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
where Self: Sized, I: IntoIterator, <I as IntoIterator>::Item: Into<OsString> + Clone,

Gets the struct from any iterator such as a 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>
where Self: Sized, I: IntoIterator, <I as IntoIterator>::Item: Into<OsString> + Clone,

Gets the struct from any iterator such as a Vec of your making. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn 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.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

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

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

§

fn is_within(&self, b: &G2) -> bool