The task itself is nearly impossible to solve; Herb Simon, at Carnegie Mellon University, spent some considerable time and ended up discovering that optimal scheduling is probably an unsolvable problem. That said, there are any number of heuristic programs that can come close to optimal, or at least very good, solutions. The problem with all of these solutions is an inherent fragility. If Fred has a cold and can't work as fast as predicted, and Sue is distracted by a family crisis, and Tom just split from a relationship, the abstract efficiency of the assembly line components they are involved in will not be able to live up to the scheduling intended. So, you need something fast enough that it can dynamically adjust based on actual throughput. For multifunction machines, switching it from being a type A machine to a type B machine (e.g., changing the tools in a punch press) must be taken into account, as well as the downtime on line C caused by a burnt-out motor, and on line D because the roof directly above it leaks, and a storm hit in late morning after all the schedules were set in stone. In the late 1960s, I did some modeling in simulation languages and built simulations that allowed me to program faults into the lines, and inevitably the results of any fault was complete disaster; some lines got backed up because they were producing but had no, or reduced, consumers, and some lines were starved because there were insufficient producers. And it still required doing a lot of setup to estimate the throughput of each line. It's a tough problem, and sometimes the best you can do is less than optimal.
I have published a free Assembly Line Simulator, developed in Java, for mixed model assembly lines.
The main features are:
version 1.0
- simulation of mixed model, unpaced straight lines
- Buffers between work centres
- parallel workstations in each workcentre
- task times: deterministic, normally or exponentially distributed
- Outputs: throughput, cycle time, flow time, WIP, number of loads completed
- deterministic input sequence of models
In the following the new features introduced are listed:
version 1.1
- Inputs related to simulation length: now it is possible to indicate or the length in time units, or the number of loads that have to be completed;
- Outputs related to buffers utilization statistics (time persistent average value; maximum value)
version 1.2
- The possibility to define a warm-up period, during which statistics are not collected. The warm-up period can be indicated both in time units and in a number of loads that have to be completed.
version 2.0:
- The possibility to model U-shaped lines, in which stations may work at two segments of the line facing each other simultaneously
version 2.1:
- The possibility to generate a random input sequence of models, respecting a specified demand proportion of models.
version 2.2:
- Bug correction for random sequence of models entering U-shaped lines
- The possibility to indicate different coefficients of variation for each task (library version)
- Javadoc documentation (library version) available
- The possibility to copy and paste from/to task times and line configuration tables from/to Excel spreadsheets (application version)
version 2.3:
- Outputs related to the detailed timeline of each WS have been added for the straight line version (library and application versions)