I am trying to model a system that includes buffers that can hold multiple variations of parts. So Product A & Product B (made on different production lines) can both be stored in the same buffer. These parts, along with several others, are then pulled by the next processor in a sequenced order (currently by using FlowControl dictated by predecessor order).
I am struggling to figure out how to have multiple parts stored in a single buffer (or store) but still be able to pulled through to the next processor in sequence (Example, Pulling Processor wants Product B as next part in sequence however the next part in the Buffer in Product A, how can I make so Product B is still pulled?).
There is probably an easy solution to this but I cannot get my head round it!
Thank you for any possible help you can provide.
Solved! Go to Solution.
since the Buffer has only two types (Queue and Stack) the parts can not overtake.
The object Sorter is a buffer with can change the sequence of parts.
In the Example models (item Small Examples) there is a model with an optimization of the sequence of the buffer. Category Tools and Optimization, Topic Optimization in the Sim. The sequence is determined by an userdefined attribute SortCriteria.
Maybe you use the name of the parts "ProductA" and "ProductB". Before you take a part you call
Since the parts must be able to overtake you can also use the object ParallelProc. In an exit control you can scan the contents of the ParallelProc and you can determine the right next part.
Furthermore there is an example with the pull control: Category Material Flow Topic Pull Control, Example Color sorting buffer.
Thank you for your response. Unfotunately I am still having issues with this.
I think Parallel Processors may be the way forward with this, however I am not sure how you scan the ParallelProc to determine the next right part like you mentioned. Do you have any tips on this? Thanks again for any help you can give.
by the fllowing loop you can consider all MUs which are on a station ParallelProc:
for local j := ParallelProc.numMU downto 1 loop
MUobj := ParallelProc.MU(j);
if MUobj.ID = 3 then
Maybe you will call this loop when a MU arrives. In this case you prepare an Entrance control of the ParallelProc.