Simulating a warehouse, taking in packages, processing them, and sending them out
License
—
Deps
1
Install Size
—
Vulns
✓ 0
Published
Mar 26, 2024
$ dotnet add package SimulatorAPI dokumentasjon - WarehouseSimulation
Konfigurering av varehuset
- Det er mulig å bestemme om et varehus er egnet for varer som krever en kald omgivelse, tørr omgivelse, og om et varehus er egnet for varer som er farlig gods. I tillegg er det mulig å bestemme kapasiteten til terminalen i varehuset (stedet for varer som ikke er i en hylle)
- For å konfigurere varehuset, lag en instans av WarehouseConfiguration objektet, og bruk det til å konfigurere varehuset:
a. Kald varehus bruker IsCoolStorage (boolean) b. Tørr varehus bruker IsDryStorage (boolean)
c. Varehus for farlig gods bruker IsHazardous (boolean)
d. Kapasiteten til terminalen i varehuset bruker TerminalCapacity (int)
Oppretting av varehus
- Et varehus opprettes ved å lage en instans av Warehouse objektet med en instans av WarehouseConfiguration objektet som parameter, for eksempel:
Warehouse WarehouseA = new Warehouse(WarehouseConfigurationA)
- For å fylle varehuset med hyller, bruk AddShelf metoden som er definert i Warehouse objektet. AddShelf metoden tar følgende parametere:
a. Navn på hyllen (string)
b. Kapasiteten på hyllen (int)
c. Type som GoodsType.DryGoods/GoodsType.Refrigerated/GoodsType.Hazardous d. Tiden det tar å flytte varer fra terminal til hylle målt i dager (int)
e. Tiden det tar å flytte varer fra hylle til terminal målt i dager (int)
- For å legge til et vare, bruk AddItem metoden som er definert i Warehouse objektet. AddItem metoden tar følgende parametere:
a. Navn på vare (string)
b. Type som GoodsType.DryGoods/GoodsType.Refrigerated/GoodsType.Hazardous
Leveranse og henting av vare
- Når en vare er laget og det skal legges til en leveranse av en vare til terminalen, bruk AddDelivery metoden som er definert i Warehouse objektet. AddDelivery metoden tar følgende parametere:
a. Hvilken dag i simuleringen varen skal ankomme terminalen (int)
b. Type som GoodsType.DryGoods/GoodsType.Refrigerated/GoodsType.Hazardous c. Antall varer (int)
d. Navn på varen som tidligere ble laget med AddItem metoden (string)
- For å legge til en henting av en vare fra terminalen, bruk AddPickup metoden som er definert i Warehouse objektet. AddPickup metoden tar de samme parametere som i AddDelivery metoden
- For å legge til leveranse til terminalen eller henting fra terminalen med intervall, bruk AddWeeklyDelivery eller AddWeeklyPickup metoden som er definert i Warehouse objektet. AddWeeklyDelivery og AddWeeklyPickup metoden tar følgende parametere:
a. Dager mellom hver leveranse av vare eller hver henting av vare (int)
b. Hvilken dag i simuleringen leveransen eller hentingen skal begynne (int)
c. Type som GoodsType.DryGoods/GoodsType.Refrigerated/GoodsType.Hazardous d. Antall varer som skal leveres eller hentes (int)
e. Navn på varen som tidligere ble laget med AddItem metoden (string)
Hvordan starte simulasjonen
- Når alt er konfigurert så startes simulasjonen ved bruk av SimulationRun metoden som er definert i Warehouse objektet, og antall dager simulasjonen skal kjøre er parameter (int) i SimulationRun metoden
- Det er mulig å skrive ut informasjon om en vare ved å bruke PrintItemHistory metoden som er definert i Warehouse objektet og som tar navn på vare og nummer som parameter i en og samme string i formen "Varenavn_100"
Et eksempel med kode
- Varehuset tar imot alle typer varer, og har et terminal som har plass til 1000 varer. Det er 5 hyller for kjølevarer i varehuset, og hver av dem med en kapasitet på 100 varer. Det tar 1 dag å flytte varer fra terminalen til hyllene, og det tar 1 dag å flytte varene fra hyllene til terminalen. En dag kommer det inn 500 bananer fra en produsent og disse skal sendes ut 10 dager senere.
WarehouseConfiguration warehouseConfig = new WarehouseConfiguration {
IsCoolStorage = true,

IsDryStorage = true, IsHazardous = true, TerminalCapacity = 1000
};
Warehouse myWarehouse = new Warehouse(warehouseConfig);
myWarehouse.AddShelf("H1", 100, GoodsType.Refrigerated, 1, 1); myWarehouse.AddShelf("H2", 100, GoodsType.Refrigerated, 1, 1); myWarehouse.AddShelf("H3", 100, GoodsType.Refrigerated, 1, 1); myWarehouse.AddShelf("H4", 100, GoodsType.Refrigerated, 1, 1); myWarehouse.AddShelf("H5", 100, GoodsType.Refrigerated, 1, 1);
myWarehouse.AddItem("Banan", GoodsType.Refrigerated);
myWarehouse.AddDelivery(1, GoodsType.Refrigerated, 500, "Banan"); myWarehouse.AddPickup(10, GoodsType.Refrigerated, 500, "Banan");
myWarehouse.SimulationRun(10); myWarehouse.PrintItemHistory("Banan_345");
Det er også daglige oppdateringer som viser status for hver av hyllene, men det vises ikke i dette bildet fordi det ville tatt for stor plass.