//! In this class implemented variation of Particle Swarm Optimization (PSO) method.
//! A. Ismael F. Vaz, L. N. Vicente
//! "A particle swarm pattern search method for bound constrained global optimization"
+//!
+//! Algorithm description:
+//! Init Section:
+//! At start of computation a number of \93particles\94 are placed in the search space.
+//! Each particle is assigned a random velocity.
+//!
+//! Computational loop:
+//! The particles are moved in cycle, simulating some \93social\94 behavior, so that new position of
+//! a particle on each step depends not only on its velocity and previous path, but also on the
+//! position of the best particle in the pool and best obtained position for current particle.
+//! The velocity of the particles is decreased on each step, so that convergence is guaranteed.
+//!
+//! Algorithm output:
+//! Best point in param space (position of the best particle) and value of objective function.
+//!
+//! Pros:
+//! One of the fastest algorithms.
+//! Work over functions with a lot local extremums.
+//! Does not require calculation of derivatives of the functional.
+//!
+//! Cons:
+//! Convergence to global minimum not proved, which is a typical drawback for all stochastic algorithms.
+//! The result depends on random number generator.
+//!
+//! Warning: PSO is effective to walk into optimum surrounding, not to get strict optimum.
+//! Run local optimization from pso output point.
+//! Warning: In PSO used fixed seed in RNG, so results are reproducible.
class math_PSO
{
public: