Palisade Knowledge Base

HomeTroubleshootingEvolver and RISKOptimizerOptimization Makes Faster Progress if I Stop and Restart It

10.2. Optimization Makes Faster Progress if I Stop and Restart It

Applies to:
Evolver 6.x/7.x
@RISK Industrial Edition 6.x/7.x

My model seems to make progress faster if I stop and restart it periodically than if I just let it run.

Specifically, the progress window shows the value of the target cell improving rapidly at first, then improvement becomes progressively slower.  If I stop the optimization, saving best values to the workbook, then restart it, progress is rapid again but after a while it again slows down.  If I don't stop and restart the optimization, but just let it run, progress just gets slower and slower.

This is related to your particular model and is not expected behavior for most models.

You've observed that restarting the optimization accelerates the optimization process.  (We say "accelerates", because for all we know it would eventually get to the optimal solution with a single optimization.)  Whether we're talking about the Genetic Algorithm or OptQuest, the optimization algorithm has to make guesses that certain regions of the solution space are not worth pursuing (or not worth pursuing too often).  Apparently in the case of this problem these guesses are often wrong, and it helps to throw them away every now and then.

So why doesn't it restart itself internally, to make the optimization faster?  Because it doesn't know that it would help in this particular problem.  And for most problems such restarts would be counterproductive, losing the memory of largely correct guesses that the algorithm has made so far.

To accommodate this particular problem, you can write a macro using the Evolver or RISKOptimizer XDK (Visual Basic interface) to keep restarting the optimization.  Here is some sample code for Evolver; RISKOptimizer code would be similar.  Please see Setting References in Visual Basic for the appropriate references and how to set them.

Public Sub MultipleOptimizations()
   Dim i As Long
   For i = 1 To 5
      Evolver.Optimize
   Next i
End Sub

Last edited: 2015-10-15

This page was: Helpful | Not Helpful