|
| | ParticleSwarm () |
| constexpr std::string | name_impl () const |
| void | randomize_particles (Particles &particles) const |
| void | randomize_velocities (Particles &velocities) const |
| void | evaluate_objective (const Particles &particles, Vector &fvals) |
| void | maintainBounds (Matrix &particles) const |
| void | calculateVelocities (const Matrix &particles, const Matrix &best_particles, const Integer gbest, const Integer iteration, Matrix &velocities) |
| Result | _minimize (const Matrix &bounds, Matrix &particles) |
| | ParticleSwarmOptimization () |
| void | setMinParticleChange (const Scalar change=ParticleSwarm::SQRT_EPSILON) |
| void | setMinFunctionChange (const Scalar change=ParticleSwarm::SQRT_EPSILON) |
| void | setPhiParticles (const Scalar phip) |
| void | setPhiGlobal (const Scalar phig) |
| void | setMaxVelocity (const Scalar max_velocity) |
| void | inertia_weight_strategy (const InertiaWeightStrategy &t_weightStrategy) |
| Result | minimize (const Integer cnt) |
| Result | minimize (const Integer cnt, const Vector &initGuess) |
| Result | minimize (Matrix &particles) |
| void | getRandomParticles (const Integer cnt, Matrix &particles) |
| | Optimizer () |
| constexpr std::string | name () const |
| Integer | gradient_evaluations () const |
| Integer | max_gradient_evaluations () const |
| Integer | hessian_evaluations () const |
| Integer | max_hessian_evaluations () const |
| | SolverBase () |
| void | reset_bounds (const Integer n=InputTrait::IsDynamic ? 0 :InputTrait::Dimension) |
| const Vector & | lower_bound () const |
| const Vector & | upper_bound () const |
| void | bounds (const Vector &t_lower_bound, const Vector &t_upper_bound) |
| constexpr Integer | input_dimension () const |
| constexpr Integer | output_dimension () const |
| Integer | function_evaluations () const |
| void | max_function_evaluations (const Integer t_max_function_evaluations) |
| Integer | iterations () const |
| Integer | max_iterations () const |
| Scalar | alpha () const |
| Integer | relaxations () const |
| Integer | max_relaxations () const |
| Scalar | tolerance () const |
| void | verbose_mode (bool t_verbose) |
| void | enable_verbose_mode () |
| void | disable_verbose_mode () |
| void | damped_mode (bool t_damped) |
| void | enable_damped_mode () |
| void | disable_damped_mode () |
| std::string | task () const |
| bool | converged () const |
| std::ostream & | ostream () const |
| bool | solve (FunctionLambda &&function, const Vector &x_ini, Vector &x_sol) |
| bool | rootfind (const FunctionBase< FunctionInput, FunctionOutput, DerivedFunction > &function, const Vector &x_ini, Vector &x_sol) |
| bool | optimize (const FunctionBase< FunctionInput, FunctionOutput, DerivedFunction > &function, const Vector &x_ini, Vector &x_sol) |
| constexpr std::string | name () const |
|
| bool | evaluate_gradient (GradientLambda &&gradient, const Input &x, FirstDerivative &out) |
| bool | evaluate_hessian (HessianLambda &&hessian, const Input &x, SecondDerivative &out) |
| bool | solve (FunctionLambda &&function, const Input &x_ini, Output &x_sol) |
| Integer | first_derivative_evaluations () const |
| Integer | max_first_derivative_evaluations () const |
| Integer | second_derivative_evaluations () const |
| Integer | max_second_derivative_evaluations () const |
| void | reset_counters () |
| bool | evaluate_function (FunctionLambda &&function, const Vector &x, TypeTrait< Vector >::Scalar &out) |
| bool | evaluate_first_derivative (FirstDerivativeLambda &&function, const Vector &x, FirstDerivative &out) |
| bool | evaluate_second_derivative (SecondDerivativeLambda &&function, const Vector &x, SecondDerivative &out) |
| bool | damp (FunctionLambda &&function, const Vector &x_old, const Vector &function_old, const Vector &step_old, Vector &x_new, Vector &function_new, Vector &step_new) |
| void | header () |
| void | bottom () |
| void | info (Scalar residuals, const std::string ¬es="-") |
| Vector | m_lower_bound |
| Vector | m_upper_bound |
| Integer | m_function_evaluations |
| Integer | m_first_derivative_evaluations |
| Integer | m_second_derivative_evaluations |
| Integer | m_max_function_evaluations |
| Integer | m_max_first_derivative_evaluations |
| Integer | m_max_second_derivative_evaluations |
| Integer | m_iterations |
| Integer | m_max_iterations |
| Scalar | m_alpha |
| Integer | m_relaxations |
| Integer | m_max_relaxations |
| Scalar | m_tolerance |
| bool | m_verbose |
| bool | m_damped |
| std::ostream * | m_ostream |
| std::string | m_task |
| bool | m_converged |
template<typename Vector, typename InertiaWeightStrategy = ConstantWeight<typename Vector::Scalar>>
requires
TypeTrait<Vector>::IsEigen && (!
TypeTrait<Vector>::IsFixed ||
TypeTrait<Vector>::Dimension > 0)
class Optimist::Optimizer::ParticleSwarm< Vector, InertiaWeightStrategy >
The optimization process can be configured by providing an inertia weight strategy functor. The inertia weight functor determines the amount of velocity, which is maintained from the previous iterations. It has a huge effect on convergence speed and stability of the optimization.
- Template Parameters
-
| Vector | Eigen vector type. |
| InertiaWeightStrategy | Inertia weight strategy functor type. |
template<typename Vector, typename InertiaWeightStrategy = ConstantWeight<typename Vector::Scalar>>
Perform minimization with the given bounds and number of particels.
The swarm of particles will be drawn uniform randomly within the given bounds.
The bounds matrix has to have 2 rows and one column per dimension of particle. The first row holds the minimum value of the respective dimension and the second row holds the maximum value.
- Parameters
-
| bounds | 2xM matrix for bounds of M-dimensional particles |
| cnt | number of particles used for optimization |
template<typename Vector, typename InertiaWeightStrategy = ConstantWeight<typename Vector::Scalar>>
Perform minimization with the given bounds, number of particels and initial guess.
The swarm of particles will be drawn uniform randomly within the given bounds.
The bounds matrix has to have 2 rows and one column per dimension of particle. The first row holds the minimum value of the respective dimension and the second row holds the maximum value.
The initial guess vector has to have the same length as the number of columns of the bounds. It will be included as one particle of the swarm.
- Parameters
-
| bounds | 2xM matrix for bounds of M-dimensional particles |
| cnt | number of particles used for optimization |
| initGuess | initial guess for a particle |