bbob#

Namespaces#

Classes#

AttractiveSector#

template<typename P = BBOB>
class AttractiveSector : public ioh::problem::BBOB, private ioh::problem::BBOProblem<AttractiveSector>#

Attractive Sector problem id = 6.

Public Functions

inline AttractiveSector(const int instance, const int n_variables)#

Construct a new Attractive Sector object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

BentCigar#

template<typename P = BBOB>
class BentCigar : public ioh::problem::BBOB, private ioh::problem::BBOProblem<BentCigar>#

Bent Cigar problem id = 12.

Public Functions

inline BentCigar(const int instance, const int n_variables)#

Construct a new Bent Cigar object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

BuecheRastrigin#

template<typename P = BBOB>
class BuecheRastrigin : public ioh::problem::bbob::RastriginBase<BBOB>, private ioh::problem::BBOProblem<BuecheRastrigin>#

BuecheRastrigin problem id 4.

Public Functions

inline BuecheRastrigin(const int instance, const int n_variables)#

Construct a new Bueche Rastrigin object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

DifferentPowers#

template<typename P = BBOB>
class DifferentPowers : public ioh::problem::BBOB, private ioh::problem::BBOProblem<DifferentPowers>#

Different powers problem id 14.

Public Functions

inline DifferentPowers(const int instance, const int n_variables)#

Construct a new Different Powers object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method

Discus#

template<typename P = BBOB>
class Discus : public ioh::problem::BBOB, private ioh::problem::BBOProblem<Discus>#

Discuss function id 11.

Public Functions

inline Discus(const int instance, const int n_variables)#

Construct a new Discus object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

EllipsoidBase#

template<typename P = BBOB>
class EllipsoidBase : public ioh::problem::BBOB#

CTRP base class for ellipsiod class variants.

Template Parameters:

T – type of the ellipsiod problem

Public Functions

inline EllipsoidBase(const int problem_id, const int instance, const int n_variables, const std::string &name)#

Construct a new Ellipsoid Base object.

Parameters:
  • problem_id – the problem id

  • instance – the instance

  • n_variables – the dimension

  • name – the name of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Ellipsoid#

template<typename P = BBOB>
class Ellipsoid : public ioh::problem::bbob::EllipsoidBase<BBOB>, private ioh::problem::BBOProblem<Ellipsoid>#

Ellipsiod problem id 2.

Public Functions

inline Ellipsoid(const int instance, const int n_variables)#

Construct a new Ellipsoid object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

EllipsoidRotated#

template<typename P = BBOB>
class EllipsoidRotated : public ioh::problem::bbob::EllipsoidBase<BBOB>, private ioh::problem::BBOProblem<EllipsoidRotated>#

Rotated ellipsoid problem id 10.

Public Functions

inline EllipsoidRotated(const int instance, const int n_variables)#

Construct a new Ellipsoid Rotated object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline std::vector<double> transform_variables(std::vector<double> x) override#

Transoform variables method.

Gallagher#

template<typename P>
class Gallagher : public P#

Gallagher Base.

Public Functions

inline Gallagher(const int problem_id, const int instance, const int n_variables, const std::string &name, const int number_of_peaks, const double b = 10., const double c = 5.0, double max_condition = sqrt(1000.))#

Construct a new Gallagher object.

Parameters:
  • problem_id – the id of the problem

  • instance – the instance of the problem

  • n_variables – the dimension of the problem

  • name – the name of the problem

  • number_of_peaks – the number of peaks of the problem

  • b – gallagher variables

  • c – gallagher variables

  • max_condition – the maximum conditioning of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

Private Members

std::vector<std::vector<double>> x_transformation_#
std::vector<Peak> peaks_#
double factor_#
struct Peak#

Peak struct.

Public Functions

inline Peak(const double value, const int seed, const int n_variables, const double condition)#

Public Members

double value#
std::vector<double> scales#

Public Static Functions

static inline std::vector<Peak> get_peaks(const int n, const int n_variables, const int seed, const double max_condition)#

Gallagher101#

template<typename P = BBOB>
class Gallagher101 : public ioh::problem::bbob::Gallagher<BBOB>, private ioh::problem::BBOProblem<Gallagher101>#

Gallaher 101 problem id 21.

Public Functions

inline Gallagher101(const int instance, const int n_variables)#

Construct a new Gallagher 1 0 1 object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Gallagher21#

template<typename P = BBOB>
class Gallagher21 : public ioh::problem::bbob::Gallagher<BBOB>, private ioh::problem::BBOProblem<Gallagher21>#

Gallagher 21 problem id 22.

