Many-objective benchmark problems#

namespace problems

Implementations of some benchmark functions that can be used to test the genetic algorithms. There are some benchmark problems implemented for every encoding type, and the real-encoded problems can also be used for the binary-encoded GAs.

All of the problems are implemented for maximization.

class DTLZ1#

#include <problems/many_objective.hpp>
class DTLZ1 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ1 function for any number of objectives, modified for maximization. This is the simplest test problem of the DTLZ test suite, with a linear pareto front and a large number ( \( 11^K \)) of local pareto fronts.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.5 \textrm{ for } i >= n_{obj}-1 \]
The pareto optimal front in the objective space is the linear hyperplane where \( \sum_m f_m = 0.5 \).

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ...,\ 0.0) \]
\[ \textrm{ nadir-point: } (-0.5, -0.5,\ ..., -0.5) \]

This benchmark function can be used for both the real- and binary-encoded GAs.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ1(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ1 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.

class DTLZ2#

#include <problems/many_objective.hpp>
class DTLZ2 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ2 function for any number of objectives, modified for maximization. The problem has a non-linear, spherical pareto front.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are:

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.5 \textrm{ for } i >= n_{obj}-1 \]
The optimal front in the objective space is the surface of the unit hypersphere: \( \sum_m f_m^2 = 1.0. \)

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ...,\ 0.0) \]
\[ \textrm{ nadir-point: } (-1.0, -1.0,\ ..., -1.0) \]

This benchmark function can be used for both the real- and binary-encoded GAs.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ2(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ2 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.

class DTLZ3#

#include <problems/many_objective.hpp>
class DTLZ3 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ3 function for any number of objectives, modified for maximization. This problem is a modified version of the DTLZ2 problem with many local pareto-optimal fronts, making it more difficult to find the global optimal front.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are:

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.5 \textrm{ for } i >= n_{obj}-1 \]
The pareto optimal front in the objective space is the surface of the unit hypersphere: \( \sum_m f_m^2 = 1.0 \).

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ...,\ 0.0) \]
\[ \textrm{ nadir-point: } (-1.0, -1.0,\ ..., -1.0) \]

This benchmark function can be used for both the real- and binary-encoded multi-objective algorithms.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ3(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ3 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.

class DTLZ4#

#include <problems/many_objective.hpp>
class DTLZ4 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ4 function for any number of objectives, modified for maximization. This problem is a modification of the DTLZ2 problem, where the solutions are not uniformly distributed along the pareto-optimal front.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are:

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.5 \textrm{ for } i >= n_{obj}-1 \]
The optimal front in the objective space is the surface of the unit hypersphere: \( \sum_m f_m^2 = 1.0 \).

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ...,\ 0.0) \]
\[ \textrm{ nadir-point: } (-1.0, -1.0,\ ..., -1.0) \]

This benchmark function can be used for both the real- and binary-encoded GAs.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ4(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ4 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.

class DTLZ5#

#include <problems/many_objective.hpp>
class DTLZ5 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ5 function for any number of objectives, modified for maximization. This problem is a modified version of the DTLZ2 problem, where the pareto-optimal front is a degenerated curve instead of the surface of a hypersphere.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are:

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.5 \textrm{ for } i >= n_{obj}-1 \]
The pareto optimal solutions are along a curve that satisfies \( \sum_m f_m^2 = 1.0 \).

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ...,\ 0.0) \]
\[ \textrm{ nadir-point: } \left( \left( \frac{-1.0}{\sqrt{2}} \right)^{n_{obj}-2}, \left( \frac{-1.0}{\sqrt{2}} \right)^{n_{obj}-2}, \left( \frac{-1.0}{\sqrt{2}} \right)^{n_{obj}-3}, \ ..., -1.0 \right) \]

This benchmark function can be used for both the real- and binary-encoded GAs.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ5(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ5 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.

class DTLZ6#

#include <problems/many_objective.hpp>
class DTLZ6 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ6 function for any number of objectives, modified for maximization. This problem is a modified version of the DTLZ5 problem with many local pareto-optimal fronts, making it more difficult to find the global one.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are:

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.0 \textrm{ for } i >= n_{obj}-1 \]
The pareto optimal solutions are along a curve that satisfies \( \sum_m f_m^2 = 1.0 \).

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ...,\ 0.0) \]
\[ \textrm{ nadir-point: } \left( \left( \frac{-1.0}{\sqrt{2}} \right)^{n_{obj}-2}, \left( \frac{-1.0}{\sqrt{2}} \right)^{n_{obj}-2}, \left( \frac{-1.0}{\sqrt{2}} \right)^{n_{obj}-3}, \ ..., -1.0 \right) \]

This benchmark function can be used for both the real- and binary-encoded GAs.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ6(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ6 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.

class DTLZ7#

#include <problems/many_objective.hpp>
class DTLZ7 : public gapp::problems::BenchmarkFunction<RealGene>#

Implementation of the DTLZ7 function for any number of objectives, modified for maximization. This problem has ( \( 2^{n_{obj}-1} \)) disconnected pareto fronts in the objective space instead of just a single continuous one.

Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).

The optimal solutions are:

\[ x_i \in [0.0, 1.0] \textrm{ for } 0 <= i < n_{obj}-1, \textrm{ and } x_i = 0.0 \textrm{ for } i >= n_{obj}-1 \]

The extreme points in the objective-space are:

\[ \textrm{ ideal-point: } ( 0.0,\ 0.0,\ ..., -0.307n_{obj}-1.693) \]
\[ \textrm{ nadir-point: } (-1.0, -1.0,\ ..., -2n_{obj} ) \]

This benchmark function can be used for both the real- and binary-encoded GAs.

See also

Deb, K., et al. “Scalable test problems for evolutionary multiobjective optimization.” Evolutionary multiobjective optimization (2005), pp. 105-145.

See also

Deb, K., et al. “Scalable multi-objective optimization test problems.” Proceedings of the 2002 Congress on Evolutionary Computation. vol. 1, pp. 825-830.

Public Functions

explicit DTLZ7(size_t num_obj, size_t bits_per_var = 32)#

Construct a DTLZ7 objective function.

Parameters:
  • num_obj – The number of objectives. Must be at least 2.

  • bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.