This downloadable virtual product contains a scheduling library in Python, and an exemplary application consuming the library for demonstration purposes. The scheduling model schedules a job list into a time-indexed slot calendar, and seeks to minimize sequence dependent setup and changeover times.
Brief description of this job shop scheduling Python tool
The library is implements a mixture of a heuristic and exact mathematical solving of a single-stage multi-stage job shop scheduling problem. It uses Python, PuLP, and coin-OR CBC solver for scheduling in a time-indexed mathematical job shop scheduling model. Instead of coin-OR CBC solver Gurobi can also be used, if the license is available.
This library covers a job shop scheduling problem, defined by the following assumptions and input data:
- A job list with jobs that can run on a defined amount of machines and machine groups
- Jobs are assumed to be sorted in descending urgency order
- The raw job list (input file to the scheduling model) contains raw setup times, processing times, and forecasted total job execution time
- Every job can run on every machine
- Each machine can run one job at the time
- Within a machine group, only one setup or changeover can take place at the same time (= each machine group has one machine operator)
- “Blacklisted” time slots can be defined during which operators are having breaks, i.e. no setups or changeovers can take place during these time slots
- Planning horizon and target utilization of the machine park can be defined
- A distance matrix defines discount factors for changeover from one material number to another, on the same machine, which the library uses to discount raw setup times – resulting in the actual changeover times
Below figure illustrates model scope, assumptions, required input information, and resulting schedule output.
The downloadable product contains the following files and sub-directories.
The resulting schedule is visualized using plotly in Python, and outputted in a html-file. The schedule data is also printed into a csv-file.
Training and customization
This scheduling library in Python is a start-point for trainings and customization. The library can be used for:
- customizing library and applications to the client’s additional constraints and objectives
- e.g.: some job can only run on defined machine types
- e.g.: some jobs cannot be executed at the same time
- e.g.: machine groups have different amounts of operators depending on the time slot, and thus the amount of concurrently allowed setups and changeovers per machine groups varies
- e.g.: multi-stage job shop scheduling instead of single-stage job shop scheduling
- training and conceptual introduction to scheduling and optimization in Python
If you need additional consulting and training, supporting the implementation of this scheduling library and/or its customization, please contact the responsible model developer for individual consulation: Linnart Felkl.
Who will benefit from changeover sequencing with Python
This downloadable product suits production and manufacturing managers, operation excellence managers, supply chain and production planning consultants, data scientists, decision scientists, production planners, and students that:
- Need to schedule a single-stage multi-machine production system.
- Want to optimize changeover and setup times.
- Want to learn and understand job shop scheduling models and associated implementation.
- Want to learn mathematical programming for production planning, in Python
Contact responsible model developers if in doubt
If you have questions related to this downloadable product you can contact the responsible model developer via our contact form: https://www.supplychaindataanalytics.com/contact/