Are machines with variable processingTime possible?
I'm trying to model a single machine can be reconfigured to manufacture numerous different parts. Each configuration of the machine creates a different part at a specific rate for that part. The machine only operates in one configuration at any given time. There is change-over/setup time between the configurations, then once the machine is in the new configuration, the machine's processing time would be different for the new parts it is producing. When the machine is configured to run for PartA might take 1 minute to process, whereas when configured to run PartB takes 3 minutes to process, etc.
Think of it like having a machine that can make 3 different donuts: [A] Old Fashioned [B] Jelly [C] French Cruller
To make each different type of doughnut, the extruder mechanics on the machine are changed to match the desired doughnut, and based on the type of dough and other factors, their output rates are different.
How would you suggest handling this so that only one type of doughnut can be created at any given time, but the type of doughnut dictates the speed of the machine? FYI - we have some machines that can make 100's or 1000's of different parts depending on their configuration. I'm not sure we'd model them all, but suffice to say they are very flexible machines :).
Machines, and generally CoreObjects implement calculateTime method (https://lab.nexedi.com/nexedi/dream/blob/master/dream/simulation/CoreObject.py#L803), which is responsible of calculating the processing, setup or load time. So, extending this you can achieve that the time depends on entity type (set somewhere). An even more flexible approach is MachineJobShop that reads by default time and routing information by the entity. There are examples of this in the documentation. But I think if it is only a matter of processing time that varies, extension of calculateTime is the best approach.
Status changed to closedToggle commit list