Manufacturing Optimisation & Scenario Planning
Decision-support tool formulating a constrained manufacturing problem as a linear program in PuLP, with scenario analysis exposed through Streamlit and Flask interfaces.
Overview
A manufacturing decision problem needed a consistent way to evaluate constrained alternatives, rather than relying on judgement applied case by case. The result was a decision-support tool that turns practical constraints into a deterministic, reproducible recommendation.
Approach
Optimisation core
The problem was formulated as an integer linear program and solved with PuLP, encoding the available inputs, the required outputs, and the constraints that make some combinations infeasible. The solver produces a deterministic plan against an explicit objective, so the same inputs always yield the same recommendation.
Scenario analysis
A comparison module extends the model from “what should we do” to “what if we changed the inputs”, letting a user evaluate alternative configurations against each other rather than in isolation.
Interface and packaging
A Streamlit application, later joined by a Flask interface, made the tool usable without any Python knowledge. It was deliberately designed for progressive depth: the recommendation and its justification up front, with the comparison underneath for anyone who wanted it. Packaged with PyInstaller so it runs on a machine without a Python installation, with the optimisation logic covered by pytest.
What it built
An end-to-end optimisation workflow spanning mathematical modelling, implementation, usability and decision-support design - and the more transferable lesson that a recommendation is only useful if the person receiving it can see why it was made.
Limitations
The model assumes deterministic inputs. Stochastic demand or supplier variability would require a reformulation.