Open CASCADE Technology 7.8.2.dev
math_PSO Class Reference

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". More...

#include <math_PSO.hxx>

Public Member Functions

 math_PSO (math_MultipleVarFunction *theFunc, const math_Vector &theLowBorder, const math_Vector &theUppBorder, const math_Vector &theSteps, const Standard_Integer theNbParticles=32, const Standard_Integer theNbIter=100)
 
void Perform (const math_Vector &theSteps, Standard_Real &theValue, math_Vector &theOutPnt, const Standard_Integer theNbIter=100)
 Perform computations, particles array is constructed inside of this function.
 
void Perform (math_PSOParticlesPool &theParticles, Standard_Integer theNbParticles, Standard_Real &theValue, math_Vector &theOutPnt, const Standard_Integer theNbIter=100)
 Perform computations with given particles array.
 

Detailed Description

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 "particles" are placed in the search space. Each particle is assigned a random velocity.

Computational loop: The particles are moved in cycle, simulating some "social" 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.

Constructor & Destructor Documentation

◆ math_PSO()

math_PSO::math_PSO ( math_MultipleVarFunction * theFunc,
const math_Vector & theLowBorder,
const math_Vector & theUppBorder,
const math_Vector & theSteps,
const Standard_Integer theNbParticles = 32,
const Standard_Integer theNbIter = 100 )

Constructor.

Parameters
theFuncdefines the objective function. It should exist during all lifetime of class instance.
theLowBorderdefines lower border of search space.
theUppBorderdefines upper border of search space.
theStepsdefines steps of regular grid, used for particle generation. This parameter used to define stop condition (TerminalVelocity).
theNbParticlesdefines number of particles.
theNbIterdefines maximum number of iterations.

Member Function Documentation

◆ Perform() [1/2]

void math_PSO::Perform ( const math_Vector & theSteps,
Standard_Real & theValue,
math_Vector & theOutPnt,
const Standard_Integer theNbIter = 100 )

Perform computations, particles array is constructed inside of this function.

◆ Perform() [2/2]

void math_PSO::Perform ( math_PSOParticlesPool & theParticles,
Standard_Integer theNbParticles,
Standard_Real & theValue,
math_Vector & theOutPnt,
const Standard_Integer theNbIter = 100 )

Perform computations with given particles array.


The documentation for this class was generated from the following file: