2
$\begingroup$

Using the "Step Monitor" option what exactly do I read? Does it show me the "best solution" for each population? Or does it show me each search point in the population? Also is there an integrated "mutation" algorithm in DifferentialEvolution? I happen to see that in the "Step Monitor" it often repeats the same set of points of my design space.

$\endgroup$
4
$\begingroup$

Mutation is according to the classical rand/1 scheme.

NMinimize does not (or, at least, did not used to) save the function value it obtains at each point, and so reevaluates the objective function when candidate solutions are propagated unchanged through more than one generation. This accounts for the multiple evaluations at each point. I think that this is a simple oversight, although one can argue that this behavior is preferable if it is used to minimize stochastic functions (otherwise, a wrong solution will almost certainly result).

You can find out more about the internal workings of NMinimize by requesting debug output, as shown here. For anything remaining unanswered even then, you could consult the source code--differential evolution is implemented as top-level code in Optimization`NMinimizeDump`CoreDE. This can show you, for example, that the step monitor function receives only the best candidate solution at each generation, and not the entire population.

Note that Mathematica's differential evolution is not fully consistent with the paper of Storn and Price. The sense of the crossover probability is reversed, and the selection of "parent" vectors from which to produce mutants is done with replacement.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Oleksandr do you perhaps know how to set the number of generations? $\endgroup$ – Mirko Aveta May 11 '16 at 7:43
  • 1
    $\begingroup$ @MirkoAveta that will be MaxIterations. If you want to set an exact number rather than a maximum, you may have to find a way to trick NMinimize into it. $\endgroup$ – Oleksandr R. May 11 '16 at 10:56
  • $\begingroup$ Thanks. Easy to say, almost impossible to do :D $\endgroup$ – Mirko Aveta May 11 '16 at 11:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.