Use of the class
algorithm class represents a generic optimization
algorithm. The user codes the details of such an algorithm in a separate class (the
user-defined algorithm, or UDA) which is then passed to
that provides a single unified interface.
The User Defined Algorithms (UDAs) are optimization algorithms (coded by the user) that can
be used to build a pygmo object of type
Some UDAs (optimization algorithms) are already provided with pygmo and we refer to them as pygmo UDAs.
For the purpose of this tutorial we are going to use a pygmo UDA called
to show the basic construction of an
algorithm, but the same logic would also
apply to a custom UDAs, that is a UDA that is actually coded by the user.
Let us start:
>>> import pygmo as pg >>> algo = pg.algorithm(pg.cmaes(gen = 100, sigma0=0.3)) >>> print(algo) Algorithm name: CMA-ES: Covariance Matrix Adaptation Evolutionary Strategy [stochastic] C++ class name: ... Thread safety: basic Extra info: Generations: 100 cc: auto cs: auto c1: auto cmu: auto sigma0: 0.3 Stopping xtol: 1e-06 Stopping ftol: 1e-06 Memory: false Verbosity: 0 Force bounds: false Seed: ...
In the code above, after the trivial import of the pygmo package, we define a variable algo
by constructing an
cmaes, our implementation
of the Covariance Matrix Adaptation Evolutionary Strategy. To construct the pygmo UDA we also pass
some parameters (
sigma0) whose meaning is documented in
In the following line we inspect the
algorithm. We can see, at a glance, the
name of the
algorithm and some extra info that indicate the user (in this case us),
has implemented, in the UDA (in this case
cmaes), the optional method
get_extra_info() that prints to screen some fundamental parameters defining the UDA.
We may also get access to the UDA, and thus to its methods not exposed in the
algorithm interface, at any time via the
>>> uda = algo.extract(pg.cmaes) >>> type(uda) <class 'pygmo.core.cmaes'> >>> uda = algo.extract(pg.de) >>> uda is None True
Such an extraction will only work if the correct UDA type is passed as argument.