Operator blocked by processor in 3D modeling

Operator blocked by processor in 3D modeling

yyangN34HW
Contributor Contributor
361 Views
5 Replies
Message 1 of 6

Operator blocked by processor in 3D modeling

yyangN34HW
Contributor
Contributor

Hello,

 

I may run into basic issue but couldn't figure out the corner case that blocks the whole model from moving forward.

 

I'm having a dispatcher that controls multiple operators (could be a variable) to run a series of processes, which is in combination of combiner, processors, queues, that mostly need to involve with operators.

 

Each operator can carry multiple flow items (given 5), and there is a group of processors that need operator involvement for couple sec setup of each item, then let go. This group of processors can proceed up to certain number of items simultaneously (given max 5), and I set the queue1 to perform batch processing before this group of processors.

 

Then here is my situation, operators would always be blocked by one of the processors at some point, changing batch size or removing batch release from prior queue would impact a little to the flow but eventually the operators will still be blocked and the processor is waiting for operator, just at a different time.

 

I'm not really good at process flow, and given the complexity of whole process and operators will be the variable that I try to run the scenario, I'm staying away from writing process flow to control operators as much as I could, unless necessary. Attached is a simplified sample of the process but can replicate the issue already, I have the main structure of process here but the original model has way more quantity of processors and involves more operators.

 

How could I solve this issue to enable the model keep running?

 

Thank you in advance

0 Likes
Accepted solutions (1)
362 Views
5 Replies
Replies (5)
Message 2 of 6

moehlmann_fe
Advocate
Advocate

Some processor settings/tools, like the usage of operators, do not support a maximum content larger than 1. See the first blue warning box in the documentation linked below.

https://docs.flexsim.com/en/25.1/Reference/3DObjects/FixedResources/Processor/Processor.html

 

As is also stated there, just using multiple processors with a maximum content of 1 each, can be a simple solution. This would make other things more difficult though, like collecting combined statistics for one such group of processors or stopping all processes while the setup of a new item is ongoing. If you need more help in coming up with a workaround, please provide some more details about the exact behaviour of the system and what statistics you would want to collect from it.

0 Likes
Message 3 of 6

yyangN34HW
Contributor
Contributor

Hi @moehlmann_fe 

 

Thanks for the workaround. I would probably not consider using multi-processors not only as you explained above, but also due to the distribution variable setup for the processor time that you helped in another post. The way you set this up in _1 file is quite fresh to me , but not perform as exact as I would expect though.

 

I recalled the tutorial exercise Task Logic 1.1-1.4 to apply push list in process flow to keep the model ongoing. But I still have minor adjustment required, which is batch loading.

 

From Queue1  -> ProcessorList -> Queue2:

1. Wait till Queue1 has a batch of flow items (Batch size can be variable, assuming 5 for now);

2. TaskSequence is created to call an available operator to load whole batch of flow items, stop at Scan Station, then load whole batch at one of processors, two delays should be scan_time * batch_size and setup_time * batch_size respectively;

3. Finish task, keep working on other tasks assigned by 3D modeling.

 

I notice that the process flow task list preempt over 3D model task queue and cause operators to carry upstream or downstream unfinished items to work on process flow, how can I only call for operators off-loaded?

 

Statistics are not collected from this section of modeling, indeed they will be collected on larger original model that contains this portion. I would want to show utilization rate for each operator, the state chart of main processors, and the throughput rate at queues.

0 Likes
Message 4 of 6

moehlmann_fe
Advocate
Advocate
Accepted solution

The Process Flow is already looking good. You just need to adjust the required quantity in the Pull from List and put the Load and Unload tasks into a subflow, so multiple items can be handled.

 

Tasks getting interrupted by other tasks is either handled by the preemption setting (not in this case), which can allow a newly incoming task to interrupt whatever the TE is doing at the moment. Though this is often pretty tricky to get right when tasks are distributed through a dispatcher.

What you are seeing in the model is the "Break To" setting of the operators in action. The default transport task sequence created by the 3d-logic contains a "Break" task after the Load task. It is meant to allow the operators to load multiple items. When the break task starts, the "Break To" code of the operator is fired, which checks if there is another task sequence it should switch to. With the current setting "New Tasksequences Only" any task sequence whose first task has not been completed yet qualifies. You could switch it to "Same Load Station" for example, so only transport task sequences that load an item at the same object as the current task sequence are valid to switch to.

moehlmann_fe_0-1751358455650.png

 

When the five items are finished on a processor, you currently see that four are moved by one and one by another operator. This happens, because all transport tasks are present in the dispatchers queue immediately. So the two operators will both start one of them, if they are available. When the first operator loads an item, the aforementioned Break To function allows him to also load other pending items, of which there are only three, since the fourth is already given to the other operator as a task.

To ensure they are all transported by one operator, use a Process Flow for this as well.

0 Likes
Message 5 of 6

yyangN34HW
Contributor
Contributor

@moehlmann_fe Hello, thanks for the detailed breakdown of explanation, the model is working well.

 

I do notice a small issue, where the process flow overwrites the limit that I set for processors in 3D-objects. If I extend the processing time, and have third operator, then excessive items will be loaded to processors unstoppably. 

yyangN34HW_0-1751415280981.png

I'm assuming that this processing content limit needs to be set in either source to initialize processors or in the pull from list before the load task being created, but I don't see the field that looks correct location to me. Should I use acquire resource? The resource seems to only control the quantity of processors, not the max content.

 

Sorry but... this is why I hesitated to apply process flow. Really appreciate if you could follow up. 🙂

0 Likes
Message 6 of 6

moehlmann_fe
Advocate
Advocate

The tokens in the Process Flow already represent one processor each, so acquiring them as a resource is not necessary. You can use a Wait for Event activity to wait until the processor is empty again before the next batch of items is pulled.