CEC 2009 Problem Suite (multi-objective, constrained and unconstrained)#

class cec2009#

The CEC 2009 problems: Competition on “Performance Assessment of Constrained / Bound

Constrained Multi-Objective Optimization Algorithms”

This class instantiates any of the problems from CEC2009’s competition on multi-objective optimization algorithms, commonly referred to by the literature as UF1-UF10 (unconstrained) and CF1-CF10 (constrained).


The three problems constructed by some transformation on DTLZ2, DTLZ3 and WFG1 problems as described in the technical report are not included in this implementation.


All problems are continuous, multi objective problems.

Public Functions

cec2009(unsigned prob_id = 1u, bool is_constrained = false, unsigned dim = 30u)#


Will construct one of the 20 multi-objective optimization problems from the CEC2009 competition. There are two sets of problems, namely the set with unconstrained problems (UF) and the set with constrained problems (CF).

  • prob_id – The problem id. One of [1,2,…10]

  • is_constrained – Specify whether the problem is constrained. False will yield the UF problems, True will yield the CF problems.

  • dim – problem dimension. Default is 30, which is the setting used by the competition. But all the problems are scalable in terms of decision variable’s dimension.

vector_double::size_type get_nic() const#

Inequality constraint dimension.

Returns the number of inequality constraints


the number of inequality constraints

vector_double::size_type get_nobj() const#

Number of objectives.

Returns the number of objectives


the number of objectives

std::pair<vector_double, vector_double> get_bounds() const#


It returns the box-bounds for this UDP.


the lower and upper bounds for each of the decision vector components

vector_double fitness(const vector_double&) const#

Fitness computation.

Computes the fitness for this UDP


x – the decision vector.


the fitness of x.

std::string get_name() const#

Problem name.


a string containing the problem name