# 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)