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 02-22-2011
Kellen Dick Kellen Dick is offline
Flexsim User
 
Join Date: May 2010
Location: Winnipeg, MB
Posts: 3
Downloads: 0
Uploads: 0
Thanks: 2
Thanked 0 Times in 0 Posts
Rep Power: 0
Kellen Dick is on a distinguished road
Default Release Only When Operator(s) Ready

Hi,
This is probably a simple problem but I haven't been able to find any related solutions in the manual or forum.

Model Description: A queue outputs items to 3 processors and, if all the processors are full, to another queue which delays the items. The processors require operators to process, the number of operators dependent on the itemtype and assigned using a global table and the following code:
setvarnum(current, "nrofprocessoperators", gettablenum(tablename,row,col));
The delay queue holds an item for a set amount of time before attempting to send it to an open processor once more. If all processors are full again, the item is sent to a sink.

Here is a picture of the model:


My dilemma is that I would like the queue not to release an item unless enough operators are available to process it. Currently, items are moved to the processor and can wait until the required number of operators are available to process it. I've tried the Pull option on the processors with no success. I considered requiring an operator to transport an item and then carry on with a tasksequence but wouldn't that disrupt the table assigning multiple operators? Is there are way to close the ports which output to processors until the "nrofprocessoperators" variable is less than or equal to the number of idle operators?

Thanks so much for any suggestions you might have, it is greatly appreciated!

Kellen
  #2  
Old 02-23-2011
Jörg Vogel's Avatar
Jörg Vogel Jörg Vogel is offline
Flexsim User
 
Join Date: Sep 2007
Location: Hannover, Germany
Posts: 643
Downloads: 35
Uploads: 0
Thanks: 802
Thanked 665 Times in 410 Posts
Rep Power: 642
Jörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond reputeJörg Vogel has a reputation beyond repute
Red face my first idea

Hello Kellen,

my first idea is, give the number of operators you need a new utilize task in their actual tasksequence as further task. Otherwise dispatch a new utilize tasksequence with high priority explicitly to them. If all needed Operators are in the utilize task let the processor free those operators and then pick them by releasing the item.
Have a look in the pick operators function: Multilple Teams Number of Dispatchers.
To prevent that the freed operators do something else let the pick task be of the preempting type: preempt only with the highest actual priority of all tasksequences.

It is really advanced stuff

It isn't tested on a real model.

Jörg

Last edited by Jörg Vogel; 02-23-2011 at 04:46 AM.
The Following User Says Thank You to Jörg Vogel For This Useful Post:
Kellen Dick (02-23-2011)
  #3  
Old 02-23-2011
Kellen Dick Kellen Dick is offline
Flexsim User
 
Join Date: May 2010
Location: Winnipeg, MB
Posts: 3
Downloads: 0
Uploads: 0
Thanks: 2
Thanked 0 Times in 0 Posts
Rep Power: 0
Kellen Dick is on a distinguished road
Default

Thanks Jörg, I'll give that a try
  #4  
Old 03-02-2011
Brandon Peterson's Avatar
Brandon Peterson Brandon Peterson is offline
The Flexsim Consultant
 
Join Date: Jul 2007
Location: Salt Lake City, Utah
Posts: 382
Downloads: 29
Uploads: 6
Thanks: 192
Thanked 516 Times in 235 Posts
Rep Power: 490
Brandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant future
Default

Kellen,

Did you find a solution to your problem?

Brandon
__________________
thats not normal.
  #5  
Old 03-03-2011
Kellen Dick Kellen Dick is offline
Flexsim User
 
Join Date: May 2010
Location: Winnipeg, MB
Posts: 3
Downloads: 0
Uploads: 0
Thanks: 2
Thanked 0 Times in 0 Posts
Rep Power: 0
Kellen Dick is on a distinguished road
Default

Quote:
Originally Posted by Brandon Peterson View Post
Did you find a solution to your problem?
Nope. I tried a couple things with no luck and set the problem aside for a few days.
  #6  
Old 03-04-2011
Brandon Peterson's Avatar
Brandon Peterson Brandon Peterson is offline
The Flexsim Consultant
 
Join Date: Jul 2007
Location: Salt Lake City, Utah
Posts: 382
Downloads: 29
Uploads: 6
Thanks: 192
Thanked 516 Times in 235 Posts
Rep Power: 490
Brandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant futureBrandon Peterson has a brilliant future
Default

Kellen,

First, you can check to see if an operator is available by checking for an active task sequence.

Code:
if(objectexists(gettasksequence(centerobject(current, 1), 0)))
{
  //Operator has TS
}else{
  //Operator has no TS
}
You could also try checking to see if its state is IDLE but you run the risk there that it may still have a task sequence for some reason (say it was given a delay task with a state == IDLE).

Code:
if(getstatenum(centerobject(current, 1)) == STATE_IDLE)
{
  //Operator has TS
}else{
  //Operator has no TS
}
Using one of these two methods you could loop through the operators to find the total number available.

Second, you will need to find a way of securing the other operators so that you don't have two items that each need two operators both thinking that they can go to a processor at the same time when there are only three operators available. You could do this this a coordinated task sequence that moves the item to the processor and then utilizes all the operators required. You can then use the freeoperators() command in the Process Finish trigger to release the operators from the coordinated task sequence. You will want to make sure that you use sync tasks to insure that all of the operators have traveled to the processor before you unload the item into the processor. This will make sure that you don't have people in transit when you start the work on the item.

I hope that this helps,
Brandon
__________________
thats not normal.
The Following User Says Thank You to Brandon Peterson For This Useful Post:
Scott Mackay (03-08-2011)


Thread Thread Starter Forum Replies Last Post
Need FS V 5.0.0 First Release Gleny Rodriguez Installation 2 06-04-2010 02:28 PM
Compiling a DLL in release mode Steven Hamoen Q&A 1 04-29-2010 09:02 AM
Release schedule Roland Tainton Q&A 3 03-17-2009 05:46 AM


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.