Solution
McKinsey developed a comprehensive solution that integrated Simio’s manufacturing simulation software with advanced optimization techniques. The solution architecture consisted of three key components:
1. Digital Twin Simulation
The digital twin simulation formed the foundation of the solution, consisting of two critical layers:
- Emulation Layer: This layer incorporated real-time updates from the production environment, including raw material availability, machinery downtime, and changing order patterns. This ensured the simulation maintained appropriate context for decision-making.
- Simulation Layer: Built using Simio’s simulation technology, this layer enabled the team to visualize the consequences of different decisions based on the current context and production logic. The simulation included both deterministic and stochastic elements to account for known risks and variability.
“We have built dozens of scalable digital twins for our clients, with up to 99% prediction accuracy by leveraging commercial solutions such as Simio, as well as by building custom solutions in Python,” noted Braverman.
2. Optimization Layer
The second critical component was the optimization layer, which provided the “intelligence” in the intelligent digital twin. After evaluating multiple optimization techniques including Bayesian optimization, stochastic gradient descent, reinforcement learning, and genetic algorithms, the team selected genetic algorithm optimization as the most suitable approach for this challenge.
The genetic algorithm optimization approach offered several advantages:
- No lengthy training time required
- Ability to operate without process knowledge
- Effective performance in high-dimensional spaces
- Support for parallel evaluation of candidate solutions
The genetic algorithm worked by:
- Starting with a population of randomly selected candidate schedules
- Evaluating each schedule using the Simio simulation
- Selecting the fittest schedules based on production time
- Intelligently mixing and mutating these schedules to create new candidates
- Repeating the process over multiple generations
“This approach allows us to do parallel exploration, because at every step forward, when we obtain a new population, all the members of that population can be evaluated in parallel,” explained Developers.
3. Integration Layer
The final component was the integration layer, which connected the simulation and optimization components with live production systems. This enabled:
- Loading the digital twin with real-time contextual information
- Feeding optimized production sequences back to operations
- Supporting both human-in-the-loop and fully automated implementation
The technical architecture leveraged Simio Portal, which hosted the Simio model behind a REST API. The team developed a custom Simio Portal Python client that allowed the genetic algorithm to call the Simio API, write schedules to a database, trigger simulations, and retrieve results.
Implementation
The implementation process required careful integration of multiple technical components:
- Simio Model Development: The team leveraged an existing Simio model that encoded all the process knowledge, allowing the optimization algorithm to remain process-agnostic for better scalability.
- Optimization Algorithm Implementation: The team developed a custom genetic algorithm implementation in Python, designed specifically for production scheduling optimization.
- Integration Architecture: The solution architecture included:
-
- A Simio Portal server hosting the simulation model
- A database for schedule and result storage
- A custom Python client for API communication
- The genetic algorithm optimizer
- Data Pipeline: A stream-based ingestion pipeline was implemented to pull real-time production data, making it accessible to the simulation and optimization components.
- Performance Optimization: The team continuously refined the data ingest and API communication processes to maximize the number of schedules that could be evaluated within the operational time constraints.
The implementation was designed to be modular and interoperable, allowing different optimization techniques to be swapped without refactoring the underlying simulation. This approach enabled the team to benchmark different methods and select the most effective approach for the specific challenge.
Results
The implementation delivered significant improvements across all production lines:
Line 1 Results
For Line 1, which the client had previously invested significant effort in optimizing and balancing, the solution still achieved throughput improvements ranging from 0.35% to 5%. This was particularly impressive given that Line 1 was designed to be performant regardless of the SKU mix.
Lines 2 and 3 Results
For Lines 2 and 3, which had received less optimization attention and had recently started producing new SKUs, the improvements were even more substantial:
- Initial optimization (25 generations): 7-13.26% throughput improvement
- Extended optimization (100 generations): Up to 12.3% improvement for Schedule 4 (from 6.99%)
The solution demonstrated several key capabilities:
- Efficient Search: The ability to effectively search high-dimensional spaces with 10^59 possible combinations
- Rapid Optimization: Delivering optimized schedules within operational timeframes
- Scalability: A process-agnostic approach that could easily scale to other production lines
- Business Impact: Approximately 8% average throughput improvement compared to FIFO scheduling
“The throughput lift was achieved by a totally blackbox optimizer which, in conjunction with the Simio models already present at the client, would easily scale to the rest of production,” noted Developers.
For a steel manufacturer where McKinsey implemented a similar approach, the solution reduced yield loss by 1-2% per facility, resulting in approximately $30 million in savings per facility.
Technical Deep Dive
Genetic Algorithm Implementation
The genetic algorithm implementation was specifically designed for production scheduling optimization. The approach was inspired by natural selection and used a population-based methodology:
- Initial Population: The algorithm started with a randomly selected population of candidate schedules.
- Fitness Evaluation: Each schedule was evaluated using the Simio simulation to determine its “fitness” based on total production time.
- Selection: The fittest schedules (those with shortest production times) were selected for reproduction.
- Crossover: Selected schedules were intelligently mixed to create new candidate schedules, combining beneficial characteristics from multiple parents.
- Mutation: Random variations were introduced to maintain genetic diversity and explore new areas of the solution space.
- Evaluation and Iteration: The new population was evaluated, and the process repeated over multiple generations.
The genetic algorithm optimization approach proved particularly effective for this challenge because:
- It could efficiently search high-dimensional spaces
- It supported parallel evaluation of multiple schedules
- It required no training time
- It could operate without process knowledge
Simio Integration Architecture
The integration with Simio was implemented through Simio Portal, which provided a REST API for interacting with the simulation model. The workflow followed these steps:
- The genetic algorithm generated a population of candidate schedules.
- The custom Simio Portal Python client sent these schedules to the database and triggered simulations.
- Simio Portal retrieved the schedules from the database, ran the simulations, and wrote the results back to the database.
- The Python client retrieved the results and fed them back to the genetic algorithm.
- The genetic algorithm performed selection, crossover, and mutation to generate a new population, and the process repeated.
This architecture enabled efficient parallel evaluation of multiple schedules, maximizing the number of candidates that could be evaluated within the operational time constraints.