I am testing out the concepts for an ASRS model. I copied a lot from your great Warehouse Demo model (Thank you!), and got tips for using slot.aisleID and slot.bayID from @Jörg Vogel 's question last year! Now it is almost perfect, but I have one nagging problem.
I have pallets coming in from the left (West) and they are placed by searching for the correct rack label, and sorting by aisle and by bay so that they are placed on the rightmost rack first (aisle 1), and then the same bay and level on the second rack (aisle 2) etc, to form a row of pallets.
On the outbound side I am searching for the correct "palletType" label, and then allowing the default FIFO picking order, which works perfectly, pulling from the "Font" aisle 1 first, then aisle 2 etc.
My problem is when I have picked one of the "front" pallets, that slot cannot be refilled (in the real world) until the pallets "behind" have been removed, since that would mean physically moving a pallet through another one! The pallets also cannot move up to the front slot without using the "ASRSvehicle". (I may add some periodic "rebalancing" code later on, but for now they just have to sit and wait until they are picked.)
The model is placing new pallets into the recently open slots at the front. How do I "flag" the slot as "not available", even though it is empty? I thought I could use the "slot.isAssigned" label, but I can't see a way to do that without putting an item into it. I could add a List, and search that way, but I really don't want to, since that would be duplicating the search algorithm which you have so nicely given us!
Does anyone have an idea?
Here's the model: Test ASRS Concept Model.fsm