Guide
Decisions & Targets
Some decisions are quantities: how much moves along a path. Others are selections: which supplier to qualify, whether to add a second shift, which sites to open. Decision alternatives represent selections directly, so they do not have to be encoded as flows.
Where to add them
Open the Model Editor and expand Decision alternatives. A model can hold any number of groups, and each group holds the options that compete within it.
Decision alternatives are optional. A model without them behaves exactly as before, using flows, limits, and objectives only.
Groups: how many can be chosen
A group has a name, an optional description, and Min selected and Max selected. Those two numbers define the selection rule.
| You want | Min selected | Max selected |
|---|---|---|
| Exactly one option, such as a single supplier | 1 | 1 |
| At most one option, such as an optional upgrade | 0 | 1 |
| Any subset, including none | 0 | number of options |
| At least two, no more than four | 2 | 4 |
| Every option is mandatory | number of options | number of options |
Selection counts are enforced exactly. A group whose minimum cannot be met makes the model infeasible rather than dropping the requirement.
Options: what each choice does
An option is one alternative within a group. These are its fields:
| Field | What it means |
|---|---|
| Option name | The alternative in plain terms, such as "Qualify vendor B" or "Add weekend shift". |
| Type | Yes/no for take it or leave it, Integer for whole units, Continuous for any amount. |
| Min / Max | The quantity range when the option is selected. Yes/no options are fixed to 0 and 1. |
| Fixed cost | Charged once if the option is selected at all, regardless of quantity. |
| Variable cost | Charged per unit of the selected quantity. |
| Lever cost | The cost of changing the plan. Used only by target seeking, described below. |
| Override | Solver decides is the default. Require forces the option in, Exclude rules it out. |
| Decision stage | Adaptive values may differ by scenario. Committed values are fixed before scenarios resolve. |
| Resource rates | Consumption per unit, entered as labor:2; money:50. |
Fixed cost, variable cost, and a money resource rate all contribute to the same total. Use the one that matches how the cost actually behaves, rather than entering it in more than one place.
Effects: what selecting it changes
An option can change the rest of the model. This is what makes a decision structural rather than only an entry on the cost side.
Turn flow paths on or off. Entering +vendor_route; -internal_route opens one path and closes another when the option is chosen.
The same syntax applies to conversions, as in +external_qc; -internal_qc. Use it when an option changes which transformation is available.
Add capacity to a resource pool or limit, per unit selected: qc_hours:30; suite_weeks:1. This is how an option such as engaging a contractor contributes additional QC hours.
Deliver product directly, without routing it through the network. release:lot:1 contributes one lot at the release node per unit selected.
For a route that exists physically but requires approval: draw the flow, set the decision option's override to Exclude for the baseline, and have the option enable that flow. The route stays closed until something explicitly opens it.
Rules between options
Once a model has two or more options, rules can link them across groups:
| Rule | Meaning | Compiles as |
|---|---|---|
| Requires | Choosing A means B must also be chosen | A ≤ B |
| Excludes | A and B cannot both be chosen | A + B ≤ 1 |
Requires is one-directional. B can still be selected without A. If both directions are needed, add the rule twice.
Committed and adaptive
Every option, flow, and conversion carries a decision stage. It applies once the model has explicit scenarios, and is worth setting while you build.
Decided before the scenario is known, and identical across all of them. Capital spend, long-lead orders, and signed contracts belong here.
Decided after the scenario is known, so it may differ between scenarios. Routing, overtime, and batch placement belong here. This is the default.
See Scenarios & Resilience for how each stage behaves in the three analysis modes.
Reach a target with the least intervention
Standard optimization asks how good the outcome can be. Target seeking reverses the question: the outcome is fixed, and the model returns the least costly set of changes that reaches it.
The option appears on the Objective screen once the model has decision options that can act as levers. It takes four settings:
| Setting | What to enter |
|---|---|
| Target outcome | The objective that must be reached. |
| Required target value | The value it has to reach. |
| Intervention resource | How levers are priced: Modeled intervention cost, which uses the Lever cost field, or any custom resource. |
| Controllable options | The decision options permitted to change. All others stay fixed at their baseline choice. |
Selecting Seek target adds the target as a hard requirement, minimizes only the permitted levers, fixes the resulting intervention plan, then re-solves the operating model against it.
A target is reported as achieved only when the final operating solve is optimal and the remaining gap is within tolerance, not when the intervention model alone produces a value.
Lever cost is deliberately separate from operating cost. Fixed and variable cost describe what an option costs to run; lever cost describes what it costs to change the plan. Keeping them apart prevents target seeking from treating ordinary operating expense as the price of intervening.
Reading decisions in the results
The Answer tab lists the selected options with their quantities, and reports whether each group's selection rule was satisfied, using your option names rather than solver variables. Exports carry the same detail. See Read the Answer.
One caution applies to models containing yes/no or whole-number decisions: classical shadow prices can be absent or unreliable. SSPLAX falls back to bounded re-solve tests and reports the resulting feasibility and objective change, so treat marginal values on mixed-integer models as directional rather than exact.