Open CASCADE Technology  7.2.0
Public Member Functions

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

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: