Doxygen
1.9.1
|
Stores the information about a particle swarm. More...
#include <tsgParticleSwarm.hpp>
Public Member Functions | |
ParticleSwarmState ()=delete | |
The particle swarm state must be initialized with data that defines number of particles and dimensions. | |
ParticleSwarmState (const int num_dimensions, const int num_particles) | |
Constructor for a particle swarm state with the number of particles and dimensions. | |
ParticleSwarmState (const int num_dimensions, std::vector< double > &&pp, std::vector< double > &&pv) | |
Constructor for a particle swarm state with the number of dimensions and the number of particles inferred from a set of input particle positions pp and a set of input particle velocities pv. | |
ParticleSwarmState (const ParticleSwarmState &source)=default | |
Copy constructor. | |
ParticleSwarmState (ParticleSwarmState &&source)=default | |
Move constructor. | |
ParticleSwarmState & | operator= (ParticleSwarmState &&source)=default |
Move assignment. | |
int | getNumDimensions () const |
Return the number of dimensions. | |
int | getNumParticles () const |
Return the number of particles. | |
void | getParticlePositions (double pp[]) const |
Return the particle positions. | |
std::vector< double > | getParticlePositions () const |
Return the particle positions, vector overload. | |
void | getParticleVelocities (double pv[]) const |
Return the particle velocities. | |
std::vector< double > | getParticleVelocities () const |
Return the particle velocities, vector overload. | |
void | getBestParticlePositions (double bpp[]) const |
Return the best known particle positions. More... | |
std::vector< double > | getBestParticlePositions () const |
Return the best known particle positions, vector overload. | |
void | getBestPosition (double bp[]) const |
Loads the best known position in the swarm. | |
std::vector< double > | getBestPosition () const |
Returns the best knows position in the swarm. | |
bool | isPositionInitialized () const |
Returns true if the particle positions have been initialized. | |
bool | isVelocityInitialized () const |
Returns true if the particle velocities have been initialized. | |
bool | isBestPositionInitialized () const |
Returns true if the best particle positions have been initialized. | |
bool | isCacheInitialized () const |
Returns true if the cache has been initialized. | |
std::vector< bool > | getStateVector () const |
Return the complete state vector. | |
void | setParticlePositions (const double pp[]) |
Set the particle positions, raw-array variant. | |
void | setParticlePositions (const std::vector< double > &pp) |
Set the particle positions, vector variant. | |
void | setParticlePositions (std::vector< double > &&pp) |
Set the particle positions, with a move. | |
void | setParticleVelocities (const double pv[]) |
Set the particle velocities. | |
void | setParticleVelocities (const std::vector< double > &pv) |
Sets the best position. | |
void | setParticleVelocities (std::vector< double > &&pv) |
Sets the best position, with a move. | |
void | setBestParticlePositions (const double bpp[]) |
Set the previously best known particle velocities. | |
void | setBestParticlePositions (const std::vector< double > &bpp) |
Sets the best position per particle. | |
void | setBestParticlePositions (std::vector< double > &&bpp) |
Sets the best position per particle, allows for a move. | |
void | clearBestParticles () |
Clear the previously best known particle velocities. | |
void | clearCache () |
Clear the particle swarm cache. | |
void | initializeParticlesInsideBox (const double box_lower[], const double box_upper[], const std::function< double(void)> get_random01=TasDREAM::tsgCoreUniform01) |
Randomly initializes all of the particle positions and velocities inside of a box. More... | |
void | initializeParticlesInsideBox (const std::vector< double > &box_lower, const std::vector< double > &box_upper, const std::function< double(void)> get_random01=TasDREAM::tsgCoreUniform01) |
Randomly initializes all of the particles, vector API overload. | |
Friends | |
void | ParticleSwarm (const ObjectiveFunction f, const TasDREAM::DreamDomain inside, const double inertia_weight, const double cognitive_coeff, const double social_coeff, const int num_iterations, ParticleSwarmState &state, const std::function< double(void)> get_random01) |
Applies the classic particle swarm algorithm to a particle swarm state. More... | |
Stores the information about a particle swarm.
M. R. Bonyadi and Z. Michalewicz, "Particle Swarm Optimization for Single Objective Continuous Space Problems: A Review," in Evolutionary Computation, vol. 25, no. 1, pp. 1-54, March 2017, doi: 10.1162/EVCO_r_00180.
|
inline |
Return the best known particle positions.
The method actually returns positions with one more than the total number of particles, the last num_dimensions entries of this vector contain the best particle position of the entire swarm.
void TasOptimization::ParticleSwarmState::initializeParticlesInsideBox | ( | const double | box_lower[], |
const double | box_upper[], | ||
const std::function< double(void)> | get_random01 = TasDREAM::tsgCoreUniform01 |
||
) |
Randomly initializes all of the particle positions and velocities inside of a box.
The i-th component of each particle's position is uniformly sampled from the interval [box_lower[i], box_upper[i]]. The i-th velocity of each particle's velocity is uniformly sampled from the interval [-R, R] where R = abs(box_upper[i] - box_lower[i]). The uniform [0,1] random number generator used in the sampling is specified by get_random01.
|
friend |
Applies the classic particle swarm algorithm to a particle swarm state.
Runs num_iterations of the particle swarm algorithm to a particle swarm state to minimize the function f over the domain inside. The parameters of the algorithm are inertia_weight , cognitive_coeff , and social_coeff. The uniform [0,1] random number generator used by the algorithm is get_random01.
f | Objective function to be minimized |
inside | indicates whether a given point is inside or outside of the domain of interest |
inertia_weight | inertial weight for the particle swarm algorithm |
cognitive_coeff | cognitive coefficient for the particle swarm algorithm |
social_coeff | social coefficient for the particle swarm algorithm |
num_iterations | number of iterations to perform |
state | holds the state of the particles, e.g., positions and velocities, see TasOptimization::ParticleSwarmState |
get_random01 | random number generator, defaults to rand() |
std::runtime_error | if either the positions or the velocities of the state have not been initialized |