Monte Carlo Integration Library 1.0
High-performance Monte Carlo methods for numerical integration and optimization
Classes | Public Member Functions | List of all members
mc::optim::PSO Class Reference

Particle Swarm Optimization algorithm. More...

#include <PSO.hpp>

Inheritance diagram for mc::optim::PSO:
Collaboration diagram for mc::optim::PSO:

Classes

struct  Particle
 A single particle in the swarm. More...
 

Public Member Functions

 PSO (const PSOConfig &config=PSOConfig{})
 Construct a PSO optimizer with the given configuration.
 
void setObjectiveFunction (ObjectiveFunction func) override
 Set the objective function to optimize.
 
void setBounds (const Coordinates &lower, const Coordinates &upper) override
 Set lower/upper bounds of the search hyper-rectangle.
 
void setMode (OptimizationMode mode) override
 Set optimization mode (minimize or maximize).
 
void setCallback (StepCallback cb) override
 Register a callback invoked after each step().
 
Solution optimize () override
 Execute the optimization loop for max_iterations.
 
void step () override
 Perform one PSO iteration: update velocity/position, evaluate, update personal and global bests.
 
Solution getBestSolution () const override
 Get the best solution found so far.
 
const std::vector< Particle > & getParticles () const
 Access the current swarm state (particles).
 
- Public Member Functions inherited from mc::optim::Optimizer
virtual ~Optimizer ()=default
 

Additional Inherited Members

- Public Types inherited from mc::optim::Optimizer
using StepCallback = std::function< void(const Solution &current_best, size_t iteration)>
 Callback invoked after each step/generation.
 

Detailed Description

Particle Swarm Optimization algorithm.

Note
Thread-safety: particle updates are parallelized; global-best updates are performed serially to avoid races and ensure reproducibility.

Definition at line 40 of file PSO.hpp.

Constructor & Destructor Documentation

◆ PSO()

mc::optim::PSO::PSO ( const PSOConfig config = PSOConfig{})
explicit

Construct a PSO optimizer with the given configuration.

Definition at line 18 of file PSO.cpp.

Member Function Documentation

◆ getBestSolution()

Solution mc::optim::PSO::getBestSolution ( ) const
overridevirtual

Get the best solution found so far.

Implements mc::optim::Optimizer.

Definition at line 178 of file PSO.cpp.

◆ getParticles()

const std::vector< Particle > & mc::optim::PSO::getParticles ( ) const
inline

Access the current swarm state (particles).

Definition at line 102 of file PSO.hpp.

◆ optimize()

Solution mc::optim::PSO::optimize ( )
overridevirtual

Execute the optimization loop for max_iterations.

Returns
The best solution found.

Implements mc::optim::Optimizer.

Definition at line 167 of file PSO.cpp.

Here is the call graph for this function:

◆ setBounds()

void mc::optim::PSO::setBounds ( const Coordinates lower,
const Coordinates upper 
)
overridevirtual

Set lower/upper bounds of the search hyper-rectangle.

Exceptions
std::invalid_argumentif dimensions mismatch.

Implements mc::optim::Optimizer.

Definition at line 32 of file PSO.cpp.

◆ setCallback()

void mc::optim::PSO::setCallback ( StepCallback  cb)
overridevirtual

Register a callback invoked after each step().

Parameters
cbReceives current global-best and iteration index.

Implements mc::optim::Optimizer.

Definition at line 28 of file PSO.cpp.

◆ setMode()

void mc::optim::PSO::setMode ( OptimizationMode  mode)
overridevirtual

Set optimization mode (minimize or maximize).

Implements mc::optim::Optimizer.

Definition at line 41 of file PSO.cpp.

Here is the call graph for this function:

◆ setObjectiveFunction()

void mc::optim::PSO::setObjectiveFunction ( ObjectiveFunction  func)
overridevirtual

Set the objective function to optimize.

Parameters
funcFunction mapping coordinates to scalar cost/fitness.

Implements mc::optim::Optimizer.

Definition at line 23 of file PSO.cpp.

◆ step()

void mc::optim::PSO::step ( )
overridevirtual

Perform one PSO iteration: update velocity/position, evaluate, update personal and global bests.

Implements mc::optim::Optimizer.

Definition at line 93 of file PSO.cpp.

Here is the call graph for this function:

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