Griffith PSE
Process systems engineering, with the math made interactive.
This is an in progress library of interactive demos for instructors and their students to use live in lectures. No login, no paywall, public GitHub repositories. If you have feedback or suggestions for future demos, send a message here: devin@griffith-pse.com.
Featured demos
Quad Tank
The four-tank system is a canonical multivariable nonlinear control problem. Solved here as an open-loop optimization with rIPOPT to track a target tank height profile.
Knapsack
A 0-1 mixed-integer program: choose items with weight and value to maximize value under a capacity constraint. Foundational example for combinatorial optimization in operations research and process scheduling.
Diet
The classic Stigler diet problem: minimize cost of a meal plan subject to nutritional constraints. The introductory linear program in operations research textbooks; still useful as a process blending teaching example.
Strip Packing
Pack N rectangles into a fixed-width strip to minimize the used length. The problem is written as a generalized disjunctive program (GDP) and reformulated to an MILP. Compare the Big-M and Hull pyomo.gdp transformations, as well as the HiGHS and Gurobi solvers.
Circle Packing
Pack N non-overlapping circles into the smallest enclosing rectangle. A textbook non-convex NLP from Biegler’s Nonlinear Programming, solved here with pounce, an interior-point method that converges to a local minimum. Edit any circle’s initial guess by hand to perturb the local optimum and re-solve.
Facility Layout
Place rectangular process units around a central pipe rack to minimize the facility’s width plus the cost-weighted Manhattan piping from each unit to the rack. A continuous-domain layout problem written as a generalized disjunctive program (GDP), reformulated to an MILP with symmetry-breaking, and solved with Gurobi.





