ATTENTIONThis 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 |
#1
|
||||
|
||||
MultiProcessor Waiting for Operator
Okay guys, this time I have a question and it’s a simple task to do, but I do not find a simple solution.
It’s about the MultiProcessor and there are already a lot of threads about the Multiprocessor in the community, but there I did not find a solution either. It’s about states and results which are discussed quite often regarding the MultiProcessor. The task is that I have a model with Multiprocessor and an Operator. The MultiProcessor has three Processes and the first two processes use an Operator. And the end I need to know how long the single processes were waiting for the operator. In the state profile I can see that the MultiProcessor was waiting 56.30 seconds in the state “Waiting for operator”. In the state profiles I can see that the MultiProcessor was 88.67 seconds in the state Process1 and 67.63 seconds in Process2. But how long was each process waiting for the operator? So the straight question is how I could collect on a Multiprocessor for a single process the time waiting for operator and process. My project model is much more complicated, having different teams, different processes, etc. That why I build an easy model which concentrates on the task itself. I attached the easy model and hope it will help. One solution I found is that I put a Waiting for operator in front of each process. Important is, that the process time of this process is not zero, because than the operator will not be called. This solution is also in the attached model (second part). The downside is that a lot of more processes are needed. Another idea could be to us OnStageChange to collect the times and generate own results. I did not build a model for it, because this would be some effort. Does anyone have another more elegant idea to solve the task? I hope that I oversee a nice and easy solution.
__________________
tom the (A)tom: "We have solved our problems ... now we have to fight the solutions." |
The Following User Says Thank You to Tom David For This Useful Post: | ||
Carsten Seehafer (12-12-2013) |
#2
|
||||
|
||||
Hello Tom,
I have changed your model to use tracked variables. They are updated by a nodefunction task in the Utilize tasksequence or when an Operator is requested in the PassTo function of the dispatcher. But at the end if I consider all possibilities, such as preempting the Operator, this approach is getting more complex than just using the method OnStateChange. For those who want to see my changes I add the model to this post. The Code is in the MultiProcessorA, the Dispatcher, User commands. Jörg MultiprocessorOperatorStates_JV.fsm Last edited by Jörg Vogel; 12-03-2014 at 03:34 AM. |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
Tom David (12-13-2013) |
#3
|
||||
|
||||
Jörg,
Thanks for your reply and your model. I think it is an interesting approach. I did not work with tracked variables so far, so I learned quite something following your idea. What I understand is that I get in the end a tracked variable which is a list of simulation time and state and we have the special state for each process for waiting for operator. The next step would be to analyze this list and figure out the wait times. I agree that if we consider possibilities such as preempting, etc. it will get complex and the method OnStageChange looks like a better way. Anyway, thanks again that you took the time and effort to share your approach. I really appreciate this. Maybe someone else has another idea how to solve the task. In the moment I test my idea with the additional processes on each MultiProcessor even if I end up with a lot of processes. But this will already take to account preempting and other stuff. In general what I am trying to do in the moment is to stay as close as possible on “standard” FlexSim model concepts. This is not really easy if you think about an assembly line with different processes and several teams of worker following fixed routes with different logic. My first approach was to work with task sequences and only dummy objects, which is very flexible but with a lot of coding if you need to collect a lot of different results. If there are changes and modifications to do, it is quite some effort. My second approach is now to use the Multiprocessor and control the operator and the task sequences in the trigger. Using the standard objects and model concept makes it easier to do changes and modifications and results are collected automatically. But sometimes to get the logic right and overrule the object mechanism is the hard bit, like the above task. I do not know where I will end up, but it is an interesting project and we have a lot of project which will go in this direction. That’s why I take in the moment the time to do the research to figure out which concept will be the best for our needs. By the way, I am glad that FlexSim is so flexible and has different ways do to things, even if they might turn out to be complex, because I am pretty sure that in other simulation packages I would already be on a one-way track.
__________________
tom the (A)tom: "We have solved our problems ... now we have to fight the solutions." |
The Following User Says Thank You to Tom David For This Useful Post: | ||
Jörg Vogel (12-13-2013) |
#4
|
||||
|
||||
Hello Tom,
if you still have access to Flexsim Version 5, you can use the watchlist. Even the attribute state_current can be watched. I have not found this feature in Flexsim 6 anymore, but a model from Version 5 still works with a watchlist in version 6. Instead of a global table from version 5 you can store values in a tracked variable. And you are right, you have to analyze the stored data later on. Jörg |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
Tom David (12-16-2013) |
#5
|
|||
|
|||
I don´t know if i understand all your interestes and i don´t want to offer you a solution.
I have something similar but not that complex. So i solved it with OnStateChange. I am interested in why Flexsim not offers an trigger when process starts? This would help you too i think because you can seperate the times. |
#6
|
||||
|
||||
Multiprocessor State Profile
Hi guys,
it is not too complex to figure out the states as detailed before by Tom. I made an example with two processes in the MP, both requiring an operator and the transport requiring an operator, too. The part with the simple processor is just to distract the operator from the MP and to cause it to wait for him. The state pies show both, the default state profile as well as the MultiProcessor State profile. Attached is a model with these points to look at: - States Process1 and Process2 are created automatically in the MultiProcessor States profile when added as processes in the MP - I manually added the nodes for the states I want to track which are WaitTransport, WaitP1, WaitP2 Here are the actions to set the states properly: - In the Pick Operator fields for both processes, I selected the Task Sequence Example to be able to modify the Task Sequences. In line 16 I set the state to WaitP1/WaitP2, because that is, when the TS is generated. I also added a SENDMESSAGE task to notify the MP, when the operator arrives. The OnMessage trigger changes the state based on the message sent. - In the OnProcessFinish trigger, I send a message to set the state to WaitTransport, when the second process has finished. This is the weak point here, because it is not checked if the MP is blocked and a transport is possible at all. I just assume unlimited capacity for the downstream object Maybe someone else is inclined to add this last missing piece. Let me know if you have any questions. Best wishes Ralf FlexSim P.S.: Marco, there is kind of a trigger when the process starts which is the Process Time. Depending on what you want to do with it, it might fit your needs. |
The Following 3 Users Say Thank You to RalfGruber For This Useful Post: | ||
Tom David (02-19-2014) |
Tags |
multiprocessor, operator, states, waiting for operator |
Thread | Thread Starter | Forum | Replies | Last Post |
Counting # of times machine is waiting on operator | Joseph Mueller | Q&A | 4 | 01-29-2014 03:44 AM |
How to track "Waiting for operator" time ? | mearjun | Flexsim Student Forum | 4 | 06-24-2013 10:34 AM |
State "Waiting for Operator" (2) | Donatus Minio | Q&A | 1 | 02-24-2009 05:19 AM |
State Waiting for Operator | Nico Zahn | Q&A | 6 | 01-15-2009 09:00 AM |