question

Ralf Gruber avatar image
0 Likes"
Ralf Gruber asked Jordan Johnson edited

Multiprocessor State Profile

Hi guys,

attached is a simple model 20201018_MultiprocessorStates.fsm with a Multiprocessor including three processes, the first one requiring an operator. The dashboard shows a state bar for both, the default state profile and the multiprocessor state profile. I just let one item pass and while the Default state profile considers the waiting time for the operator in process 1as a dedicated state, the MP profile is accounting for the waiting time with the "Process 1" State. Is there a reason why this is not included with "None"? I think this could be potentially very misleading.

In relation to this, I believe the manual section about Multiprocessor States needs to be explained better. From reading one could get the impression, that user defined states can be mixed with default states.

Thanks

Ralf

FlexSim 20.2.3
flexsim 20.2.3multiprocessorstate profiles
5 |100000

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

1 Answer

·
Jordan Johnson avatar image
1 Like"
Jordan Johnson answered Jordan Johnson edited

I agree the manual could be more clear. I'll add that issue to the dev list.

As far as how the states are being recorded, the behavior matches the documentation:

At the beginning of each process, the multiprocessor calls the process time field, sets its state to the name of the process, and calls operators if the number of operators value is greater than 0. When the process is finished, the multiprocessor releases all operators called for that process, and calls the process finish trigger.

https://docs.flexsim.com/en/20.2/Reference/3DObjects/FixedResources/MultiProcessor/

Statistically, though, you may want to know more granular information. I would recommend using a Categorical Combo tracked variable. Its purpose is to observe two (or more) state profiles, and record the time spent in each combination of both states. Here is a script to add one to the multiprocessor:

treenode target = Model.find("MultiProcessor1");
treenode profiles = state_profiles(target);
treenode combo = profiles.subnodes.add();
combo.name = "state_process_profile";
var tv = TrackedVariable.init(combo, STAT_TYPE_CATEGORICAL_COMBO);
tv.listenTo(state_current(target));
tv.listenTo(profiles.first);

Running this code adds a combined profile to the list of profiles in the multiprocessor. You don't have to do anything else; the combo profile listens to the state changes in the other two profiles, and sets itself to the correct state automatically. If you make a chart using this profile, you get something like the following:

Note that there is a section for how long Process1 waits for an operator. In more complex models, there may be other combinations of states.

combinedmultiprocessorstates.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.