PaGMO
1.1.5
|
Non-dominated Sorting Particle Swarm Optimizer (NSPSO) More...
#include <nspso.h>
Public Types | |
enum | diversity_mechanism_type { CROWDING_DISTANCE =0, NICHE_COUNT =1, MAXMIN =2 } |
Mechanism used to asses diversity. More... | |
Public Member Functions | |
nspso (int gen=100, double minW=0.4, double maxW=1.0, double C1=2.0, double C2=2.0, double CHI=1.0, double v_coeff=0.5, int leader_selection_range=10, diversity_mechanism_type=CROWDING_DISTANCE) | |
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. | |
Non-dominated Sorting Particle Swarm Optimizer (NSPSO)
Non-dominated Sorting Particle Swarm Optimizer (NSPSO) is a modified version of PSO for multi-objective optimization. It extends the basic ideas of PSO by making a better use of personal bests and offspring for non-dominated comparison. In order to increase the diversity of the pareto front it is possible to choose between 3 different niching methods: crowding distance, niche count and maxmin.
pagmo::algorithm::nspso::nspso | ( | int | gen = 100 , |
double | minW = 0.4 , |
||
double | maxW = 1.0 , |
||
double | C1 = 2.0 , |
||
double | C2 = 2.0 , |
||
double | CHI = 1.0 , |
||
double | v_coeff = 0.5 , |
||
int | leader_selection_range = 10 , |
||
diversity_mechanism_type | diversity_mechanism = CROWDING_DISTANCE |
||
) |
Constructor.
Constructs a NSPSO algorithm (multi objective PSO)
[in] | gen | Number of generations to evolve. |
[in] | minW | minimum particles' inertia weight (the inertia weight is decreased troughout the run between maxW and minW) |
[in] | maxW | maximum particles' inertia weight (the inertia weight is decreased troughout the run between maxW and minW) |
[in] | C1 | magnitude of the force, applied to the particle's velocity, in the direction of its previous best position |
[in] | C2 | magnitude of the force, applied to the particle's velocity, in the direction of its global best (leader) |
[in] | CHI | velocity scaling factor |
[in] | v_coeff | velocity coefficient (determining the maximum allowed particle velocity) |
[in] | leader_selection_range | the leader of each particle is selected among the best leader_selection_range% individuals |
[in] | diversity_mechanism | the diversity mechanism to use to mantein diversity on the pareto front |
value_error | if gen is negative |
|
virtual |
Evolve implementation.
Run the NSPSO algorithm for the number of generations specified in the constructors.
[in,out] | pop | input/output pagmo::population to be evolved. |
Implements pagmo::algorithm::base.
|
protectedvirtual |
Extra human readable algorithm info.
Will return a formatted string displaying the parameters of the algorithm.
Reimplemented from pagmo::algorithm::base.