Public Functions

inline Gallagher21(const int instance, const int n_variables)#

Construct a new Gallagher 2 1 object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

GriewankRosenbrock#

template<typename P = BBOB>
class GriewankRosenbrock : public ioh::problem::BBOB, private ioh::problem::BBOProblem<GriewankRosenbrock>#

GriewankRosenbrock problem id 19.

Public Functions

inline GriewankRosenbrock(const int instance, const int n_variables)#

Construct a new Griewank Rosen Brock object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Private Members

std::vector<double> x_shift_#

Katsuura#

template<typename P = BBOB>
class Katsuura : public ioh::problem::BBOB, private ioh::problem::BBOProblem<Katsuura>#

Katsuura problem id 23.

Public Functions

inline Katsuura(const int instance, const int n_variables)#

Construct a new Katsuura object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Private Members

double exponent_#
double factor_#

LinearSlope#

template<typename P = BBOB>
class LinearSlope : public ioh::problem::BBOB, private ioh::problem::BBOProblem<LinearSlope>#

Linear Slope problem id 5.

Public Functions

inline LinearSlope(const int instance, const int n_variables)#

Construct a new Linear Slope object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

LunacekBiRastrigin#

template<typename P = BBOB>
class LunacekBiRastrigin : public ioh::problem::BBOB, private ioh::problem::BBOProblem<LunacekBiRastrigin>#

LunacekBiRastrigin problem id 24.

Public Functions

inline LunacekBiRastrigin(const int instance, const int n_variables)#

Construct a new Lunacek Bi Rastrigin object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

ManyAffine#

class ManyAffine : public ioh::problem::SingleObjectiveProblem<double>#

Public Functions

inline ManyAffine(const std::vector<double> &xopt, const std::array<double, 24> &weights, const std::array<int, 24> &instances, const int n_variables, const std::array<double, 24> &scale_factors)#

Construct a new Many Affine object, requires weights and instances to be specified.

Parameters:
  • xopt – the location of the optimum

  • weights – weight vector which specifies the contribution of each of the 24 bbob to the final objective value

  • instances – the vector of instances used

  • n_variables – the dimension of the problem

  • scale_factors – the relative scale factors for each problem

inline ManyAffine(const int instance, const int n_variables)#

Construct a new Many Affine object with default weights and a single instance for all sub functions.

A random location of the optimum and a weight vector are generated using the bbob2009 uniform random number generator, using the instance as seed offset.

Parameters:
  • instance – the instance

  • n_variables – the dimension used

inline std::array<double, 24> get_weights()#
inline std::array<int, 24> get_instances()#
inline std::array<double, 24> get_scale_factors()#
inline std::array<std::shared_ptr<ioh::problem::BBOB>, 24> get_problems()#
inline std::array<double, 24> get_function_values()#

Public Static Attributes

static const std::array<double, 24> default_scales{11., 17.5, 12.3, 12.6, 11.5, 15.3, 12.1, 15.3, 15.2, 17.4, 13.4, 20.4, 12.9, 10.4, 12.3, 10.3, 9.8, 10.6, 10., 14.7, 10.7, 10.8, 9., 12.1}#

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Private Members

std::array<double, 24> weights#
std::array<int, 24> instances#
std::array<double, 24> scale_factors#
std::array<std::shared_ptr<ioh::problem::BBOB>, 24> problems#
std::array<double, 24> function_values#

RastriginBase#

template<typename P = BBOB>
class RastriginBase : public ioh::problem::BBOB#

CRTP base class for Rastrigin Problem variants.

Template Parameters:

T – type of the new rastrigin class

Public Functions

inline RastriginBase(const int problem_id, const int instance, const int n_variables, const std::string &name)#

Construct a new Rastrigin Base object.

Parameters:
  • problem_id – the problem id

  • instance – the problem instance

  • n_variables – the problem dimension

  • name – the name of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Rastrigin#

template<typename P = BBOB>
class Rastrigin : public ioh::problem::bbob::RastriginBase<BBOB>, private ioh::problem::BBOProblem<Rastrigin>#

Rastrigin problem id 3.

Public Functions

inline Rastrigin(const int instance, const int n_variables)#

Construct a new Rastrigin object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

RastriginRotated#

template<typename P = BBOB>
class RastriginRotated : public ioh::problem::bbob::RastriginBase<BBOB>, private ioh::problem::BBOProblem<RastriginRotated>#

Rotated Rastrigin problem id 15.

Public Functions

inline RastriginRotated(const int instance, const int n_variables)#

Construct a new Rastrigin Rotated object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

