How it works

How Slate models, solves, and reports.

This page is for the people who build and maintain planning models. It covers what Slate represents, how it solves, and what it gives back.

01Modeling approach

Process-native refinery models.

Slate represents the refinery the way a process engineer draws it: crudes, units, streams, pools, and tanks. Each process unit is a submodel with its own yields, qualities, and operating limits. Submodels connect through streams, so changing one unit does not mean rewriting the matrix.

Unit correlations can be linear or nonlinear, whichever the data supports.

Process units
Yields and product qualities as functions of feed and operating mode, with capacity and severity limits.
Pools and blending
Quality specifications on blended products, with each property blended on its correct basis: volume, weight, or blending index.
Multi-period inventory
Tank balances carried across periods, with opening stocks, bounds, and an end-of-horizon value on closing inventory.
Markets and logistics
Crude and product prices, availability, and contract terms per period, plus transfers between sites in regional models.
Refinery flowsheet abstractionThree crudes feed a crude distillation unit. Its cuts go to a reformer, a kerosene hydrotreater, a diesel hydrotreater, and a vacuum unit feeding an FCC. Unit outputs flow into four blend pools: gasoline, jet, diesel, and fuel oil, which become products. The FCC is marked with a shadow price on its capacity, and the gasoline pool is marked with quality specifications.CRUDESDISTILLATIONCONVERSION AND TREATINGBLEND POOLSPRODUCTSCRUDE 1CRUDE 2CRUDE 3LT NAPHTHAHVY NAPHTHAKEROSENEDIESELATM RESIDREFORMATEVGOVAC RESIDLCOFCC GASOLINECDUREFORMERKERO HTDIESEL HTVDUFCCλ capGASOLINEΣJETΣULSDΣFUEL OILΣspecs
Fig. 2Flowsheet abstraction. Crudes enter the distillation unit, conversion and treating units transform the streams, and product pools blend to specification.

02Solver approach

MILP and MINLP, with global methods where they matter.

Discrete decisions are part of the model, not post-processing. Unit modes, cargo selection, and batch timing are integer variables, and the model is solved as an MILP or MINLP with modern solvers.

Where nonconvexity matters, such as pooling with quality constraints, Slate can apply global optimization methods that bound how far a solution is from the best possible plan. Elsewhere, local methods are faster and sufficient.

Reliability by construction
Scaling, variable bounds, and initialization are handled systematically rather than tuned case by case.
Zero flows modeled explicitly
Streams that can shut off carry on and off logic, so a zero flow does not stall the solver on undefined qualities.
Traceable infeasibility
When a case is infeasible, Slate reports the smallest set of conflicting constraints it can find, so the modeler starts from the cause.
Status you can read
Every solve reports its status, optimality gap, and the reason it stopped.

03Decomposition

Linked subproblems, with boundaries chosen from model structure.

A regional model has structure. Refineries share crude supply, product transfers, and regional demand, but most constraints are local to one site or one period. Slate partitions the model into subproblems linked by a small set of coupling constraints and variables, and coordinates them to one consistent plan.

Where to draw the boundaries is the hard part. Cut through a tightly coupled group of units and coordination does all the work. Slate analyzes the coupling structure of your model to propose boundaries by site, by period, or by unit group, and the modeler can override them.

Partition by site, period, or unit group
Choose the split that matches how the model is coupled.
Explicit coupling
Shared crude, transfers, and regional demand are modeled as linking constraints you can inspect.
Coordinated to one plan
Subproblem solutions are reconciled into a single plan that satisfies the linking constraints.
Modeler control
Proposed boundaries are a starting point. You can move them and compare.
Decomposition of a regional planning modelSparsity pattern of a planning model shown twice. On the left, rows and columns in their original order look unstructured. On the right, the same nonzeros are reordered into block-angular form: a band of linking constraints across the top, and four blocks on the diagonal labeled A to D, one per refinery.FULL MODELrows, cols as writtenREORDERBLOCK-ANGULARLINKABCD
Fig. 3Decomposition of a regional model. Reordering rows and columns exposes block-angular structure: refinery subproblems on the diagonal, linking constraints across the top.

04Continuous to batch

From planning averages to tank and batch events.

The plan says the gasoline blender runs at an average rate for the period. The plant blends discrete batches into specific tanks, around cargo arrivals and product liftings.

Slate links the two. The planning layer sets volumes and qualities for each period. The batch layer turns them into tank events, batch sizes, and timing that respect tank capacity and heel, and it reports back when a period average cannot be executed.

Tanks
Capacity, heel, and quality tracking per tank.
Cargoes and liftings
Arrival and lifting windows as discrete events.
Blend batches
Batch sizes and timing that add up to the planned period volume.
Feedback to the plan
Infeasible averages are flagged with the event that breaks them.
From continuous planning flows to discrete batches and tank eventsA 30-day timeline split into two planning periods. The plan lane shows a constant blender rate in each period. Below it, crude cargoes arrive on days 3, 13, and 23 and products are lifted on days 9, 19, and 28. The crude tank level falls steadily and jumps at each cargo arrival, staying between heel and capacity, with capacity nearly reached on day 23. Six discrete blend batches, three per period, add up to each period's planned volume.051015202530DAYPERIOD 1PERIOD 2PLANaverage per periodCARGOESarrivals, liftingsCRUDE TANKheel to capacityBLEND BATCHESdiscrete runscargoliftingcapacityheelullage bindsB1B2B3B4B5B6Σ B1..B3 = period 1 plan volumeΣ B4..B6 = period 2 plan volume
Fig. 4The same month at two resolutions. The plan holds a constant rate per period. Operations see cargo arrivals, a crude tank cycling between heel and capacity, and discrete blend batches that add up to the planned volume.

05Uncertainty and scenarios

Plan across scenarios, not one forecast.

Crude prices, product cracks, crude availability, and unit outages are uncertain. Slate plans against a set of scenarios and separates the decisions you must make now from the decisions that can wait until more is known.

The result is a plan that holds up across the cases you care about, with the cost of that protection stated in dollars.

Scenario sets
Built from your own price, availability, and outage assumptions.
Now versus later
Commitments such as crude purchases are fixed across scenarios. Operating decisions adapt to each one.
Value of flexibility
The margin difference between a hedged plan and a single-forecast plan, made explicit.
Fewer manual cases
A scenario run covers ground that otherwise takes a portfolio of hand-built what-if cases.

06Outputs

Answers in margin dollars.

Every result is reported in margin. Planners and managers see the same numbers, and the numbers trace back to the model.

Margin
By site, by period, and by decision.
Shadow prices
For every binding constraint, the margin gained per unit of relaxation.
Marginal values
Break-even values for crudes, components, and intermediate streams.
What changed since last cycle
Which inputs moved, which constraints became binding or slack, and the margin effect of each.
Margin bridge between planning cycles (illustrative)Waterfall chart without values. It starts from last cycle's margin, then shows four changes: crude prices lower margin, product cracks raise it, the FCC capacity constraint lowers it and is highlighted as a binding constraint, and inventory raises it slightly, ending at this cycle's margin.MARGIN, $LASTCYCLE−CRUDEPRICES+PRODUCTCRACKS−FCCCAPACITY+INVENTORYTHISCYCLEbinding, λ
Fig. 5Margin bridge from the last planning cycle to this one. Each step is a change in inputs or constraints, valued in dollars.

Next step

See Slate on a model like yours.

Book a working session with the team, or start with the technical brief.