physbo.test_functions.multi_objective module

physbo.test_functions.multi_objective.Binh1

Binh’s first function.

This is an alias of BinhKorn.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

physbo.test_functions.multi_objective.Binh2

Binh’s second function.

This is an alias of ChankongHaimes.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

physbo.test_functions.multi_objective.Binh3

Binh’s third function.

This is an alias of FonsecaFleming.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

physbo.test_functions.multi_objective.Binh4

Binh’s fourth function.

This is an alias of KitaYabumotoMoriNishikawa.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

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: MultiTestFunction

Binh’s fifth function.

\[\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}\]
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 test function is negated for testing a maximization problem solver.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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 = -5.0, max_X: ndarray | list[float] | float = 5.0, test_maximizer: bool = True)[source]

Bases: MultiTestFunction

Binh’s sixth 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_4)}{f_1(\boldsymbol{x})} \end{cases},\quad \text{where}\quad g(x) = 100 (x_4 - x_3^2)^2 + (1 - x_3)^2 + 2\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 test function is negated for testing a maximization problem solver.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

Binh’s eighth function.

\[\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = x_1 + x_2 \\ f_2(\boldsymbol{x}) = 1 - \exp(-4 x_1) \sin(5 \pi x_1)^4 \end{cases}\end{split}\]
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 test function is negated for testing a maximization problem solver.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

Binh’s ninth function.

\[ \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 test function is negated for testing a maximization problem solver.

References

To, Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm The Study Cases.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

Binh-Korn’s function.

\[ \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} \]
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 test function is negated for testing a maximization problem solver.

References

Binh, To Thanh, 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.

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: MultiTestFunction

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 test function is negated for testing a maximization problem solver.

References

Chankong, V., and Haimes, Y. Y., “Multiobjective decision making: Theory and method”, North-Holland series in system science and engineering, 1983.

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.

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.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: MultiTestFunction

ConstrEX 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 test function is negated for testing a maximization problem solver.

References

Deb, K. (2011). Multi-objective Optimisation Using Evolutionary Algorithms: An Introduction. In: Wang, L., Ng, A., Deb, K. (eds) Multi-objective Evolutionary Optimisation for Product Design and Manufacturing. Springer, London. https://doi.org/10.1007/978-0-85729-652-8_1

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.

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 = -2.0, max_X: ndarray | list[float] | float = 2.0, test_maximizer: bool = True)[source]

Bases: MultiTestFunction

Fonseca and Fleming’s function.

\[\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}\]
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 test function is negated for testing a maximization problem solver.

References

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

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

Gaussian function.

\[\text{Minimize}\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 test function is negated for testing a maximization problem solver.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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 = -7.0, max_X: ndarray | list[float] | float = 4.0, test_maximizer: bool = True)[source]

Bases: MultiTestFunction

Kita-Yabumoto-Mori-Nishikawa’s function.

