HomeTechniques and TipsEvolver and RISKOptimizerDebugging RISKOptimizer and Evolver Models

# 14.25. Debugging RISKOptimizer and Evolver Models

Applies to:
RISKOptimizer in @RISK 5.x–7.x Industrial Edition
Evolver 4.x–7.x
Evolver Developer Kit (EDK)
RISKOptimizer Developer Kit (RODK)

What are some things I can do to debug my RISKOptimizer or Evolver model?

Here are some suggestions:

• Look for redundant constraints, or constraints that further constrain the Adjustable Cell Range. An important rule to go by is that the only constraint on an adjustable cell range should be the constraint itself. When there are constraints on a constraint, this causes RISKOptimizer to waste a lot of time finding solutions that abide by the main constraint, only to find that they violate a "subconstraint".

• Consider the magnitude of the deviation when assigning a penalty function. For example, if the numbers in a model deviate in terms of thousands or millions, instead of the default penalty formula (100*(EXP(deviation/100)-1), which exponentiates the deviation, you can have the formula just be "deviation".

• This bullet applies only to the Genetic Algorithm.  (All optimizations in 5.7 and earlier used the Genetic Algorithm, but beginning in 6.0 you can choose between the Genetic Algorithm and the OptQuest engine.)

For the Genetic Algorithm, it's crucial that all constraints are satisfied in the initial state of the model before you start the optimization. This gives the software a good "launch pad" from which to work so that it does not waste a lot of time trying solutions that are totally in left field.  Please see Starting Values of Adjustable Cells.

Evolver and RISKOptimizer 5.5 and above have Constraint Solver in the Utilities menu. This tool will find an initial feasible solution for you.  In 5.0 and earlier versions, to get the model started with an initial feasible solution, you can run a preliminary optimization in which the goal of the optimization is get the model in a state in which no constraints are violated. For example, you can do this by expressing each constraint individually in Excel as a statement that evaluates to either True or False. Then use an If statement that determines whether the constraint cell evaluates to True or False. If it evaluates to False (i.e., not satisfying the constraint) make the cell return some arbitrary number, other than zero. 1 might be a good choice. If the constraint cell evaluates to True, meaning that the constraint was satisfied, have the If statement evaluate to 0. Then have a cell at the bottom of the column of IF statements that sums that entire column. Make this the target cell of the optimization (leaving the adjustable cells as they are), and make the objective of the optimization achieving the closest value possible to 0.

Last edited: 2015-07-23