Multi-objective Fonseca-Fleming example with the mNBI algorithm

In this example, the modified Normal Boundary Intersection algorithm (mNBI) is used to solve the FonsecaFleming optimization problem [FF95]:

\[\begin{split}\begin{aligned} \text{minimize the objective function } & f_1(x) = 1 - exp(-\sum_{i=1}^{d}((x_i - 1 / sqrt(d)) ^ 2)) \\ & f_2(x) = 1 + exp(-\sum_{i=1}^{d}((x_i + 1 / sqrt(d)) ^ 2)) \\ \text{with respect to the design variables }&x\\ \text{subject to the bound constraint} & x\in[-4,4]^d \end{aligned}\end{split}\]

We also show how the Pareto front can be refined.

from __future__ import annotations

from gemseo import configure_logger
from gemseo import execute_algo
from gemseo import execute_post
from gemseo.problems.multiobjective_optimization.fonseca_fleming import FonsecaFleming

configure_logger()
<RootLogger root (INFO)>

Solve the Fonseca-Fleming optimization problem

The 3 sub-optimization problems of mNBI are solved with SLSQP, a gradient-based optimization algorithm from the NLOPT library, with a maximum of 100 iterations. The analytic gradients are provided.

opt_problem = FonsecaFleming()
result = execute_algo(
    opt_problem,
    "MNBI",
    max_iter=1000,
    sub_optim_max_iter=100,
    n_sub_optim=3,
    sub_optim_algo="NLOPT_SLSQP",
)
INFO - 01:01:45: Optimization problem:
INFO - 01:01:45:    minimize FonsecaFleming
INFO - 01:01:45:    with respect to x
INFO - 01:01:45:    over the design space:
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45: Solving optimization problem with algorithm MNBI:
INFO - 01:01:45: Searching for the individual optimum of each objective
INFO - 01:01:45: Optimization problem:
INFO - 01:01:45:    minimize f_0
INFO - 01:01:45:    with respect to x
INFO - 01:01:45:    over the design space:
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:      1%|          | 6/1000 [00:00<00:02, 348.21 it/sec, obj=[3.45593287e-09 9.81688668e-01]]
INFO - 01:01:45:      1%|          | 7/1000 [00:00<00:02, 383.12 it/sec, obj=[0.         0.98168436]]
INFO - 01:01:45:      1%|          | 8/1000 [00:00<00:02, 414.68 it/sec, obj=[0.         0.98168436]]
INFO - 01:01:45:      1%|          | 9/1000 [00:00<00:02, 458.95 it/sec, obj=[0.         0.98168436]]
INFO - 01:01:45: Optimization result:
INFO - 01:01:45:    Optimizer info:
INFO - 01:01:45:       Status: None
INFO - 01:01:45:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
INFO - 01:01:45:       Number of calls to the objective function by the optimizer: 11
INFO - 01:01:45:    Solution:
INFO - 01:01:45:       Objective: 0.0
INFO - 01:01:45:       Design space:
INFO - 01:01:45:          +------+-------------+--------------------+-------------+-------+
INFO - 01:01:45:          | Name | Lower bound |       Value        | Upper bound | Type  |
INFO - 01:01:45:          +------+-------------+--------------------+-------------+-------+
INFO - 01:01:45:          | x[0] |      -4     | 0.577350268484795  |      4      | float |
INFO - 01:01:45:          | x[1] |      -4     | 0.577350268484795  |      4      | float |
INFO - 01:01:45:          | x[2] |      -4     | 0.5773502684847949 |      4      | float |
INFO - 01:01:45:          +------+-------------+--------------------+-------------+-------+
INFO - 01:01:45: Optimization problem:
INFO - 01:01:45:    minimize f_1
INFO - 01:01:45:    with respect to x
INFO - 01:01:45:    over the design space:
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:      1%|          | 10/1000 [00:00<00:03, 291.12 it/sec, obj=[0.95084904 0.06744148]]
INFO - 01:01:45:      1%|          | 11/1000 [00:00<00:03, 310.91 it/sec, obj=[0.99997026 0.77891095]]
INFO - 01:01:45:      1%|          | 12/1000 [00:00<00:02, 336.06 it/sec, obj=[0.98859846 0.01317993]]
INFO - 01:01:45:      1%|▏         | 13/1000 [00:00<00:02, 344.37 it/sec, obj=[9.81345634e-01 2.10356748e-05]]
INFO - 01:01:45:      1%|▏         | 14/1000 [00:00<00:02, 360.83 it/sec, obj=[9.81688668e-01 3.45593287e-09]]
INFO - 01:01:45:      2%|▏         | 15/1000 [00:00<00:02, 375.69 it/sec, obj=[0.98168436 0.        ]]
INFO - 01:01:45:      2%|▏         | 16/1000 [00:00<00:02, 390.69 it/sec, obj=[0.98168436 0.        ]]
INFO - 01:01:45:      2%|▏         | 17/1000 [00:00<00:02, 412.15 it/sec, obj=[0.98168436 0.        ]]
INFO - 01:01:45: Optimization result:
INFO - 01:01:45:    Optimizer info:
INFO - 01:01:45:       Status: None
INFO - 01:01:45:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
INFO - 01:01:45:       Number of calls to the objective function by the optimizer: 11
INFO - 01:01:45:    Solution:
INFO - 01:01:45:       Objective: 0.0
INFO - 01:01:45:       Design space:
INFO - 01:01:45:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:45:          | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:45:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:45:          | x[0] |      -4     |  -0.577350268484795 |      4      | float |
INFO - 01:01:45:          | x[1] |      -4     |  -0.577350268484795 |      4      | float |
INFO - 01:01:45:          | x[2] |      -4     | -0.5773502684847949 |      4      | float |
INFO - 01:01:45:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:45: Solving mNBI sub-problem for phi_beta = [0.49084218 0.49084218]
INFO - 01:01:45: Optimization problem:
INFO - 01:01:45:    minimize -t_extraction
INFO - 01:01:45:    with respect to t, x
INFO - 01:01:45:    subject to constraints:
INFO - 01:01:45:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:45:    over the design space:
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | t    |     -inf    |   0   |     inf     | float |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:      2%|▏         | 18/1000 [00:00<00:03, 309.14 it/sec, obj=[0.63212056 0.63212056]]
INFO - 01:01:45: Optimization result:
INFO - 01:01:45:    Optimizer info:
INFO - 01:01:45:       Status: None
INFO - 01:01:45:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:45:       Number of calls to the objective function by the optimizer: 4
INFO - 01:01:45:    Solution:
INFO - 01:01:45:       The solution is feasible.
INFO - 01:01:45:       Objective: 0.1439142599466381
INFO - 01:01:45:       Standardized constraints:
INFO - 01:01:45:          beta_sub_optim_constraint = [ 8.32667268e-17 -1.38777878e-16]
INFO - 01:01:45:       Design space:
INFO - 01:01:45:          +------+-------------+------------------------+-------------+-------+
INFO - 01:01:45:          | Name | Lower bound |         Value          | Upper bound | Type  |
INFO - 01:01:45:          +------+-------------+------------------------+-------------+-------+
INFO - 01:01:45:          | x[0] |      -4     | -6.407485192731112e-17 |      4      | float |
INFO - 01:01:45:          | x[1] |      -4     | -6.407485192731112e-17 |      4      | float |
INFO - 01:01:45:          | x[2] |      -4     | -6.407485192731112e-17 |      4      | float |
INFO - 01:01:45:          | t    |     -inf    |  -0.1439142599466381   |     inf     | float |
INFO - 01:01:45:          +------+-------------+------------------------+-------------+-------+
INFO - 01:01:45:      2%|▏         | 19/1000 [00:00<00:04, 239.98 it/sec, obj=[0.63212056 0.63212056]]
INFO - 01:01:45: Optimization result:
INFO - 01:01:45:    Optimizer info:
INFO - 01:01:45:       Status: None
INFO - 01:01:45:       Message: None
INFO - 01:01:45:       Number of calls to the objective function by the optimizer: 26
INFO - 01:01:45:    Solution:
INFO - 01:01:45:       Objective: 0.8939534673502061
INFO - 01:01:45:    Pareto efficient solutions:
INFO - 01:01:45:       Pareto optimal points : 6 / 19
INFO - 01:01:45:       Utopia point : [0. 0.]
INFO - 01:01:45:       Compromise solution (closest to utopia) : [[0.06744148 0.95084904]
INFO - 01:01:45:        [0.95084904 0.06744148]]
INFO - 01:01:45:       Distance from utopia : 0.9532377715846151
INFO - 01:01:45:       Objective values:
INFO - 01:01:45:          +------+----------+----------+-----------+-----------+
INFO - 01:01:45:          | name |        1 |        2 |         3 |         4 |
INFO - 01:01:45:          +------+----------+----------+-----------+-----------+
INFO - 01:01:45:          |    1 |        0 | 0.981684 | 0.0674415 |  0.950849 |
INFO - 01:01:45:          |    2 | 0.981684 |        0 |  0.950849 | 0.0674415 |
INFO - 01:01:45:          +------+----------+----------+-----------+-----------+
INFO - 01:01:45:       Design space:
INFO - 01:01:45:          +-------+-------------+---------+----------+----------+-----------+-------------+-------+
INFO - 01:01:45:          |  name | lower_bound |       1 |        2 |        3 |         4 | upper_bound |  type |
INFO - 01:01:45:          +-------+-------------+---------+----------+----------+-----------+-------------+-------+
INFO - 01:01:45:          | x (1) |          -4 | 0.57735 | -0.57735 | 0.424791 | -0.424791 |           4 | float |
INFO - 01:01:45:          | x (2) |          -4 | 0.57735 | -0.57735 | 0.424791 | -0.424791 |           4 | float |
INFO - 01:01:45:          | x (3) |          -4 | 0.57735 | -0.57735 | 0.424791 | -0.424791 |           4 | float |
INFO - 01:01:45:          +-------+-------------+---------+----------+----------+-----------+-------------+-------+