\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \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}) = 6.5 - \frac{x_1}{6} - x_2 \ge 0 \\ g_2(\boldsymbol{x}) = 7.5 - \frac{x_1}{2} - x_2 \ge 0 \\ g_3(\boldsymbol{x}) = 30 - 5 x_1 - x_2 \ge 0 \end{cases}\end{split}\end{aligned}\end{align} \]
Parameters:
  • min_X (np.ndarray | list[float] | float, default=-7.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 test function is negated for testing a maximization problem solver.

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

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.

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: MultiTestFunction

Kursawe’s function.

\[\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 test function is negated for testing a maximization problem solver.

References

  1. Kursawe, “A variant of evolution strategies for vector optimization,” in PPSN I, Vol 496 Lect Notes in Comput Sci. Springer-Verlag, 1991, pp. 193-197.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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

Initialize the test function.

Parameters:
  • nobj (int) – Number of objectives.

  • dim (int) – Number of dimensions.

  • min_X (np.ndarray | list[float] | float) – Minimum value of search space for each dimension.

  • max_X (np.ndarray | list[float] | float) – Maximum value of search space for each dimension.

  • test_maximizer (bool, default=True) – If True, the test function is negated for testing a maximization problem solver.

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.

Returns:

The reference maximum values of the test function.

Return type:

np.ndarray

Note

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.

Returns:

The reference minimum values of the test function.

Return type:

np.ndarray

Note

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: MultiTestFunction

Osyczka-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 test function is negated for testing a maximization problem solver.

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.

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: MultiTestFunction

Poloni’s function.

\[ \begin{align}\begin{aligned}\begin{split}\text{Minimize} \begin{cases} f_1(\boldsymbol{x}) = 1.0 + (a_1 - b_1(\boldsymbol{x}))^2 + (a_2 - b_2(\boldsymbol{x}))^2 \\ f_2(\boldsymbol{x}) = (x_1 + 3)^2 + (x_2 + 1)^2 \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 test function is negated for testing a maximization problem solver.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

Schaffer’s first function.

\[\begin{split}\text{Minimize} \begin{cases} f_1(x) = x^2 \\ f_2(x) = (x - 2)^2 \end{cases}\end{split}\]
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 test function is negated for testing a maximization problem solver.

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.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

Schaffer’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 test function is negated for testing a maximization problem solver.

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.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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

physbo.test_functions.multi_objective.VLMOP1

VL’s first function (so-called VLMOP1).

This is an alias of Schaffer1.

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

physbo.test_functions.multi_objective.VLMOP2

VL’s second function (so-called VLMOP2).

This is an alias of FonsecaFleming.

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

physbo.test_functions.multi_objective.VLMOP3

VL’s third function (so-called VLMOP3).

This is an alias of Viennet.

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: MultiTestFunction

Viennet’s function.

\[\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 test function is negated for testing a maximization problem solver.

References

Viennet, R., et al. “Multicriteria Optimization Using a Genetic Algorithm for Determining a Pareto Set,” International Journal of Systems Science 27(2), 255-260 (1996).

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

ZDT’s first function.

\[ \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 + 9 \sum_{i=2}^{N} x_i / (N - 1) \\ h(x_1, x_2) = 1 - \sqrt{f_1(\boldsymbol{x}) / g(x_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 test function is negated for testing a maximization problem solver.

References

  1. Deb, L. Thiele, M. Laumanns and E. Zitzler, “Scalable multi-objective optimization test problems,” Proceedings of the 2002 Congress on Evolutionary Computation. CEC’02 (Cat. No.02TH8600), Honolulu, HI, USA, 2002, pp. 825-830 vol.1, doi: 10.1109/CEC.2002.1007032.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

ZDT’s second function.

\[ \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 + 9 \sum_{i=2}^{N} x_i / (N - 1) \\ h(x_1, x_2) = 1 - \left(f_1(\boldsymbol{x}) / g(x_2)\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 test function is negated for testing a maximization problem solver.

References

  1. Deb, L. Thiele, M. Laumanns and E. Zitzler, “Scalable multi-objective optimization test problems,” Proceedings of the 2002 Congress on Evolutionary Computation. CEC’02 (Cat. No.02TH8600), Honolulu, HI, USA, 2002, pp. 825-830 vol.1, doi: 10.1109/CEC.2002.1007032.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

ZDT’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(\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 test function is negated for testing a maximization problem solver.

References

  1. Deb, L. Thiele, M. Laumanns and E. Zitzler, “Scalable multi-objective optimization test problems,” Proceedings of the 2002 Congress on Evolutionary Computation. CEC’02 (Cat. No.02TH8600), Honolulu, HI, USA, 2002, pp. 825-830 vol.1, doi: 10.1109/CEC.2002.1007032.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

ZDT’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(\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 test function is negated for testing a maximization problem solver.

References

  1. Deb, L. Thiele, M. Laumanns and E. Zitzler, “Scalable multi-objective optimization test problems,” Proceedings of the 2002 Congress on Evolutionary Computation. CEC’02 (Cat. No.02TH8600), Honolulu, HI, USA, 2002, pp. 825-830 vol.1, doi: 10.1109/CEC.2002.1007032.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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: MultiTestFunction

ZDT’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(\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 test function is negated for testing a maximization problem solver.

References

  1. Deb, L. Thiele, M. Laumanns and E. Zitzler, “Scalable multi-objective optimization test problems,” Proceedings of the 2002 Congress on Evolutionary Computation. CEC’02 (Cat. No.02TH8600), Honolulu, HI, USA, 2002, pp. 825-830 vol.1, doi: 10.1109/CEC.2002.1007032.

f(x: ndarray) ndarray[source]

Evaluate the test function at the given point.

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