Hello!
I asked a question here a couple of days ago which worked perfectly however another problem was found when running the simulation.
The following steps show the desired logic of the simulation:
1. Two forklift operators are responsible to transfer the pallets to their designated floorstorage.
- If the floor storage is completely occupied, temporarily transfer this to "Queue 14". So that once a slot opens or is available on the said floorstorage, then this pallet will be transferred to that location.
2. The pallets that are on the floorstorages are then transferred by an operator to their designated queue. (The logic here works perfectly fine!)
Current issue with the simulation:
The first step of the simulation works until a specific floorstorage is completely occupied. This tends for the forklift operators to stop. I would like to temporarily transfer this to "Queue 14" and once a slot is open on its designated floorstorage then this gets transferred to that location.
The following links below are some of the logic that I tried:
1. https://answers.flexsim.com/questions/90910/when-rack-storage-is-full-error-message-and-model.html?childToView=138947#comment-138947 (I've tried doing this by simply putting a port between the floorstorage and queue, but did not worked for me. I'm pretty sure I've missed something in here!)
2. https://answers.flexsim.com/questions/25815/how-to-get-part-of-label-from-another-label.html
(I also tried playing around with this by getting the pallet's location through extracting the label "FloorStorageNo" from the pallets. I was attempting to take the value of the pallet's "FloorStorageNo" to compare this to the conditions written on the custom code. However, every time I run the simulation, the return value of this custom code (named "FloorStorageQty") is always zero. I guess taking the value of "FloorStorageNo" was not successful at all.)
Please see below my plan for the process flow:
1. For each pallet, I'd like to assign a label based on "conditional by case". "FloorStorageNo" will be holding this value.
- So if my pallet is 1, then the corresponding case for it is the default case which points to Model.find("FloorStorage1").
- On the pallet's label, this appears as "/FloorStorage1".
2. I created another "assign a label" which contains a custom code for comparison.
- So if the "FloorStorageNo" contains /FloorStorage1, then this should go to the first condition which should return the length of floorstorage1. (However, the custom code can't seem to pick up the value of the "FloorStorageNo")
3. Only if Step 2 is working, then I can able to know if the floorstorage is full by using the "decide". So that if there are 32 pallets currently then this will trigger the forklift operators to transfer the pallet to Queue14.
Lastly, here is the sample model of my current situation. Current State.fsm
FYI: I just wanted to test out first the conveyor belt 1 and that's why its process flow differs from conveyor belt 2.
I would really appreciate it if anyone can help me with my problem.
Thank you in advance for your time and effort in helping me! :)