cec2007 — CEC 2007 Problems

This set of test problems was compiled for the Special Session & Competition on Performance Assessment of Multi-Objective Optimization Algorithms at the Congress on Evolutionary Computation (CEC), Singapore, 25-28 September 2007. The mathematical definitions are given in [Huang2007]. Additionally, a C implementation was provided for the participants. When the problems were later reimplemented in Python, several bugs surfaced in the C implementation. The bugs were originally found in 2009 and documented in appendix B.2.4 of [Wessing2009], but the code was not published back then. In this implementation, it is possible to switch between the original/buggy and the fixed behavior.

References

[Huang2007](1, 2) V. L. Huang, A. K. Qin, K. Deb, E. Zitzler, P. N. Suganthan, J. J. Liang, M. Preuss and S. Huband (2007). Problem Definitions for Performance Assessment of Multi-objective Optimization Algorithms. Special Session on Constrained Real-Parameter Optimization, Technical Report, Nanyang Technological University, Singapore, 2007. http://web.mysites.ntu.edu.sg/epnsugan/PublicSite/Shared%20Documents/CEC-2007/CEC-07-TR-13-Feb.pdf
[Wessing2009]Simon Wessing. Towards Optimal Parameterizations of the S-Metric Selection Evolutionary Multi-Objective Algorithm. Diploma thesis, Algorithm Engineering Report TR09-2-006, Technische Universitaet Dortmund, 2009. https://ls11-www.cs.uni-dortmund.de/_media/techreports/tr09-06.pdf
class optproblems.cec2007.CEC2007(is_orig_behavior=False, **kwargs)

The CEC 2007 problem collection.

The collection was defined in [Huang2007]. This class inherits from list and fills itself with the following problems: OKA2, SYMPART, S_ZDT1, S_ZDT2, S_ZDT4, R_ZDT4, S_ZDT6, 3-D S_DTLZ2, 5-D S_DTLZ2, 3-D R_DTLZ2, 5-D R_DTLZ2, 3-D S_DTLZ3, 5-D S_DTLZ3, 3-D WFG1, 5-D WFG1, 3-D WFG8, 5-D WFG8, 3-D WFG9, 5-D WFG9.

__init__(is_orig_behavior=False, **kwargs)

Constructor.

Parameters:
  • is_orig_behavior (bool, optional) – A flag indicating if the behavior of the C implementation should be used. Default is False.
  • kwargs – Arbitrary keyword arguments, passed through to the constructors of the single problems.
class optproblems.cec2007.ExtendedProblem(objective_functions, num_objectives=None, max_evaluations=inf, worker_pool=None, mp_module=None, phenome_preprocessor=None, name=None)

Base class for all extended ZDT and DTLZ problems.

static p_sum(penalties, used_indices)

Calculate the penalty value for the used variables.

static stretch(t)

Manipulate an objective value if boundaries are violated.

Parameters:t (float) – The output of the function p_sum.
class optproblems.cec2007.ShiftedProblem(objective_functions, num_objectives=None, max_evaluations=inf, worker_pool=None, mp_module=None, phenome_preprocessor=None, name=None)

Base class for all shifted ZDT and DTLZ problems.

Inherits from ExtendedProblem.

calc_penalties(z)

Calculate the penalties from the z values.

calc_z(phenome)

Calculate the shifted values from the candidate solution.

calc_z_prime(z)

Calculate the z’ values from the z values.

cut(num_variables)

Truncate the problem’s various vectors to the needed dimension.

class optproblems.cec2007.RotatedProblem(objective_functions, num_objectives=None, max_evaluations=inf, worker_pool=None, mp_module=None, phenome_preprocessor=None, name=None)

Base class for all rotated ZDT and DTLZ problems.

Inherits from ExtendedProblem.

calc_z(phenome)

Calculate the rotated values from the candidate solution.

class optproblems.cec2007.OKA2(is_orig_behavior=False, phenome_preprocessor=None, **kwargs)

The OKA2 problem.

This problem was defined in [Okabe2004].

References

[Okabe2004]Tatsuya Okabe, Yaochu Jin, Markus Olhofer, Bernhard Sendhoff (2004). On Test Functions for Evolutionary Multi-objective Optimization. Parallel Problem Solving from Nature - PPSN VIII, LNCS Vol. 3242, pp 792-802, Springer. https://dx.doi.org/10.1007/978-3-540-30217-9_80
__init__(is_orig_behavior=False, phenome_preprocessor=None, **kwargs)

Constructor.

Note that the C implementation of CEC 2007 contained a bug, using abs where fabs should be used.

Parameters:
  • is_orig_behavior (bool, optional) – A flag indicating if the behavior of the C implementation should be used.
  • phenome_preprocessor (callable, optional) – A callable potentially applying transformations or checks to the phenome.
  • kwargs – Arbitrary keyword arguments, passed through to the constructor of the base class.
class optproblems.cec2007.SYMPART(num_variables=30, phenome_preprocessor=None, **kwargs)

The CEC 2007 SYMPART variant.

This SYMPART variant was modified to work on 30 decision variables. The original problem in [Rudolph2007] only had a two dimensional search space. It is unclear how this modified problem behaves compared to the original one with two decision variables.

References

[Rudolph2007]Guenter Rudolph, Boris Naujoks, Mike Preuss (2007). Capabilities of EMOA to Detect and Preserve Equivalent Pareto Subsets. In: Evolutionary Multi-Criterion Optimization, LNCS Vol. 4403, pp 36-50, Springer. https://dx.doi.org/10.17877/DE290R-590
get_optimal_solutions(max_number)

Generate optimal solutions.

This method does not exploit any of the problem’s symmetry properties. The Pareto-set was only discovered empirically.

static rotate(phenome, angle_radians)

Rotate the candidate solution.

class optproblems.cec2007.S_ZDT1(num_variables, is_orig_behavior=False, **kwargs)

A shifted ZDT1 problem.

class optproblems.cec2007.S_ZDT2(num_variables, is_orig_behavior=False, **kwargs)

A shifted ZDT2 problem.

class optproblems.cec2007.S_ZDT4(num_variables, is_orig_behavior=False, **kwargs)

A shifted ZDT4 problem.

calc_penalties(z)

Calculate the penalties from the z values.

calc_z_prime(z)

Calculate the z’ values from the z values.

class optproblems.cec2007.R_ZDT4(num_variables, is_orig_behavior=False, phenome_preprocessor=None, **kwargs)

A rotated ZDT4 problem.

calc_penalties(z)

Calculate the penalties from the z values.

calc_z_prime(z)

Calculate the z’ values from the z values.

class optproblems.cec2007.S_ZDT6(num_variables, is_orig_behavior=False, **kwargs)

A shifted ZDT6 problem.

class optproblems.cec2007.S_DTLZ2(num_objectives, num_variables, **kwargs)

A shifted DTLZ2 problem.

class optproblems.cec2007.R_DTLZ2(num_objectives, num_variables, is_orig_behavior=False, phenome_preprocessor=None, **kwargs)

A rotated DTLZ2 problem.

Note that this problem, as it was used in the CEC 2007 contest, was based on DTLZ3 and not DTLZ2. Thus, if you set is_orig_behavior to True, it uses DTLZ3, else DTLZ2.

calc_penalties(z)

Calculate the penalties from the z values.

calc_z_prime(z)

Calculate the z’ values from the z values.

class optproblems.cec2007.S_DTLZ3(num_objectives, num_variables, **kwargs)

A shifted DTLZ3 problem.