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.
-
explicit DTLZ1(size_t num_obj, size_t bits_per_var = 32)#
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.
-
explicit DTLZ2(size_t num_obj, size_t bits_per_var = 32)#
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.
-
explicit DTLZ3(size_t num_obj, size_t bits_per_var = 32)#
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.
-
explicit DTLZ4(size_t num_obj, size_t bits_per_var = 32)#
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.
-
explicit DTLZ5(size_t num_obj, size_t bits_per_var = 32)#
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.
-
explicit DTLZ6(size_t num_obj, size_t bits_per_var = 32)#
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.
-
explicit DTLZ7(size_t num_obj, size_t bits_per_var = 32)#