1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
.. _cpp_tutorial_evolving_population:
Evolving a population
=====================
Solving an optimization problem using an optimization algorithm is, in pagmo,
described as *evolving* a population. In the scientific literature, an
interesting
discussion has developed over the past decades on whether evolution is or not
a form of
optimization. In pagmo we take the opposite standpoint and we regard
optimization,
of all types, as a form of evolution. Regardless on whether you will
be using an SQP,
an interior point optimizer or an evolutionary strategy solver, in pagmo you
will always have to call a method called ``evolve()`` to improve over your
initial solutions,
i.e., your *population*.
After following the :ref:`installation guide <install>`,
you will be able to compile and run
C++ pagmo programs. The following example shows the use with no
multithreading of an algorithmic evolution:
.. literalinclude:: ../../../../../tutorials/nsga2_example.cpp
:language: c++
:linenos:
Place it into a ``nsga2.cpp`` text file and compile it (for example) with:
.. code-block:: console
$ g++ -O2 -DNDEBUG -std=c++17 nsga2.cpp -ltbb -lboost_serialization
|