Optimisation
Scheduling, allocation, routing, design and packing. We use mixed integer programming where it scales, and custom heuristics where it doesn't.
Custom algorithms, including for problems off-the-shelf solvers can't finish.
We turn your scheduling, allocation, routing and planning decisions into mathematical models, then build the software that solves them. Our methods are published and tested on real operating data.
If a decision has an objective and constraints, we can probably model it.
Production lines, shifts, maintenance and project plans.
Staff, machines, budgets and limited materials.
Fleets, deliveries and supply networks.
Warehouses, plants, service points and infrastructure.
Material cutting, and container and pallet loading.
Inventory, capacity, and policies tested by simulation.
What our methods have shown so far, much of it in logistics. Figures are as reported in the linked papers.
On logistics network design, our variable neighbourhood search stays within about 1% of the best dual bound on small networks. On medium networks it is up to 55% better than a time-limited exact solver.
Replaying a month of real parcel flow in a discrete-event simulator showed one production policy could save 5.0% of cost at the same lead time. The fix changes two parameters and needs no capital.
Truck and trailer routing on real retail data, with about 400 stores and 100 vehicles per warehouse, plus time windows and split deliveries. Our heuristic found solutions 20% cheaper than a simple greedy method.
A mathematical programming model of the best network for decentralised nearest neighbour search. We solved it exactly on a 4×4 lattice and found heuristic solutions up to 7×7.
We modelled team selection in the game Dota Underlords as an integer program, solved it on real data, and proved the problem NP-complete.
Every project is custom, from the first formulation to working software.
Scheduling, allocation, routing, design and packing. We use mixed integer programming where it scales, and custom heuristics where it doesn't.
Replay your real operating data, sweep policy settings, and see the trade-offs before anything changes in production.
Better approximate nearest neighbour search, from graph structure to tuning on your data for recall, latency and memory.
Forecasting, detection and inspection models, including the demand and failure predictions that optimisation depends on.
Machines, shifts, batches and vehicles come in whole units, so a small extra demand can mean paying for one more. A linear model can't see that jump. Move the slider to compare them.
Example with a capacity of C = 20 per unit.
The general model
We start with your operation, and you keep everything we build.
Write down the objective, the constraints and the exceptions with the people who run the operation.
Score your current process on historical data, so every result has a fair comparison.
Build the algorithm, then test it against the baseline and a mathematical bound.
Connect it to your systems and hand over the code, the model and the documentation.
Open to read, including the formulations and experiments.
Tell us what you decide, what limits you, and how you measure a good result. A rough description is enough.