Simulation results#
The Simulator Automatic Warehouse library allows you to simulate
a real Vertimag and produce as output raw information.
We provide an entire Python class with many services to process
the raw data of the simulation into an organized Dataframe.
With the term DataFrame, we refer to the data object structure of Pandas.
How to instantiate#
To instantiate the class, all that is required are the items obtained from a Pandas DataFrame. This object must be instantiated using the history of the warehouse simulation:
from pandas import DataFrame
from automatic_warehouse.utils.statistics.warehouse_statistics import WarehouseStatistics
from automatic_warehouse.simulation.simulation_type.warehouse_simulation import WarehouseSimulation
from automatic_warehouse.warehouse import Warehouse
warehouse = Warehouse()
simulation = WarehouseSimulation(warehouse)
simulation.run_simulation()
warehouse_statistics = WarehouseStatistics(
DataFrame(simulation.get_store_history_dataframe())
)
Count the total number of actions at a given time#
actions_started_every(self, time: TimeEnum) -> DataFrameGiven a certain time, the method calculates how many actions have only been started. The finish time is not considered.
As you can see in the example below, the returned DataFrame contains two columns: the total number of actions performed and the time at which they were started.
Start
Count
2024-02-17 12:00
201
2024-02-17 13:00
404
2024-02-17 14:00
395
actions_finished_every(self, time: TimeEnum) -> DataFrameThe same logic as
actions_started_everybut with the actions that are only finished.Finish
Count
2024-02-17 12:00
200
2024-02-17 13:00
404
2024-02-17 14:00
396
actions_completed_every(self, time: TimeEnum) -> DataFrameA merge of the previous two, but this DataFrame counts how many actions are started and finished in the same time, given as a parameter.
As you can see in the example, some rows contain the same start time. These rows show how many actions are started before the finish time.
For example, if an action starts at (e.g.) 10:58 and ends at 11:05, it will not be counted in the 10-hour counter.
Start
Finish
Count
2024-02-17 12:00
2024-02-17 12:00
200
2024-02-17 12:00
2024-02-17 13:00
1
2024-02-17 13:00
2024-02-17 13:00
403
2024-02-17 13:00
2024-02-17 14:00
1
2024-02-17 14:00
2024-02-17 14:00
395
Count the total number of a given action at a given time#
These methods have the same logic as the functions in Count the total number of actions at a given time section, but the following refers to a single action given as a parameter.
action_started_every(self, action: ActionEnum, time: TimeEnum) -> DataFrameAn example of how to call:
warehouse_statistics.action_started_every(ActionEnum.EXTRACT_TRAY, TimeEnum.HOUR)
Start
count
2024-02-17 12:00
53
2024-02-17 13:00
93
2024-02-17 14:00
95
action_finished_every(self, action: ActionEnum, time: TimeEnum) -> DataFrameAn example of how to call:
warehouse_statistics.action_finished_every(ActionEnum.EXTRACT_TRAY, TimeEnum.HOUR)
Finish
count
2024-02-17 12:00
52
2024-02-17 13:00
94
2024-02-17 14:00
95
action_completed_every(self, action: ActionEnum, time: TimeEnum) -> DataFrameAn example of how to call:
warehouse_statistics.action_completed_every(ActionEnum.EXTRACT_TRAY, TimeEnum.HOUR)
Type of Action
Start
Finish
Count
0
ExtractTray
2024-02-18 14:00
2024-02-18 14:00
82
1
ExtractTray
2024-02-18 14:00
2024-02-18 15:00
1
2
ExtractTray
2024-02-18 15:00
2024-02-18 15:00
93
3
ExtractTray
2024-02-18 15:00
2024-02-18 16:00
1
4
ExtractTray
2024-02-18 16:00
2024-02-18 16:00
73
Count the total amount of a given action in the whole simulation#
count_action_completed(self, action: ActionEnum) -> intThe number of times an action has been completed.
Note: any action that isn’t completed is not counted.
Simulation time#
start_time_simulation(self) -> TimestampReturn the start time of the simulation as a Pandas Timestamp.
For example:
pandas.Timestamp('2024-02-17 12:29:59.124635')finish_time_simulation(self) -> TimestampReturn the finish time of the simulation as a Pandas Timestamp.
For example:
pandas.Timestamp('2024-02-17 14:59:48.234510')total_simulation_time(self) -> TimedeltaReturn the total time of the simulation as a Pandas Timedelta.
For example:
pandas.Timedelta('0 days 02:29:49.109875')