Display the Pareto front

GEMSEO detects the Pareto optimal points and the dominated ones. The Fonseca-Fleming problem is interesting because its Pareto front is not convex. The mNBI algorithm successfully computes it.

execute_post(opt_problem, "ParetoFront", save=False, show=True)
Pareto front
<gemseo.post.pareto_front.ParetoFront object at 0x7f1191ed4760>

Solve the Fonseca-Fleming optimization problem more finely

The Pareto front is then refined with 10 sub-optimizations instead of 3.

opt_problem = FonsecaFleming()
result = execute_algo(
    opt_problem,
    "MNBI",
    max_iter=1000,
    sub_optim_max_iter=100,
    n_sub_optim=10,
    sub_optim_algo="NLOPT_SLSQP",
)
INFO - 01:01:45: Optimization problem:
INFO - 01:01:45:    minimize FonsecaFleming
INFO - 01:01:45:    with respect to x
INFO - 01:01:45:    over the design space:
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:45:       +------+-------------+-------+-------------+-------+
INFO - 01:01:45: Solving optimization problem with algorithm MNBI:
INFO - 01:01:45: Searching for the individual optimum of each objective
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize f_0
INFO - 01:01:46:    with respect to x
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:      1%|          | 6/1000 [00:00<00:02, 354.40 it/sec, obj=[3.45593287e-09 9.81688668e-01]]
INFO - 01:01:46:      1%|          | 7/1000 [00:00<00:02, 389.58 it/sec, obj=[0.         0.98168436]]
INFO - 01:01:46:      1%|          | 8/1000 [00:00<00:02, 421.22 it/sec, obj=[0.         0.98168436]]
INFO - 01:01:46:      1%|          | 9/1000 [00:00<00:02, 466.70 it/sec, obj=[0.         0.98168436]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 11
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       Objective: 0.0
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+--------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |       Value        | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+--------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     | 0.577350268484795  |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     | 0.577350268484795  |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     | 0.5773502684847949 |      4      | float |
INFO - 01:01:46:          +------+-------------+--------------------+-------------+-------+
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize f_1
INFO - 01:01:46:    with respect to x
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:      1%|          | 10/1000 [00:00<00:03, 293.76 it/sec, obj=[0.95084904 0.06744148]]
INFO - 01:01:46:      1%|          | 11/1000 [00:00<00:03, 313.66 it/sec, obj=[0.99997026 0.77891095]]
INFO - 01:01:46:      1%|          | 12/1000 [00:00<00:02, 339.04 it/sec, obj=[0.98859846 0.01317993]]
INFO - 01:01:46:      1%|▏         | 13/1000 [00:00<00:02, 347.21 it/sec, obj=[9.81345634e-01 2.10356748e-05]]
INFO - 01:01:46:      1%|▏         | 14/1000 [00:00<00:02, 363.67 it/sec, obj=[9.81688668e-01 3.45593287e-09]]
INFO - 01:01:46:      2%|▏         | 15/1000 [00:00<00:02, 378.71 it/sec, obj=[0.98168436 0.        ]]
INFO - 01:01:46:      2%|▏         | 16/1000 [00:00<00:02, 393.78 it/sec, obj=[0.98168436 0.        ]]
INFO - 01:01:46:      2%|▏         | 17/1000 [00:00<00:02, 415.37 it/sec, obj=[0.98168436 0.        ]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 11
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       Objective: 0.0
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     |  -0.577350268484795 |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     |  -0.577350268484795 |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     | -0.5773502684847949 |      4      | float |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.87260832 0.10907604]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound | Value | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     |   0   |      4      | float |
INFO - 01:01:46:       | t    |     -inf    |   0   |     inf     | float |
INFO - 01:01:46:       +------+-------------+-------+-------------+-------+
INFO - 01:01:46:      2%|▏         | 18/1000 [00:00<00:03, 312.32 it/sec, obj=[0.90043834 0.20664322]]
INFO - 01:01:46:      2%|▏         | 19/1000 [00:00<00:03, 322.20 it/sec, obj=[0.91873293 0.15869784]]
INFO - 01:01:46:      2%|▏         | 20/1000 [00:00<00:02, 331.40 it/sec, obj=[0.91966962 0.15614908]]
INFO - 01:01:46:      2%|▏         | 21/1000 [00:00<00:02, 340.58 it/sec, obj=[0.91967277 0.15614049]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 7
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.04794255057736304
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [-9.53889745e-14  1.10154941e-13]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     | -0.3394642613023262  |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     | -0.3394642613023261  |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     |  -0.339464261302326  |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.04794255057736304 |     inf     | float |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.76353228 0.21815208]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     | -0.3394642613023262  |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     | -0.3394642613023261  |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     |  -0.339464261302326  |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.04794255057736304 |     inf     | float |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:      2%|▏         | 22/1000 [00:00<00:03, 283.62 it/sec, obj=[0.91967277 0.15614049]]
INFO - 01:01:46:      2%|▏         | 23/1000 [00:00<00:03, 291.91 it/sec, obj=[0.84203912 0.33739501]]
INFO - 01:01:46:      2%|▏         | 24/1000 [00:00<00:03, 299.92 it/sec, obj=[0.85527677 0.31046303]]
INFO - 01:01:46:      2%|▎         | 25/1000 [00:00<00:03, 307.21 it/sec, obj=[0.85546004 0.31007996]]
INFO - 01:01:46:      3%|▎         | 26/1000 [00:00<00:03, 314.40 it/sec, obj=[0.85546008 0.31007988]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 8
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.09364292443480814
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [ 1.03119223e-09 -4.66331571e-10]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     | -0.2256025149680226  |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     | -0.2256025149680226  |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     | -0.2256025149680226  |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.09364292443480814 |     inf     | float |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.65445624 0.32722812]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     | -0.2256025149680226  |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     | -0.2256025149680226  |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     | -0.2256025149680226  |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.09364292443480814 |     inf     | float |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:      3%|▎         | 27/1000 [00:00<00:03, 273.89 it/sec, obj=[0.85546008 0.31007987]]
INFO - 01:01:46:      3%|▎         | 28/1000 [00:00<00:03, 280.37 it/sec, obj=[0.77161692 0.45984451]]
INFO - 01:01:46:      3%|▎         | 29/1000 [00:00<00:03, 286.30 it/sec, obj=[0.77767797 0.45048948]]
INFO - 01:01:46:      3%|▎         | 30/1000 [00:00<00:03, 292.10 it/sec, obj=[0.77769345 0.45046533]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 6
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.1255364934686558
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [-9.90765803e-12 -5.96217520e-13]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     | -0.1306276041616624 |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     | -0.1306276041616625 |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     | -0.1306276041616625 |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.1255364934686558 |     inf     | float |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.5453802  0.43630416]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     | -0.1306276041616624 |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     | -0.1306276041616625 |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     | -0.1306276041616625 |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.1255364934686558 |     inf     | float |
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:      3%|▎         | 31/1000 [00:00<00:03, 261.24 it/sec, obj=[0.77769345 0.45046533]]
INFO - 01:01:46:      3%|▎         | 32/1000 [00:00<00:03, 266.33 it/sec, obj=[0.68170374 0.57895294]]
INFO - 01:01:46:      3%|▎         | 33/1000 [00:00<00:03, 271.58 it/sec, obj=[0.68463821 0.57556413]]
INFO - 01:01:46:      3%|▎         | 34/1000 [00:00<00:03, 276.68 it/sec, obj=[0.68463912 0.57556308]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 6
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.14185712248151133
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [1.02950981e-12 4.25381952e-13]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     | -0.04287486268043029 |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     | -0.04287486268043034 |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     | -0.04287486268043035 |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.1418571224815113  |     inf     | float |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.43630416 0.5453802 ]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     | -0.04287486268043029 |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     | -0.04287486268043034 |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     | -0.04287486268043035 |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.1418571224815113  |     inf     | float |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:      4%|▎         | 35/1000 [00:00<00:03, 251.52 it/sec, obj=[0.68463912 0.57556308]]
INFO - 01:01:46:      4%|▎         | 36/1000 [00:00<00:03, 256.02 it/sec, obj=[0.57513103 0.68501143]]
INFO - 01:01:46:      4%|▎         | 37/1000 [00:00<00:03, 260.58 it/sec, obj=[0.5755631 0.6846391]]
INFO - 01:01:46:      4%|▍         | 38/1000 [00:00<00:03, 264.93 it/sec, obj=[0.57556308 0.68463912]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 7
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.14185712248204044
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [1.42996726e-13 3.05810932e-13]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     | 0.04287486268025626 |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     | 0.04287486268025616 |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     | 0.04287486268025619 |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.1418571224820404 |     inf     | float |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.32722812 0.65445624]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     | 0.04287486268025626 |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     | 0.04287486268025616 |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     | 0.04287486268025619 |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.1418571224820404 |     inf     | float |
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:      4%|▍         | 39/1000 [00:00<00:03, 244.25 it/sec, obj=[0.57556308 0.68463912]]
INFO - 01:01:46:      4%|▍         | 40/1000 [00:00<00:03, 248.25 it/sec, obj=[0.45294727 0.77609783]]
INFO - 01:01:46:      4%|▍         | 41/1000 [00:00<00:03, 252.26 it/sec, obj=[0.45046707 0.77769234]]
INFO - 01:01:46:      4%|▍         | 42/1000 [00:00<00:03, 256.13 it/sec, obj=[0.45046533 0.77769345]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 6
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.1255364934616085
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [1.48561718e-13 9.68516933e-13]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     |  0.1306276041658536 |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     |  0.1306276041658536 |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     |  0.1306276041658536 |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.1255364934616085 |     inf     | float |
INFO - 01:01:46:          +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.21815208 0.76353228]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value        | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     |  0.1306276041658536 |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     |  0.1306276041658536 |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     |  0.1306276041658536 |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.1255364934616085 |     inf     | float |
INFO - 01:01:46:       +------+-------------+---------------------+-------------+-------+
INFO - 01:01:46:      4%|▍         | 43/1000 [00:00<00:04, 238.46 it/sec, obj=[0.45046533 0.77769345]]
INFO - 01:01:46:      4%|▍         | 44/1000 [00:00<00:03, 242.06 it/sec, obj=[0.31697497 0.85214023]]
INFO - 01:01:46:      4%|▍         | 45/1000 [00:00<00:03, 245.63 it/sec, obj=[0.31010616 0.85544751]]
INFO - 01:01:46:      5%|▍         | 46/1000 [00:00<00:03, 249.08 it/sec, obj=[0.31007988 0.85546008]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 6
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.09364292499323551
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [ 8.56675841e-13 -2.60819144e-12]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     |  0.225602514270673   |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     |  0.2256025142706731  |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     |  0.225602514270673   |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.09364292499323551 |     inf     | float |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46: Solving mNBI sub-problem for phi_beta = [0.10907604 0.87260832]
INFO - 01:01:46: Optimization problem:
INFO - 01:01:46:    minimize -t_extraction
INFO - 01:01:46:    with respect to t, x
INFO - 01:01:46:    subject to constraints:
INFO - 01:01:46:       beta_sub_optim_constraint <= 0.0
INFO - 01:01:46:    over the design space:
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:       | x[0] |      -4     |  0.225602514270673   |      4      | float |
INFO - 01:01:46:       | x[1] |      -4     |  0.2256025142706731  |      4      | float |
INFO - 01:01:46:       | x[2] |      -4     |  0.225602514270673   |      4      | float |
INFO - 01:01:46:       | t    |     -inf    | -0.09364292499323551 |     inf     | float |
INFO - 01:01:46:       +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:      5%|▍         | 47/1000 [00:00<00:04, 233.57 it/sec, obj=[0.31007988 0.85546008]]
INFO - 01:01:46:      5%|▍         | 48/1000 [00:00<00:04, 236.97 it/sec, obj=[0.17146323 0.91399085]]
INFO - 01:01:46:      5%|▍         | 49/1000 [00:00<00:03, 240.28 it/sec, obj=[0.15642562 0.91956815]]
INFO - 01:01:46:      5%|▌         | 50/1000 [00:00<00:03, 243.35 it/sec, obj=[0.1561406  0.91967273]]
INFO - 01:01:46:      5%|▌         | 51/1000 [00:00<00:03, 246.45 it/sec, obj=[0.15614049 0.91967277]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: Successive iterates of the design variables are closer than xtol_rel or xtol_abs. GEMSEO Stopped the driver
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 7
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       The solution is feasible.
INFO - 01:01:46:       Objective: 0.04794255057731033
INFO - 01:01:46:       Standardized constraints:
INFO - 01:01:46:          beta_sub_optim_constraint = [-1.83464355e-14  2.24126273e-14]
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | Name | Lower bound |        Value         | Upper bound | Type  |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:          | x[0] |      -4     |  0.3394642613024756  |      4      | float |
INFO - 01:01:46:          | x[1] |      -4     |  0.3394642613024756  |      4      | float |
INFO - 01:01:46:          | x[2] |      -4     |  0.3394642613024756  |      4      | float |
INFO - 01:01:46:          | t    |     -inf    | -0.04794255057731033 |     inf     | float |
INFO - 01:01:46:          +------+-------------+----------------------+-------------+-------+
INFO - 01:01:46:      5%|▌         | 52/1000 [00:00<00:04, 228.53 it/sec, obj=[0.15614049 0.91967277]]
INFO - 01:01:46: Optimization result:
INFO - 01:01:46:    Optimizer info:
INFO - 01:01:46:       Status: None
INFO - 01:01:46:       Message: None
INFO - 01:01:46:       Number of calls to the objective function by the optimizer: 80
INFO - 01:01:46:    Solution:
INFO - 01:01:46:       Objective: 0.8939534673502061
INFO - 01:01:46:    Pareto efficient solutions:
INFO - 01:01:46:       Pareto optimal points : 42 / 52
INFO - 01:01:46:       Utopia point : [0. 0.]
INFO - 01:01:46:       Compromise solution (closest to utopia) : [[0.63212056 0.63212056]]
INFO - 01:01:46:       Distance from utopia : 0.8939534673502061
INFO - 01:01:46:       Objective values:
INFO - 01:01:46:          +------+----------+----------+----------+
INFO - 01:01:46:          | name |        1 |        2 |        3 |
INFO - 01:01:46:          +------+----------+----------+----------+
INFO - 01:01:46:          |    1 |        0 | 0.981684 | 0.632121 |
INFO - 01:01:46:          |    2 | 0.981684 |        0 | 0.632121 |
INFO - 01:01:46:          +------+----------+----------+----------+
INFO - 01:01:46:       Design space:
INFO - 01:01:46:          +-------+-------------+---------+----------+---+-------------+-------+
INFO - 01:01:46:          |  name | lower_bound |       1 |        2 | 3 | upper_bound |  type |
INFO - 01:01:46:          +-------+-------------+---------+----------+---+-------------+-------+
INFO - 01:01:46:          | x (1) |          -4 | 0.57735 | -0.57735 | 0 |           4 | float |
INFO - 01:01:46:          | x (2) |          -4 | 0.57735 | -0.57735 | 0 |           4 | float |
INFO - 01:01:46:          | x (3) |          -4 | 0.57735 | -0.57735 | 0 |           4 | float |
INFO - 01:01:46:          +-------+-------------+---------+----------+---+-------------+-------+

Display the Pareto front

We can clearly see the effect of the refinement.

execute_post(opt_problem, "ParetoFront", save=False, show=True)
Pareto front
<gemseo.post.pareto_front.ParetoFront object at 0x7f11cc3386a0>

Total running time of the script: (0 minutes 0.694 seconds)

Gallery generated by Sphinx-Gallery