Source code for openclsim.core.container

"""Component that assigns a container to the simulation objecs."""
from .events_container import EventsContainer
from .simpy_object import SimpyObject


[docs]class HasContainer(SimpyObject): """ A class which can hold information about objects of the same type. Parameters ---------- capacity amount the container can hold level Amount the container holds initially store_capacity The number of different types of information can be stored. In this class it usually is 1. """ def __init__( self, capacity: float, store_capacity: int = 1, level: float = 0.0, *args, **kwargs, ): super().__init__(*args, **kwargs) """Initialization""" container_class = EventsContainer self.container = container_class(self.env, store_capacity=store_capacity) if capacity > 0: self.container.initialize(capacity=capacity, init=level)
[docs] def get_state(self): state = {} if hasattr(super(), "get_state"): state = super().get_state() state.update({"container level": self.container.get_level()}) return state
[docs]class HasMultiContainer(HasContainer): """ A class which can represent information of objects of multiple types. store_capacity: The number of different types of information can be stored. In this calss it is usually >1. initials: a list of dictionaries describing the id_ of the container, the level of the individual container and the capacity of the individual container. """ def __init__(self, initials, store_capacity=10, *args, **kwargs): super().__init__(capacity=0, store_capacity=store_capacity, *args, **kwargs) self.container.initialize_container(initials)
[docs] def get_state(self): state = {} if hasattr(super(), "get_state"): state = super().get_state() state.update( { "container level": { container: self.container.get_level(id_=container) for container in self.container.container_list } } ) return state