Optimisation
Linear programming (LP)
Linear programming finds the best possible outcome, the most profit, the least cost, when your goal and all your constraints can be written as linear relationships. Modern solvers handle enormous LPs reliably and prove they've found the optimum.
Where we use it: blending, allocation, flow and planning problems with continuous quantities.
Optimisation
Mixed-integer programming (MIP)
MIP extends linear programming with whole-number and yes/no decisions, build this depot or not, run this train or not, assign this crew or not. That captures how real decisions actually come, in discrete chunks; it's harder to solve but vastly more expressive.
Where we use it: network design, scheduling, facility and asset decisions.
Optimisation
Constraint programming (CP)
Constraint programming describes a problem as a set of variables and the rules that link them, then searches intelligently for assignments that satisfy every rule, and the best one. It shines where the rules are complex and combinatorial.
Where we use it: rostering, sequencing and scheduling with intricate, interacting constraints.
Optimisation
Metaheuristics
Metaheuristics are smart, general-purpose search strategies that find very good solutions to problems far too large or messy for exact methods. They don't guarantee the absolute optimum, but they get you excellent answers in practical time.
Where we use it: huge routing, layout and scheduling problems where exact solvers stall.
Optimisation
Genetic algorithms
A genetic algorithm is a metaheuristic inspired by evolution: it keeps a population of candidate solutions, combines and mutates the best ones over many generations, and lets strong solutions emerge. It copes well with rugged, complicated solution spaces.
Where we use it: complex design and configuration problems with many interacting choices.
Optimisation
Simulated annealing
Named after the cooling of metal, simulated annealing is a metaheuristic that's willing to accept worse solutions early on, which lets it escape local "good-but-not-best" traps, then gradually settles toward a strong final answer.
Where we use it: placement, sequencing and layout problems with many local optima.
Optimisation
Column generation
For problems with an astronomical number of possible options, column generation builds the solution by adding only the promising options ("columns") as they're needed, instead of enumerating them all. It makes otherwise-impossible problems tractable.
Where we use it: vehicle routing, crew scheduling and cutting-stock problems.
Optimisation
Multi-objective optimisation
When you're balancing competing goals, cost versus service, risk versus reward, multi-objective optimisation maps the trade-off frontier rather than collapsing everything into one number. You see the real options and choose with eyes open.
Where we use it: investment and design decisions with genuine, conflicting priorities.