Open CASCADE Technology
7.4.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.