RosenbrockBase#

template<typename P = BBOB>
class RosenbrockBase : public ioh::problem::BBOB#

CRTP base class for Rosenbrock Problem variants.

Template Parameters:

T – type of the new Rosenbrock class

Public Functions

inline RosenbrockBase(const int problem_id, const int instance, const int n_variables, const std::string &name)#

Construct a new Rosenbrock Base object.

Parameters:
  • problem_id – the problem id

  • instance – the problem instance

  • n_variables – the problem dimension

  • name – the name of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Private Members

double factor_#
std::vector<double> negative_one_#

Rosenbrock#

template<typename P = BBOB>
class Rosenbrock : public ioh::problem::bbob::RosenbrockBase<BBOB>, private ioh::problem::BBOProblem<Rosenbrock>#

Rosenbrock problem id 8.

Public Functions

inline Rosenbrock(const int instance, const int n_variables)#

Construct a new Rosenbrock object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

RosenbrockRotated#

template<typename P = BBOB>
class RosenbrockRotated : public ioh::problem::bbob::RosenbrockBase<BBOB>, private ioh::problem::BBOProblem<RosenbrockRotated>#

Rotated Rosenbrock function 9.

Public Functions

inline RosenbrockRotated(const int instance, const int n_variables)#

Construct a new Rosenbrock Rotated object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Schaffers#

template<typename P>
class Schaffers : public P#

CRTP base class for Schaffers Problem variants.

Public Functions

inline Schaffers(const int problem_id, const int instance, const int n_variables, const std::string &name, const double condition)#

Construct a new Schaffers object.

Parameters:
  • problem_id – the problem id

  • instance – the problem instance

  • n_variables – the problem dimension

  • name – the name of the problem

  • condition – condition of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Protected Attributes

double condition_#

Condition of the problem.

Schaffers10#

template<typename P = BBOB>
class Schaffers10 : public ioh::problem::bbob::Schaffers<BBOB>, private ioh::problem::BBOProblem<Schaffers10>#

Shaffers 10 problem id 17.

Public Functions

inline Schaffers10(const int instance, const int n_variables)#

Construct a new Schaffers 1 0 object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Schaffers1000#

template<typename P = BBOB>
class Schaffers1000 : public ioh::problem::bbob::Schaffers<BBOB>, private ioh::problem::BBOProblem<Schaffers1000>#

Shaffers 1000 problem id 18.

Public Functions

inline Schaffers1000(const int instance, const int n_variables)#

Construct a new Schaffers 1 0 0 0 object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Schwefel#

template<typename P = BBOB>
class Schwefel : public ioh::problem::BBOB, private ioh::problem::BBOProblem<Schwefel>#

Schefel problem id 20.

Public Functions

inline Schwefel(const int instance, const int n_variables)#

Construct a new Schwefel object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Private Members

std::vector<double> negative_offset_#
std::vector<double> positive_offset_#

SharpRidge#

template<typename P = BBOB>
class SharpRidge : public ioh::problem::BBOB, private ioh::problem::BBOProblem<SharpRidge>#

Sharp ridge function problem id 13.

Public Functions

inline SharpRidge(const int instance, const int n_variables)#

Construct a new Sharp Ridge object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Private Members

int n_linear_dimensions_#

Sphere#

template<typename P = BBOB>
class Sphere : public ioh::problem::BBOB, private ioh::problem::BBOProblem<Sphere>#

Sphere function problem id 1.

Public Functions

inline Sphere(const int instance, const int n_variables)#

Construct a new Sphere object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

StepEllipsoid#

template<typename P = BBOB>
class StepEllipsoid : public ioh::problem::BBOB, private ioh::problem::BBOProblem<StepEllipsoid>#

Step ellipsiod problem id 7.

Public Functions

inline StepEllipsoid(const int instance, const int n_variables)#

Construct a new Step Ellipsoid object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double compute_projection(const std::vector<double> &x)#

compute project of x

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

Weierstrass#

template<typename P = BBOB>
class Weierstrass : public ioh::problem::BBOB, private ioh::problem::BBOProblem<Weierstrass>#

Weierstrass problem id 16.

Public Functions

inline Weierstrass(const int instance, const int n_variables)#

Construct a new Weierstrass object.

Parameters:
  • instance – instance id

  • n_variables – the dimension of the problem

Protected Functions

inline double evaluate(const std::vector<double> &x) override#

Evaluation method.

inline std::vector<double> transform_variables(std::vector<double> x) override#

Variables transformation method.

Private Members

double f0_#
std::vector<double> ak_#
std::vector<double> bk_#