Griffith PSE: home Griffith PSE: home
  • Demos
    • Estimation Covariance
    • CSTR Sensitivity
    • Quad Tank
    • Knapsack
    • Diet
    • Strip Packing
    • Circle Packing
    • Plant Layout
    • Facility Location
    • Gas Storage
  • Videos
  • Papers
  • About

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

Estimation Covariance: click to launch

Estimation Covariance

Fit a decay model to noisy data and get the parameter covariance from the same solve: standard errors, correlation, and the 95% confidence ellipse. A Monte Carlo of refits checks the ellipse.

CSTR Sensitivity: click to launch

CSTR Sensitivity

Optimal control of an open-loop unstable reactor, with the local feedback gains read from the solver’s held factorization. Perturb the start to compare the microsecond sensitivity estimate against an exact re-solve.

Quad-tank control: click to launch

Quad Tank

The four-tank system is a canonical multivariable nonlinear control problem. Solved here as an open-loop optimization with POUNCE to track a target tank height profile.

Knapsack optimizer: click to launch

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 optimizer: click to launch

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 GDP optimizer: click to launch

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 NLP optimizer: click to launch

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.

Plant Layout optimizer: click to launch

Plant Layout

Place rectangular process units around a central pipe rack to minimize the plant’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.

Facility Location optimizer: click to launch

Facility Location

Choose which candidate sites to open so every customer is served at minimum fixed-plus-transport cost, the classic uncapacitated facility location problem. Toggle sites open on an interactive map, then solve the MIP with Gurobi and compare your layout against the optimum.

Gas Storage valuation: click to launch

Gas Storage

Value a natural gas storage lease: a linear program locks the intrinsic value against the forward curve, and a Monte Carlo of mean-reverting spot paths re-optimizes the plan as prices move (rolling intrinsic). The uplift over the static plan is a lower bound on the lease’s extrinsic value. Optimization embedded in simulation: 650+ LP solves per run.

© 2026 Devin Griffith · Griffith PSE

  • devin@griffith-pse.com