Guide
Reference
Quick-lookup tables for the main options, settings, result views, and exports in SSPLAX.
Constraint types
Each constraint you add to a model is one of these types. The type determines how the limit is applied.
| Type | What it limits | Typical unit |
|---|---|---|
| Budget | Total cost across all flow paths | USD |
| Carbon cap | Total CO₂ emissions across the network | tCO₂ |
| Capacity | Throughput through a specific stage or path | units / period |
| Resource limit | Total usage of a custom resource (FTEs, GPU hours, etc.) | resource unit |
| Minimum throughput | Minimum delivery at a specific output point | units / period |
Objective types
| Direction | What it does | Common targets |
|---|---|---|
| Maximize | Push the target as high as possible | Throughput, output volume |
| Minimize | Push the target as low as possible | Cost, carbon, resource usage |
An objective can target the entire network or a specific output node. When minimizing, you typically also set minimum delivery requirements so the solver doesn't simply stop all flow.
Node types
Nodes are the stages in your flow network. Each node has a type that describes its role.
| Type | Role |
|---|---|
| Source | Where material, work, or demand enters the system |
| Sink | Where delivered output exits the system |
| Service | A tool, machine, or service that transforms flow |
| Queue | A buffer or inventory point between stages. Supports holding cost, max storage, and inventory carry-over across periods |
Flow path settings
Each flow path (edge) between two nodes has these configurable properties.
| Setting | Description |
|---|---|
| From / To | Which two nodes this path connects |
| Commodity | What flows through (e.g., "throughput") |
| Unit | The measurement unit (e.g., "units/week") |
| Min / Max | The allowed flow range — min is usually 0, max is the capacity |
| Cost rate | Cost per unit of flow (USD) |
| Cost segments | Breakpoints where the cost rate changes at different volumes |
| Carbon rate | CO₂ emitted per unit of flow |
| Resource rates | How much of each custom resource this path consumes per unit |
| Yield | Fraction of input that becomes output (e.g., 0.72 = 28% loss) |
| Decision type | Continuous (how much), integer, or binary (on/off) |
| Reversible | Whether flow can move in either direction |
Scenario presets
Built-in presets with illustrative default constraint changes for quick comparisons.
| Preset | What it does |
|---|---|
| Baseline | Solve with current constraints — the default starting point |
| Aggressive | Relax capacity limits and tighten delivery requirements |
| Budget cut | Reduce budget constraints by a default percentage |
| Supplier slip | Lower capacity on vendor-linked paths |
| Custom | Manually adjust any constraint values for the comparison |
Interventions
Predefined what-if actions in the Compare tab's intervention library. Each stages a Scenario B change so you can compare it against the baseline. Domain-specific templates may include additional interventions beyond these.
| Intervention | What it changes |
|---|---|
| Increase capacity | Raises a constrained capacity limit by 10% |
| Relax budget | Increases available budget by 10% |
| Defer demand | Reduces minimum delivery requirement by 10% |
| Expand route capacity | Opens 10% more capacity on a flow path |
What the results show
After solving, the Results screen organizes findings across several tabs.
| Tab | What you see |
|---|---|
| Answer | Baseline answer, next move, binary decisions, multi-period details, and the solved flow network |
| Drivers | Most sensitive drivers, marginal values, tradeoff analysis, what becomes limiting next, and all constraints |
| Robustness | Pressure tests and stochastic feasibility checks — how the answer holds under tighter limits and real-world variation |
| Compare | Side-by-side diff of two scenarios: what changed in the objective, which paths gained or lost flow, and which limits flipped |
| Explore | Decision map, Pareto frontier, and feasible window for scanning the broader decision space |
| Report | Decision brief, export controls, constraint audit, input evidence, and computed robustness or scenario evidence |
Result status
Every solve returns one of these outcomes.
| Status | What it means |
|---|---|
| Optimal | A best feasible plan was found that satisfies all constraints |
| Infeasible | No plan can satisfy all constraints simultaneously — SSPLAX suggests single-limit changes that could restore feasibility |
| Unbounded | The objective can improve without limit — usually means a constraint is missing |
| Error | Something went wrong during the solve |
Input documentation fields
Each constraint can carry these documentation fields. They describe the input; they do not change the baseline solve.
| Field | Options |
|---|---|
| Input confidence | High, Medium, Low, or Unspecified |
| Value type | Measured, Estimated, Placeholder, Imported, or Unspecified |
| Source | Free text — where the number came from |
| Owner | Free text — who is accountable for this input |
| Review low / high | Optional documentation bounds for input review; separate from uncertainty sampling |
| Note | Free text — any additional context |
| Impact | Auto-computed sensitivity score (0-100) showing how strongly the result depends on this constraint |
Planning settings
Multi-period planning options available in the Constraints screen.
| Setting | Description |
|---|---|
| Periods | Number of time periods to plan across (1-12) |
| Demand growth | Default percentage increase in minimum-throughput demand each period (-20% to +50%) |
| Constraint schedules | Per-constraint time pattern: Flat, Growth, Step, Ramp, or Custom. Generates period-by-period values so you don't have to type each one |
| Ramp rates | Maximum percentage a flow path can increase between periods |
| Cumulative budget | Whether budget is shared across all periods or per-period |
| Queue carry-over | Whether inventory in queue nodes carries between periods |
| Backlog / unmet demand | When enabled, unmet demand carries forward as backlog with a penalty rate instead of causing infeasibility |
| Inventory economics | Adds holding costs and storage caps to queue node inventories when carry-over is on |
Model warnings
The Model Editor checks your network for structural issues before solving. These are the warnings and errors you may see.
A node has no connections — it won't participate in the solve. Connect it or remove it.
Every model needs at least one entry point (source) and one exit point (sink).
A path connects a node back to itself. Remove it or route through an intermediate node.
A path's minimum exceeds its maximum, or a constraint's default is outside its allowed range.
There's no connected path from any source to this sink. Flow can't reach it.
Yield must be between 0 and 1. A value of 0.72 means 72% passes through; 28% is lost.
Cost segment breakpoints must increase, and rates must be zero or positive.
Two paths between the same nodes carrying the same commodity. Merge them or differentiate the commodity.
The model has no constraints. Without limits, the result is trivial.
The model has no objective. Add one so the solver knows what to optimize.
How a model is organized
Every SSPLAX model has three layers:
The structural blueprint — which nodes exist, how they're connected, what constraints and objectives are available, and what custom resources are defined. Templates can be starter templates (pre-built for a domain) or created from scratch in the Model Editor.
The specific values you've set: which objective is selected, what constraint values you've dialed in, how you've adjusted flow path capacities and costs, and your planning settings (periods, demand growth, ramp rates).
The computed result: the baseline answer, next move, solved flow network, which constraints are binding, how much headroom each non-binding constraint has, and (if infeasible) the minimum changes needed to restore feasibility.