Complete Reference

pyfde

class pyfde.ClassicDE

Bases: builtins.object

ClassicDE(fitness, n_dim, n_pop=30, limits=(-1.0, 1.0), batch=False, seed=None)

Implements the classic differential evolution algorithm (DE/rand/1/bin). Holds the vector population, fitness evaluations, and the parameters.

Parameters:
  • fitness (function) –

    Fitness evaluation function to be used. Must accept a double array as parameter and return the fitness evaluation as a float.

    Alternatively (by using batch=True), it can be a function that accepts two parameters: a double[n_pop, n_dim] corresponding to the population to be evaluated and a double[n_pop], correponding to where the fitness evaluations must be written to.

  • n_dim (int, > 0) – Number of dimensions
  • n_pop (int, > 3) – Number of vectors in the population
  • limits (tuple (min, max), list of tuples or double[n_dim][2]) – Limits for the search space dimension. If it is a tuple, then every dimension will have the same limits. If it is a list of tuples or an array, then each dimension will have the corresponding limit.
  • batch (bool) – If the batch mode should be used.
  • seed (int, > 0) – Seed used to initialize the pseudo random number generator.
__call__

Returns a generator that can be used for writing custom stopping conditions.

Parameters:n_it (int) – Number of iterations to perform before yielding the current solution
Returns:Returns a generator that yields the current best solution and its fitness value
Return type:generator
__iter__

Iterates through every vector in the population

Returns:Returns a (vector, fitness) iterator
Return type:iterator
best_k(self, int k)

Returns the index of a random vector from the k vectors with the highest fitness. If k is equal to one, then the best vector index is returned deterministically.

The sorted indexes are cached to optimize the common case where this function can be called multiple times with the same fitness array.

Parameters:k (int) – Size of the group with the best fitness values
Returns:int – Index of the choosen vector
Return type:int
cr

cr: ‘double’ Crossover rate, in the [0., 1.] range

evaluate(self, __Pyx_memviewslice pop, __Pyx_memviewslice fit)

Evaluates a population, storing their fitness for later use.

Parameters:
  • pop (double[n_pop,n_dim]) – Population to evaluate
  • fit (double[n_pop]) – Location to store the fitness evaluations
f

f: ‘double’ Differential weight, in the [0., 2.] range

generate_trial(self)

Generates a new trial population by using the current vectors.

prepare(self, new_pop=None)

Resets the solver internal state for a new computation.

Can be called to reuse an existing solver instance.

Parameters:new_pop (int or None) – New number of vectors in the population. If None, will use the current number of vectors.
run(self, int n_it=1000)

Runs the optimization algorithm for a number of iterations.

Parameters:n_it (int) – Number of iterations to be performed
Returns:Returns a tuple with the best solution and its fitness evaluation
Return type:(double[n_dim], float)
selection(self)

Merges the best trial vectors to the main population.

step(self)

Performs one iteration of the optimization algorithm.

class pyfde.JADE

Bases: pyfde.classicde.ClassicDE

JADE(*args, **kwargs)

Implementation of the adaptative DE algorithm proposed by Zhang, J. et al, JADE: Adaptive Differential Evolution with Optional External Archive.

See pyfde.ClassicDE constructor for the constructor parameters.

__call__

Returns a generator that can be used for writing custom stopping conditions.

Parameters:n_it (int) – Number of iterations to perform before yielding the current solution
Returns:Returns a generator that yields the current best solution and its fitness value
Return type:generator
__iter__

Iterates through every vector in the population

Returns:Returns a (vector, fitness) iterator
Return type:iterator
best_k(self, int k)

Returns the index of a random vector from the k vectors with the highest fitness. If k is equal to one, then the best vector index is returned deterministically.

The sorted indexes are cached to optimize the common case where this function can be called multiple times with the same fitness array.

Parameters:k (int) – Size of the group with the best fitness values
Returns:int – Index of the choosen vector
Return type:int
c

c: ‘double’

Parameter between 0 and 1 that controls the rate of the adaptation of the CR and F parameters.

cr

cr: ‘double’ Crossover rate, in the [0., 1.] range

evaluate(self, __Pyx_memviewslice pop, __Pyx_memviewslice fit)

Evaluates a population, storing their fitness for later use.

Parameters:
  • pop (double[n_pop,n_dim]) – Population to evaluate
  • fit (double[n_pop]) – Location to store the fitness evaluations
f

f: ‘double’ Differential weight, in the [0., 2.] range

generate_trial(self)

Generates a new trial population by using the current vectors.

This method differs from the base implementation in two points:

  • The random vector selected to guide the optimization procedure is selected from the top p vectors (bias towards better fitness).
  • The CR and F parameters are computed per vector, and are fluctuations around the mean CR and mean F adaptative parameters.

The original JADE algorithm can also be implemented with an archive, that can enhance the performance of the algorithm in high dimentional cases. This implementations does not includes this archive.

p

p: ‘double’

Parameter between 0 and 1 that determined the top p of the population were the best vector will be selected to guide the optimization procedure.

prepare(self, new_pop=None)

Resets the solver internal state for a new computation. Can be called to reuse an existing solver instance.

Parameters:new_pop (int or None) – New number of vectors in the population. If None, will use the current number of vectors.
run(self, int n_it=1000)

Runs the optimization algorithm for a number of iterations.

Parameters:n_it (int) – Number of iterations to be performed
Returns:Returns a tuple with the best solution and its fitness evaluation
Return type:(double[n_dim], float)
selection(self)

Merges the best trial vectors to the main population.

step(self)

Performs one iteration of the optimization algorithm.

pyfde.bench

Implements some common benchmark functions.

pyfde.bench.rastrigin(__Pyx_memviewslice p)

Rastrigin function.

Parameters:p (double[n_dim]) – Array with the coefficients
Returns:Function value at p
Return type:float
pyfde.bench.schewefel(__Pyx_memviewslice p)

Schewefel function

Parameters:p (double[n_dim]) – Array with the coefficients
Returns:Function value at p
Return type:float
pyfde.bench.schewefel_batch(__Pyx_memviewslice pop, __Pyx_memviewslice fit)

Batch version of the Schewefel function.

Parameters:
  • pop (double[n_pop, n_dim]) – Array with the population to be evaluated
  • fit (double[n_pop]) – Array to write the fitness evaluations to

Table Of Contents

Previous topic

Performance