Tom S4 avatar image
Tom S4 asked Eric M answered

Clean flush of all items on production lines

I'm modeling 3 production lines with the current goal of validating throughput results. There are currently two situations that can occur - either all of the lines finish their production for the day before the shift ends, or one (or more) lines do not finish in time.

I need all operations to go down at 5pm (handling this with a time table). If there is a line still processing, I need all flow items within that line to immediately leave with 0 time delay.

The way I am currently handling it is by looping through all objects on that line. If there are flowitems within that object, then I will destroyeventsofobject(processor/queue/combiner/etc). Then, I move those flow items to a designated area where they can be cleaned up with no delay. Once that all happens, I can re-set their states to idle/empty/collecting/etc, and finally let the time table set them down.

When I introduced operators at a later date, I had to start preempting/aborting their activities because they had been stuck working with a nonexistent flowitem. And now, I've worked myself into a situation where only some operators have to abort their activities. This has gotten messy.

My question is - is there a clean way to move objects through to the end with 0 time delay? This would include

  • Forcing processors in the middle of processing to release their items with no further delay
  • Forcing combiners to forget their target quantities and instead just release their partial batch
  • No negative effects on operators currently working a task involving a flowitem that will no longer exist

I am open to alternative solutions, as long as I am able to set all objects down when the shift ends, and not have any leftover items.

FlexSim 21.1.4
flexsim 21.1.4timetableseventsmoveobjectsoperator tasks
· 2
5 |100000

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

Tom S4 avatar image Tom S4 commented ·

Following up on this, I figure that I can push a "cleanup" object through. Process times can be based on a label, so I can push through with 0 delay before stopping objects. This can be used to solve bullet #2. I can set the target component quantities to 1 for this object, which can clear out the combiners.

Still need to find a way to push out items that are in the middle of processing, while not causing an error with the operators. Is there a way to manually trigger process finish or finish that event early? Are there negative consequences associated with this?

0 Likes 0 ·
Ryan Clark avatar image Ryan Clark commented ·

Hi @tom.s4,

We would be better able to help by looking at your model. To receive a more accurate solution, please post your model or a sample model that demonstrates your question.

Proprietary models can be posted as a private question visible only to FlexSim U.S. support staff. You can also contact your local FlexSim distributor for phone or email help.

0 Likes 0 ·
Tom S4 avatar image
1 Like"
Tom S4 answered

For those wondering, here is how I solved this problem.

For each flow item that is created, I assign a "max finish time" label - this is essentially "today at 5pm" minus a miniscule number (i.e., 0.000001). All of my processors have dynamic processing times, so in each of them, I calculate what that time should be, then check if there is enough time between now and the max finish time to finish. If there isn't, I'll give it a time of 0 and set a label on that item that signifies all downstream processors should do the same.

This is leveraged for the combiners as well. I can change the target quantity to 1 when needed.

Operators are also not affected - I don't believe task sequences are created when the process times are zero.

All of my statistics collectors just had to be changes to only track based on the label (i.e., don't count items that are being flushed).

5 |100000

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

Eric M avatar image
Eric M answered

@Tom S4 sounds like you found a pretty nifty solution. For what it's worth, I've attached a small sample model that uses some extra code in the Time Table's down and resume functions. It moves all the objects on down and on resume 'resets' each object to normal states and tasks. Just thought I'd post this in case you or others find it useful.

move all flowitems table code.fsm

5 |100000

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

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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