I am currently modelling a factory and around 400 material numbers are moving through the shop floor in steel cages. There is no fixed amount of parts in steel cages. It may vary around 300-500, depending on the material number. Each of the 400 material numbers needs "one specific" paint from a total of around 10 different paint types.
To carry out painting, there are 10 super-stations with each 8 sub-stations. Once a super-station is setup for a specific paint (out of the 10 different paint types), it can only accept parts that required this paint. However, the 8 substations can be setup individually to accept any of the material numbers that need the specific paint. Once a material number is allocated to a specific substation, the substation will be setup, the steel cage will be processed at the substation, and eventually the steel cage will disappear into an unloading buffer (immediately).
This is the basic problem. The queue in front of the painting process consists of incoming kanbans and customer orders. Those result in "production lots", each consisting of a certain amount of steel cages full of parts from a certain material number. Each production lot has a certain priority NR allocated to it through e.g. earliest due date considerations.
One more complexity is that around 80% of the 400 material types have only 1 tool -- meaning that this material number can only be processed at one of the 80 substations at a time -- as only one tool is available. However, the other 20% consist of material numbers for which n (n>1) tools are available -- meaning, they can be processed at n substations parallel.
So far I am approaching this with 10 frames consisting of 8 single procs. The queue is modelled using a sorter, to sort the "lots" accordingly to the priority. I am currently writing an allocator method that somehow allocates the "lots" waiting in queue to the painting process.
However, I hoped someone has some good ideas on the problem -- maybe even an idea for some simulation optimization method.