![]() |
|
|||||||
| Simulation Analysis simulation software (Arena, AutoMod, Enterprise Dynamics, ProModel, SIMUL8, WITNESS), input and output analysis, experimental design, optimization, simulation model verification and validation |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
|
|||
|
In simulation packages, how is it generally best to model reneging (someone gets mad and leaves the queue) or jockeying (there are multiple lines and someone switches to a line that is or seems to be shorter and/or moving faster)?
|
|
|||
|
One way that I would approach the above, is to define an attribute (stamp) on each part called 'Threshold' that holds the reneging time for each part. (reneging time Threshold can be assigned using an acceptable distribution at part entry to make it randomized for each part in the system). Also stamp the part entry time on each part.
Then have a dummy timed loop (a loop that repeats every so many seconds) to check if each part in the queue has stayed longer than threshold. If it has pull it out and send it to exit. Jockeying is a little more complicated. have an attribute assigned to each part at entry that holds jockeying tendency. I suggest you use a random value b.w 0 and 1. Run a dummy timed loop to check if one queue is distinctly shorter than the other, if so then scan all the other queues from the back to the length of the shortest queue for a part with the highest jockeying tendency and greater than a threshold (below which parts wont jockey) and make that part travel to the end of the shortest queue. The above solution may sound vague. If you can tell me which software you are using, I may be able to give you a more specific answer. Hope this helped. I will post again if I can come up with an easier/more intelligent logic. -- Karthik Vasudevan, PMC |
|
|||
|
Here is my improved response... for reneging
Just before each entity enters the queue, stamp id, time of entry and a threshold time on it. Then have it cloned (duplicated) and send the duplicated entity to a dummy queue. Sort the dummy queue by threshold time. The dummy server in front of the dummy Queue then processes the entities for their threshold time. If the dummy server finishes before the actual server services a particular entity then the entity has overstayed its threshold. Hence make the dummy entity trigger order/send the original entity to exit. If the actual entity gets service first then just dispose the dummy entity. Use the id stamp to find the dummy/actual entities. Hope this solution turns out to be a little less naive. -- Karthik Vasudevan, PMC |
|
|||
|
KVasudevan's method is correct, and indeed the generally accepted method in Arena (which I teach at University of Michigan - Dearborn). Interestingly, I have just discovered that the Extend simulation software makes modeling of reneging pleasantly easy -- just a checkbox in the Queue block to enable reneging and enter the renege time (the time after which the entity "runs out of patience."
__________________
E. Williams, PMC |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|