physbo.test_functions.multi_objective module
- class physbo.test_functions.multi_objective.Binh1(min_X: ndarray | list[float] | float = -5.0, max_X: ndarray | list[float] | float = 10.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionBinh’s first function (the first study case of Binh (1999)).
\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 4 x_1^2 + 4 x_2^2 \\ f_2(\boldsymbol{x}) = (x_1 - 5)^2 + (x_2 - 5)^2 \end{cases}\end{split}\]The Pareto-optimal set is the segment \(x_1 = x_2 \in [0, 5]\).
- Parameters:
min_X (np.ndarray | list[float] | float, default=-5.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=10.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The objectives are the same as those of
BinhKorn, but this problem has no constraints and a different search space (\(-5 \le x_i \le 10\)), so the Pareto-optimal set is different. Versions of PHYSBO before this change treatedBinh1as an alias ofBinhKorn.References
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Binh2(min_X: ndarray | list[float] | float = -20.0, max_X: ndarray | list[float] | float = 20.0, test_maximizer: bool = True)[source]
Bases:
SRNBinh’s second function.
This is an alias of
SRN; the objectives, constraints and search space of the second study case of Binh (1999) agree with it. SeeSRNfor the definition and the arguments.References
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- class physbo.test_functions.multi_objective.Binh3(dim: int = 2, min_X: ndarray | list[float] | float = -4.0, max_X: ndarray | list[float] | float = 4.0, test_maximizer: bool = True)[source]
Bases:
FonsecaFlemingBinh’s third function.
This is an alias of
FonsecaFleming(the \(N\)-variable form). Binh (1999) does not state the search space; the default ofFonsecaFlemingis used. SeeFonsecaFlemingfor the definition and the arguments.References
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- class physbo.test_functions.multi_objective.Binh4(min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 7.0, test_maximizer: bool = True)[source]
Bases:
KitaYabumotoMoriNishikawaBinh’s fourth function.
This is an alias of
KitaYabumotoMoriNishikawa; Binh (1999) quotes the problem as a maximization problem as in Kita et al. (1996). SeeKitaYabumotoMoriNishikawafor the definition and the arguments.References
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- class physbo.test_functions.multi_objective.Binh5(min_X: ndarray | list[float] | float = [0.1, 0.0], max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionBinh’s fifth function (a multi-modal test problem of Deb (1999)).
\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = \frac{g(x_2)}{x_1} \end{cases},\quad \text{where}\quad g(x) = 2 - \exp\left(-\left(\frac{x - 0.2}{0.004}\right)^2\right) - 0.8 \exp\left(-\left(\frac{x - 0.6}{0.4}\right)^2\right)\end{split}\]\(g\) has the global minimum at \(x_2 = 0.2\) and a local minimum at \(x_2 = 0.6\).
- Parameters:
min_X (np.ndarray | list[float] | float, default=[0.1, 0.0]) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The problem is one of the constructed test problems of Deb (1999) (also in Deb (2001)); Binh (1999) lists it as the fifth study case.
References
Kalyanmoy Deb. “Multi-objective genetic algorithms: Problem difficulties and construction of test problems.” Evolutionary Computation 7(3), 205-230 (1999). (Also: Technical Report CI-49/98, University of Dortmund, 1998.)
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Binh6(min_X: ndarray | list[float] | float = -3.0, max_X: ndarray | list[float] | float = 3.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionBinh’s sixth function (a test problem of Binh (1999) built on the Rosenbrock function).
\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = \sqrt{x_1^2 + x_2^2 + 1} \\ f_2(\boldsymbol{x}) = \frac{g(x_3, x_4)}{f_1(\boldsymbol{x})} \end{cases},\quad \text{where}\quad g(x_3, x_4) = 100 (x_4 - x_3^2)^2 + (1 - x_3)^2 + 2\end{split}\]- Parameters:
min_X (np.ndarray | list[float] | float, default=-3.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=3.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The problem is constructed in Binh (1999) (the sixth study case) in the form of the tunable two-objective problems of Deb (1999, Section 5), \(f_1 = f_1(\boldsymbol{x}_\mathrm{I})\) and \(f_2 = g(\boldsymbol{x}_\mathrm{II}) h(f_1, g)\), with \(\boldsymbol{x}_\mathrm{I} = (x_1, x_2)\), \(\boldsymbol{x}_\mathrm{II} = (x_3, x_4)\) and \(h = 1 / f_1\). The function \(g\) is the Rosenbrock (“banana”) function plus 2, whose minimum lies in a narrow and flat valley; \(f_1 \ge 1\) and \(g \ge 2\) satisfy the conditions \(f_1 > 0\) and \(g > 0\) of the construction. The Pareto-optimal front is \(f_1 f_2 = 2\) (\(x_3 = x_4 = 1\) with arbitrary \(x_1\) and \(x_2\)), in agreement with Figure 6 of the report. Binh (1999) does not state the search space. The front drawn in Figure 6 ends at \(f_1 = \sqrt{19}\), which means that the largest \(|x_1|\) and \(|x_2|\) are 3; the default \([-3, 3]^4\) assumes a symmetric box and the same range for \(x_3\) and \(x_4\). PHYSBO up to version 3.2.1 used \([-5, 5]^4\).
References
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
Kalyanmoy Deb. “Multi-objective genetic algorithms: Problem difficulties and construction of test problems.” Evolutionary Computation 7(3), 205-230 (1999). (Also: Technical Report CI-49/98, University of Dortmund, 1998.)
Rosenbrock, H.H. (1960). “An automatic method for finding the greatest or least value of a function”. The Computer Journal. 3 (3): 175-184. https://doi.org/10.1093/comjnl/3.3.175
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Binh8(min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionBinh’s eighth function (a test problem of Deb (1999) with a non-uniformly represented front).
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 1 - \exp(-4 x_1) \sin^4(5 \pi x_1) \\ f_2(\boldsymbol{x}) = g(x_2) h(x_1, x_2) \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(x_2) = 1 + 10 x_2 \\ h(x_1, x_2) = 1 - \left( \frac{f_1(\boldsymbol{x})}{g(x_2)} \right)^4 \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The problem is the one Deb (1999) uses to compare parameter-space and function-space niching: \(h = 1 - (f_1 / (\beta g))^\alpha\) with \(\beta = 1\) and \(\alpha = 4\). The expression \(g = 1 + 10 x_2\) is taken from Deb (2001) (\(f_1\) is Eq. (8.31) there); Deb (1999) does not give it. Neither Deb (1999) nor Deb (2001) states the range of \(x_2\), which is taken from Binh (1999). The Pareto-optimal front is \(f_2 = 1 - f_1^4\) and is non-convex; a uniform sampling of \(x_1\) is biased towards \(f_1 \approx 1\). It is the eighth study case in Binh (1999). The formulas printed there (\(f_1 = x_1 + x_2\), \(f_2 = 1 - \exp(-4 x_1) \sin^4(5 \pi x_1)\)) are inconsistent with Figure 8 of the same report, which agrees with the problem above. PHYSBO up to version 3.2.1 implemented the formulas as printed.
References
Kalyanmoy Deb. “Multi-objective genetic algorithms: Problem difficulties and construction of test problems.” Evolutionary Computation 7(3), 205-230 (1999). (Also: Technical Report CI-49/98, University of Dortmund, 1998.)
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Binh9(min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionBinh’s ninth function (a discontinuous-front test problem of Deb (1999)).
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = g(x_2) h(x_1, x_2) \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(x_2) = 1 + 10 x_2 \\ h(x_1, x_2) = 1 - \left( \frac{x_1}{g(x_2)} \right)^2 - \left( \frac{x_1}{g(x_2)} \right) \sin(8 \pi x_1) \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The problem is the discontinuous-front test problem of Deb (1999) \(h = 1 - (f_1/g)^\alpha - (f_1/g)\sin(2\pi q f_1)\) with \(\alpha = 2\) and \(q = 4\) (also in Deb (2001)). It is listed as MOP6 in Van Veldhuizen (1999) and as the ninth study case in Binh (1999).
References
Kalyanmoy Deb. “Multi-objective genetic algorithms: Problem difficulties and construction of test problems.” Evolutionary Computation 7(3), 205-230 (1999). (Also: Technical Report CI-49/98, University of Dortmund, 1998.)
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
David A. Van Veldhuizen; Multiobjective Evolutionary Algorithms: Classifications, Analyses, and New Innovations. Ph.D. thesis, Air Force Institute of Technology, 1999. (MOP6)
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.BinhKorn(min_X: ndarray | list[float] | float = array([0., 0.]), max_X: ndarray | list[float] | float = array([5., 3.]), test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionBinh-Korn’s function (test case 2 of Binh and Korn (1997)).
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 4 x_1^2 + 4 x_2^2 \\ f_2(\boldsymbol{x}) = (x_1 - 5)^2 + (x_2 - 5)^2 \end{cases}\end{split}\\\begin{split}\text{Subject to} \begin{cases} g_1(\boldsymbol{x}) = (x_1 - 5)^2 + x_2^2 \le 25 \\ g_2(\boldsymbol{x}) = (x_1 - 8)^2 + (x_2 + 3)^2 \ge 7.7 \end{cases}\end{split}\end{aligned}\end{align} \]The Pareto-optimal set consists of \(x_1 = x_2 \in [0, 3]\) and \(x_1 \in [3, 5], x_2 = 3\).
- Parameters:
min_X (np.ndarray | list[float] | float, default=np.array([0.0, 0.0])) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=np.array([5.0, 3.0])) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
Binh and Korn (1997) present two test problems; this is test case 2 (test case 1 is
SRN).Binh1has the same objectives but no constraints and a different search space, and is therefore a different problem.References
To Thanh Binh and Ulrich Korn. “MOBES: A multiobjective evolution strategy for constrained optimization problems.” The third international conference on genetic algorithms (Mendel 97). Vol. 25. 1997.
- constraint(x: ndarray) ndarray[source]
Evaluate the constraint function at the given point.
- Parameters:
x (np.ndarray) – The point at which to evaluate the constraint function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
The boolean values indicating whether the point is valid or not. The output value is a numpy array of shape (n,), where n is the number of points.
- Return type:
np.ndarray
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.ChankongHaimes(min_X: ndarray | list[float] | float = -20.0, max_X: ndarray | list[float] | float = 20.0, test_maximizer: bool = True)[source]
Bases:
SRNChankong-Haimes’s function.
This is an alias of
SRN, named after the origin of the objectives (an example of goal programming in Chankong and Haimes (1983), defined on \(\boldsymbol{x} \ge 0\); the constraints \(g_1, g_2\) were introduced by Srinivas and Deb (1994)). SeeSRNfor the definition and the arguments.References
Chankong, V., and Haimes, Y. Y., “Multiobjective decision making: Theory and methodology”, North-Holland series in system science and engineering, 1983. (Reprinted by Dover, 2008.)
- class physbo.test_functions.multi_objective.ConstrEX(min_X: ndarray | list[float] | float = [0.1, 0.0], max_X: ndarray | list[float] | float = [1.0, 5.0], test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionConstrEX function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = (1 + x_2) / x_1 \end{cases}\end{split}\\\begin{split}\text{Subject to} \begin{cases} g_1(\boldsymbol{x}) = 9 x_1 + x_2 \ge 6 \\ g_2(\boldsymbol{x}) = 9 x_1 - x_2 \ge 1 \\ \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
min_X (np.ndarray | list[float] | float, default=[0.1, 0.0]) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=[1.0, 5.0]) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
- constraint(x: ndarray) ndarray[source]
Evaluate the constraint function at the given point.
- Parameters:
x (np.ndarray) – The point at which to evaluate the constraint function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
The boolean values indicating whether the point is valid or not. The output value is a numpy array of shape (n,), where n is the number of points.
- Return type:
np.ndarray
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.FonsecaFleming(dim: int = 2, min_X: ndarray | list[float] | float = -4.0, max_X: ndarray | list[float] | float = 4.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionFonseca and Fleming’s function (\(N\)-variable form).
\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 1 - \exp \left( -\sum_{i=1}^N \left( x_i - \frac{1}{\sqrt{N}} \right)^2 \right) \\ f_2(\boldsymbol{x}) = 1 - \exp \left( -\sum_{i=1}^N \left( x_i + \frac{1}{\sqrt{N}} \right)^2 \right) \end{cases}\end{split}\]The Pareto-optimal set is the segment \(x_1 = \cdots = x_N \in [-1/\sqrt{N}, 1/\sqrt{N}]\).
- Parameters:
dim (int, default=2) – Number of dimensions \(N\).
min_X (np.ndarray | list[float] | float, default=-4.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=4.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The \(N\)-variable form with the centers at \(\pm 1/\sqrt{N}\) is given in Fonseca and Fleming (1995b); the search space \(-4 \le x_i \le 4\) follows Van Veldhuizen (1999) and Deb (2001). Van Veldhuizen (1999) distinguishes two problems by Fonseca and Fleming: “Fonseca”, the two-variable form of Fonseca and Fleming (1995a) with the centers \((1, -1)\) and \((-1, 1)\), and “Fonseca (2)”, the \(N\)-variable form of Fonseca and Fleming (1995b) with \(-4 \le x_i \le 4\), which is the one implemented here (MOP2). The two-variable form is a different problem (the distance between the centers is \(2\sqrt{2}\) instead of 2).
VLMOP2is the same function with the search space \(-2 \le x_i \le 2\) used by Van Veldhuizen and Lamont (1999).References
Carlos M. Fonseca, Peter J. Fleming; Multiobjective Genetic Algorithms Made Easy: Selection, Sharing, and Mating Restriction. Proceedings of the 1st International Conference on Genetic Algorithms in Engineering Systems: Innovations and Applications (GALESIA), IEE, 1995, pp. 45-52. (1995b)
Carlos M. Fonseca, Peter J. Fleming; An Overview of Evolutionary Algorithms in Multiobjective Optimization. Evol Comput 1995; 3 (1): 1-16. doi: https://doi.org/10.1162/evco.1995.3.1.1 (1995a; two-variable form)
David A. Van Veldhuizen; Multiobjective Evolutionary Algorithms: Classifications, Analyses, and New Innovations. Ph.D. thesis, Air Force Institute of Technology, 1999. (MOP2)
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Gaussian(centers: ndarray, widths: ndarray | list[float] | float = 1.0, amplitudes: ndarray | list[float] | float = 1.0, min_X: ndarray | list[float] | float = -2.0, max_X: ndarray | list[float] | float = 2.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionGaussian function.
A sum of Gaussian peaks; each objective is maximal at its own center.
\[\text{Maximize}\quad f_n(\boldsymbol{x}) = A_n \exp \left( -\frac{\left|\boldsymbol{x} - \boldsymbol{c}_n\right|^2}{2 w_n^2} \right)\]- Parameters:
centers (np.ndarray) – Centers of the Gaussian functions \(\boldsymbol{c}_n\).
widths (np.ndarray | list[float] | float, default=1.0) – Widths of the Gaussian functions \(w_n\).
amplitudes (np.ndarray | list[float] | float, default=1.0) – Amplitudes of the Gaussian functions \(A_n\).
min_X (np.ndarray | list[float] | float, default=-2.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=2.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values describe a maximization problem (as defined above). If False, they are negated to describe a minimization problem.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.KitaYabumotoMoriNishikawa(min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 7.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionKita-Yabumoto-Mori-Nishikawa’s function.
The original problem is a maximization problem:
\[ \begin{align}\begin{aligned}\begin{split}\text{Maximize} \begin{cases} f_1(\boldsymbol{x}) = -x_1^2 + x_2 \\ f_2(\boldsymbol{x}) = \frac{1}{2}x_1 + x_2 + 1 \end{cases}\end{split}\\\begin{split}\text{Subject to} \begin{cases} g_1(\boldsymbol{x}) = \frac{x_1}{6} + x_2 \le \frac{13}{2} \\ g_2(\boldsymbol{x}) = \frac{x_1}{2} + x_2 \le \frac{15}{2} \\ g_3(\boldsymbol{x}) = 5 x_1 + x_2 \le 30 \\ x_1 \ge 0, \quad x_2 \ge 0 \end{cases}\end{split}\end{aligned}\end{align} \]Both objectives increase with \(x_2\), so the Pareto-optimal set lies on the upper boundary of the feasible region: \(x_1 \in [0, 3],\ x_2 = 13/2 - x_1/6\) (where \(g_1\) is active). The feasible region is contained in \(0 \le x_1 \le 6, 0 \le x_2 \le 6.5\).
- Parameters:
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\). The non-negativity constraints \(x_1, x_2 \ge 0\) are part of
constraint, so they hold for any lower bound.max_X (np.ndarray | list[float] | float, default=7.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values describe the maximization problem as defined above. If False, they are negated to describe a minimization problem.
Note
The search space is not stated explicitly in the references; \([0, 7]^2\) is chosen so that it contains the feasible region.
A widely circulated variant (e.g., “Test function 4” in the Wikipedia article “Test functions for optimization”) drops \(x_1, x_2 \ge 0\) and uses \(-7 \le x_1, x_2 \le 4\). In that box none of the constraints is active and the Pareto-optimal set (\(x_2 \ge 6\)) is outside the box, so it is a different problem. Versions of PHYSBO before this change implemented that variant.
The reference box is the range of the objectives over the feasible region: \(f_1 \in [-36, 6.5]\), \(f_2 \in [1, 8.5]\).
References
Kita, H., Yabumoto, Y., Mori, N., Nishikawa, Y. (1996). Multi-objective optimization by means of the thermodynamical genetic algorithm. In: Voigt, HM., Ebeling, W., Rechenberg, I., Schwefel, HP. (eds) Parallel Problem Solving from Nature — PPSN IV. PPSN 1996. Lecture Notes in Computer Science, vol 1141. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-61723-X_1014
To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany. (study case 4)
- constraint(x: ndarray) ndarray[source]
Evaluate the constraint function at the given point.
- Parameters:
x (np.ndarray) – The point at which to evaluate the constraint function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
The boolean values indicating whether the point is valid or not. The output value is a numpy array of shape (n,), where n is the number of points.
- Return type:
np.ndarray
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Kursawe(min_X: ndarray | list[float] | float = -5.0, max_X: ndarray | list[float] | float = 5.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionKursawe’s function (the three-variable modified version, KUR in Deb (2001)).
\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = \sum_{i=1}^{2} -10 \exp \left( -0.2 \sqrt{x_i^2 + x_{i+1}^2} \right) \\ f_2(\boldsymbol{x}) = \sum_{i=1}^{3} \left( \left| x_i \right|^{0.8} + 5 \sin(x_i^3) \right) \end{cases}\end{split}\]- Parameters:
min_X (np.ndarray | list[float] | float, default=-5.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=5.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The implementation follows Deb (2001), which differs from the original problem of Kursawe (1991) in three respects (as noted by Deb): the original uses \(\sin^3(x_i)\) instead of \(\sin(x_i^3)\) in \(f_2\), is defined for any number \(n\) of variables, and states no variable bounds. Van Veldhuizen (1999) reproduces the original form (general \(n\), \(\sin^3(x_i)\), no bounds) as MOP4 and notes that the problem was misprinted in the original paper. Because of the change from \(\sin^3(x_i)\) to \(\sin(x_i^3)\), the Pareto-optimal set of this function differs from that of the original.
References
Kursawe, F., “A variant of evolution strategies for vector optimization,” in Parallel Problem Solving from Nature (PPSN I, 1990), Vol 496 Lect Notes in Comput Sci. Springer-Verlag, 1991, pp. 193-197. (Cited as Kursawe (1990) in Deb (2001) and Van Veldhuizen (1999).)
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001. (KUR)
David A. Van Veldhuizen; Multiobjective Evolutionary Algorithms: Classifications, Analyses, and New Innovations. Ph.D. thesis, Air Force Institute of Technology, 1999. (MOP4)
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.MultiTestFunction(nobj: int, dim: int, min_X: ndarray | list[float] | float, max_X: ndarray | list[float] | float, test_maximizer: bool)[source]
Bases:
TestFunction- property reference_max: ndarray
Get the upper bound of the reference box.
Reference box is a box that contains the entire non-dominated region. It is used to calculate the volume of the non-dominated region. The box is given in the same sense as the returned values (see
test_maximizer).- Returns:
The reference maximum values of the test function.
- Return type:
np.ndarray
Note
Unless stated otherwise in the docstring of each function, the reference box is calculated by using the default values of min_X and max_X.
- property reference_min: ndarray
Get the lower bound of the reference box.
Reference box is a box that contains the entire non-dominated region. It is used to calculate the volume of the non-dominated region. The box is given in the same sense as the returned values (see
test_maximizer).- Returns:
The reference minimum values of the test function.
- Return type:
np.ndarray
Note
Unless stated otherwise in the docstring of each function, the reference box is calculated by using the default values of min_X and max_X.
- class physbo.test_functions.multi_objective.OsyczkaKundu(min_X: ndarray | list[float] | float = [0.0, 0.0, 1.0, 0.0, 1.0, 0.0], max_X: ndarray | list[float] | float = [10.0, 10.0, 5.0, 6.0, 5.0, 10.0], test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionOsyczka-Kundu’s function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = -25 (x_1 - 2)^2 - (x_2 - 2)^2 - (x_3 - 1)^2 - (x_4 - 4)^2 - (x_5 - 1)^2 \\ f_2(\boldsymbol{x}) = \sum_{i=1}^{6} x_i^2 \end{cases}\end{split}\\\begin{split}\text{Subject to} \begin{cases} g_1(\boldsymbol{x}) = x_1 + x_2 - 2 \ge 0 \\ g_2(\boldsymbol{x}) = 6 - x_1 - x_2 \ge 0 \\ g_3(\boldsymbol{x}) = 2 - x_2 + x_1 \ge 0 \\ g_4(\boldsymbol{x}) = 2 - x_1 + 3 x_2 \ge 0 \\ g_5(\boldsymbol{x}) = 4 - \left(x_3 - 3\right)^2 - x_4 \ge 0 \\ g_6(\boldsymbol{x}) = \left(x_5 - 3\right)^2 + x_6 - 4 \ge 0 \\ \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
min_X (np.ndarray | list[float] | float, default=[0.0, 0.0, 1.0, 0.0, 1.0, 0.0]) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=[10.0, 10.0, 5.0, 6.0, 5.0, 10.0]) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Osyczka, A., Kundu, S. A new method to solve generalized multicriteria optimization problems using the simple genetic algorithm. Structural Optimization 10, 94-99 (1995). https://doi.org/10.1007/BF01743536
- constraint(x: ndarray) ndarray[source]
Evaluate the constraint function at the given point.
- Parameters:
x (np.ndarray) – The point at which to evaluate the constraint function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
The boolean values indicating whether the point is valid or not. The output value is a numpy array of shape (n,), where n is the number of points.
- Return type:
np.ndarray
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Poloni(min_X: ndarray | list[float] | float = -3.141592653589793, max_X: ndarray | list[float] | float = 3.141592653589793, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionPoloni’s function.
The original problem is a maximization problem:
\[ \begin{align}\begin{aligned}\begin{split}\text{Maximize} \begin{cases} f_1(\boldsymbol{x}) = -\left[1 + (a_1 - b_1(\boldsymbol{x}))^2 + (a_2 - b_2(\boldsymbol{x}))^2\right] \\ f_2(\boldsymbol{x}) = -\left[(x_1 + 3)^2 + (x_2 + 1)^2\right] \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} a_1 = 0.5 \sin(1) - 2 \cos(1) + \sin(2) - 1.5 \cos(2) \\ a_2 = 1.5 \sin(1) - \cos(1) + 2 \sin(2) - 0.5 \cos(2) \\ b_1(\boldsymbol{x}) = 0.5 \sin(x_1) - 2 \cos(x_1) + \sin(x_2) - 1.5 \cos(x_2) \\ b_2(\boldsymbol{x}) = 1.5 \sin(x_1) - \cos(x_1) + 2 \sin(x_2) - 0.5 \cos(x_2) \\ \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
min_X (np.ndarray | list[float] | float, default=-np.pi) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=np.pi) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values describe the maximization problem as defined above. If False, they are negated to describe a minimization problem.
Note
Poloni et al. (2000) define the problem as a maximization problem as above. Deb (2001) (as POL) negates \(f_1\) and \(f_2\) and states it as a minimization problem with the same search space; that form is what
test_maximizer=Falsereturns. Listed as MOP3 in Van Veldhuizen (1999).References
Poloni, C., Giurgevich, A., Onesti, L., Pediroda, V., “Hybridization of a multi-objective genetic algorithm, a neural network and a classical optimizer for a complex design problem in fluid dynamics,” Computer Methods in Applied Mechanics and Engineering 186(2-4), 403-420 (2000). https://doi.org/10.1016/S0045-7825(99)00394-1
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001. (POL)
David A. Van Veldhuizen; Multiobjective Evolutionary Algorithms: Classifications, Analyses, and New Innovations. Ph.D. thesis, Air Force Institute of Technology, 1999. (MOP3)
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.SRN(min_X: ndarray | list[float] | float = -20.0, max_X: ndarray | list[float] | float = 20.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionSRN (Srinivas and Deb’s constrained test problem, also called Chankong-Haimes’s function).
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 2 + (x_1 - 2)^2 + (x_2 - 1)^2 \\ f_2(\boldsymbol{x}) = 9 x_1 - (x_2 - 1)^2 \end{cases}\end{split}\\\begin{split}\text{Subject to} \begin{cases} g_1(\boldsymbol{x}) = x_1^2 + x_2^2 \le 225 \\ g_2(\boldsymbol{x}) = x_1 - 3 x_2 \le -10 \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
min_X (np.ndarray | list[float] | float, default=-20.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=20.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The objectives originate from Chankong and Haimes (1983), where they appear as an example of goal programming, a two-objective nonconvex problem on \(\{\boldsymbol{x} \in \mathbb{R}^2 \mid \boldsymbol{x} \ge 0\}\). Srinivas and Deb (1994) replaced the feasible region by the constraints \(g_1, g_2\) to make the problem more difficult, and this constrained problem is known as SRN after them (see Deb (2001)). The problem is also often called Chankong-Haimes’s function after the origin of the objectives;
ChankongHaimesis an alias. It is also test case 1 of Binh and Korn (1997) and the second study case of Binh (1999) (Binh2).References
Srinivas, N. and Deb, K., “Multiobjective optimization using nondominated sorting in genetic algorithms,” Evolutionary Computation 2(3), 221-248 (1994).
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001. (SRN)
Chankong, V., and Haimes, Y. Y., “Multiobjective decision making: Theory and methodology”, North-Holland series in system science and engineering, 1983. (Reprinted by Dover, 2008.)
To Thanh Binh and Ulrich Korn. “MOBES: A multiobjective evolution strategy for constrained optimization problems.” The third international conference on genetic algorithms (Mendel 97). Vol. 25. 1997.
- constraint(x: ndarray) ndarray[source]
Evaluate the constraint function at the given point.
- Parameters:
x (np.ndarray) – The point at which to evaluate the constraint function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
The boolean values indicating whether the point is valid or not. The output value is a numpy array of shape (n,), where n is the number of points.
- Return type:
np.ndarray
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Schaffer1(min_X: ndarray | list[float] | float = -10.0, max_X: ndarray | list[float] | float = 10.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionSchaffer’s first function.
\[\begin{split}\text{Minimize} \begin{cases} f_1(x) = x^2 \\ f_2(x) = (x - 2)^2 \end{cases}\end{split}\]The Pareto-optimal set is \(x \in [0, 2]\).
- Parameters:
min_X (np.ndarray | list[float] | float, default=-10.0) – Minimum value of the search space \(x_{\min}\).
max_X (np.ndarray | list[float] | float, default=10.0) – Maximum value of the search space \(x_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
Deb (2001) uses the search space \(-A \le x \le A\) with \(A\) from \(10\) to \(10^5\); a larger \(A\) makes the problem harder because the Pareto-optimal set becomes relatively smaller. The default corresponds to \(A = 10\). The reference box is computed from
min_Xandmax_X(the range of each objective over the search space), so it stays consistent for any \(A\).References
Schaffer, J. David. “Multiple objective optimization with vector evaluated genetic algorithms.” Proceedings of the first international conference on genetic algorithms and their applications. Psychology Press, 2014.
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.Schaffer2(min_X: ndarray | list[float] | float = -5.0, max_X: ndarray | list[float] | float = 10.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionSchaffer’s second function.
\[\begin{split}\text{Minimize} \begin{cases} f_1(x) = \begin{cases} -x & \text{if } x \leq 1.0 \\ x - 2 & \text{if } 1.0 < x \leq 3.0 \\ 4 - x & \text{if } 3.0 < x \leq 4.0 \\ x - 4 & \text{if } x > 4.0 \end{cases} \\ f_2(x) = (x - 5)^2 \end{cases}\end{split}\]- Parameters:
min_X (np.ndarray | list[float] | float, default=-5.0) – Minimum value of the search space \(x_{\min}\).
max_X (np.ndarray | list[float] | float, default=10.0) – Maximum value of the search space \(x_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
The search space \(-5 \le x \le 10\) follows Deb (2001).
References
Schaffer, J. David. “Multiple objective optimization with vector evaluated genetic algorithms.” Proceedings of the first international conference on genetic algorithms and their applications. Psychology Press, 2014.
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.VLMOP1(min_X: ndarray | list[float] | float = -10.0, max_X: ndarray | list[float] | float = 10.0, test_maximizer: bool = True)[source]
Bases:
Schaffer1VL’s first function (so-called VLMOP1).
This is an alias of
Schaffer1(MOP1 in Van Veldhuizen and Lamont (1999)). The numbering follows Van Veldhuizen and Lamont (1999); Van Veldhuizen’s Ph.D. thesis (1999) numbers the problems differently. SeeSchaffer1for the definition and the arguments.References
David A. van Veldhuizen and Gary B. Lamont. 1999. Multiobjective evolutionary algorithm test suites. In Proceedings of the 1999 ACM symposium on Applied computing (SAC ‘99). Association for Computing Machinery, New York, NY, USA, 351-357. https://doi.org/10.1145/298151.298382
- class physbo.test_functions.multi_objective.VLMOP2(dim: int = 2, min_X: ndarray | list[float] | float = -2.0, max_X: ndarray | list[float] | float = 2.0, test_maximizer: bool = True)[source]
Bases:
FonsecaFlemingVL’s second function (so-called VLMOP2).
This is an alias of
FonsecaFleming(MOP2 in Van Veldhuizen and Lamont (1999)) with the search space \(-2 \le x_i \le 2\) used there (FonsecaFlemingitself defaults to \(-4 \le x_i \le 4\)). The numbering follows Van Veldhuizen and Lamont (1999); Van Veldhuizen’s Ph.D. thesis (1999) numbers the problems differently. SeeFonsecaFlemingfor the definition.- Parameters:
dim (int, default=2) – Number of dimensions \(N\).
min_X (np.ndarray | list[float] | float, default=-2.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=2.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem.
References
David A. van Veldhuizen and Gary B. Lamont. 1999. Multiobjective evolutionary algorithm test suites. In Proceedings of the 1999 ACM symposium on Applied computing (SAC ‘99). Association for Computing Machinery, New York, NY, USA, 351-357. https://doi.org/10.1145/298151.298382
- class physbo.test_functions.multi_objective.VLMOP3(min_X: ndarray | list[float] | float = -3.0, max_X: ndarray | list[float] | float = 3.0, test_maximizer: bool = True)[source]
Bases:
ViennetVL’s third function (so-called VLMOP3).
This is an alias of
Viennet(MOP3 in Van Veldhuizen and Lamont (1999)). The numbering follows Van Veldhuizen and Lamont (1999); Van Veldhuizen’s Ph.D. thesis (1999) numbers the problems differently (this problem is MOP5 there). SeeViennetfor the definition and the arguments.References
David A. van Veldhuizen and Gary B. Lamont. 1999. Multiobjective evolutionary algorithm test suites. In Proceedings of the 1999 ACM symposium on Applied computing (SAC ‘99). Association for Computing Machinery, New York, NY, USA, 351-357. https://doi.org/10.1145/298151.298382
- class physbo.test_functions.multi_objective.Viennet(min_X: ndarray | list[float] | float = -3.0, max_X: ndarray | list[float] | float = 3.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionViennet’s function (the third test problem of Viennet et al. (1996)).
\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 0.5 (x_1^2 + x_2^2) + \sin(x_1^2 + x_2^2) \\ f_2(\boldsymbol{x}) = (3 x_1 - 2 x_2 + 4)^2 / 8 + (x_1 - x_2 + 1)^2 / 27 + 15 \\ f_3(\boldsymbol{x}) = 1 / (x_1^2 + x_2^2 + 1) - 1.1 \exp(-(x_1^2 + x_2^2)) \end{cases}\end{split}\]- Parameters:
min_X (np.ndarray | list[float] | float, default=-3.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=3.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
Note
Viennet et al. (1996) propose several test problems; this is the third one. It is listed as MOP3 in Van Veldhuizen and Lamont (1999) (hence
VLMOP3) and as MOP5 in Van Veldhuizen (1999). The objectives and the search space \(-3 \le x_i \le 3\) are as in Viennet et al. (1996); Deb (2001) uses the same search space.References
Viennet, R., Fonteix, C., Marc, I., “Multicriteria Optimization Using a Genetic Algorithm for Determining a Pareto Set,” International Journal of Systems Science 27(2), 255-260 (1996).
Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.ZDT1(dim: int = 30, min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionZDT’s first function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = g(\boldsymbol{x}) h(f_1(\boldsymbol{x}), g(\boldsymbol{x})) \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(\boldsymbol{x}) = 1 + 9 \sum_{i=2}^{N} x_i / (N - 1) \\ h(f1(\boldsymbol{x}), g(\boldsymbol{x})) = 1 - \sqrt{f_1(\boldsymbol{x}) / g(\boldsymbol{x})} \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
dim (int, default=30) – Dimension of the problem \(N\).
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Zitzler, E., Deb, K., and Thiele, L., “Comparison of Multiobjective Evolutionary Algorithms: Empirical Results,” Evolutionary Computation 8(2), 173-195 (2000). doi: 10.1162/106365600568202.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.ZDT2(dim: int = 30, min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionZDT’s second function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = g(\boldsymbol{x}) h(f_1(\boldsymbol{x}), g(\boldsymbol{x})) \\ \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(\boldsymbol{x}) = 1 + 9 \sum_{i=2}^{N} x_i / (N - 1) \\ h(f_1(\boldsymbol{x}), g(\boldsymbol{x})) = 1 - \left(f_1(\boldsymbol{x}) / g(\boldsymbol{x})\right)^2 \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
dim (int, default=30) – Dimension of the problem \(N\).
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Zitzler, E., Deb, K., and Thiele, L., “Comparison of Multiobjective Evolutionary Algorithms: Empirical Results,” Evolutionary Computation 8(2), 173-195 (2000). doi: 10.1162/106365600568202.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.ZDT3(dim: int = 30, min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionZDT’s third function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = g(\boldsymbol{x}) h(f_1(\boldsymbol{x}), g(\boldsymbol{x})) \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(\boldsymbol{x}) = 1 + 9 \sum_{i=2}^{N} x_i / (N - 1) \\ h(\boldsymbol{x}) = 1 - \sqrt{f_1(\boldsymbol{x}) / g(\boldsymbol{x})} - \frac{f_1(\boldsymbol{x})}{g(\boldsymbol{x})} \sin(10 \pi f_1(\boldsymbol{x})) \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
dim (int, default=30) – Dimension of the problem \(N\).
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Zitzler, E., Deb, K., and Thiele, L., “Comparison of Multiobjective Evolutionary Algorithms: Empirical Results,” Evolutionary Computation 8(2), 173-195 (2000). doi: 10.1162/106365600568202.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.ZDT4(dim: int = 10, min_X: None | ndarray | list[float] | float = None, max_X: None | ndarray | list[float] | float = None, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionZDT’s fourth function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 \\ f_2(\boldsymbol{x}) = g(\boldsymbol{x}) h(f_1(\boldsymbol{x}), g(\boldsymbol{x})) \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(\boldsymbol{x}) = 1 + 10 (N - 1) + \sum_{i=2}^{N} \left(x_i^2 - 10 \cos(4 \pi x_i)\right) \\ h(\boldsymbol{x}) = 1 - \sqrt{\frac{f_1(\boldsymbol{x})}{g(\boldsymbol{x})}} \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
dim (int, default=10) – Dimension of the problem \(N\).
min_X (np.ndarray | list[float] | float) – Minimum value of the search space \(\boldsymbol{x}_{\min}\). Default is x_1 = 0.0 and x_i = -5.0 for i = 2, …, N.
max_X (np.ndarray | list[float] | float) – Maximum value of the search space \(\boldsymbol{x}_{\max}\). Default is x_1 = 1.0 and x_i = 5.0 for i = 2, …, N.
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Zitzler, E., Deb, K., and Thiele, L., “Comparison of Multiobjective Evolutionary Algorithms: Empirical Results,” Evolutionary Computation 8(2), 173-195 (2000). doi: 10.1162/106365600568202.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray
- class physbo.test_functions.multi_objective.ZDT6(dim: int = 10, min_X: ndarray | list[float] | float = 0.0, max_X: ndarray | list[float] | float = 1.0, test_maximizer: bool = True)[source]
Bases:
MultiTestFunctionZDT’s sixth function.
\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 1 - \exp(-4 x_1) \sin^6(6 \pi x_1) \\ f_2(\boldsymbol{x}) = g(\boldsymbol{x}) h(f_1(\boldsymbol{x}), g(\boldsymbol{x})) \end{cases}\end{split}\\\begin{split}\text{where} \begin{cases} g(\boldsymbol{x}) = 1 + 9 \left(\sum_{i=2}^{N} x_i / (N - 1)\right)^{0.25} \\ h(\boldsymbol{x}) = 1 - \left(\frac{f_1(\boldsymbol{x})}{g(\boldsymbol{x})}\right)^2 \end{cases}\end{split}\end{aligned}\end{align} \]- Parameters:
dim (int, default=10) – Dimension of the problem \(N\).
min_X (np.ndarray | list[float] | float, default=0.0) – Minimum value of the search space \(\boldsymbol{x}_{\min}\).
max_X (np.ndarray | list[float] | float, default=1.0) – Maximum value of the search space \(\boldsymbol{x}_{\max}\).
test_maximizer (bool, default=True) – If True, the returned values are negated to describe a maximization problem. If False, they describe the minimization problem as defined above.
References
Zitzler, E., Deb, K., and Thiele, L., “Comparison of Multiobjective Evolutionary Algorithms: Empirical Results,” Evolutionary Computation 8(2), 173-195 (2000). doi: 10.1162/106365600568202.
- f(x: ndarray) ndarray[source]
Evaluate the test function at the given point.
fis written in the sense of the reference (see_is_maximization); the conversion to the requested sense is done by__call__.- Parameters:
x (np.ndarray) – The point at which to evaluate the test function. x is a numpy array of shape (n, d), where n is the number of points and d is the dimension of the input space.
- Returns:
f – The value of the test function at the given point. The output value is a numpy array of shape (n, k), where k is the number of objectives.
- Return type:
np.ndarray