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.
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.
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.
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.
Next step
See Slate on a model like yours.
Book a working session with the team, or start with the technical brief.