Multi-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 Kursawe#
#include <problems/multi_objective.hpp>
-
class Kursawe : public gapp::problems::BenchmarkFunction<RealGene>#
Implementation of the Kursawe function for any number of variables, modified for maximization. It has 2 objectives, and the pareto front is made up of multiple disconnected segments.
Evaluated on the hypercube \( x_i \in [-5.0,\ 5.0] \).
The approximate extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( 10(n_{vars} - 1),\ 3.85(n_{vars} - 1) + 4) \]\[ \textrm{ nadir-point: } (7.25(n_{vars} - 1),\ 0.0 ) \]This benchmark function can be used for both the real- and binary-encoded GAs.
See also
Kursawe, F. “A variant of evolution strategies for vector optimization.” International conference on parallel problem solving from nature (1991): 193-197
Public Functions
-
explicit Kursawe(size_t num_vars = 3, size_t bits_per_var = 32)#
Create a Kursawe function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.
-
explicit Kursawe(size_t num_vars = 3, size_t bits_per_var = 32)#
class ZDT1#
#include <problems/multi_objective.hpp>
-
class ZDT1 : public gapp::problems::BenchmarkFunction<RealGene>#
Implementation of the ZDT1 function for any number of variables, modified for maximization. This 2-objective benchmark function has a continuous, convex pareto front in the objective-space.
Evaluated on the hypercube \( x_i \in [0.0,\ 1.0] \).
The optimal solutions are \( x_1 \in [0.0,\ 1.0] \), and \( x_{rest} = 0.0 \).
The extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( 0.0,\ 0.0) \]\[ \textrm{ nadir-point: } (-1.0, -1.0) \]This benchmark function can be used for both the real- and binary-encoded GAs.
See also
Zitzler, E., Deb, K., and Thiele, L. “Comparison of multiobjective evolutionary algorithms: Empirical results.” Evolutionary computation 8, no. 2 (2000): 173-195.
Public Functions
-
explicit ZDT1(size_t num_vars = 30, size_t bits_per_var = 32)#
Create a ZDT1 function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.
-
explicit ZDT1(size_t num_vars = 30, size_t bits_per_var = 32)#
class ZDT2#
#include <problems/multi_objective.hpp>
-
class ZDT2 : public gapp::problems::BenchmarkFunction<RealGene>#
Implementation of the ZDT2 function for any number of variables, modified for maximization. This 2-objective benchmark function has a continuous, non-convex pareto front in the objective-space.
Evaluated on the hypercube \( x_i \in [0.0,\ 1.0] \).
The optimal solutions are \( x_1 \in [0.0,\ 1.0] \), and \( x_{rest} = 0.0 \).
The extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( 0.0,\ 0.0) \]\[ \textrm{ nadir-point: } (-1.0, -1.0) \]This benchmark function can be used for both the real- and binary-encoded GAs.
See also
Zitzler, E., Deb, K., and Thiele, L. “Comparison of multiobjective evolutionary algorithms: Empirical results.” Evolutionary computation 8, no. 2 (2000): 173-195.
Public Functions
-
explicit ZDT2(size_t num_vars = 30, size_t bits_per_var = 32)#
Create a ZDT2 function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.
-
explicit ZDT2(size_t num_vars = 30, size_t bits_per_var = 32)#
class ZDT3#
#include <problems/multi_objective.hpp>
-
class ZDT3 : public gapp::problems::BenchmarkFunction<RealGene>#
Implementation of the ZDT3 function for any number of variables, modified for maximization. This 2-objective benchmark function has a discontinuous pareto front made up of 5 disconnected segments in the objective-space.
Evaluated on the hypercube \( x_i \in [0.0,\ 1.0] \).
The optimal solutions are \( x_1 \in [0.0,\ 0.083] \cup [0.182,\ 0.258] \cup [0.409,\ 0.454] \cup [0.618\, 0.653] \cup [0.823,\ 0.852] \), and \( x_{rest} = 0.0 \).
The extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( 0.00,\ 0.8) \]\[ \textrm{ nadir-point: } (-0.85, -1.0) \]This benchmark function can be used for both the real- and binary-encoded GAs.
See also
Zitzler, E., Deb, K., and Thiele, L. “Comparison of multiobjective evolutionary algorithms: Empirical results.” Evolutionary computation 8, no. 2 (2000): 173-195.
Public Functions
-
explicit ZDT3(size_t num_vars = 30, size_t bits_per_var = 32)#
Create a ZDT3 function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.
-
explicit ZDT3(size_t num_vars = 30, size_t bits_per_var = 32)#
class ZDT4#
#include <problems/multi_objective.hpp>
-
class ZDT4 : public gapp::problems::BenchmarkFunction<RealGene>#
Implementation of the ZDT4 function for any number of variables, modified for maximization. This 2-objective benchmark function is the most difficult problem of the ZDT suite. It has a large number of local pareto fronts in the objective space, which makes it easy for the GAs to get stuck along one of these local fronts.
Evaluated on \( x_1 \in [0.0,\ 1.0] \), and \( x_{rest} \in [-5.0,\ 5.0] \).
The optimal solutions are \( x_1 \in [0.0,\ 1.0] \), and \( x_{rest} = 0.0 \).
The extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( 0.0,\ 0.0) \]\[ \textrm{ nadir-point: } (-1.0, -1.0) \]This benchmark function can be used for both the real- and binary-encoded GAs.
See also
Zitzler, E., Deb, K., and Thiele, L. “Comparison of multiobjective evolutionary algorithms: Empirical results.” Evolutionary computation 8, no. 2 (2000): 173-195.
Public Functions
-
explicit ZDT4(size_t num_vars = 10, size_t bits_per_var = 32)#
Create a ZDT4 function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.
-
explicit ZDT4(size_t num_vars = 10, size_t bits_per_var = 32)#
class ZDT5#
#include <problems/multi_objective.hpp>
-
class ZDT5 : public gapp::problems::BenchmarkFunction<BinaryGene>#
Implementation of the ZDT5 function for any number of variables, modified for maximization. In this 2-objective benchmark function, the variables are binary strings, not real numbers like they are in the rest of the functions of the ZDT suite.
The optimal solutions are \( x_1 = anything \), and \( x_{rest} = ones \).
The extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( -1.0, -\frac{(n_{vars} - 1)}{31}) \]\[ \textrm{ nadir-point: } (-31.0, -n_{vars} + 1 ) \]This benchmark function can only be used with the binary-encoded GA, unlike the rest of the benchmark functions in the ZDT suite.
See also
Zitzler, E., Deb, K., and Thiele, L. “Comparison of multiobjective evolutionary algorithms: Empirical results.” Evolutionary computation 8, no. 2 (2000): 173-195.
Public Functions
-
explicit ZDT5(size_t num_vars = 11)#
Create a ZDT5 function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
-
explicit ZDT5(size_t num_vars = 11)#
class ZDT6#
#include <problems/multi_objective.hpp>
-
class ZDT6 : public gapp::problems::BenchmarkFunction<RealGene>#
Implementation of the ZDT6 function for any number of variables, modified for maximization. This 2-objective benchmark function has a non-convex pareto front in the objective space, along which the solutions are distributed non-uniformly.
Evaluated on the hypercube \( x_i \in [0.0, 1.0] \).
The optimal solutions are \( x_1 \in [0.0, 1.0] \), and \( x_{rest} = 0.0 \).
The extreme points in the objective-space are:
\[ \textrm{ ideal-point: } ( 0.0,\ 0.0 ) \]\[ \textrm{ nadir-point: } (-1.0, -0.92) \]This benchmark function can be used for both the real- and binary-encoded GAs.
See also
Zitzler, E., Deb, K., and Thiele, L. “Comparison of multiobjective evolutionary algorithms: Empirical results.” Evolutionary computation 8, no. 2 (2000): 173-195.
Public Functions
-
explicit ZDT6(size_t num_vars = 10, size_t bits_per_var = 32)#
Create a ZDT6 function.
- Parameters:
num_vars – The number of variables. Must be at least 2.
bits_per_var – The number of bits representing a variable when used with the binary-encoded GA.
-
explicit ZDT6(size_t num_vars = 10, size_t bits_per_var = 32)#