pub struct RandomController {
pub building: Building,
/* private fields */
}Expand description
§RandomController struct
A RandomController implements the ElevatorController trait. It randomly
generates destination floors for each of a building’s elevators once the elevator
reaches its destination floor.
Fields§
§building: BuildingImplementations§
Source§impl RandomController
impl RandomController
Sourcepub fn from(
building: Building,
rng: StdRng,
p_rational: f64,
) -> RandomController
pub fn from( building: Building, rng: StdRng, p_rational: f64, ) -> RandomController
Initialize a new RandomController given a Building, an StdRng (from
the rand library), and an f64 representing the probability that the
RandomController behaves rationally.
§Example
let my_rng = rand::thread_rng();
let my_building: Building = Building::from(
4_usize,
2_usize,
0.5_f64,
5.0_f64,
2.5_f64,
0.5_f64
);
let my_controller: RandomController = RandomController::from(
my_building,
my_rng,
0.5_f64
);Sourcepub fn from_building(building: Building) -> RandomController
pub fn from_building(building: Building) -> RandomController
Initialize a new RandomController from just a building. The rng is created on the fly, and the rational probability is defaulted to 0.
§Example
let my_building: Building = Building::from(
4_usize,
2_usize,
0.5_f64,
5.0_f64,
2.5_f64,
0.5_f64
);
let my_controller: RandomController = RandomController::from(my_building);Sourcepub fn update_floors_to(&mut self)
pub fn update_floors_to(&mut self)
Set the destination floors of the elevators randomly according to random or rational logic, depending on the p_rational
Sourcepub fn clear_floors_to(&mut self)
pub fn clear_floors_to(&mut self)
If any elevators are at their destination floor, then set that floor to None so that it can be re-randomized next time step.
Trait Implementations§
Source§impl ElevatorController for RandomController
impl ElevatorController for RandomController
Source§fn get_building(&mut self) -> &Building
fn get_building(&mut self) -> &Building
Immutably borrow the building belonging to the controller
Source§fn get_building_mut(&mut self) -> &mut Building
fn get_building_mut(&mut self) -> &mut Building
Mutably borrow the building belonging to the controller
Source§fn clone_building(&mut self) -> Building
fn clone_building(&mut self) -> Building
Clone the building belonging to the controller. Generally used when swapping controllers.
Source§fn can_be_upgraded(&self) -> bool
fn can_be_upgraded(&self) -> bool
Return a boolean signifying whether the controller can be upgraded or not.
Source§fn upgrade(&mut self, incrementation: f64)
fn upgrade(&mut self, incrementation: f64)
Upgrade the controller given an incrementation float
Source§fn update_elevators(&mut self)
fn update_elevators(&mut self)
If the destination floor is None, then randomize a new destination floor. If the elevator is not on its destination floor then move toward it. If the elevator is on its destination floor then stop it and set its destination floor to None for randomization during the next step.
Auto Trait Implementations§
impl Freeze for RandomController
impl RefUnwindSafe for RandomController
impl Send for RandomController
impl Sync for RandomController
impl Unpin for RandomController
impl UnwindSafe for RandomController
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<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.