PaGMO
1.1.5
|
Particle Swarm optimization generational. More...
#include <pso_generational.h>
Public Member Functions | |
pso_generational (int gen=1, double omega=0.7298, double eta1=2.05, double eta2=2.05, double vcoeff=0.5, int variant=5, int neighb_type=2, int neighb_param=4) | |
Constructor. More... | |
base_ptr | clone () const |
Clone method. | |
void | evolve (population &) const |
Evolve implementation. More... | |
std::string | get_name () const |
Algorithm name. | |
Public Member Functions inherited from pagmo::algorithm::base | |
base () | |
Default constructor. More... | |
virtual | ~base () |
Trivial destructor. More... | |
std::string | human_readable () const |
Return human readable representation of the algorithm. More... | |
void | set_screen_output (const bool p) |
Setter-Getter for protected m_screen_output data. More... | |
bool | get_screen_output () const |
Gets screen output. More... | |
void | reset_rngs (const unsigned int) const |
Resets the seed of the internal rngs using a user-provided seed. More... | |
Protected Member Functions | |
std::string | human_readable_extra () const |
Extra human readable algorithm info. More... | |
Friends | |
class | boost::serialization::access |
Additional Inherited Members | |
Protected Attributes inherited from pagmo::algorithm::base | |
bool | m_screen_output |
Indicates to the derived class whether to print stuff on screen. | |
rng_double | m_drng |
Random number generator for double-precision floating point values. | |
rng_uint32 | m_urng |
Random number generator for unsigned integer values. | |
unsigned int | m_fevals |
A counter for the number of function evaluations. | |
Particle Swarm optimization generational.
As opposed to the main PSO algorithm implemented in Pagmo, that is pagmo::algorithm::pso, this version of Particle Swarm Optimization is generational. In other words, the velocity is first calculated for all particles, then the position is updated.
NOTE: this PSO is suitable for stochastic optimization problems. The random seed is changed at the end of each generation
Definition at line 52 of file pso_generational.h.
pagmo::algorithm::pso_generational::pso_generational | ( | int | gen = 1 , |
double | omega = 0.7298 , |
||
double | eta1 = 2.05 , |
||
double | eta2 = 2.05 , |
||
double | vcoeff = 0.5 , |
||
int | variant = 5 , |
||
int | neighb_type = 2 , |
||
int | neighb_param = 4 |
||
) |
Constructor.
Allows to specify in detail all the parameters of the algorithm.
[in] | gen | number of generations |
[in] | omega | particles' inertia weight, or alternatively, the constriction coefficient (usage depends on the variant used) |
[in] | eta1 | magnitude of the force, applied to the particle's velocity, in the direction of its previous best position |
[in] | eta2 | magnitude of the force, applied to the particle's velocity, in the direction of the best position in its neighborhood |
[in] | vcoeff | velocity coefficient (determining the maximum allowed particle velocity) |
[in] | variant | algorithm variant to use |
[in] | neighb_type | swarm topology to use |
[in] | neighb_param | if the lbest topology is selected (neighb_type=2), it represents each particle's indegree (also outdegree) in the swarm topology. Particles have neighbours up to a radius of k = neighb_param / 2 in the ring. If the Randomly-varying neighbourhood topology is selected (neighb_type=4), neighb_param represents each particle's maximum outdegree in the swarm topology. The minimum outdegree is 1 (the particle always connects back to itself). |
value_error | if m_omega is not in the [0,1] interval, eta1, eta2 are not in the [0,1] interval, vcoeff is not in ]0,1], variant is not one of 1 .. 6, neighb_type is not one of 1 .. 4 |
Definition at line 58 of file pso_generational.cpp.
|
virtual |
Evolve implementation.
Run the PSO algorithm for the number of generations specified in the constructors.
[in,out] | pop | input/output pagmo::population to be evolved. |
We now set the cleared pop. cur_x is the best_x, re-evaluated with new seed.
Implements pagmo::algorithm::base.
Definition at line 104 of file pso_generational.cpp.
|
protectedvirtual |
Extra human readable algorithm info.
Will return a formatted string displaying the parameters of the algorithm.
Reimplemented from pagmo::algorithm::base.
Definition at line 619 of file pso_generational.cpp.