Skip to main content

A production scheduling toolkit for complex, interrelated and continuous machines in an FMCG environment

Project description

Pro Machina

A production scheduling toolkit for optimising complex manufacturing processes.

Introduction

A number of highly complex problems arise in the planning of production across multiple machines within a production facility. This problem, although it is NP-Hard, is heavily studied and often referred to as the Job-shop scheduling problem or, more broadly, Optimal job scheduling. These problems are often approached using some form of linear programming to maximise a cost function and, indeed, there are many articles and libraries to support manufacturers in this area.

However, all of these approaches assume that production runs are for fixed periods of time. That is, if you have three tasks (A, B and C), you know how long each of those tasks take, and you have to ensure that A is completed before B, and B before C etc. That is not how things work in many manufacturing environments, particularly in relation to Fast-Moving Consumer Goods (FMCG) / Consumer Packaged Goods (CPG).

That is the domain of Pro Machina.

Scenario

You are trying to optimise production across a sweet factory (this is based on a real example where this model was first developed):

  • 88 machines across 7 departments
  • 650 WIP items (individual type of sweet) can be produced across those machines
  • Machines have complex shift patterns
  • 200 Finished Products (that is, unique mixtures of sweets from multiple departments in varying proportions) have an aggregated sales forecast
  • Storage of stock is limited. Overproduction of one item will consume storage space. However, only having 9 WIP components out of 10 required to meet the product specification means that the finished product cannot be made at all
  • Major supermarkets can impose severe fines for missed OTIF targets
  • Upstream of making the individual sweets, batches of the hot sugar syrup need to be made and used within a set time period but can be allocated to multiple different WIP items, across multiple machines
  • Production runs of any one sweet can be entirely variable. You could run the machine making one WIP item for anywhere between two hours and 24 hours. The machines also run at different speeds depending on the WIP they are producing
  • Machines run slower during the summer months because the high humidity causes the batch rollers to slip on the hardening sugar
  • Some machines can be reconfigured at short notice (i.e. change a die in the press) to swap to producing an entirely different subset of WIP items
  • Halloween is a massive rush period, so products for these promotional items will need to be stockpiled
  • Gelatin-free variants of WIP items require a machine shutdown for deep cleaning, so product categories should be grouped together where practical

... and the list goes on. Particularly with the variable-length production runs, this kind of problemn is unsuitable to traditional approaches to optimisation. Pro Machina takes a custom heuristic approach to solving this problem.

Status

Although such a model has been built and used in production for over 6 years now for the above scenario, an attempt is being made here to generalise the kind of constraints to be applicable across the FMCG industry. Right now, the package itself is very much WIP itself, focused on getting the fundamentals right to support such a broad range of constraints.

Installation and Use

pip install pro_machina

The vast majority of the interface is fully documented in the library itself but the constraint interface is currently under development. The best way to see how the library works is to look in the examples folder (examples 01-04 for now) to see the direction of travel.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pro_machina-0.0.1.tar.gz (53.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pro_machina-0.0.1-py3-none-any.whl (42.5 kB view details)

Uploaded Python 3

File details

Details for the file pro_machina-0.0.1.tar.gz.

File metadata

  • Download URL: pro_machina-0.0.1.tar.gz
  • Upload date:
  • Size: 53.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for pro_machina-0.0.1.tar.gz
Algorithm Hash digest
SHA256 18d25e7cbf5caf42bb70fe89cc09f97146ee403665559d4a5f0e3973d1262757
MD5 56b3b4ea78a114498212d6dd66d8048f
BLAKE2b-256 c67850c30472830193dba7dde09b03966a2c27e272ce7f840ed5679bbd844ee6

See more details on using hashes here.

File details

Details for the file pro_machina-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: pro_machina-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 42.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for pro_machina-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ea355dce76e53dc417915347c1aa98f1bc7f64f7bcc04f26bf353a299be79d13
MD5 680d1beb6a4dad1aed3160bde1a7293b
BLAKE2b-256 829c39d41cedbb1f4fbb68d0dfcb5cddadb4950cf59c5967b0f30b52a2872e16

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page