nrel.hive.state.simulation_state.simulation_state_ops

Module Contents

Functions

tick(...)

advances the simulation clock

add_entity(...)

helper for adding an entity to the simulation

modify_entity(...)

helper for modifying an entity in the simulation

add_entities(...)

helper for adding multiple entities to the simulation

modify_entities(...)

helper for modifying multiple entities in the simulation

add_entity_safe(...)

helper for adding a general entity to the simulation

add_entities_safe(...)

helper for adding multiple general entities to the simulation

modify_entity_safe(...)

helper for modifying a general entity in the simulation

modify_entities_safe(...)

helper for moidfying multiple general entities in the simulation

add_request_safe(...)

adds a request to the SimulationState

remove_request_safe(...)

removes a request from this simulation.

remove_request(→ Tuple[Optional[Exception], ...)

modify_request_safe(...)

given an updated request, update the SimulationState with that request

modify_request(→ Tuple[Optional[Exception], ...)

add_vehicle_safe(...)

adds a vehicle into the region supported by the RoadNetwork in this SimulationState

modify_vehicle_safe(...)

given an updated vehicle, update the SimulationState with that vehicle

modify_vehicle(→ Tuple[Optional[Exception], ...)

remove_vehicle_safe(...)

removes the vehicle from play (perhaps to simulate a broken vehicle or end of a shift)

remove_vehicle(→ Tuple[Optional[Exception], ...)

pop_vehicle_safe(...)

removes a vehicle from this SimulationState, which updates the state and also returns the vehicle.

pop_vehicle(→ Tuple[Optional[Exception], ...)

add_station_safe(...)

adds a station to the simulation

remove_station_safe(...)

remove a station from the simulation. maybe they closed due to inclement weather.

remove_station(→ Tuple[Optional[Exception], ...)

modify_station_safe(...)

given an updated station, update the SimulationState with that station

modify_station(→ Tuple[Optional[Exception], ...)

add_base_safe(...)

adds a base to the simulation

remove_base_safe(...)

remove a base from the simulation. all your base belong to us.

remove_base(→ Tuple[Optional[Exception], ...)

modify_base_safe(...)

given an updated base, update the SimulationState with that base

modify_base(→ Tuple[Optional[Exception], ...)

update_road_network(...)

trigger the update of the road network model based on the current sim time

nrel.hive.state.simulation_state.simulation_state_ops.tick(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState) nrel.hive.state.simulation_state.simulation_state.SimulationState[source]

advances the simulation clock

Parameters:

sim – the simulation state

Returns:

the simulation after being updated

nrel.hive.state.simulation_state.simulation_state_ops.add_entity(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entity: nrel.hive.model.entity.Entity) nrel.hive.state.simulation_state.simulation_state.SimulationState[source]

helper for adding an entity to the simulation

Parameters:
  • sim – the simulation state

  • entity – the entity to add

Returns:

the updated simulation state

Raises:

an error if the entity cannot be added

nrel.hive.state.simulation_state.simulation_state_ops.modify_entity(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entity: nrel.hive.model.entity.Entity) nrel.hive.state.simulation_state.simulation_state.SimulationState[source]

helper for modifying an entity in the simulation

Parameters:
  • sim – the simulation state

  • entity – the entity to modify

Returns:

the updated simulation state

Raises:

an error if the entity cannot be modified

nrel.hive.state.simulation_state.simulation_state_ops.add_entities(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entities: Iterable[nrel.hive.model.entity.Entity]) nrel.hive.state.simulation_state.simulation_state.SimulationState[source]

helper for adding multiple entities to the simulation

Parameters:
  • sim – the simulation state

  • entities – the entities to add

Returns:

the updated simulation state

Raises:

an error if any of the entities cannot be added

nrel.hive.state.simulation_state.simulation_state_ops.modify_entities(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entities: Iterable[nrel.hive.model.entity.Entity]) nrel.hive.state.simulation_state.simulation_state.SimulationState[source]

helper for modifying multiple entities in the simulation

Parameters:
  • sim – the simulation state

  • entities – the entities to modify

Returns:

the updated simulation state

Raises:

an error if any of the entities cannot be modified

nrel.hive.state.simulation_state.simulation_state_ops.add_entity_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entity: nrel.hive.model.entity.Entity) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

helper for adding a general entity to the simulation

Parameters:
  • sim – the simulation state

  • entity – the entity to add

Returns:

the updated simulation state or an error

nrel.hive.state.simulation_state.simulation_state_ops.add_entities_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entities: Iterable[nrel.hive.model.entity.Entity]) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

helper for adding multiple general entities to the simulation

Parameters:
  • sim – the simulation state

  • entities – the entities to add

Returns:

the updated simulation state or an error

nrel.hive.state.simulation_state.simulation_state_ops.modify_entity_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entity: nrel.hive.model.entity.Entity) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

helper for modifying a general entity in the simulation

Parameters:
  • sim – the simulation state

  • entity – the entity to modify

Returns:

the updated simulation state or an error

nrel.hive.state.simulation_state.simulation_state_ops.modify_entities_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, entities: Iterable[nrel.hive.model.entity.Entity]) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

helper for moidfying multiple general entities in the simulation

Parameters:
  • sim – the simulation state

  • entities – the entities to modify

Returns:

the updated simulation state or an error

nrel.hive.state.simulation_state.simulation_state_ops.add_request_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, request: nrel.hive.model.request.Request) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

adds a request to the SimulationState

Parameters:
  • sim – the simulation state

  • request – the request to add

Returns:

the updated simulation state, or an error

nrel.hive.state.simulation_state.simulation_state_ops.remove_request_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, request_id: nrel.hive.util.typealiases.RequestId) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

removes a request from this simulation. called once a Request has been fully serviced and is no longer alive in the simulation.

Parameters:
  • sim – the simulation state

  • request_id – id of the request to delete

Returns:

the updated simulation state (does not report failure)

nrel.hive.state.simulation_state.simulation_state_ops.remove_request(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, request_id: nrel.hive.util.typealiases.RequestId) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.modify_request_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_request: nrel.hive.model.request.Request) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

given an updated request, update the SimulationState with that request

Parameters:
  • sim – the simulation state

  • updated_request

Returns:

the updated simulation, or an error

nrel.hive.state.simulation_state.simulation_state_ops.modify_request(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_request: nrel.hive.model.request.Request) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.add_vehicle_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, vehicle: nrel.hive.model.vehicle.vehicle.Vehicle) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

adds a vehicle into the region supported by the RoadNetwork in this SimulationState

Parameters:
  • sim – the simulation state

  • vehicle – a vehicle

Returns:

updated SimulationState, or SimulationStateError

nrel.hive.state.simulation_state.simulation_state_ops.modify_vehicle_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_vehicle: nrel.hive.model.vehicle.vehicle.Vehicle) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

