Our client is a multinational manufacturing company headquartered in Sweden. To help the company increase its operation efficiency and reduce costs of manual work, we created a system for automatic production scheduling. Our solution can learn from historical schedules arranged by human planners and deliver schedules of comparable quality. 

Automating key processes: production scheduling

To accelerate and boost its operations, the company was looking to automate the process of production scheduling.

Specifically, our client wanted to create a system for automatic production scheduling that would learn how to build such schedules on the basis of schedules that have been arranged by planners. 

When creating production schedules, the company’s planners follow a set of rules such as:

  • Scattering vehicles of a given type on the assembly line, 
  • Placing vehicles of a given type directly after another type, 
  • Concentration of vehicles with specific equipment on the assembly line. 

Note that it was usually impossible for an order to comply with all these rules. However, some rules were more important than others. Determining the weight of each rule a priori would be challenging. Also, the set of rules changed over time as the company implemented changes in the area of production and orders.

Solution: Outsourcing software development

We began with a detailed analysis of the project requirements and initiated it within one month. We provided the company with a team composed of two software engineers. The team worked on our premises, reporting their progress through regular video calls with the client. The work was supervised by one project manager on our side and one on the client’s. In total, our team needed 8 weeks to develop a working solution. 

Here’s how our team created the solution

To build the solution, our team used the Python programming language, classical Machine Learning, and heuristics techniques for discrete optimization.

We have prepared dedicated features because the client’s domain knowledge and expectations allowed to clarify the rules that the system should follow.

These rules were descriptive like indications or recommendations. If an expert couldn’t tell what were the most important rules, the schedules were composed by the expert. That’s why our team couldn’t use a machine learning method because the data was often contradictory. Moreover, it was as schedules were made in small quantities: one per day (about 200 schedules in total). 

Our team used the Bayesian logistic regression model combined with dedicated feature extraction, reflecting the nature and complexity of rules used by the client. 

The model allowed assessing the probability that a given production schedule was created by a human planner. Moreover, the Bayesian approach allowed learning from a small set of training observations without the risk of overfitting.

The trained model served as the objective function for the genetic algorithm which permuted the order for a specific day. It maximizes the probability that a given schedule could be created by a human planner in subsequent iterations. The algorithm can carry out extra learning online, adapting to the non-stationary nature of the data.

Results of cooperation

As a result of cooperation, our team created an algorithm able to create schedules of quality similar to those created by human planners, especially in terms of compliance to the rules. 

Thanks to adaptive learning, the solution is highly scalable and can be used for all assembly lines; our client can initialize it with a relatively small amount of historical data.