devo_numpy

compas.numerical.devo_numpy(fn, bounds, population, generations, limit=0, elites=0.2, F=0.8, CR=0.5, polish=False, args=(), plot=False, frange=[], printout=10, neutrals=0.05, **kwargs)[source]

Call the Differential Evolution solver.

Parameters
  • fn (obj) – The function to evaluate and minimize.

  • bounds (list) – Lower and upper bounds for each DoF [[lb, ub], …].

  • population (int) – Number of starting agents in the population.

  • generations (int) – Number of cross-over cycles/steps to perform.

  • limit (float) – Value of the objective function to terminate optimisation.

  • elites (float) – Fraction of elite agents kept.

  • F (float) – Differential evolution parameter.

  • CR (float) – Differential evolution cross-over ratio parameter.

  • polish (bool) – Polish the final result with L-BFGS-B.

  • args (seq) – Sequence of optional arguments to pass to fn.

  • plot (bool) – Plot progress.

  • frange (list) – Minimum and maximum f value to plot.

  • printout (int) – Print progress to screen.

  • neutrals (float) – Fraction of neutral starting agents.

Returns

  • float – Optimal value of objective function.

  • list – Values that give the optimum (minimized) function.

Notes

References

Examples

>>> from scipy.optimize import rosen
>>> def f(u, *args):
...     return rosen(u.ravel())
...
>>> x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
>>> bounds = [[-10.0, 10.0], [-10.0, 10.0], [-10.0, 10.0], [-10.0, 10.0], [-10.0, 10.0]]
>>> res = devo_numpy(f, bounds, 200, 1000, polish=False, plot=False, frange=[0, 100], neutrals=0, printout=0)