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)[ソース]

ベースクラス: MultiTestFunction

Binh'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]\).

パラメータ:
  • 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 treated Binh1 as an alias of BinhKorn.

参考文献

To Thanh Binh. (1999). A Multiobjective Evolutionary Algorithm: The Study Cases. Technical report, Institute for Automation and Communication, Barleben, Germany.

f(x: ndarray) → ndarray[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: SRN

Binh'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. See SRN for the definition and the arguments.

参考文献

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)[ソース]

ベースクラス: FonsecaFleming

Binh's third function.

This is an alias of FonsecaFleming (the \(N\)-variable form). Binh (1999) does not state the search space; the default of FonsecaFleming is used. See FonsecaFleming for the definition and the arguments.

参考文献

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)[ソース]

ベースクラス: KitaYabumotoMoriNishikawa

Binh's fourth function.

This is an alias of KitaYabumotoMoriNishikawa; Binh (1999) quotes the problem as a maximization problem as in Kita et al. (1996). See KitaYabumotoMoriNishikawa for the definition and the arguments.

参考文献

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)[ソース]

ベースクラス: MultiTestFunction

Binh'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\).

パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Binh'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}\]
パラメータ:
  • 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\).

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Binh'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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Binh'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} \]
パラメータ:
  • 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).

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Binh-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\).

パラメータ:
  • 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). Binh1 has the same objectives but no constraints and a different search space, and is therefore a different problem.

参考文献

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[ソース]

Evaluate the constraint function at the given point.

パラメータ:

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.

戻り値:

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.

戻り値の型:

np.ndarray

f(x: ndarray) → ndarray[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: SRN

Chankong-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)). See SRN for the definition and the arguments.

参考文献

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)[ソース]

ベースクラス: 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} \]
パラメータ:
  • 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.

参考文献

Kalyanmoy Deb; Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.

constraint(x: ndarray) → ndarray[ソース]

Evaluate the constraint function at the given point.

パラメータ:

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.

戻り値:

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.

戻り値の型:

np.ndarray

f(x: ndarray) → ndarray[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Fonseca 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}]\).

パラメータ:
  • 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). VLMOP2 is the same function with the search space \(-2 \le x_i \le 2\) used by Van Veldhuizen and Lamont (1999).

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Gaussian 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)\]
パラメータ:
  • 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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Kita-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\).

パラメータ:
  • 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]\).

参考文献

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[ソース]

Evaluate the constraint function at the given point.

パラメータ:

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.

戻り値:

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.

戻り値の型:

np.ndarray

f(x: ndarray) → ndarray[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Kursawe'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}\]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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).

戻り値:

The reference maximum values of the test function.

戻り値の型:

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).

戻り値:

The reference minimum values of the test function.

戻り値の型:

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)[ソース]

ベースクラス: 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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the constraint function at the given point.

パラメータ:

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.

戻り値:

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.

戻り値の型:

np.ndarray

f(x: ndarray) → ndarray[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

Poloni'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} \]
パラメータ:
  • 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=False returns. Listed as MOP3 in Van Veldhuizen (1999).

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: MultiTestFunction

SRN (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} \]
パラメータ:
  • 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; ChankongHaimes is an alias. It is also test case 1 of Binh and Korn (1997) and the second study case of Binh (1999) (Binh2).

参考文献

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[ソース]

Evaluate the constraint function at the given point.

パラメータ:

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.

戻り値:

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.

戻り値の型:

np.ndarray

f(x: ndarray) → ndarray[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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}\]

The Pareto-optimal set is \(x \in [0, 2]\).

パラメータ:
  • 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_X and max_X (the range of each objective over the search space), so it stays consistent for any \(A\).

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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}\]
パラメータ:
  • 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).

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: Schaffer1

VL'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. See Schaffer1 for the definition and the arguments.

参考文献

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)[ソース]

ベースクラス: FonsecaFleming

VL'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 (FonsecaFleming itself 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. See FonsecaFleming for the definition.

パラメータ:
  • 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.

参考文献

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)[ソース]

ベースクラス: Viennet

VL'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). See Viennet for the definition and the arguments.

参考文献

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)[ソース]

ベースクラス: MultiTestFunction

Viennet'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}\]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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(\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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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(\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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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(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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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(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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

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)[ソース]

ベースクラス: 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(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} \]
パラメータ:
  • 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.

参考文献

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[ソース]

Evaluate the test function at the given point.

f is written in the sense of the reference (see _is_maximization); the conversion to the requested sense is done by __call__.

パラメータ:

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.

戻り値:

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.

戻り値の型:

np.ndarray