Smaller job shop still often perform production scheduling manually in Excel or ERP systems. In these cases, the responsible production planner (or scheduler) assigns jobs to machines manually, and determines their sequence as well as possibly also their planned start and end dates. The planner makes all decisions based on his or her knowledge and experience. In smaller job shops, this approach may be feasible and production scheduling might require a relatively small effort and time. A production scheduling software, on the other hand, will add costs – related to software implementation, trainings, maintenance, and ongoing license fees. That is why I developed a job shop scheduling Python tool that serves as a template and framework for implementing job shop scheduling software in Python at low cost. In below example I used the tool to schedule a list of jobs onto 6 machines in various machine groups.
The Python framework contains an exemplary use case application, and serves as a customization template. You can read more about the Python project here: https://www.supplychaindataanalytics.com/product/job-shop-scheduling-library-python/
Benefits of production scheduling software
With a production scheduling software, algorithms and mathematical models assign jobs to machines, not human decision makers. This has long-term strategic benefits to even small manufacturers, and takes production planning to the next levels. The production planner now monitors the outcome of the scheduling algorithm, and throughout initial piloting and rollouts, returns feedback to the scheduling software developer. The developer calibrates the model and algorithm, until the schedule is optimal.
Once the production scheduling software is implemented and “calibrated”, the benefits to the job shop and its production planners are some of the following:
- Formalized and documented decision making, promoting organizational transparency
- Production planners no longer spend time on routine scheduling tasks
- Schedules are guaranteed to be updated daily or several times a day – always!
That is, in short, the main benefits of production scheduling software for small manufacturers is to automate the scheduling process itself, and to thereby free human resource capacity and facilitate operational stability and transparency. For small manufacturers, the scheduling itself will become more stable and reliable, but not necessarily better – as the human planner in many cases already does implement a very good schedule.
Python scheduling software tool and framework
I have developed a Python project for production scheduling that comprises mathematical programming and heuristic decision making for scheduling jobs onto machines in a production schedule divided into time slots of defined length. This is also referred to as time-indexed production scheduling. I use mathematical optimization for a subset of the jobs, and heuristic decision making for the remaining jobs.
Mathematical optimization delivers the best possible schedule, i.e. returns only the absolutely best solutions. Heuristics, on the other hand, focus on finding very good solutions within a reasonable amount of time. Mixing these two approaches makes sense for production scheduling, as a pure mathematical optimization approach quickly becomes computationally infeasible. Below video demonstrates the Python template for production scheduling software deployment.
The Python tool is downloadable in the SCDA shop. It comprises an exemplary use case application. Below figure illustrates the required input information, and the assumed constraint types.
The assumed constraint types comprised by the template are as follows:
- A break plan for the entire machine park. During breaks, no changeovers and setups can take place (i.e. they must be completed before start of a break, or started after break end).
- Machines are grouped into machine groups, with each group having a defined amount of operators and thus a maximum number of changeovers that can take place concurrently (i.e. at the same time).
- Target utilization of machines, and of the machine park as a whole. Jobs are imported into the scheduling core up until these utilization targets. This is necessary because a 100% utilized machine park would not be feasible, i.e. the scheduling core will return that no feasible schedule can be found for a very high utilization. Secondly, for each machine, specifying utilization limits allows planners to reserve room for planned maintenance and breakdowns.
- A single production stage, i.e. the template itself doesn’t schedule across multiple linked production stages.
Any deviation from above assumptions and constraints, or additional constraint types, will require customization work.
Which small manufacturers benefit from automated scheduling?
When the production scheduling software is implemented, the Python framework is used as a customization template. Any deviating constraint types or objectives must be added as customizations in the underlying source code, requiring a software developer (i.e. skills such as software engineering, mathematical programming, and operations research). That is any new constraint types that were previously not considered must be implemented by the software developer, causing costs. This is why manufacturers with a mature production process benefit the most from production scheduling software. Young manufacturing companies with start-up like circumstances are less likely to benefit from the use of a production scheduling software.
Data scientist focusing on simulation, optimization and modeling in R, SQL, VBA and Python