Description
This downloadable virtual product contains a Python example, tutorial and library for job shop simulation in Python, using SimPy.
Content overview:
- A Jupyter Notebook file with a step by step job shop simulation tutorial.
- A HTML file that shows the fully executed Jupyter Notebook.
- A Python package with configuration files, modeling class library, and exemplary library implementation.
- A detailed case description of the exemplary job shop simulated in this example.
You can use this Python project for personal learning, as a template for modified job shop simulations, or as a library for modeling custom job shop simulations from scratch.
This simulation product relates to job shop scheduling and job shop production planning. It makes use of discrete-event simulation methodology and implements it in Python using SimPy.
Who will benefit the most from this simulation model?
This downloadable simulation product suits supply chain analysts, operations researchers, production planners, and students that want to:
- Learn about discrete-event simulation in Python (SimPy).
- Learn about job shop planning problems.
- Learn how to model job shop production processes in Python (SimPy).
- Improve existing job shop planning projects.
If you are new to Python you can use this project for additional training sessions. Trainings can focus on explaining the model code, or if you are more interested in learning about job shop problems in general or my experience with commercial applications of job shop simulation, then we can use the training hour for that purpose.
You and I can also use this model as a foundation for a custom implementation of the operations, dependencies, and constraints relevant to your specific business and/or problem.
Simulation study case description
The example case solved by the template file contained in this product addresses a job shop production-planning problem. The production process is as depicted in below figure.
Each stage of the production process (moulding, inspection, and packaging) takes place on dedicated machine types or work station, but the question is how many machines and work stations each stage needs.
Some other important aspects by this exemplary case study:
- There are 10 different product types, each with different processing times.
- One customer order equals one product unit of one of four product types.
- One machine or work station can only run one job at the same time.
- A job can only run on one machine.
- Customer orders arrive in randomly distributed intervals, with the 10 product types each having different market shares (i.e. overall annual volumes).
- Time units are in minutes, and for each minute that a moulded part must wait for inspection the part’s quality decreases. This is modeled with a degradation cost per minute of inspection waiting time.
- Processing times at the various stages of production depend on the product type, but processing times all follow a random exponential distribution.
Exemplary simulation model output
The simulation template comprised by this downloadable SimPy product outputs visual KPI measures. This includes e.g. the following KPIs, as also shown in the example pictures below:
- Distribution of wait times for moulding, inspection, and packaging
- Degradation costs per quantity of moulding, inspection, and packaging stations
- Scatter plots showing avg. degradation costs for different number of stations
The simulation template allows for experiment repetition in specified amounts of iterations. This allows above KPIs to be averaged over all repetitions of the simulation run. This is important since the processing times and order interval times are randomly distributed.
Advanced model extensions available on SCDA
Contact SCDA for some more advanced model extensions that can be customized to your specific business or research problem. Some exemplary extensions that we have already developed:
- PULL production control instead of PUSH order flow, with Kanban inventory control
- PULL production control instead of PUSH order flow, with min max inventory control
- Batch sizes per product group
- Minimum order quantities per product group
- Setup times per product group
- Scrap rates in production
- Parallel machine processing (task splitting)
- Detailed status distributions of work areas and stations (idle, busy, setup, …)
- Machine and work station breakdown and repair processes
Learn more about job shop simulation
You can find several contributions on SCDA related to both job shop scheduling and planning as well as discrete-event simulation. Here are some exemplary articles for you to read:
- Link: Genetic job shop machine task scheduling
- Link: Job shop scheduling challenges and obstacles
- Link: Job shop simulation with salabim in Python
- Link: Visualizing SimPy job shop simulation data
- Link: Job shop simulation in SimPy
- Link: Flow shop scheduling with PuLP in Python
- Link: Manufacturing MRP planning software
- Link: PUSH production and analytics
- Link: Visualizing stats with salabim DES Python
- Link: Simulation Helpdesk
James Moore –
Excellent example and work. Thanks so much for sharing.