question

Adrian M avatar image
0 Likes"
Adrian M asked Adrian M commented

Queue Stuck in the Releasing State

Hello,


It looks like Queue10a is stuck in the releasing state because at first the condition I have set in the Send to Port was false. Eventually the condition does become true, but Queue10a does not want to release the item to its designated output port. I'm guessing it's because Queue10a needs to recheck the condition for the particular item, but I'm not sure how to execute.


I have tried using ProcessFlow (EventTriggeredSource, Decide with the same condition, Move Object, Sink) and it works as intended, but the problem with this is the timing since I have other Objects with the same condition to send to port if the condition is met. When I have multiple objects checking the condition where they will send the item to designated port because for a second the condition is met. The Variable ends up with a value of -1 since two items were inputted into the system when there was only space for 1.

1718921033220.png

I guess what I'm wondering is how can I get the items in Queue10a to move by rechecking the condition for that particular item. I hope this makes sense.


Software Version = 23.0.2

Thank you,

FlexSim 23.0.15
stateslogicconditional port
1718921033220.png (152.7 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Paula LG avatar image
0 Likes"
Paula LG answered Adrian M commented

Hi Adrian,

Have you tried using a zone with max content one? The structure should be very similar: EventTriggeredSource, Enter Zone, Decide with the same condition, Move Object, Exit Zone, Sink. This way, you make sure that there's only one item at a time evaluating if it can enter the next object and the rest of them will enter the decide activity once this first one has already left, returning false and not exiting.

I hope it helps!

· 7
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Adrian M avatar image Adrian M commented ·

Hi Paula,


Yes, I have utilized the Zone feature; however, my variable still reaching -1 meaning that two items were meeting the condition and released two items at once when I only had room for one item. This is mostly due to my 3d objects having the same condition (Queues and/or Processors) and for that one second where the condition is true any object or process flow decide activity executing this condition will release its object. At times multiple items are released resulting in -1.

I'm wondering if there is a way where we can execute the condition again for the items in the queue. It looks as if the condition was initiated when it first arrived in the queue but it was false so the item stays in the queue. After that, the item stays in the queue forever because there is nothing telling the queue to check the condition again for that particular item.


Thank you,

0 Likes 0 ·
Adrian M avatar image Adrian M Adrian M commented ·

For some reason, I have the same code snippet implemented in the processor (far right of the video) that decremented the Current value from 2 to 1. In the processor (far left of the video) that did not execute the code snippet which needed to decrement the Current value from 1 to 0. Instead, the next time the code snippet is executed at another object then it realizes we have -1 in the system (inputting two items when the value is at 1.) Why is the code snippet trigger on entry not working? It works every time before this, but at this particular time it decides not to work.

0 Likes 0 ·
Adrian M avatar image Adrian M Adrian M commented ·

I think I figured out what the problem was - the snippet code counts all the subnodes.length of each processor I call out that I need to maintain. However, when an operator is transporting the unit from one processor to another, the subnodes.length command does not count it when I need it to count since the item is still within the same operation and utilizing the same resource (trackedvariable).

Now, another issue occurs where all the available spaces in the tracked variable are accounted for at 0. I stop the input of the processors affected with .input.stop, but since the task sequence has been generated for this particular operator it will continue until it finishes its task and load the item on the processor (and sabotage the count and turn the count to -1) although the processor's input is stopped. Is there a way for the operator to reevaluate the situation.

1719276196006.png

0 Likes 0 ·
1719276196006.png (179.1 KiB)
Show more comments