Open CASCADE Technology
7.5.0

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...  
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.
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.
theFunc  defines the objective function. It should exist during all lifetime of class instance. 
theLowBorder  defines lower border of search space. 
theUppBorder  defines upper border of search space. 
theSteps  defines steps of regular grid, used for particle generation. This parameter used to define stop condition (TerminalVelocity). 
theNbParticles  defines number of particles. 
theNbIter  defines maximum number of iterations. 
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.
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.