Hello Plant Simulation Team.
I´m a new PlantSim user and i´m trying to build a model to solve
a little combinatorial problem.
My parts are generated through a delivery list and sorted into
different buffers(to avoid delay). A single flow control then allocates the parts
to a few single proc machines. There is the possibility for
each part to be produced on different machines(up to three alternatives).
With the help of the GAWizard I implemented a routine to vary through
all possibilities for each job and find the best solution.
The incoming jobs contain a fairly large number of parts.
What would be the best approach to implement the possibility of splitting up jobs
to maximize the capacity of the machines? Due to fairly large machine-set-up times
the splitting should only occur if some criterias are met.
- Only split one job up to three times.
- Only split up if the resulting production time is over 8h (maybe a large penalty value could sort these under 8h out)
If a job is split, both resulting numbers of parts would have to get a different machine allocation number within the range of the alternatives.
Related to this problem:
- In every example model the optimization parameter(GAWizard) are set up to be integer values with lower and upper bounds.
Is this the only possibility to achieve this? I´m thinking of a more user friendly way, maybe a correlation table.
Maybe I got through the examples to fast or I´m missing something fundamental here, but at the moment
I can´t think of a way to split jobs after they are generated.
If someone has any insight on this topic I would be greatful.
Solved! Go to Solution.
It sounds like a test problem, but your formulation is not 100% clear. It seems that you mix up parts and jobs. And what is your objective function: minimize makespan, throughput time?
Furthermore, capacity is a constraint of the machine, the only thing you can do is to minimize the consumption of this capacity, e.g. by minimizing the set-ups (easy: don't divide your work among the machines).
The GA wizards uses the datat type that you like, so reals are not a problem.
What you could try is approach it as a sequencing problem, with each job arriving in the maximum amount of splits. Then use GA to sequence your dispatch list and divide it among the processors.
A small additional remark: my reply assumes that you make use of the standard set-up behavior, an MU that follows another MU with the same attribute value (e.g. Name) incurs no set-up.
Hello, for splitting jobs you need first a trigger. Normally you use job-splitting, if you move (and control) jobs as one logical unit through the production. One trigger-point could be the finishing of a job at (at least one) machine. If there is no direct following job (e.g. one buffer is empty and the time-distance to the next job in the plan is big enough) you can decide to split a running job. This you can make in different ways. You can separate one part of the runnig job physically (e.g. move the half of the remaining parts after setup to another puffer) or logically (assign a "sub-job-number") or both. In real production systems splitted jobs will be reunited in later production steps, so the sub-job needs a reference to the origin job-number. I think, the easiest way is to separate the sub-job in its own queue (buffer).
freelance simulation specialist