Create a solution robustness analytic
- Last UpdatedAug 11, 2025
- 5 minute read
The Solution Robustness analytic is used to check how robust a solution is relative to other scenarios. This is configured through the use of sensitivities and robustness decisions.
Sensitivities are sets of parameters which solutions are checked against. They can be differing input values or constraints for model variables, for example different pricing or different maximum capacity values for process units.
Robustness decisions are solution values which should be checked for stability. They are fixed targets which the sensitivities are checked against. Robustness decisions might include product sales or crude purchases, but can include any parameter that can be added to a watch set.
Solution robustness shows the profitability when the solution from one scenario is applied in a different set of operating conditions, that is, whether the solution, given a set of assumptions about operations, is still a good solution if some of those assumptions change. For example, if I assume 100% availability for all my process units and plan for this, is this still a good operating plan if my units are only 80% available? Or if I plan for high gasoline demand and there is a shift to high heating oil demand, is my original choice valid?

Solution robustness example
Imagine you want to test the robustness of crude purchases against variations in the capacity of the Fluid Catalytic Cracking (FCC) unit of your plant.
You would first add the FCC capacity as an item to the Sensitivity page. Suppose that the FCC capacity has a base value of 30 kbbl/d, and that you add two sensitivity scenarios where the capacity is reduced to 15 kbbl/d and 0 kbbl/d.
Next you open the Robustness Decisions page and add all the crude purchases you want to test.
When you click the Optimize button, the first step of the Solution Robustness analytic would be to optimize the Case with each of the FCC capacities defined in the Sensitivity page (0, 15 and 30 kbbl/d in our example). This would produce three sets of solution values for the crude purchases you have defined as Robustness Decisions items.
Then, each set of solution values would be applied to the other sensitivity scenarios. So other cases would be generated:
-
The crude purchases from running at 100% FCC capacity would be set as fixed purchases, and the model re-optimized with 50% FCC capacity.
-
The crude purchases from running at 100% FCC capacity would be set as fixed purchases, and the model re-optimized with 0% FCC capacity.
-
The crude purchases from running at 50% FCC capacity would be set as fixed purchases, and the model re-optimized with 100% FCC capacity.
-
The crude purchases from running at 50% FCC capacity would be set as fixed purchases, and the model re-optimized with 0% FCC capacity.
-
The crude purchases from running at 0% FCC capacity would be set as fixed purchases, and the model re-optimized with 100% FCC capacity.
-
The crude purchases from running at 0% FCC capacity would be set as fixed purchases, and the model re-optimized with 50% FCC capacity.
One sensitivity item with n sensitivity scenarios will generate n(n+1) cases.
This example had just one sensitivity item. Where there are multiple sensitivity items, the items are each evaluated independently in their group, and the Robustness is only tested in the same group. Grouped items are stepped together, while ungrouped items are evaluated independently (that is, they belong in their own independent group).
Suppose you add reformer capacity as another sensitivity item in addition to FCC capacity. These will then be evaluated independently:
-
Solutions from FCC capacity scenarios are tested for robustness against variations in FCC capacity.
-
Solutions from reformer capacity scenarios are tested for robustness against variations in reformer capacity.
-
The reformer capacity is not automatically tested against the FCC capacity, and would have to be manually defined in terms of the relative capacities which required testing.
Create a solution robustness analytic
To create a Solution Robustness Analytic:
-
Select the case you wish to use as the basis for the analytic.
-
Click the Add Analytic > Solution Robustness button in the Cases group of the Home ribbon tab.
Manage robustness decisions
Robustness Decisions are the solution values that will be frozen when comparing different sensitivities. That is, the solution values from one basis case will be taken and fixed in the different sensitivity cases, and then the model re-optimized to try to meet these fixed values. The solution values of the basis cases are generated by using the analytic parent case and applying each of the sensitivities in turn to generate the set of decision values.

The Name of each entry is usually the same as the name of the watch set item used to define the parameter. Clear the Active check box if you do not want the corresponding solution value to be fixed during robustness analysis.
Add robustness decisions items

The actual variables which are stepped are taken from watch sets. After choosing the items to step through, you can enter new values for these items as either absolute new values, or by varying the item value by a delta value.
To add items to the parameters list:
-
Click Add Items in the Robustness Decisions group of the Home ribbon tab.
-
In the Watch Items dialog choose the name of the Watch List which contains the Watch Item to vary.
-
From the watch list select the watch items to vary.
-
Click OK to close the dialog.
Tip: If you've forgotten to add a variable to a watch list, to add it to the list use the Stack View to edit the watch list.
Review decision values
The Robustness Decision Summary page shows the values that will be applied as fixed solutions in each of the alternative scenario analyses. These are the solution values from the original basis case for each sensitivity (that is, the base case with each of the sensitivity items applied). The values are then re-applied to the robustness decisions as fixed values for the other sensitivities.
