HomeTroubleshootingEvolver and RISKOptimizerEvolver or RISKOptimizer Doesn't Find Best Solution

10.1. Evolver or RISKOptimizer Doesn't Find Best Solution

Applies to:
Evolver, all releases
RISKOptimizer or @RISK Industrial Edition, all releases

When I run Evolver or RISKOptimizer, it runs for a long time but doesn't come up with a good solution. (Or, it doesn't come up with any solution.)

It's possible that your model is very complex and will take a long time. For best results, have a look at For Faster Optimizations for some suggestions. Also, in Optimization Settings (release 6.0 and newer), make sure that the engine is set to Automatic.

We have seen a very few models make better progress when the optimization is stopped and re-started from that point.

The rest of this article applies only to optimizations that use the Generic Algorithm. With 6.x and newer, the Genetic Algorithm is available — it's used instead of OptQuest if you specify it, or if you leave the Engine set to Automatic and the optimizer decides that the Genetic Algorithm will be more efficient. With releases 1.0–5.7, the Genetic Algorithm is always used.

With the Genetic Algorithm, the initial values of adjustable cells can be crucial. One common mistake is starting off with a constraint violation. Details:

In Evolver and RISKOptimizer you set up constraints. As the program tries each new set of adjustable variables, it checks to see if the constraints are met, and if they're not then it backs up to values that do meet the constraints. For a nice picture of this, open the Evolver or RISKOptimizer Help file, click the Search tab, search for backtrack, and in the results select Constraints.

If you start the program off with the adjustable variables not meeting constraints, then the program has no valid trial to back up to. It spends a lot of time blundering around till it gets lucky and hits on a valid solution. For example, you might have a constraint that a range of cells must be between 1 and 100, but then you start with 0 in all the cells, figuring that the program will make the adjustment. It will, eventually. But solution is a lot more efficient—a LOT more—if you start the program off with all constraints met.

In Evolver and RISKOptimizer releases 5.5 and later, you can use Constraint Solver to help you find an initial feasible solution.

During optimization, try adjusting the operators, crossover, or mutation. The advantage of the Genetic Algorithm over LP/NLP (such as used in Solver) is that it can find a global as opposed to a local optimum. But if the program makes initial progress and then seems stuck, you may need to re-run the optimization with more operators selected and perhaps change the mutation rate to "auto". With mutation set to "auto", you can watch the rate change in the Watcher Summary tab: it gets increased if the optimization is not making progress, and once it starts making progress it gets decreased again.

See also:

Last edited: 2015-10-15

This page was: Helpful | Not Helpful