given an updated vehicle, update the SimulationState with that vehicle

Parameters:
  • sim – the simulation state

  • updated_vehicle – the vehicle after calling a transition function and .step()

Returns:

the updated simulation, or an error

nrel.hive.state.simulation_state.simulation_state_ops.modify_vehicle(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_vehicle: nrel.hive.model.vehicle.vehicle.Vehicle) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.remove_vehicle_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, vehicle_id: nrel.hive.util.typealiases.VehicleId) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

removes the vehicle from play (perhaps to simulate a broken vehicle or end of a shift)

Parameters:
  • sim – the simulation state

  • vehicle_id – the id of the vehicle

Returns:

the updated simulation state

nrel.hive.state.simulation_state.simulation_state_ops.remove_vehicle(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, vehicle_id: nrel.hive.util.typealiases.VehicleId) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.pop_vehicle_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, vehicle_id: nrel.hive.util.typealiases.VehicleId) returns.result.ResultE[Tuple[nrel.hive.state.simulation_state.simulation_state.SimulationState, nrel.hive.model.vehicle.vehicle.Vehicle]][source]

removes a vehicle from this SimulationState, which updates the state and also returns the vehicle. supports shipping this vehicle to another cluster node.

Parameters:
  • sim – the simulation state

  • vehicle_id – the id of the vehicle to pop

Returns:

either a Tuple containing the updated state and the vehicle, or, an error

nrel.hive.state.simulation_state.simulation_state_ops.pop_vehicle(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, vehicle_id: nrel.hive.util.typealiases.VehicleId) Tuple[Exception | None, Tuple[nrel.hive.state.simulation_state.simulation_state.SimulationState, nrel.hive.model.vehicle.vehicle.Vehicle] | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.add_station_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, station: nrel.hive.model.station.station.Station) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

adds a station to the simulation

Parameters:
  • sim – the simulation state

  • station – the station to add

Returns:

the updated SimulationState, or a error = SimulationStateError

nrel.hive.state.simulation_state.simulation_state_ops.remove_station_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, station_id: nrel.hive.util.typealiases.StationId) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

remove a station from the simulation. maybe they closed due to inclement weather.

Parameters:
  • sim – the simulation state

  • station_id – the id of the station to remove

Returns:

the updated simulation state, or an exception

nrel.hive.state.simulation_state.simulation_state_ops.remove_station(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, station_id: nrel.hive.util.typealiases.StationId) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.modify_station_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_station: nrel.hive.model.station.station.Station) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

given an updated station, update the SimulationState with that station

Parameters:
  • sim – the simulation state

  • updated_station – the revised station data

Returns:

the updated simulation, or an error

nrel.hive.state.simulation_state.simulation_state_ops.modify_station(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_station: nrel.hive.model.station.station.Station) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.add_base_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, base: nrel.hive.model.base.Base) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

adds a base to the simulation

Parameters:
  • sim – the simulation state

  • base – the base to add

Returns:

the updated SimulationState, or a SimulationStateError

nrel.hive.state.simulation_state.simulation_state_ops.remove_base_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, base_id: nrel.hive.util.typealiases.BaseId) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

remove a base from the simulation. all your base belong to us.

Parameters:
  • sim – the simulation state

  • base_id – the id of the base to remove

Returns:

the updated simulation state, or an exception

nrel.hive.state.simulation_state.simulation_state_ops.remove_base(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, base_id: nrel.hive.util.typealiases.BaseId) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.modify_base_safe(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_base: nrel.hive.model.base.Base) returns.result.ResultE[nrel.hive.state.simulation_state.simulation_state.SimulationState][source]

given an updated base, update the SimulationState with that base invariant: base locations will not be changed!

Parameters:
  • sim – the simulation state

  • updated_base

Returns:

the updated simulation, or an error

nrel.hive.state.simulation_state.simulation_state_ops.modify_base(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, updated_base: nrel.hive.model.base.Base) Tuple[Exception | None, nrel.hive.state.simulation_state.simulation_state.SimulationState | None][source]
nrel.hive.state.simulation_state.simulation_state_ops.update_road_network(sim: nrel.hive.state.simulation_state.simulation_state.SimulationState, sim_time: nrel.hive.model.sim_time.SimTime) nrel.hive.state.simulation_state.simulation_state.SimulationState[source]

trigger the update of the road network model based on the current sim time

Parameters:
  • sim – the simulation state

  • sim_time – the current sim time

Returns:

updated simulation state (and road network)