ATTENTION

This FlexSim Community Forum is read-only. Please post any new questions, ideas, or discussions to our new community (we call it Answers) at https://answers.flexsim.com/. Our new Question & Answer site brings a modern, mobile-friendly interface and more focus on getting answers quickly. There are a few differences between how our new Q&A community works vs. a classic, threaded-conversation-style forum like the one below, so be sure to read our Answers Best Practices.


flexsim.com

Go Back   FlexSim Community Forum > FlexSim Software > Q&A
Downloads

Q&A Using Flexsim and building models

  #1  
Old 05-15-2008
Tom David's Avatar
Tom David Tom David is offline
Flexsim User
 
Join Date: Aug 2007
Location: Schwaebisch Gmuend, Germany
Posts: 430
Downloads: 157
Uploads: 47
Thanks: 486
Thanked 450 Times in 233 Posts
Rep Power: 520
Tom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant futureTom David has a brilliant future
Default Queue (standard, LIFO, FIFO)

Guys,

As far as I know the Queue (standard) in Flexsim is a queue which gives flow items further if the receiving objects are ready to receive.
So if I have a model where item type 1,2 and 3 arrive with one queue for all items and three following processors where the first processor only takes item type 1 the second one only item type 2 and the third one only item type 3 (Flow Tab: Input / Pull / Pull Requirement Specific Itemtype 1) the queue will release an item if the following processor can receive it does not matter on which position in the queue the flow item is.
So if the first item is item type 1 and the second is item type 2 and the third is item type 2 and processor 2 can receive an item the second item will leave.
This means that in Flexsim the queue is not a “real” FIFO queue. I assume that the tick LIFO means that in the above case the third item will leave.

I know that if I want a “real” FIFO queue, I just can add an additional queue with Maximum Content 1 (I should take care that the first queue has as Maximum Content capacity minus 1).
This will work and seems to be a way to solve it.

I am not sure if every user is aware of this mechanism. In the Manual for the Queue it says:
Overview
The queue is used to store flowitems when a downstream object cannot accept them yet. By default, the queue works in a first-in-first-out manner, meaning that when the downstream object becomes available, the flowitem that has been waiting for that object the longest will leave the queue first. The queue has options for accumulating flowitems into a batch before releasing them.

But maybe this is only an issue for not English native speaker. If I hear FIFO I would expect first-in and first-out means only the very first item can leave.
Or is this case only a special issue, because of using Pull strategy?

In general I like to ask if I am right with what I said?
I just like to ask if this is the right way to do it or do I oversee anything?
Is it in the manual clear enough or should we point this out stronger?

Take care
tom the (A)tom
__________________
tom the (A)tom: "We have solved our problems ... now we have to fight the solutions."
  #2  
Old 05-15-2008
Brenton King's Avatar
Brenton King Brenton King is offline
Flexsim Technical Support
 
Join Date: Jul 2007
Posts: 44
Downloads: 60
Uploads: 5
Thanks: 10
Thanked 41 Times in 15 Posts
Rep Power: 271
Brenton King is a name known to allBrenton King is a name known to allBrenton King is a name known to allBrenton King is a name known to allBrenton King is a name known to allBrenton King is a name known to all
Default

Tom,
Everything is working how it was intended to from what I understood. I just don't think that you should use pull if you want the queue to be FIFO. If you select a different option in the sendtoport field of the flow tab you select "cases by value" from the pick options and have it only evaluate the first object in the queue and send it to the port you want depending on itemtype. The pull method would be helpful if you didn't care which order they left the queue as long as you got the correct itemtype you wanted. Maybe I just didn't understand your question though.
  #3  
Old 05-15-2008
Anthony Johnson's Avatar
Anthony Johnson Anthony Johnson is offline
Manager of Product Development
 
Join Date: Jul 2007
Posts: 440
Downloads: 86
Uploads: 4
Thanks: 171
Thanked 899 Times in 288 Posts
Rep Power: 735
Anthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond reputeAnthony Johnson has a reputation beyond repute
Default

Tom,
I agree that perhaps the manual should be more specific. It should explain what FIFO means for the queue, because it's not a complete first-in-first-out. It's more of a FIFO-by-availability. The queue will send the longest waiting part that matches whatever send-to and/or pull strategy you have specified. And you are correct that if you check LIFO, then the queue will send out the shortest waiting part that matches whatever send-to and/or pull strategy.

Also, you can pretty easily modify the queue to be completely FIFO or LIFO. Here's a model that does that: queue_fifo_lifo.zip. I've customized the send-to to only release the first item in the queue for FIFO, and only the last item in the queue for LIFO. If it's not the right item, I return -1, meaning I don't want to release the item. Then in the exit trigger I send a delayed message in 0 time, which will the re-release the part behind (or before) the item that exited. For LIFO, I have to do an extra thing on the entry trigger to "un-release" the previous item, using the holditem() command.


Thread Thread Starter Forum Replies Last Post
a question on queue KelvinHo Q&A 15 11-09-2011 07:16 AM
Queue Sorting Jeff Nordgren Q&A 12 05-22-2008 03:21 PM
How to get interval average,max,etc of a queue content ? qin tian Q&A 5 02-14-2008 10:11 PM
Queue stacking Paul Dowling Q&A 2 11-27-2007 11:57 PM


All times are GMT -6.
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.
Copyright 1993-2018 FlexSim Software Products, Inc.