Non dominated sorting particle swarm optimization(NSPSO)#

New in version 2.12.

class 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.|

  • See: Xiadong, Li. “A Non-dominated Sorting Particle Swarm Optimizer for Multiobjective Optimization”. Genetic and Evolutionary Computation - GECCO (2003), vol. 2723, pp. 37-48, doi: https://doi.org/10.1007/3-540-45105-6_4.

  • See: Xiadong, Li. “Better Spread and Convergence: Particle Swarm Multiobjective Optimization Using the Maximin Fitness Function”. Genetic and Evolutionary Computation - GECCO (2004), vol. 3102, pp. 117-128, doi: https://doi.org/10.1007/978-3-540-24854-5_11.

  • See: Fonseca, M. Carlos and Fleming, J. Peter. “Genetic Algorithms for Multiobjective Optimization: Formulation, Discussion and Generalization”. Proceedings of the ICGA-93: Fifth International Conference on Genetic Algorithms (1993), vol. 3, pp. 416-423.

This constructor will construct NSPSO.

nspso(unsigned gen = 1u, double omega = 0.6, double c1 = 2.0, double c2 = 2.0, double chi = 1.0, double v_coeff = 0.5, unsigned leader_selection_range = 60u, std::string diversity_mechanism = "crowding distance", bool memory = false, unsigned seed = pagmo::random_device::next())#
Parameters
  • gen – number of generations to evolve.

  • omega – particles’ inertia weight.

  • c1 – magnitude of the force, applied to the particle’s velocity, in the direction of its previous best position.

  • c2 – magnitude of the force, applied to the particle’s velocity, in the direction of its global best (i.e., leader).

  • chi – velocity scaling factor.

  • v_coeff – velocity coefficient (determining the maximum allowed particle velocity).

  • leader_selection_range – leader selection range parameter (i.e., the leader of each particle is selected among the best leader_selection_range % individuals).

  • diversity_mechanism – the diversity mechanism used to maintain diversity on the Pareto front.

  • memory – memory parameter. If true, memory is activated in the algorithm for multiple calls.

  • seed – seed used by the internal random number generator (default is random).

Throws
  • std::invalid_argument – if c1 <= 0, or c2 <= 0, or chi <= 0.

  • std::invalid_argument – if omega < 0, or omega > 1,.

  • std::invalid_argument – if v_coeff <= 0, or v_coeff > 1.

  • std::invalid_argument – if leader_selection_range > 100.

  • std::invalid_argument – if diversity_mechanism is not “crowding distance”, or “niche count”, or “max min”.

population evolve(population pop) const#

Algorithm evolve method: evolves the population for the requested number of generations.

Parameters

pop – population to be evolved.

Returns

evolved population.

Throw

std::invalid_argument if pop.get_problem() is stochastic, single objective or has non linear constraints. If the population size is smaller than 2.

void set_seed(unsigned seed)#

Sets the seed.

Parameters

seed – the seed controlling the algorithm stochastic behaviour.

unsigned get_seed(unsigned seed)#

Gets the seed.

Returns

the seed controlling the algorithm stochastic behaviour.

void set_verbosity(unsigned level)#

Sets the algorithm verbosity: sets the verbosity level of the screen output and of the log returned by get_log(). level can be:

  • 0: no verbosity.

  • >0: will print and log one line each level generations.

Example (verbosity 1, where Gen, is the generation number, Fevals the number of function evaluations used; also, the ideal point of the current population follows cropped to its 5th component):

 1Gen:        Fevals:        ideal1:        ideal2:        ideal3:        ideal4:        ideal5:          ... :
 2   1             52      0.0586347      0.0587097      0.0586892      0.0592426      0.0614239
 3   2            104     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
 4   3            156     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
 5   4            208     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
 6   5            260     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
 7   6            312     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
 8   7            364     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
 9   8            416     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
10   9            468     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
11  10            520     0.00899252     0.00899395     0.00945782      0.0106282      0.0276778
unsigned get_verbosity() const#

Gets the verbosity level.

Returns

the verbosity level.

unsigned get_gen() const#

Gets the generations.

Returns

the number of generations to evolve for.

const log_type &get_log() const#

Gets the log. A log containing relevant quantities monitoring the last call to evolve. Each element of the returned std::vector is a nspso::log_line_type containing: Gen, Fevals, ideal_point as described in nspso::set_verbosity.

Returns

an std::vector of nspso::log_line_type containing the logged values Gen, Fevals, ideal_point.

void set_bfe(const bfe &b)#

Sets the batch function evaluation scheme.

Parameters

b – batch function evaluation object.

std::string get_extra_info() const#

Extra info. Returns extra information on the algorithm.

Returns

an std::string containing extra info on the algorithm.

std::string get_name() const#

Returns the problem name.

Returns

a string containing the problem name: “NSPSO”.