Skip to content

Compare JAX and NumPy for the resolution of the Sobieski's SSBJ problem.

Note

Click here to download the full example code

Compare JAX and NumPy for the resolution of the Sobieski's SSBJ problem.

from __future__ import annotations

from gemseo import configure
from gemseo import configure_logger
from gemseo.problems.mdo.sobieski.core.design_space import SobieskiDesignSpace
from gemseo.problems.mdo.sobieski.disciplines import SobieskiAerodynamics
from gemseo.problems.mdo.sobieski.disciplines import SobieskiMission
from gemseo.problems.mdo.sobieski.disciplines import SobieskiPropulsion
from gemseo.problems.mdo.sobieski.disciplines import SobieskiStructure
from gemseo.scenarios.doe_scenario import DOEScenario
from gemseo.scenarios.mdo_scenario import MDOScenario

from gemseo_jax.problems.sobieski.chain import JAXSobieskiChain

# Deactivate some checkers to speed up calculations in presence of cheap disciplines.
configure(False, False, True, False, False, False, False)

configure_logger()

Out:

/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/caches/_hdf5_file_singleton.py:36: DeprecationWarning: numpy.core.multiarray is deprecated and has been renamed to numpy._core.multiarray. The numpy._core namespace contains private NumPy internals and its use is discouraged, as NumPy internals can change without warning in any release. In practice, most real-world usage of numpy.core is to access functionality in the public NumPy API. If that is the case, use the public NumPy API. If not, you are using NumPy internals. If you would still like to access an internal attribute, use numpy._core.multiarray.array.
  from numpy.core.multiarray import array
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type swigvarlink has no __module__ attribute
/usr/lib64/python3.12/importlib/__init__.py:90: DeprecationWarning: The numpy.linalg.linalg has been made private and renamed to numpy.linalg._linalg. All public functions exported by it are available from numpy.linalg. Please use numpy.linalg.norm instead.
  return _bootstrap._gcd_import(name[level:], package, level)

<RootLogger root (INFO)>

DOE

MDF with MDAJacobi

Solve the Sobieski's SSBJ problem with JAX

chain = JAXSobieskiChain()
doe_scenario = DOEScenario(
    [chain],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)

Out:

INFO:2025-07-16 12:32:10,369:jax._src.xla_bridge:927: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
    INFO - 12:32:10: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
INFO:2025-07-16 12:32:10,370:jax._src.xla_bridge:927: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
    INFO - 12:32:10: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
    INFO - 12:32:12: Compilation of the output function JAXSobieskiChain: 0:00:00.371444 seconds.
    INFO - 12:32:12: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.364425 seconds.
    INFO - 12:32:12: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:12: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:12: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:12: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:12: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:12: *** Start DOEScenario execution ***
    INFO - 12:32:12: DOEScenario
    INFO - 12:32:12:    Disciplines: JAXSobieskiChain
    INFO - 12:32:12:    MDO formulation: MDF
    INFO - 12:32:12: Optimization problem:
    INFO - 12:32:12:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:12:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:12:    under the inequality constraints
    INFO - 12:32:12:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:12:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:12:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:12:    over the design space:
    INFO - 12:32:12:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:12:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:12:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:12:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:12:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:12:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:12:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:12:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:12:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:12:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:12:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:12:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:12:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:12:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:12: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 12:32:12:      1%|          | 1/100 [00:00<00:00, 164.22 it/sec, obj=-1.25e+3]
    INFO - 12:32:12:      2%|         | 2/100 [00:00<00:00, 200.48 it/sec, obj=-303]
    INFO - 12:32:12:      3%|         | 3/100 [00:00<00:00, 192.04 it/sec, obj=-447]
    INFO - 12:32:12:      4%|         | 4/100 [00:00<00:00, 195.13 it/sec, obj=-444]
    INFO - 12:32:12:      5%|         | 5/100 [00:00<00:00, 203.78 it/sec, obj=-804]
    INFO - 12:32:12:      6%|         | 6/100 [00:00<00:00, 210.38 it/sec, obj=-232]
    INFO - 12:32:12:      7%|         | 7/100 [00:00<00:00, 214.50 it/sec, obj=-701]
    INFO - 12:32:12:      8%|         | 8/100 [00:00<00:00, 217.31 it/sec, obj=-253]
    INFO - 12:32:12:      9%|         | 9/100 [00:00<00:00, 223.34 it/sec, obj=-773]
    INFO - 12:32:12:     10%|         | 10/100 [00:00<00:00, 224.77 it/sec, obj=-448]
    INFO - 12:32:12:     11%|         | 11/100 [00:00<00:00, 222.56 it/sec, obj=-659]
    INFO - 12:32:12:     12%|█▏        | 12/100 [00:00<00:00, 224.14 it/sec, obj=-282]
    INFO - 12:32:12:     13%|█▎        | 13/100 [00:00<00:00, 225.57 it/sec, obj=-387]
    INFO - 12:32:12:     14%|█▍        | 14/100 [00:00<00:00, 229.41 it/sec, obj=-379]
    INFO - 12:32:12:     15%|█▌        | 15/100 [00:00<00:00, 227.72 it/sec, obj=-196]
    INFO - 12:32:12:     16%|█▌        | 16/100 [00:00<00:00, 226.12 it/sec, obj=-647]
    INFO - 12:32:12:     17%|█▋        | 17/100 [00:00<00:00, 223.11 it/sec, obj=-238]
    INFO - 12:32:12:     18%|█▊        | 18/100 [00:00<00:00, 223.96 it/sec, obj=-304]
    INFO - 12:32:12:     19%|█▉        | 19/100 [00:00<00:00, 222.81 it/sec, obj=-372]
    INFO - 12:32:12:     20%|██        | 20/100 [00:00<00:00, 225.26 it/sec, obj=-699]
    INFO - 12:32:12:     21%|██        | 21/100 [00:00<00:00, 225.82 it/sec, obj=-873]
    INFO - 12:32:12:     22%|██▏       | 22/100 [00:00<00:00, 226.11 it/sec, obj=-489]
    INFO - 12:32:12:     23%|██▎       | 23/100 [00:00<00:00, 224.93 it/sec, obj=-623]
    INFO - 12:32:12:     24%|██▍       | 24/100 [00:00<00:00, 227.19 it/sec, obj=-262]
    INFO - 12:32:12:     25%|██▌       | 25/100 [00:00<00:00, 229.18 it/sec, obj=-345]
    INFO - 12:32:12:     26%|██▌       | 26/100 [00:00<00:00, 228.02 it/sec, obj=-377]
    INFO - 12:32:12:     27%|██▋       | 27/100 [00:00<00:00, 228.06 it/sec, obj=-387]
    INFO - 12:32:13:     28%|██▊       | 28/100 [00:00<00:00, 225.80 it/sec, obj=-334]
    INFO - 12:32:13:     29%|██▉       | 29/100 [00:00<00:00, 227.46 it/sec, obj=-438]
    INFO - 12:32:13:     30%|███       | 30/100 [00:00<00:00, 229.10 it/sec, obj=-1.94e+3]
    INFO - 12:32:13:     31%|███       | 31/100 [00:00<00:00, 229.44 it/sec, obj=-733]
    INFO - 12:32:13:     32%|███▏      | 32/100 [00:00<00:00, 229.84 it/sec, obj=-774]
    INFO - 12:32:13:     33%|███▎      | 33/100 [00:00<00:00, 228.93 it/sec, obj=-517]
    INFO - 12:32:13:     34%|███▍      | 34/100 [00:00<00:00, 230.32 it/sec, obj=-232]
    INFO - 12:32:13:     35%|███▌      | 35/100 [00:00<00:00, 229.28 it/sec, obj=-195]
    INFO - 12:32:13:     36%|███▌      | 36/100 [00:00<00:00, 229.46 it/sec, obj=-218]
    INFO - 12:32:13:     37%|███▋      | 37/100 [00:00<00:00, 228.01 it/sec, obj=-198]
    INFO - 12:32:13:     38%|███▊      | 38/100 [00:00<00:00, 224.97 it/sec, obj=-536]
    INFO - 12:32:13:     39%|███▉      | 39/100 [00:00<00:00, 223.06 it/sec, obj=-173]
    INFO - 12:32:13:     40%|████      | 40/100 [00:00<00:00, 223.44 it/sec, obj=-388]
    INFO - 12:32:13:     41%|████      | 41/100 [00:00<00:00, 222.96 it/sec, obj=-723]
    INFO - 12:32:13:     42%|████▏     | 42/100 [00:00<00:00, 220.32 it/sec, obj=-240]
    INFO - 12:32:13:     43%|████▎     | 43/100 [00:00<00:00, 218.30 it/sec, obj=-663]
    INFO - 12:32:13:     44%|████▍     | 44/100 [00:00<00:00, 217.36 it/sec, obj=-1.14e+3]
    INFO - 12:32:13:     45%|████▌     | 45/100 [00:00<00:00, 217.75 it/sec, obj=-438]
    INFO - 12:32:13:     46%|████▌     | 46/100 [00:00<00:00, 217.10 it/sec, obj=-301]
    INFO - 12:32:13:     47%|████▋     | 47/100 [00:00<00:00, 217.18 it/sec, obj=-682]
    INFO - 12:32:13:     48%|████▊     | 48/100 [00:00<00:00, 215.12 it/sec, obj=-750]
    INFO - 12:32:13:     49%|████▉     | 49/100 [00:00<00:00, 212.53 it/sec, obj=-789]
    INFO - 12:32:13:     50%|█████     | 50/100 [00:00<00:00, 209.20 it/sec, obj=-395]
    INFO - 12:32:13:     51%|█████     | 51/100 [00:00<00:00, 206.15 it/sec, obj=-407]
    INFO - 12:32:13:     52%|█████▏    | 52/100 [00:00<00:00, 206.26 it/sec, obj=-315]
    INFO - 12:32:13:     53%|█████▎    | 53/100 [00:00<00:00, 204.72 it/sec, obj=-337]
    INFO - 12:32:13:     54%|█████▍    | 54/100 [00:00<00:00, 204.50 it/sec, obj=-414]
    INFO - 12:32:13:     55%|█████▌    | 55/100 [00:00<00:00, 203.27 it/sec, obj=-240]
    INFO - 12:32:13:     56%|█████▌    | 56/100 [00:00<00:00, 204.09 it/sec, obj=-297]
    INFO - 12:32:13:     57%|█████▋    | 57/100 [00:00<00:00, 204.45 it/sec, obj=-442]
    INFO - 12:32:13:     58%|█████▊    | 58/100 [00:00<00:00, 204.24 it/sec, obj=-233]
    INFO - 12:32:13:     59%|█████▉    | 59/100 [00:00<00:00, 203.69 it/sec, obj=-519]
    INFO - 12:32:13:     60%|██████    | 60/100 [00:00<00:00, 202.27 it/sec, obj=-920]
    INFO - 12:32:13:     61%|██████    | 61/100 [00:00<00:00, 202.06 it/sec, obj=-517]
    INFO - 12:32:13:     62%|██████▏   | 62/100 [00:00<00:00, 202.51 it/sec, obj=-390]
    INFO - 12:32:13:     63%|██████▎   | 63/100 [00:00<00:00, 201.77 it/sec, obj=-434]
    INFO - 12:32:13:     64%|██████▍   | 64/100 [00:00<00:00, 201.75 it/sec, obj=-244]
    INFO - 12:32:13:     65%|██████▌   | 65/100 [00:00<00:00, 201.33 it/sec, obj=-192]
    INFO - 12:32:13:     66%|██████▌   | 66/100 [00:00<00:00, 201.76 it/sec, obj=-305]
    INFO - 12:32:13:     67%|██████▋   | 67/100 [00:00<00:00, 201.14 it/sec, obj=-393]
    INFO - 12:32:13:     68%|██████▊   | 68/100 [00:00<00:00, 201.43 it/sec, obj=-307]
    INFO - 12:32:13:     69%|██████▉   | 69/100 [00:00<00:00, 201.87 it/sec, obj=-328]
    INFO - 12:32:13:     70%|███████   | 70/100 [00:00<00:00, 201.82 it/sec, obj=-998]
    INFO - 12:32:13:     71%|███████   | 71/100 [00:00<00:00, 202.04 it/sec, obj=-1.06e+3]
    INFO - 12:32:13:     72%|███████▏  | 72/100 [00:00<00:00, 202.20 it/sec, obj=-707]
    INFO - 12:32:13:     73%|███████▎  | 73/100 [00:00<00:00, 203.04 it/sec, obj=-897]
    INFO - 12:32:13:     74%|███████▍  | 74/100 [00:00<00:00, 203.86 it/sec, obj=-1.36e+3]
    INFO - 12:32:13:     75%|███████▌  | 75/100 [00:00<00:00, 204.23 it/sec, obj=-853]
    INFO - 12:32:13:     76%|███████▌  | 76/100 [00:00<00:00, 203.48 it/sec, obj=-217]
    INFO - 12:32:13:     77%|███████▋  | 77/100 [00:00<00:00, 203.16 it/sec, obj=-370]
    INFO - 12:32:13:     78%|███████▊  | 78/100 [00:00<00:00, 203.26 it/sec, obj=-636]
    INFO - 12:32:13:     79%|███████▉  | 79/100 [00:00<00:00, 203.46 it/sec, obj=-337]
    INFO - 12:32:13:     80%|████████  | 80/100 [00:00<00:00, 203.64 it/sec, obj=-804]
    INFO - 12:32:13:     81%|████████  | 81/100 [00:00<00:00, 203.19 it/sec, obj=-318]
    INFO - 12:32:13:     82%|████████▏ | 82/100 [00:00<00:00, 202.79 it/sec, obj=-253]
    INFO - 12:32:13:     83%|████████▎ | 83/100 [00:00<00:00, 202.79 it/sec, obj=-590]
    INFO - 12:32:13:     84%|████████▍ | 84/100 [00:00<00:00, 201.00 it/sec, obj=-438]
    INFO - 12:32:13:     85%|████████▌ | 85/100 [00:00<00:00, 200.18 it/sec, obj=-642]
    INFO - 12:32:13:     86%|████████▌ | 86/100 [00:00<00:00, 200.55 it/sec, obj=-381]
    INFO - 12:32:13:     87%|████████▋ | 87/100 [00:00<00:00, 200.47 it/sec, obj=-447]
    INFO - 12:32:13:     88%|████████▊ | 88/100 [00:00<00:00, 200.40 it/sec, obj=-707]
    INFO - 12:32:13:     89%|████████▉ | 89/100 [00:00<00:00, 201.13 it/sec, obj=-384]
    INFO - 12:32:13:     90%|█████████ | 90/100 [00:00<00:00, 201.54 it/sec, obj=-491]
    INFO - 12:32:13:     91%|█████████ | 91/100 [00:00<00:00, 201.82 it/sec, obj=-285]
    INFO - 12:32:13:     92%|█████████▏| 92/100 [00:00<00:00, 201.80 it/sec, obj=-433]
    INFO - 12:32:13:     93%|█████████▎| 93/100 [00:00<00:00, 201.80 it/sec, obj=-377]
    INFO - 12:32:13:     94%|█████████▍| 94/100 [00:00<00:00, 202.15 it/sec, obj=-827]
    INFO - 12:32:13:     95%|█████████▌| 95/100 [00:00<00:00, 202.16 it/sec, obj=-712]
    INFO - 12:32:13:     96%|█████████▌| 96/100 [00:00<00:00, 201.52 it/sec, obj=-245]
    INFO - 12:32:13:     97%|█████████▋| 97/100 [00:00<00:00, 201.85 it/sec, obj=-502]
    INFO - 12:32:13:     98%|█████████▊| 98/100 [00:00<00:00, 200.15 it/sec, obj=-309]
    INFO - 12:32:13:     99%|█████████▉| 99/100 [00:00<00:00, 200.02 it/sec, obj=-971]
    INFO - 12:32:13:    100%|██████████| 100/100 [00:00<00:00, 199.95 it/sec, obj=-649]
    INFO - 12:32:13: Optimization result:
    INFO - 12:32:13:    Optimizer info:
    INFO - 12:32:13:       Status: None
    INFO - 12:32:13:       Message: None
    INFO - 12:32:13:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:13:    Solution:
    INFO - 12:32:13:       The solution is feasible.
    INFO - 12:32:13:       Objective: -659.1819334138517
    INFO - 12:32:13:       Standardized constraints:
    INFO - 12:32:13:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 12:32:13:  -0.19803381]
    INFO - 12:32:13:          g_2 = -0.007088218675791014
    INFO - 12:32:13:          g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
    INFO - 12:32:13:       Design space:
    INFO - 12:32:13:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:13:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:13:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:13:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 12:32:13:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 12:32:13:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 12:32:13:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 12:32:13:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 12:32:13:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 12:32:13:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 12:32:13:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 12:32:13:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 12:32:13:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 12:32:13:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:13: *** End DOEScenario execution ***

Solve the Sobieski's SSBJ problem with NumPy

doe_scenario = DOEScenario(
    [
        SobieskiStructure(),
        SobieskiAerodynamics(),
        SobieskiPropulsion(),
        SobieskiMission(),
    ],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)

Out:

    INFO - 12:32:13: *** Start DOEScenario execution ***
    INFO - 12:32:13: DOEScenario
    INFO - 12:32:13:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 12:32:13:    MDO formulation: MDF
    INFO - 12:32:13: Optimization problem:
    INFO - 12:32:13:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:13:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:13:    under the inequality constraints
    INFO - 12:32:13:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:13:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:13:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:13:    over the design space:
    INFO - 12:32:13:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:13:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:13:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:13:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:13:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:13:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:13:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:13:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:13:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:13:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:13:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:13:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:13:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:13:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:13: Solving optimization problem with algorithm OT_OPT_LHS:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
  ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
    INFO - 12:32:13:      1%|          | 1/100 [00:00<00:01, 62.18 it/sec, obj=-1.25e+3]
    INFO - 12:32:13:      2%|         | 2/100 [00:00<00:01, 68.05 it/sec, obj=-303]
    INFO - 12:32:13:      3%|         | 3/100 [00:00<00:01, 58.59 it/sec, obj=-447]
    INFO - 12:32:13:      4%|         | 4/100 [00:00<00:01, 56.68 it/sec, obj=-444]
    INFO - 12:32:13:      5%|         | 5/100 [00:00<00:01, 59.36 it/sec, obj=-804]
    INFO - 12:32:13:      6%|         | 6/100 [00:00<00:01, 58.26 it/sec, obj=-232]
    INFO - 12:32:13:      7%|         | 7/100 [00:00<00:01, 60.42 it/sec, obj=-701]
    INFO - 12:32:13:      8%|         | 8/100 [00:00<00:01, 62.30 it/sec, obj=-253]
    INFO - 12:32:13:      9%|         | 9/100 [00:00<00:01, 63.89 it/sec, obj=-773]
    INFO - 12:32:13:     10%|         | 10/100 [00:00<00:01, 64.97 it/sec, obj=-448]
    INFO - 12:32:13:     11%|         | 11/100 [00:00<00:01, 62.86 it/sec, obj=-659]
    INFO - 12:32:13:     12%|█▏        | 12/100 [00:00<00:01, 63.75 it/sec, obj=-282]
    INFO - 12:32:13:     13%|█▎        | 13/100 [00:00<00:01, 64.10 it/sec, obj=-387]
    INFO - 12:32:13:     14%|█▍        | 14/100 [00:00<00:01, 63.86 it/sec, obj=-379]
    INFO - 12:32:13:     15%|█▌        | 15/100 [00:00<00:01, 62.43 it/sec, obj=-196]
    INFO - 12:32:13:     16%|█▌        | 16/100 [00:00<00:01, 63.16 it/sec, obj=-647]
    INFO - 12:32:13:     17%|█▋        | 17/100 [00:00<00:01, 61.47 it/sec, obj=-238]
    INFO - 12:32:13:     18%|█▊        | 18/100 [00:00<00:01, 62.35 it/sec, obj=-304]
    INFO - 12:32:13:     19%|█▉        | 19/100 [00:00<00:01, 62.51 it/sec, obj=-372]
    INFO - 12:32:13:     20%|██        | 20/100 [00:00<00:01, 62.96 it/sec, obj=-699]
    INFO - 12:32:13:     21%|██        | 21/100 [00:00<00:01, 63.48 it/sec, obj=-873]
    INFO - 12:32:13:     22%|██▏       | 22/100 [00:00<00:01, 63.88 it/sec, obj=-489]
    INFO - 12:32:13:     23%|██▎       | 23/100 [00:00<00:01, 64.34 it/sec, obj=-623]
    INFO - 12:32:13:     24%|██▍       | 24/100 [00:00<00:01, 64.77 it/sec, obj=-262]
    INFO - 12:32:13:     25%|██▌       | 25/100 [00:00<00:01, 64.76 it/sec, obj=-345]
    INFO - 12:32:13:     26%|██▌       | 26/100 [00:00<00:01, 65.09 it/sec, obj=-377]
    INFO - 12:32:13:     27%|██▋       | 27/100 [00:00<00:01, 65.43 it/sec, obj=-387]
    INFO - 12:32:13:     28%|██▊       | 28/100 [00:00<00:01, 63.72 it/sec, obj=-334]
    INFO - 12:32:13:     29%|██▉       | 29/100 [00:00<00:01, 63.86 it/sec, obj=-438]
    INFO - 12:32:13:     30%|███       | 30/100 [00:00<00:01, 64.20 it/sec, obj=-1.94e+3]
    INFO - 12:32:13:     31%|███       | 31/100 [00:00<00:01, 64.56 it/sec, obj=-733]
    INFO - 12:32:13:     32%|███▏      | 32/100 [00:00<00:01, 65.10 it/sec, obj=-774]
    INFO - 12:32:13:     33%|███▎      | 33/100 [00:00<00:01, 64.82 it/sec, obj=-517]
    INFO - 12:32:13:     34%|███▍      | 34/100 [00:00<00:01, 64.95 it/sec, obj=-232]
    INFO - 12:32:13:     35%|███▌      | 35/100 [00:00<00:01, 64.75 it/sec, obj=-195]
    INFO - 12:32:13:     36%|███▌      | 36/100 [00:00<00:00, 64.87 it/sec, obj=-218]
    INFO - 12:32:13:     37%|███▋      | 37/100 [00:00<00:00, 64.52 it/sec, obj=-198]
    INFO - 12:32:14:     38%|███▊      | 38/100 [00:00<00:00, 64.65 it/sec, obj=-536]
    INFO - 12:32:14:     39%|███▉      | 39/100 [00:00<00:00, 64.30 it/sec, obj=-173]
    INFO - 12:32:14:     40%|████      | 40/100 [00:00<00:00, 64.76 it/sec, obj=-388]
    INFO - 12:32:14:     41%|████      | 41/100 [00:00<00:00, 64.73 it/sec, obj=-723]
    INFO - 12:32:14:     42%|████▏     | 42/100 [00:00<00:00, 64.36 it/sec, obj=-240]
    INFO - 12:32:14:     43%|████▎     | 43/100 [00:00<00:00, 64.61 it/sec, obj=-663]
    INFO - 12:32:14:     44%|████▍     | 44/100 [00:00<00:00, 64.41 it/sec, obj=-1.14e+3]
    INFO - 12:32:14:     45%|████▌     | 45/100 [00:00<00:00, 64.66 it/sec, obj=-438]
    INFO - 12:32:14:     46%|████▌     | 46/100 [00:00<00:00, 64.24 it/sec, obj=-301]
    INFO - 12:32:14:     47%|████▋     | 47/100 [00:00<00:00, 64.61 it/sec, obj=-682]
    INFO - 12:32:14:     48%|████▊     | 48/100 [00:00<00:00, 64.51 it/sec, obj=-750]
    INFO - 12:32:14:     49%|████▉     | 49/100 [00:00<00:00, 64.32 it/sec, obj=-789]
    INFO - 12:32:14:     50%|█████     | 50/100 [00:00<00:00, 64.34 it/sec, obj=-395]
    INFO - 12:32:14:     51%|█████     | 51/100 [00:00<00:00, 64.15 it/sec, obj=-407]
    INFO - 12:32:14:     52%|█████▏    | 52/100 [00:00<00:00, 64.35 it/sec, obj=-315]
    INFO - 12:32:14:     53%|█████▎    | 53/100 [00:00<00:00, 64.03 it/sec, obj=-337]
    INFO - 12:32:14:     54%|█████▍    | 54/100 [00:00<00:00, 63.88 it/sec, obj=-414]
    INFO - 12:32:14:     55%|█████▌    | 55/100 [00:00<00:00, 63.55 it/sec, obj=-240]
    INFO - 12:32:14:     56%|█████▌    | 56/100 [00:00<00:00, 63.72 it/sec, obj=-297]
    INFO - 12:32:14:     57%|█████▋    | 57/100 [00:00<00:00, 63.83 it/sec, obj=-442]
    INFO - 12:32:14:     58%|█████▊    | 58/100 [00:00<00:00, 63.60 it/sec, obj=-233]
    INFO - 12:32:14:     59%|█████▉    | 59/100 [00:00<00:00, 63.68 it/sec, obj=-519]
    INFO - 12:32:14:     60%|██████    | 60/100 [00:00<00:00, 63.76 it/sec, obj=-920]
    INFO - 12:32:14:     61%|██████    | 61/100 [00:00<00:00, 63.74 it/sec, obj=-517]
    INFO - 12:32:14:     62%|██████▏   | 62/100 [00:00<00:00, 63.71 it/sec, obj=-390]
    INFO - 12:32:14:     63%|██████▎   | 63/100 [00:00<00:00, 63.51 it/sec, obj=-434]
    INFO - 12:32:14:     64%|██████▍   | 64/100 [00:01<00:00, 63.40 it/sec, obj=-244]
    INFO - 12:32:14:     65%|██████▌   | 65/100 [00:01<00:00, 63.02 it/sec, obj=-192]
    INFO - 12:32:14:     66%|██████▌   | 66/100 [00:01<00:00, 63.16 it/sec, obj=-305]
    INFO - 12:32:14:     67%|██████▋   | 67/100 [00:01<00:00, 63.03 it/sec, obj=-393]
    INFO - 12:32:14:     68%|██████▊   | 68/100 [00:01<00:00, 63.15 it/sec, obj=-307]
    INFO - 12:32:14:     69%|██████▉   | 69/100 [00:01<00:00, 63.31 it/sec, obj=-328]
    INFO - 12:32:14:     70%|███████   | 70/100 [00:01<00:00, 63.37 it/sec, obj=-998]
    INFO - 12:32:14:     71%|███████   | 71/100 [00:01<00:00, 63.36 it/sec, obj=-1.06e+3]
    INFO - 12:32:14:     72%|███████▏  | 72/100 [00:01<00:00, 62.96 it/sec, obj=-707]
    INFO - 12:32:14:     73%|███████▎  | 73/100 [00:01<00:00, 63.11 it/sec, obj=-897]
    INFO - 12:32:14:     74%|███████▍  | 74/100 [00:01<00:00, 63.02 it/sec, obj=-1.36e+3]
    INFO - 12:32:14:     75%|███████▌  | 75/100 [00:01<00:00, 63.18 it/sec, obj=-853]
    INFO - 12:32:14:     76%|███████▌  | 76/100 [00:01<00:00, 63.33 it/sec, obj=-217]
    INFO - 12:32:14:     77%|███████▋  | 77/100 [00:01<00:00, 63.26 it/sec, obj=-370]
    INFO - 12:32:14:     78%|███████▊  | 78/100 [00:01<00:00, 63.08 it/sec, obj=-636]
    INFO - 12:32:14:     79%|███████▉  | 79/100 [00:01<00:00, 63.30 it/sec, obj=-337]
    INFO - 12:32:14:     80%|████████  | 80/100 [00:01<00:00, 63.20 it/sec, obj=-804]
    INFO - 12:32:14:     81%|████████  | 81/100 [00:01<00:00, 63.34 it/sec, obj=-318]
    INFO - 12:32:14:     82%|████████▏ | 82/100 [00:01<00:00, 63.34 it/sec, obj=-253]
    INFO - 12:32:14:     83%|████████▎ | 83/100 [00:01<00:00, 62.88 it/sec, obj=-590]
    INFO - 12:32:14:     84%|████████▍ | 84/100 [00:01<00:00, 62.82 it/sec, obj=-438]
    INFO - 12:32:14:     85%|████████▌ | 85/100 [00:01<00:00, 62.96 it/sec, obj=-642]
    INFO - 12:32:14:     86%|████████▌ | 86/100 [00:01<00:00, 63.17 it/sec, obj=-381]
    INFO - 12:32:14:     87%|████████▋ | 87/100 [00:01<00:00, 63.30 it/sec, obj=-447]
    INFO - 12:32:14:     88%|████████▊ | 88/100 [00:01<00:00, 63.17 it/sec, obj=-707]
    INFO - 12:32:14:     89%|████████▉ | 89/100 [00:01<00:00, 63.30 it/sec, obj=-384]
    INFO - 12:32:14:     90%|█████████ | 90/100 [00:01<00:00, 63.43 it/sec, obj=-491]
    INFO - 12:32:14:     91%|█████████ | 91/100 [00:01<00:00, 63.55 it/sec, obj=-285]
    INFO - 12:32:14:     92%|█████████▏| 92/100 [00:01<00:00, 63.54 it/sec, obj=-433]
    INFO - 12:32:14:     93%|█████████▎| 93/100 [00:01<00:00, 63.60 it/sec, obj=-377]
    INFO - 12:32:14:     94%|█████████▍| 94/100 [00:01<00:00, 63.61 it/sec, obj=-827]
    INFO - 12:32:14:     95%|█████████▌| 95/100 [00:01<00:00, 63.64 it/sec, obj=-712]
    INFO - 12:32:14:     96%|█████████▌| 96/100 [00:01<00:00, 63.68 it/sec, obj=-245]
    INFO - 12:32:14:     97%|█████████▋| 97/100 [00:01<00:00, 63.86 it/sec, obj=-502]
    INFO - 12:32:14:     98%|█████████▊| 98/100 [00:01<00:00, 63.64 it/sec, obj=-309]
    INFO - 12:32:14:     99%|█████████▉| 99/100 [00:01<00:00, 63.53 it/sec, obj=-971]
    INFO - 12:32:14:    100%|██████████| 100/100 [00:01<00:00, 63.49 it/sec, obj=-649]
    INFO - 12:32:14: Optimization result:
    INFO - 12:32:14:    Optimizer info:
    INFO - 12:32:14:       Status: None
    INFO - 12:32:14:       Message: None
    INFO - 12:32:14:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:14:    Solution:
    INFO - 12:32:14:       The solution is feasible.
    INFO - 12:32:14:       Objective: -659.181929189823
    INFO - 12:32:14:       Standardized constraints:
    INFO - 12:32:14:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 12:32:14:  -0.19803381]
    INFO - 12:32:14:          g_2 = -0.007088218675791014
    INFO - 12:32:14:          g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
    INFO - 12:32:14:       Design space:
    INFO - 12:32:14:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:14:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:14:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:14:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 12:32:14:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 12:32:14:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 12:32:14:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 12:32:14:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 12:32:14:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 12:32:14:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 12:32:14:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 12:32:14:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 12:32:14:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 12:32:14:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:14: *** End DOEScenario execution ***

Conclusion

JAX is about 3 times faster than NumPy in the case of a sampling loop with a Jacobi MDA.

MDF with MDAGaussSeidel

Solve the Sobieski's SSBJ problem with JAX

chain = JAXSobieskiChain()
doe_scenario = DOEScenario(
    [chain],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
    main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)

Out:

    INFO - 12:32:16: Compilation of the output function JAXSobieskiChain: 0:00:00.316570 seconds.
    INFO - 12:32:16: Compilation of the Jacobian function JAXSobieskiChain: 0:00:00.991171 seconds.
    INFO - 12:32:16: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:16: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:16: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:16: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:16: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:16: *** Start DOEScenario execution ***
    INFO - 12:32:16: DOEScenario
    INFO - 12:32:16:    Disciplines: JAXSobieskiChain
    INFO - 12:32:16:    MDO formulation: MDF
    INFO - 12:32:16: Optimization problem:
    INFO - 12:32:16:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:16:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:16:    under the inequality constraints
    INFO - 12:32:16:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:16:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:16:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:16:    over the design space:
    INFO - 12:32:16:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:16:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:16:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:16:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:16:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:16:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:16:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:16:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:16:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:16:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:16:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:16:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:16:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:16:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:16: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 12:32:16:      1%|          | 1/100 [00:00<00:00, 254.85 it/sec, obj=-1.25e+3]
    INFO - 12:32:16:      2%|         | 2/100 [00:00<00:00, 245.18 it/sec, obj=-303]
    INFO - 12:32:16:      3%|         | 3/100 [00:00<00:00, 208.72 it/sec, obj=-447]
    INFO - 12:32:16:      4%|         | 4/100 [00:00<00:00, 231.98 it/sec, obj=-444]
    INFO - 12:32:16:      5%|         | 5/100 [00:00<00:00, 248.81 it/sec, obj=-804]
    INFO - 12:32:16:      6%|         | 6/100 [00:00<00:00, 257.83 it/sec, obj=-232]
    INFO - 12:32:16:      7%|         | 7/100 [00:00<00:00, 264.87 it/sec, obj=-701]
    INFO - 12:32:16:      8%|         | 8/100 [00:00<00:00, 251.87 it/sec, obj=-253]
    INFO - 12:32:16:      9%|         | 9/100 [00:00<00:00, 259.06 it/sec, obj=-773]
    INFO - 12:32:16:     10%|         | 10/100 [00:00<00:00, 264.44 it/sec, obj=-448]
    INFO - 12:32:16:     11%|         | 11/100 [00:00<00:00, 266.88 it/sec, obj=-659]
    INFO - 12:32:16:     12%|█▏        | 12/100 [00:00<00:00, 268.67 it/sec, obj=-282]
    INFO - 12:32:16:     13%|█▎        | 13/100 [00:00<00:00, 275.87 it/sec, obj=-387]
    INFO - 12:32:16:     14%|█▍        | 14/100 [00:00<00:00, 280.78 it/sec, obj=-379]
    INFO - 12:32:16:     15%|█▌        | 15/100 [00:00<00:00, 281.95 it/sec, obj=-196]
    INFO - 12:32:16:     16%|█▌        | 16/100 [00:00<00:00, 278.98 it/sec, obj=-647]
    INFO - 12:32:16:     17%|█▋        | 17/100 [00:00<00:00, 276.45 it/sec, obj=-238]
    INFO - 12:32:16:     18%|█▊        | 18/100 [00:00<00:00, 279.98 it/sec, obj=-304]
    INFO - 12:32:16:     19%|█▉        | 19/100 [00:00<00:00, 280.34 it/sec, obj=-372]
    INFO - 12:32:16:     20%|██        | 20/100 [00:00<00:00, 284.61 it/sec, obj=-699]
    INFO - 12:32:16:     21%|██        | 21/100 [00:00<00:00, 286.56 it/sec, obj=-873]
    INFO - 12:32:16:     22%|██▏       | 22/100 [00:00<00:00, 286.08 it/sec, obj=-489]
    INFO - 12:32:16:     23%|██▎       | 23/100 [00:00<00:00, 284.75 it/sec, obj=-623]
    INFO - 12:32:16:     24%|██▍       | 24/100 [00:00<00:00, 288.51 it/sec, obj=-262]
    INFO - 12:32:16:     25%|██▌       | 25/100 [00:00<00:00, 291.79 it/sec, obj=-345]
    INFO - 12:32:16:     26%|██▌       | 26/100 [00:00<00:00, 290.35 it/sec, obj=-377]
    INFO - 12:32:16:     27%|██▋       | 27/100 [00:00<00:00, 289.78 it/sec, obj=-387]
    INFO - 12:32:16:     28%|██▊       | 28/100 [00:00<00:00, 284.73 it/sec, obj=-334]
    INFO - 12:32:16:     29%|██▉       | 29/100 [00:00<00:00, 287.54 it/sec, obj=-438]
    INFO - 12:32:16:     30%|███       | 30/100 [00:00<00:00, 290.23 it/sec, obj=-1.94e+3]
    INFO - 12:32:16:     31%|███       | 31/100 [00:00<00:00, 288.83 it/sec, obj=-733]
    INFO - 12:32:16:     32%|███▏      | 32/100 [00:00<00:00, 290.60 it/sec, obj=-774]
    INFO - 12:32:16:     33%|███▎      | 33/100 [00:00<00:00, 290.70 it/sec, obj=-517]
    INFO - 12:32:16:     34%|███▍      | 34/100 [00:00<00:00, 292.22 it/sec, obj=-232]
    INFO - 12:32:16:     35%|███▌      | 35/100 [00:00<00:00, 294.45 it/sec, obj=-195]
    INFO - 12:32:16:     36%|███▌      | 36/100 [00:00<00:00, 295.77 it/sec, obj=-218]
    INFO - 12:32:16:     37%|███▋      | 37/100 [00:00<00:00, 297.23 it/sec, obj=-198]
    INFO - 12:32:16:     38%|███▊      | 38/100 [00:00<00:00, 292.21 it/sec, obj=-536]
    INFO - 12:32:16:     39%|███▉      | 39/100 [00:00<00:00, 287.12 it/sec, obj=-173]
    INFO - 12:32:16:     40%|████      | 40/100 [00:00<00:00, 288.63 it/sec, obj=-388]
    INFO - 12:32:16:     41%|████      | 41/100 [00:00<00:00, 289.05 it/sec, obj=-723]
    INFO - 12:32:16:     42%|████▏     | 42/100 [00:00<00:00, 288.32 it/sec, obj=-240]
    INFO - 12:32:16:     43%|████▎     | 43/100 [00:00<00:00, 289.57 it/sec, obj=-663]
    INFO - 12:32:16:     44%|████▍     | 44/100 [00:00<00:00, 288.30 it/sec, obj=-1.14e+3]
    INFO - 12:32:16:     45%|████▌     | 45/100 [00:00<00:00, 287.01 it/sec, obj=-438]
    INFO - 12:32:16:     46%|████▌     | 46/100 [00:00<00:00, 286.29 it/sec, obj=-301]
    INFO - 12:32:16:     47%|████▋     | 47/100 [00:00<00:00, 287.58 it/sec, obj=-682]
    INFO - 12:32:16:     48%|████▊     | 48/100 [00:00<00:00, 287.37 it/sec, obj=-750]
    INFO - 12:32:16:     49%|████▉     | 49/100 [00:00<00:00, 287.25 it/sec, obj=-789]
    INFO - 12:32:16:     50%|█████     | 50/100 [00:00<00:00, 287.19 it/sec, obj=-395]
    INFO - 12:32:16:     51%|█████     | 51/100 [00:00<00:00, 286.01 it/sec, obj=-407]
    INFO - 12:32:16:     52%|█████▏    | 52/100 [00:00<00:00, 285.85 it/sec, obj=-315]
    INFO - 12:32:16:     53%|█████▎    | 53/100 [00:00<00:00, 286.17 it/sec, obj=-337]
    INFO - 12:32:16:     54%|█████▍    | 54/100 [00:00<00:00, 285.67 it/sec, obj=-414]
    INFO - 12:32:16:     55%|█████▌    | 55/100 [00:00<00:00, 286.50 it/sec, obj=-240]
    INFO - 12:32:16:     56%|█████▌    | 56/100 [00:00<00:00, 288.10 it/sec, obj=-297]
    INFO - 12:32:16:     57%|█████▋    | 57/100 [00:00<00:00, 286.10 it/sec, obj=-442]
    INFO - 12:32:16:     58%|█████▊    | 58/100 [00:00<00:00, 285.93 it/sec, obj=-233]
    INFO - 12:32:16:     59%|█████▉    | 59/100 [00:00<00:00, 284.34 it/sec, obj=-519]
    INFO - 12:32:16:     60%|██████    | 60/100 [00:00<00:00, 283.04 it/sec, obj=-920]
    INFO - 12:32:16:     61%|██████    | 61/100 [00:00<00:00, 280.17 it/sec, obj=-517]
    INFO - 12:32:16:     62%|██████▏   | 62/100 [00:00<00:00, 280.44 it/sec, obj=-390]
    INFO - 12:32:16:     63%|██████▎   | 63/100 [00:00<00:00, 281.30 it/sec, obj=-434]
    INFO - 12:32:16:     64%|██████▍   | 64/100 [00:00<00:00, 282.28 it/sec, obj=-244]
    INFO - 12:32:16:     65%|██████▌   | 65/100 [00:00<00:00, 280.18 it/sec, obj=-192]
    INFO - 12:32:16:     66%|██████▌   | 66/100 [00:00<00:00, 279.31 it/sec, obj=-305]
    INFO - 12:32:16:     67%|██████▋   | 67/100 [00:00<00:00, 277.92 it/sec, obj=-393]
    INFO - 12:32:16:     68%|██████▊   | 68/100 [00:00<00:00, 277.41 it/sec, obj=-307]
    INFO - 12:32:16:     69%|██████▉   | 69/100 [00:00<00:00, 277.42 it/sec, obj=-328]
    INFO - 12:32:16:     70%|███████   | 70/100 [00:00<00:00, 277.57 it/sec, obj=-998]
    INFO - 12:32:16:     71%|███████   | 71/100 [00:00<00:00, 277.34 it/sec, obj=-1.06e+3]
    INFO - 12:32:16:     72%|███████▏  | 72/100 [00:00<00:00, 277.43 it/sec, obj=-707]
    INFO - 12:32:16:     73%|███████▎  | 73/100 [00:00<00:00, 278.47 it/sec, obj=-897]
    INFO - 12:32:16:     74%|███████▍  | 74/100 [00:00<00:00, 279.54 it/sec, obj=-1.36e+3]
    INFO - 12:32:16:     75%|███████▌  | 75/100 [00:00<00:00, 280.29 it/sec, obj=-853]
    INFO - 12:32:16:     76%|███████▌  | 76/100 [00:00<00:00, 281.38 it/sec, obj=-217]
    INFO - 12:32:16:     77%|███████▋  | 77/100 [00:00<00:00, 280.70 it/sec, obj=-370]
    INFO - 12:32:16:     78%|███████▊  | 78/100 [00:00<00:00, 281.21 it/sec, obj=-636]
    INFO - 12:32:16:     79%|███████▉  | 79/100 [00:00<00:00, 282.07 it/sec, obj=-337]
    INFO - 12:32:16:     80%|████████  | 80/100 [00:00<00:00, 282.49 it/sec, obj=-804]
    INFO - 12:32:16:     81%|████████  | 81/100 [00:00<00:00, 282.99 it/sec, obj=-318]
    INFO - 12:32:16:     82%|████████▏ | 82/100 [00:00<00:00, 283.55 it/sec, obj=-253]
    INFO - 12:32:16:     83%|████████▎ | 83/100 [00:00<00:00, 283.54 it/sec, obj=-590]
    INFO - 12:32:16:     84%|████████▍ | 84/100 [00:00<00:00, 282.70 it/sec, obj=-438]
    INFO - 12:32:16:     85%|████████▌ | 85/100 [00:00<00:00, 281.37 it/sec, obj=-642]
    INFO - 12:32:16:     86%|████████▌ | 86/100 [00:00<00:00, 282.67 it/sec, obj=-381]
    INFO - 12:32:16:     87%|████████▋ | 87/100 [00:00<00:00, 282.37 it/sec, obj=-447]
    INFO - 12:32:16:     88%|████████▊ | 88/100 [00:00<00:00, 282.05 it/sec, obj=-707]
    INFO - 12:32:16:     89%|████████▉ | 89/100 [00:00<00:00, 282.96 it/sec, obj=-384]
    INFO - 12:32:16:     90%|█████████ | 90/100 [00:00<00:00, 283.53 it/sec, obj=-491]
    INFO - 12:32:16:     91%|█████████ | 91/100 [00:00<00:00, 283.69 it/sec, obj=-285]
    INFO - 12:32:16:     92%|█████████▏| 92/100 [00:00<00:00, 283.65 it/sec, obj=-433]
    INFO - 12:32:16:     93%|█████████▎| 93/100 [00:00<00:00, 283.18 it/sec, obj=-377]
    INFO - 12:32:16:     94%|█████████▍| 94/100 [00:00<00:00, 283.33 it/sec, obj=-827]
    INFO - 12:32:16:     95%|█████████▌| 95/100 [00:00<00:00, 282.12 it/sec, obj=-712]
    INFO - 12:32:16:     96%|█████████▌| 96/100 [00:00<00:00, 282.83 it/sec, obj=-245]
    INFO - 12:32:16:     97%|█████████▋| 97/100 [00:00<00:00, 283.50 it/sec, obj=-502]
    INFO - 12:32:16:     98%|█████████▊| 98/100 [00:00<00:00, 283.23 it/sec, obj=-309]
    INFO - 12:32:16:     99%|█████████▉| 99/100 [00:00<00:00, 283.38 it/sec, obj=-971]
    INFO - 12:32:16:    100%|██████████| 100/100 [00:00<00:00, 282.34 it/sec, obj=-649]
    INFO - 12:32:16: Optimization result:
    INFO - 12:32:16:    Optimizer info:
    INFO - 12:32:16:       Status: None
    INFO - 12:32:16:       Message: None
    INFO - 12:32:16:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:16:    Solution:
    INFO - 12:32:16:       The solution is feasible.
    INFO - 12:32:16:       Objective: -659.1818108437288
    INFO - 12:32:16:       Standardized constraints:
    INFO - 12:32:16:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 12:32:16:  -0.19803381]
    INFO - 12:32:16:          g_2 = -0.007088218675791014
    INFO - 12:32:16:          g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
    INFO - 12:32:16:       Design space:
    INFO - 12:32:16:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:16:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:16:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:16:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 12:32:16:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 12:32:16:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 12:32:16:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 12:32:16:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 12:32:16:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 12:32:16:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 12:32:16:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 12:32:16:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 12:32:16:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 12:32:16:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:16: *** End DOEScenario execution ***

Solve the Sobieski's SSBJ problem with NumPy

doe_scenario = DOEScenario(
    [
        SobieskiStructure(),
        SobieskiAerodynamics(),
        SobieskiPropulsion(),
        SobieskiMission(),
    ],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
    main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)

Out:

    INFO - 12:32:16: *** Start DOEScenario execution ***
    INFO - 12:32:16: DOEScenario
    INFO - 12:32:16:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 12:32:16:    MDO formulation: MDF
    INFO - 12:32:16: Optimization problem:
    INFO - 12:32:16:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:16:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:16:    under the inequality constraints
    INFO - 12:32:16:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:16:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:16:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:16:    over the design space:
    INFO - 12:32:16:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:16:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:16:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:16:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:16:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:16:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:16:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:16:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:16:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:16:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:16:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:16:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:16:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:16:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:16: Solving optimization problem with algorithm OT_OPT_LHS:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
  ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
    INFO - 12:32:16:      1%|          | 1/100 [00:00<00:00, 154.57 it/sec, obj=-1.25e+3]
    INFO - 12:32:16:      2%|         | 2/100 [00:00<00:00, 146.99 it/sec, obj=-303]
    INFO - 12:32:16:      3%|         | 3/100 [00:00<00:00, 106.26 it/sec, obj=-447]
    INFO - 12:32:16:      4%|         | 4/100 [00:00<00:00, 113.89 it/sec, obj=-444]
    INFO - 12:32:16:      5%|         | 5/100 [00:00<00:00, 121.61 it/sec, obj=-804]
    INFO - 12:32:16:      6%|         | 6/100 [00:00<00:00, 123.19 it/sec, obj=-232]
    INFO - 12:32:16:      7%|         | 7/100 [00:00<00:00, 124.29 it/sec, obj=-701]
    INFO - 12:32:16:      8%|         | 8/100 [00:00<00:00, 121.12 it/sec, obj=-253]
    INFO - 12:32:16:      9%|         | 9/100 [00:00<00:00, 126.14 it/sec, obj=-773]
    INFO - 12:32:16:     10%|         | 10/100 [00:00<00:00, 128.06 it/sec, obj=-448]
    INFO - 12:32:16:     11%|         | 11/100 [00:00<00:00, 126.79 it/sec, obj=-659]
    INFO - 12:32:16:     12%|█▏        | 12/100 [00:00<00:00, 127.15 it/sec, obj=-282]
    INFO - 12:32:16:     13%|█▎        | 13/100 [00:00<00:00, 129.65 it/sec, obj=-387]
    INFO - 12:32:16:     14%|█▍        | 14/100 [00:00<00:00, 130.67 it/sec, obj=-379]
    INFO - 12:32:16:     15%|█▌        | 15/100 [00:00<00:00, 129.44 it/sec, obj=-196]
    INFO - 12:32:16:     16%|█▌        | 16/100 [00:00<00:00, 126.66 it/sec, obj=-647]
    INFO - 12:32:16:     17%|█▋        | 17/100 [00:00<00:00, 123.57 it/sec, obj=-238]
    INFO - 12:32:16:     18%|█▊        | 18/100 [00:00<00:00, 124.06 it/sec, obj=-304]
    INFO - 12:32:16:     19%|█▉        | 19/100 [00:00<00:00, 123.54 it/sec, obj=-372]
    INFO - 12:32:16:     20%|██        | 20/100 [00:00<00:00, 125.84 it/sec, obj=-699]
    INFO - 12:32:16:     21%|██        | 21/100 [00:00<00:00, 125.69 it/sec, obj=-873]
    INFO - 12:32:16:     22%|██▏       | 22/100 [00:00<00:00, 124.31 it/sec, obj=-489]
    INFO - 12:32:16:     23%|██▎       | 23/100 [00:00<00:00, 122.79 it/sec, obj=-623]
    INFO - 12:32:16:     24%|██▍       | 24/100 [00:00<00:00, 124.13 it/sec, obj=-262]
    INFO - 12:32:16:     25%|██▌       | 25/100 [00:00<00:00, 126.00 it/sec, obj=-345]
    INFO - 12:32:16:     26%|██▌       | 26/100 [00:00<00:00, 124.60 it/sec, obj=-377]
    INFO - 12:32:16:     27%|██▋       | 27/100 [00:00<00:00, 123.80 it/sec, obj=-387]
    INFO - 12:32:16:     28%|██▊       | 28/100 [00:00<00:00, 120.88 it/sec, obj=-334]
    INFO - 12:32:16:     29%|██▉       | 29/100 [00:00<00:00, 122.49 it/sec, obj=-438]
    INFO - 12:32:16:     30%|███       | 30/100 [00:00<00:00, 123.65 it/sec, obj=-1.94e+3]
    INFO - 12:32:16:     31%|███       | 31/100 [00:00<00:00, 122.63 it/sec, obj=-733]
    INFO - 12:32:16:     32%|███▏      | 32/100 [00:00<00:00, 123.31 it/sec, obj=-774]
    INFO - 12:32:16:     33%|███▎      | 33/100 [00:00<00:00, 123.14 it/sec, obj=-517]
    INFO - 12:32:17:     34%|███▍      | 34/100 [00:00<00:00, 123.54 it/sec, obj=-232]
    INFO - 12:32:17:     35%|███▌      | 35/100 [00:00<00:00, 124.46 it/sec, obj=-195]
    INFO - 12:32:17:     36%|███▌      | 36/100 [00:00<00:00, 124.94 it/sec, obj=-218]
    INFO - 12:32:17:     37%|███▋      | 37/100 [00:00<00:00, 126.17 it/sec, obj=-198]
    INFO - 12:32:17:     38%|███▊      | 38/100 [00:00<00:00, 123.13 it/sec, obj=-536]
    INFO - 12:32:17:     39%|███▉      | 39/100 [00:00<00:00, 120.38 it/sec, obj=-173]
    INFO - 12:32:17:     40%|████      | 40/100 [00:00<00:00, 120.88 it/sec, obj=-388]
    INFO - 12:32:17:     41%|████      | 41/100 [00:00<00:00, 120.77 it/sec, obj=-723]
    INFO - 12:32:17:     42%|████▏     | 42/100 [00:00<00:00, 120.06 it/sec, obj=-240]
    INFO - 12:32:17:     43%|████▎     | 43/100 [00:00<00:00, 120.57 it/sec, obj=-663]
    INFO - 12:32:17:     44%|████▍     | 44/100 [00:00<00:00, 119.61 it/sec, obj=-1.14e+3]
    INFO - 12:32:17:     45%|████▌     | 45/100 [00:00<00:00, 118.81 it/sec, obj=-438]
    INFO - 12:32:17:     46%|████▌     | 46/100 [00:00<00:00, 118.29 it/sec, obj=-301]
    INFO - 12:32:17:     47%|████▋     | 47/100 [00:00<00:00, 118.46 it/sec, obj=-682]
    INFO - 12:32:17:     48%|████▊     | 48/100 [00:00<00:00, 118.12 it/sec, obj=-750]
    INFO - 12:32:17:     49%|████▉     | 49/100 [00:00<00:00, 117.87 it/sec, obj=-789]
    INFO - 12:32:17:     50%|█████     | 50/100 [00:00<00:00, 117.12 it/sec, obj=-395]
    INFO - 12:32:17:     51%|█████     | 51/100 [00:00<00:00, 116.25 it/sec, obj=-407]
    INFO - 12:32:17:     52%|█████▏    | 52/100 [00:00<00:00, 116.04 it/sec, obj=-315]
    INFO - 12:32:17:     53%|█████▎    | 53/100 [00:00<00:00, 116.07 it/sec, obj=-337]
    INFO - 12:32:17:     54%|█████▍    | 54/100 [00:00<00:00, 115.65 it/sec, obj=-414]
    INFO - 12:32:17:     55%|█████▌    | 55/100 [00:00<00:00, 116.08 it/sec, obj=-240]
    INFO - 12:32:17:     56%|█████▌    | 56/100 [00:00<00:00, 116.71 it/sec, obj=-297]
    INFO - 12:32:17:     57%|█████▋    | 57/100 [00:00<00:00, 116.94 it/sec, obj=-442]
    INFO - 12:32:17:     58%|█████▊    | 58/100 [00:00<00:00, 117.15 it/sec, obj=-233]
    INFO - 12:32:17:     59%|█████▉    | 59/100 [00:00<00:00, 116.49 it/sec, obj=-519]
    INFO - 12:32:17:     60%|██████    | 60/100 [00:00<00:00, 115.73 it/sec, obj=-920]
    INFO - 12:32:17:     61%|██████    | 61/100 [00:00<00:00, 115.37 it/sec, obj=-517]
    INFO - 12:32:17:     62%|██████▏   | 62/100 [00:00<00:00, 115.74 it/sec, obj=-390]
    INFO - 12:32:17:     63%|██████▎   | 63/100 [00:00<00:00, 116.13 it/sec, obj=-434]
    INFO - 12:32:17:     64%|██████▍   | 64/100 [00:00<00:00, 116.49 it/sec, obj=-244]
    INFO - 12:32:17:     65%|██████▌   | 65/100 [00:00<00:00, 116.10 it/sec, obj=-192]
    INFO - 12:32:17:     66%|██████▌   | 66/100 [00:00<00:00, 116.26 it/sec, obj=-305]
    INFO - 12:32:17:     67%|██████▋   | 67/100 [00:00<00:00, 115.53 it/sec, obj=-393]
    INFO - 12:32:17:     68%|██████▊   | 68/100 [00:00<00:00, 115.21 it/sec, obj=-307]
    INFO - 12:32:17:     69%|██████▉   | 69/100 [00:00<00:00, 115.13 it/sec, obj=-328]
    INFO - 12:32:17:     70%|███████   | 70/100 [00:00<00:00, 115.13 it/sec, obj=-998]
    INFO - 12:32:17:     71%|███████   | 71/100 [00:00<00:00, 114.98 it/sec, obj=-1.06e+3]
    INFO - 12:32:17:     72%|███████▏  | 72/100 [00:00<00:00, 115.13 it/sec, obj=-707]
    INFO - 12:32:17:     73%|███████▎  | 73/100 [00:00<00:00, 115.60 it/sec, obj=-897]
    INFO - 12:32:17:     74%|███████▍  | 74/100 [00:00<00:00, 115.96 it/sec, obj=-1.36e+3]
    INFO - 12:32:17:     75%|███████▌  | 75/100 [00:00<00:00, 115.99 it/sec, obj=-853]
    INFO - 12:32:17:     76%|███████▌  | 76/100 [00:00<00:00, 116.39 it/sec, obj=-217]
    INFO - 12:32:17:     77%|███████▋  | 77/100 [00:00<00:00, 116.04 it/sec, obj=-370]
    INFO - 12:32:17:     78%|███████▊  | 78/100 [00:00<00:00, 115.96 it/sec, obj=-636]
    INFO - 12:32:17:     79%|███████▉  | 79/100 [00:00<00:00, 116.21 it/sec, obj=-337]
    INFO - 12:32:17:     80%|████████  | 80/100 [00:00<00:00, 116.33 it/sec, obj=-804]
    INFO - 12:32:17:     81%|████████  | 81/100 [00:00<00:00, 116.63 it/sec, obj=-318]
    INFO - 12:32:17:     82%|████████▏ | 82/100 [00:00<00:00, 116.92 it/sec, obj=-253]
    INFO - 12:32:17:     83%|████████▎ | 83/100 [00:00<00:00, 116.71 it/sec, obj=-590]
    INFO - 12:32:17:     84%|████████▍ | 84/100 [00:00<00:00, 115.81 it/sec, obj=-438]
    INFO - 12:32:17:     85%|████████▌ | 85/100 [00:00<00:00, 115.00 it/sec, obj=-642]
    INFO - 12:32:17:     86%|████████▌ | 86/100 [00:00<00:00, 115.68 it/sec, obj=-381]
    INFO - 12:32:17:     87%|████████▋ | 87/100 [00:00<00:00, 115.47 it/sec, obj=-447]
    INFO - 12:32:17:     88%|████████▊ | 88/100 [00:00<00:00, 115.25 it/sec, obj=-707]
    INFO - 12:32:17:     89%|████████▉ | 89/100 [00:00<00:00, 115.65 it/sec, obj=-384]
    INFO - 12:32:17:     90%|█████████ | 90/100 [00:00<00:00, 115.84 it/sec, obj=-491]
    INFO - 12:32:17:     91%|█████████ | 91/100 [00:00<00:00, 115.86 it/sec, obj=-285]
    INFO - 12:32:17:     92%|█████████▏| 92/100 [00:00<00:00, 115.73 it/sec, obj=-433]
    INFO - 12:32:17:     93%|█████████▎| 93/100 [00:00<00:00, 115.53 it/sec, obj=-377]
    INFO - 12:32:17:     94%|█████████▍| 94/100 [00:00<00:00, 115.56 it/sec, obj=-827]
    INFO - 12:32:17:     95%|█████████▌| 95/100 [00:00<00:00, 114.81 it/sec, obj=-712]
    INFO - 12:32:17:     96%|█████████▌| 96/100 [00:00<00:00, 115.07 it/sec, obj=-245]
    INFO - 12:32:17:     97%|█████████▋| 97/100 [00:00<00:00, 115.32 it/sec, obj=-502]
    INFO - 12:32:17:     98%|█████████▊| 98/100 [00:00<00:00, 115.12 it/sec, obj=-309]
    INFO - 12:32:17:     99%|█████████▉| 99/100 [00:00<00:00, 115.25 it/sec, obj=-971]
    INFO - 12:32:17:    100%|██████████| 100/100 [00:00<00:00, 114.74 it/sec, obj=-649]
    INFO - 12:32:17: Optimization result:
    INFO - 12:32:17:    Optimizer info:
    INFO - 12:32:17:       Status: None
    INFO - 12:32:17:       Message: None
    INFO - 12:32:17:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:17:    Solution:
    INFO - 12:32:17:       The solution is feasible.
    INFO - 12:32:17:       Objective: -659.1819417003436
    INFO - 12:32:17:       Standardized constraints:
    INFO - 12:32:17:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 12:32:17:  -0.19803381]
    INFO - 12:32:17:          g_2 = -0.007088218675791014
    INFO - 12:32:17:          g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
    INFO - 12:32:17:       Design space:
    INFO - 12:32:17:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:17:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:17:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:17:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 12:32:17:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 12:32:17:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 12:32:17:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 12:32:17:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 12:32:17:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 12:32:17:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 12:32:17:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 12:32:17:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 12:32:17:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 12:32:17:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:17: *** End DOEScenario execution ***

Conclusion

JAX is about 3 times faster than NumPy in the case of a sampling loop with a Gauss-Seidel MDA.

Optimization

MDF with MDAJacobi

Solve the Sobieski's SSBJ problem with JAX

chain = JAXSobieskiChain()
mod_scenario = MDOScenario(
    [chain],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)

Out:

    INFO - 12:32:18: Compilation of the output function JAXSobieskiChain: 0:00:00.323144 seconds.
    INFO - 12:32:18: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.020122 seconds.
    INFO - 12:32:18: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:18: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:18: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:18: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:18: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:18: *** Start MDOScenario execution ***
    INFO - 12:32:18: MDOScenario
    INFO - 12:32:18:    Disciplines: JAXSobieskiChain
    INFO - 12:32:18:    MDO formulation: MDF
    INFO - 12:32:18: Optimization problem:
    INFO - 12:32:18:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:18:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:18:    under the inequality constraints
    INFO - 12:32:18:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:18:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:18:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:18:    over the design space:
    INFO - 12:32:18:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:18:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:18:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:18:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:18:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:18:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:18:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:18:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:18:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:18:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:18:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:18:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:18:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:18:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:18: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 12:32:18:      1%|          | 1/100 [00:00<00:00, 241.37 it/sec, obj=-536]
    INFO - 12:32:18:      2%|         | 2/100 [00:00<00:00, 185.35 it/sec, obj=-539]
    INFO - 12:32:18:      3%|         | 3/100 [00:00<00:00, 180.89 it/sec, obj=-763]
    INFO - 12:32:18:      4%|         | 4/100 [00:00<00:00, 180.33 it/sec, obj=-713]
    INFO - 12:32:19:      5%|         | 5/100 [00:00<00:00, 179.81 it/sec, obj=-687]
    INFO - 12:32:19:      6%|         | 6/100 [00:00<00:00, 180.37 it/sec, obj=-897]
    INFO - 12:32:19:      7%|         | 7/100 [00:00<00:00, 177.41 it/sec, obj=-957]
    INFO - 12:32:19:      8%|         | 8/100 [00:00<00:00, 161.53 it/sec, obj=-956]
    INFO - 12:32:19:      9%|         | 9/100 [00:00<00:00, 160.32 it/sec, obj=-930]
    INFO - 12:32:19:     10%|         | 10/100 [00:00<00:00, 157.50 it/sec, obj=-943]
    INFO - 12:32:19:     11%|         | 11/100 [00:00<00:00, 159.47 it/sec, obj=-768]
    INFO - 12:32:19:     12%|█▏        | 12/100 [00:00<00:00, 158.38 it/sec, obj=-1e+3]
    INFO - 12:32:19:     13%|█▎        | 13/100 [00:00<00:00, 157.73 it/sec, obj=-1.34e+3]
    INFO - 12:32:19:     14%|█▍        | 14/100 [00:00<00:00, 157.17 it/sec, obj=-1.85e+3]
    INFO - 12:32:19:     15%|█▌        | 15/100 [00:00<00:00, 155.64 it/sec, obj=-1.87e+3]
    INFO - 12:32:19:     16%|█▌        | 16/100 [00:00<00:00, 154.08 it/sec, obj=-1.99e+3]
    INFO - 12:32:19:     17%|█▋        | 17/100 [00:00<00:00, 153.66 it/sec, obj=-2.18e+3]
    INFO - 12:32:19:     18%|█▊        | 18/100 [00:00<00:00, 151.99 it/sec, obj=-2.2e+3]
    INFO - 12:32:19:     19%|█▉        | 19/100 [00:00<00:00, 150.83 it/sec, obj=-2.42e+3]
    INFO - 12:32:19:     20%|██        | 20/100 [00:00<00:00, 150.78 it/sec, obj=-3.03e+3]
    INFO - 12:32:19:     21%|██        | 21/100 [00:00<00:00, 150.78 it/sec, obj=-2.99e+3]
    INFO - 12:32:19:     22%|██▏       | 22/100 [00:00<00:00, 150.53 it/sec, obj=-2.63e+3]
    INFO - 12:32:19:     23%|██▎       | 23/100 [00:00<00:00, 149.85 it/sec, obj=-3.08e+3]
    INFO - 12:32:19:     24%|██▍       | 24/100 [00:00<00:00, 149.21 it/sec, obj=-3.12e+3]
    INFO - 12:32:19:     25%|██▌       | 25/100 [00:00<00:00, 148.66 it/sec, obj=-3.2e+3]
    INFO - 12:32:19:     26%|██▌       | 26/100 [00:00<00:00, 147.94 it/sec, obj=-2.76e+3]
    INFO - 12:32:19:     27%|██▋       | 27/100 [00:00<00:00, 147.52 it/sec, obj=-3.46e+3]
    INFO - 12:32:19:     28%|██▊       | 28/100 [00:00<00:00, 147.73 it/sec, obj=-3.51e+3]
    INFO - 12:32:19:     29%|██▉       | 29/100 [00:00<00:00, 148.02 it/sec, obj=-3.41e+3]
    INFO - 12:32:19:     30%|███       | 30/100 [00:00<00:00, 148.34 it/sec, obj=-3.28e+3]
    INFO - 12:32:19:     31%|███       | 31/100 [00:00<00:00, 147.32 it/sec, obj=-3.87e+3]
    INFO - 12:32:19:     32%|███▏      | 32/100 [00:00<00:00, 146.94 it/sec, obj=-3.49e+3]
    INFO - 12:32:19:     33%|███▎      | 33/100 [00:00<00:00, 146.97 it/sec, obj=-3.67e+3]
    INFO - 12:32:19:     34%|███▍      | 34/100 [00:00<00:00, 147.17 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     35%|███▌      | 35/100 [00:00<00:00, 147.01 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     36%|███▌      | 36/100 [00:00<00:00, 147.09 it/sec, obj=-3.68e+3]
    INFO - 12:32:19:     37%|███▋      | 37/100 [00:00<00:00, 146.82 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     38%|███▊      | 38/100 [00:00<00:00, 146.82 it/sec, obj=-3.93e+3]
    INFO - 12:32:19:     39%|███▉      | 39/100 [00:00<00:00, 146.39 it/sec, obj=-3.64e+3]
    INFO - 12:32:19:     40%|████      | 40/100 [00:00<00:00, 146.25 it/sec, obj=-3.4e+3]
    INFO - 12:32:19:     41%|████      | 41/100 [00:00<00:00, 145.90 it/sec, obj=-3.37e+3]
    INFO - 12:32:19:     42%|████▏     | 42/100 [00:00<00:00, 145.48 it/sec, obj=-3.83e+3]
    INFO - 12:32:19:     43%|████▎     | 43/100 [00:00<00:00, 145.52 it/sec, obj=-3.95e+3]
    INFO - 12:32:19:     44%|████▍     | 44/100 [00:00<00:00, 145.55 it/sec, obj=-3.83e+3]
    INFO - 12:32:19:     45%|████▌     | 45/100 [00:00<00:00, 145.63 it/sec, obj=-3.67e+3]
    INFO - 12:32:19:     46%|████▌     | 46/100 [00:00<00:00, 145.25 it/sec, obj=-3.39e+3]
    INFO - 12:32:19:     47%|████▋     | 47/100 [00:00<00:00, 144.96 it/sec, obj=-3.49e+3]
    INFO - 12:32:19:     48%|████▊     | 48/100 [00:00<00:00, 145.09 it/sec, obj=-3.56e+3]
    INFO - 12:32:19:     49%|████▉     | 49/100 [00:00<00:00, 145.14 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     50%|█████     | 50/100 [00:00<00:00, 144.91 it/sec, obj=-3.76e+3]
    INFO - 12:32:19:     51%|█████     | 51/100 [00:00<00:00, 145.02 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     52%|█████▏    | 52/100 [00:00<00:00, 145.43 it/sec, obj=-3.62e+3]
    INFO - 12:32:19:     53%|█████▎    | 53/100 [00:00<00:00, 145.77 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     54%|█████▍    | 54/100 [00:00<00:00, 146.11 it/sec, obj=-3.58e+3]
    INFO - 12:32:19:     55%|█████▌    | 55/100 [00:00<00:00, 146.36 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     56%|█████▌    | 56/100 [00:00<00:00, 146.69 it/sec, obj=-3.46e+3]
    INFO - 12:32:19:     57%|█████▋    | 57/100 [00:00<00:00, 147.00 it/sec, obj=-3.82e+3]
    INFO - 12:32:19:     58%|█████▊    | 58/100 [00:00<00:00, 147.25 it/sec, obj=-3.59e+3]
    INFO - 12:32:19:     59%|█████▉    | 59/100 [00:00<00:00, 147.48 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     60%|██████    | 60/100 [00:00<00:00, 147.69 it/sec, obj=-3.53e+3]
    INFO - 12:32:19:     61%|██████    | 61/100 [00:00<00:00, 147.93 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     62%|██████▏   | 62/100 [00:00<00:00, 148.18 it/sec, obj=-3.41e+3]
    INFO - 12:32:19:     63%|██████▎   | 63/100 [00:00<00:00, 148.46 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     64%|██████▍   | 64/100 [00:00<00:00, 148.55 it/sec, obj=-3.15e+3]
    INFO - 12:32:19:     65%|██████▌   | 65/100 [00:00<00:00, 148.55 it/sec, obj=-3.87e+3]
    INFO - 12:32:19:     66%|██████▌   | 66/100 [00:00<00:00, 148.50 it/sec, obj=-3.15e+3]
    INFO - 12:32:19:     67%|██████▋   | 67/100 [00:00<00:00, 148.78 it/sec, obj=-3.54e+3]
    INFO - 12:32:19:     68%|██████▊   | 68/100 [00:00<00:00, 148.83 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     69%|██████▉   | 69/100 [00:00<00:00, 148.61 it/sec, obj=-3.43e+3]
    INFO - 12:32:19:     70%|███████   | 70/100 [00:00<00:00, 148.59 it/sec, obj=-3.76e+3]
    INFO - 12:32:19:     71%|███████   | 71/100 [00:00<00:00, 148.59 it/sec, obj=-3.98e+3]
    INFO - 12:32:19:     72%|███████▏  | 72/100 [00:00<00:00, 148.55 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     73%|███████▎  | 73/100 [00:00<00:00, 148.34 it/sec, obj=-3.4e+3]
    INFO - 12:32:19:     74%|███████▍  | 74/100 [00:00<00:00, 148.34 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     75%|███████▌  | 75/100 [00:00<00:00, 148.10 it/sec, obj=-3.35e+3]
    INFO - 12:32:19:     76%|███████▌  | 76/100 [00:00<00:00, 147.94 it/sec, obj=-3.43e+3]
    INFO - 12:32:19:     77%|███████▋  | 77/100 [00:00<00:00, 147.71 it/sec, obj=-3.5e+3]
    INFO - 12:32:19:     78%|███████▊  | 78/100 [00:00<00:00, 147.49 it/sec, obj=-3.4e+3]
    INFO - 12:32:19:     79%|███████▉  | 79/100 [00:00<00:00, 147.54 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:     80%|████████  | 80/100 [00:00<00:00, 147.38 it/sec, obj=-3.26e+3]
    INFO - 12:32:19:     81%|████████  | 81/100 [00:00<00:00, 147.28 it/sec, obj=-3.74e+3]
    INFO - 12:32:19:     82%|████████▏ | 82/100 [00:00<00:00, 147.32 it/sec, obj=-4.03e+3]
    INFO - 12:32:19:     83%|████████▎ | 83/100 [00:00<00:00, 147.22 it/sec, obj=-3.44e+3]
    INFO - 12:32:19:     84%|████████▍ | 84/100 [00:00<00:00, 147.09 it/sec, obj=-3.66e+3]
    INFO - 12:32:19:     85%|████████▌ | 85/100 [00:00<00:00, 146.94 it/sec, obj=-3.48e+3]
    INFO - 12:32:19:     86%|████████▌ | 86/100 [00:00<00:00, 146.79 it/sec, obj=-3.6e+3]
    INFO - 12:32:19:     87%|████████▋ | 87/100 [00:00<00:00, 146.61 it/sec, obj=-3.42e+3]
    INFO - 12:32:19:     88%|████████▊ | 88/100 [00:00<00:00, 146.41 it/sec, obj=-3.3e+3]
    INFO - 12:32:19:     89%|████████▉ | 89/100 [00:00<00:00, 146.26 it/sec, obj=-3.73e+3]
    INFO - 12:32:19:     90%|█████████ | 90/100 [00:00<00:00, 146.14 it/sec, obj=-3.88e+3]
    INFO - 12:32:19:     91%|█████████ | 91/100 [00:00<00:00, 145.95 it/sec, obj=-3.78e+3]
    INFO - 12:32:19:     92%|█████████▏| 92/100 [00:00<00:00, 145.79 it/sec, obj=-3.6e+3]
    INFO - 12:32:19:     93%|█████████▎| 93/100 [00:00<00:00, 145.70 it/sec, obj=-3.71e+3]
    INFO - 12:32:19:     94%|█████████▍| 94/100 [00:00<00:00, 145.74 it/sec, obj=-3.79e+3]
    INFO - 12:32:19:     95%|█████████▌| 95/100 [00:00<00:00, 145.74 it/sec, obj=-3.77e+3]
    INFO - 12:32:19:     96%|█████████▌| 96/100 [00:00<00:00, 145.69 it/sec, obj=-3.74e+3]
    INFO - 12:32:19:     97%|█████████▋| 97/100 [00:00<00:00, 145.21 it/sec, obj=-3.63e+3]
    INFO - 12:32:19:     98%|█████████▊| 98/100 [00:00<00:00, 145.12 it/sec, obj=-3.57e+3]
    INFO - 12:32:19:     99%|█████████▉| 99/100 [00:00<00:00, 144.90 it/sec, obj=-3.96e+3]
    INFO - 12:32:19:    100%|██████████| 100/100 [00:00<00:00, 144.50 it/sec, obj=-3.96e+3]
    INFO - 12:32:19: Optimization result:
    INFO - 12:32:19:    Optimizer info:
    INFO - 12:32:19:       Status: None
    INFO - 12:32:19:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 12:32:19:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:19:    Solution:
    INFO - 12:32:19:       The solution is feasible.
    INFO - 12:32:19:       Objective: -3963.381916234575
    INFO - 12:32:19:       Standardized constraints:
    INFO - 12:32:19:          g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
    INFO - 12:32:19:  -0.10279135]
    INFO - 12:32:19:          g_2 = 0.0
    INFO - 12:32:19:          g_3 = [-7.67188837e-01 -2.32811163e-01  3.23790288e-06 -1.83255000e-01]
    INFO - 12:32:19:       Design space:
    INFO - 12:32:19:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:19:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:19:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:19:          | x_shared[0] |     0.01    | 0.06000000000000003 |     0.09    | float |
    INFO - 12:32:19:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 12:32:19:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 12:32:19:          | x_shared[3] |     2.5     |         2.5         |     8.5     | float |
    INFO - 12:32:19:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 12:32:19:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 12:32:19:          | x_1[0]      |     0.1     |         0.4         |     0.4     | float |
    INFO - 12:32:19:          | x_1[1]      |     0.75    |         0.75        |     1.25    | float |
    INFO - 12:32:19:          | x_2         |     0.75    |         0.75        |     1.25    | float |
    INFO - 12:32:19:          | x_3         |     0.1     |  0.1562452515515999 |      1      | float |
    INFO - 12:32:19:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:19: *** End MDOScenario execution ***

Solve the Sobieski's SSBJ problem with NumPy

mod_scenario = MDOScenario(
    [
        SobieskiStructure(),
        SobieskiAerodynamics(),
        SobieskiPropulsion(),
        SobieskiMission(),
    ],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)

Out:

    INFO - 12:32:19: *** Start MDOScenario execution ***
    INFO - 12:32:19: MDOScenario
    INFO - 12:32:19:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 12:32:19:    MDO formulation: MDF
    INFO - 12:32:19: Optimization problem:
    INFO - 12:32:19:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:19:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:19:    under the inequality constraints
    INFO - 12:32:19:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:19:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:19:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:19:    over the design space:
    INFO - 12:32:19:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:19:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:19:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:19:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:19:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:19:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:19:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:19:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:19:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:19:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:19:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:19:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:19:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:19:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:19: Solving optimization problem with algorithm NLOPT_COBYLA:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
  ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
    INFO - 12:32:19:      1%|          | 1/100 [00:00<00:01, 55.98 it/sec, obj=-536]
    INFO - 12:32:19:      2%|         | 2/100 [00:00<00:01, 50.52 it/sec, obj=-539]
    INFO - 12:32:19:      3%|         | 3/100 [00:00<00:01, 50.46 it/sec, obj=-763]
    INFO - 12:32:19:      4%|         | 4/100 [00:00<00:01, 50.71 it/sec, obj=-713]
    INFO - 12:32:19:      5%|         | 5/100 [00:00<00:01, 51.72 it/sec, obj=-687]
    INFO - 12:32:19:      6%|         | 6/100 [00:00<00:01, 51.74 it/sec, obj=-897]
    INFO - 12:32:19:      7%|         | 7/100 [00:00<00:01, 52.86 it/sec, obj=-957]
    INFO - 12:32:19:      8%|         | 8/100 [00:00<00:01, 53.01 it/sec, obj=-956]
    INFO - 12:32:19:      9%|         | 9/100 [00:00<00:01, 53.55 it/sec, obj=-930]
    INFO - 12:32:19:     10%|         | 10/100 [00:00<00:01, 54.05 it/sec, obj=-943]
    INFO - 12:32:19:     11%|         | 11/100 [00:00<00:01, 54.35 it/sec, obj=-768]
    INFO - 12:32:19:     12%|█▏        | 12/100 [00:00<00:01, 51.70 it/sec, obj=-1e+3]
    INFO - 12:32:19:     13%|█▎        | 13/100 [00:00<00:01, 49.94 it/sec, obj=-1.34e+3]
    INFO - 12:32:19:     14%|█▍        | 14/100 [00:00<00:01, 48.91 it/sec, obj=-1.85e+3]
    INFO - 12:32:20:     15%|█▌        | 15/100 [00:00<00:01, 47.26 it/sec, obj=-1.87e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.7204854871194414e-05 is still above the tolerance 1e-06.
    INFO - 12:32:20:     16%|█▌        | 16/100 [00:00<00:01, 45.68 it/sec, obj=-1.99e+3]
    INFO - 12:32:20:     17%|█▋        | 17/100 [00:00<00:01, 44.65 it/sec, obj=-2.18e+3]
    INFO - 12:32:20:     18%|█▊        | 18/100 [00:00<00:01, 43.57 it/sec, obj=-2.2e+3]
    INFO - 12:32:20:     19%|█▉        | 19/100 [00:00<00:01, 42.88 it/sec, obj=-2.42e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.9335592270087927e-05 is still above the tolerance 1e-06.
    INFO - 12:32:20:     20%|██        | 20/100 [00:00<00:01, 42.03 it/sec, obj=-2.37e+3]
    INFO - 12:32:20:     21%|██        | 21/100 [00:00<00:01, 41.76 it/sec, obj=-2.83e+3]
    INFO - 12:32:20:     22%|██▏       | 22/100 [00:00<00:01, 40.92 it/sec, obj=-3.12e+3]
    INFO - 12:32:20:     23%|██▎       | 23/100 [00:00<00:01, 40.86 it/sec, obj=-3.21e+3]
    INFO - 12:32:20:     24%|██▍       | 24/100 [00:00<00:01, 40.92 it/sec, obj=-3.99e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.6602480542748623e-05 is still above the tolerance 1e-06.
    INFO - 12:32:20:     25%|██▌       | 25/100 [00:00<00:01, 40.35 it/sec, obj=-2.6e+3]
    INFO - 12:32:20:     26%|██▌       | 26/100 [00:00<00:01, 40.05 it/sec, obj=-3.06e+3]
    INFO - 12:32:20:     27%|██▋       | 27/100 [00:00<00:01, 39.92 it/sec, obj=-2.98e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.131065719805529e-06 is still above the tolerance 1e-06.
    INFO - 12:32:20:     28%|██▊       | 28/100 [00:00<00:01, 39.14 it/sec, obj=-3.24e+3]
    INFO - 12:32:20:     29%|██▉       | 29/100 [00:00<00:01, 38.95 it/sec, obj=-3.67e+3]
    INFO - 12:32:20:     30%|███       | 30/100 [00:00<00:01, 38.97 it/sec, obj=-3.16e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 0.00020046262987076315 is still above the tolerance 1e-06.
    INFO - 12:32:20:     31%|███       | 31/100 [00:00<00:01, 38.63 it/sec, obj=-3.09e+3]
    INFO - 12:32:20:     32%|███▏      | 32/100 [00:00<00:01, 38.28 it/sec, obj=-3.47e+3]
    INFO - 12:32:20:     33%|███▎      | 33/100 [00:00<00:01, 37.96 it/sec, obj=-3.52e+3]
    INFO - 12:32:20:     34%|███▍      | 34/100 [00:00<00:01, 37.97 it/sec, obj=-3.52e+3]
    INFO - 12:32:20:     35%|███▌      | 35/100 [00:00<00:01, 37.63 it/sec, obj=-3.2e+3]
    INFO - 12:32:20:     36%|███▌      | 36/100 [00:00<00:01, 37.53 it/sec, obj=-3.52e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.5187500368837417e-06 is still above the tolerance 1e-06.
    INFO - 12:32:20:     37%|███▋      | 37/100 [00:00<00:01, 37.29 it/sec, obj=-2.96e+3]
    INFO - 12:32:20:     38%|███▊      | 38/100 [00:01<00:01, 37.33 it/sec, obj=-3.18e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.3580820715243732e-06 is still above the tolerance 1e-06.
    INFO - 12:32:20:     39%|███▉      | 39/100 [00:01<00:01, 37.11 it/sec, obj=-3.15e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.0068765557476064e-05 is still above the tolerance 1e-06.
    INFO - 12:32:20:     40%|████      | 40/100 [00:01<00:01, 36.84 it/sec, obj=-3.92e+3]
    INFO - 12:32:20:     41%|████      | 41/100 [00:01<00:01, 36.60 it/sec, obj=-3.96e+3]
    INFO - 12:32:20:     42%|████▏     | 42/100 [00:01<00:01, 36.52 it/sec, obj=-3.96e+3]
    INFO - 12:32:20:     43%|████▎     | 43/100 [00:01<00:01, 36.52 it/sec, obj=-3.96e+3]
    INFO - 12:32:20:     44%|████▍     | 44/100 [00:01<00:01, 36.33 it/sec, obj=-3.75e+3]
    INFO - 12:32:20:     45%|████▌     | 45/100 [00:01<00:01, 36.25 it/sec, obj=-3.94e+3]
 WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.9699912018918902e-06 is still above the tolerance 1e-06.
    INFO - 12:32:20:     46%|████▌     | 46/100 [00:01<00:01, 36.04 it/sec, obj=-3.38e+3]
    INFO - 12:32:20:     47%|████▋     | 47/100 [00:01<00:01, 36.14 it/sec, obj=-3.79e+3]
    INFO - 12:32:21:     48%|████▊     | 48/100 [00:01<00:01, 36.05 it/sec, obj=-3.41e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.9604198356566634e-05 is still above the tolerance 1e-06.
    INFO - 12:32:21:     49%|████▉     | 49/100 [00:01<00:01, 35.92 it/sec, obj=-3.88e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.0414068021569107e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     50%|█████     | 50/100 [00:01<00:01, 35.76 it/sec, obj=-3.56e+3]
    INFO - 12:32:21:     51%|█████     | 51/100 [00:01<00:01, 35.78 it/sec, obj=-3.57e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.339805325609159e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     52%|█████▏    | 52/100 [00:01<00:01, 35.65 it/sec, obj=-3.31e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.903076918194352e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     53%|█████▎    | 53/100 [00:01<00:01, 35.55 it/sec, obj=-3.18e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.222419054177024e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     54%|█████▍    | 54/100 [00:01<00:01, 35.45 it/sec, obj=-3.27e+3]
    INFO - 12:32:21:     55%|█████▌    | 55/100 [00:01<00:01, 35.49 it/sec, obj=-3.83e+3]
    INFO - 12:32:21:     56%|█████▌    | 56/100 [00:01<00:01, 35.58 it/sec, obj=-3.75e+3]
    INFO - 12:32:21:     57%|█████▋    | 57/100 [00:01<00:01, 35.55 it/sec, obj=-3.42e+3]
    INFO - 12:32:21:     58%|█████▊    | 58/100 [00:01<00:01, 35.37 it/sec, obj=-3.51e+3]
    INFO - 12:32:21:     59%|█████▉    | 59/100 [00:01<00:01, 35.28 it/sec, obj=-3.62e+3]
    INFO - 12:32:21:     60%|██████    | 60/100 [00:01<00:01, 35.24 it/sec, obj=-3.5e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.439216568543729e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     61%|██████    | 61/100 [00:01<00:01, 35.11 it/sec, obj=-3.46e+3]
    INFO - 12:32:21:     62%|██████▏   | 62/100 [00:01<00:01, 35.09 it/sec, obj=-3.34e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 6.1842511238495055e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     63%|██████▎   | 63/100 [00:01<00:01, 35.01 it/sec, obj=-3.36e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.6372363218085485e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     64%|██████▍   | 64/100 [00:01<00:01, 34.94 it/sec, obj=-3.19e+3]
    INFO - 12:32:21:     65%|██████▌   | 65/100 [00:01<00:01, 34.83 it/sec, obj=-3.45e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 6.279609664777154e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     66%|██████▌   | 66/100 [00:01<00:00, 34.73 it/sec, obj=-3.45e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.405999600169342e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     67%|██████▋   | 67/100 [00:01<00:00, 34.65 it/sec, obj=-3.45e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.4425135716984906e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     68%|██████▊   | 68/100 [00:01<00:00, 34.49 it/sec, obj=-3.32e+3]
    INFO - 12:32:21:     69%|██████▉   | 69/100 [00:02<00:00, 34.39 it/sec, obj=-3.42e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.662998088252376e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     70%|███████   | 70/100 [00:02<00:00, 34.33 it/sec, obj=-3.54e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.981553508096536e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     71%|███████   | 71/100 [00:02<00:00, 34.21 it/sec, obj=-3.3e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.529222752819427e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     72%|███████▏  | 72/100 [00:02<00:00, 34.17 it/sec, obj=-3.34e+3]
    INFO - 12:32:21:     73%|███████▎  | 73/100 [00:02<00:00, 34.10 it/sec, obj=-3.14e+3]
    INFO - 12:32:21:     74%|███████▍  | 74/100 [00:02<00:00, 34.14 it/sec, obj=-3.64e+3]
    INFO - 12:32:21:     75%|███████▌  | 75/100 [00:02<00:00, 34.09 it/sec, obj=-3.39e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.6083054685158987e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     76%|███████▌  | 76/100 [00:02<00:00, 34.04 it/sec, obj=-3.11e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.712717311801625e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     77%|███████▋  | 77/100 [00:02<00:00, 33.98 it/sec, obj=-3.51e+3]
 WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.1988893016520166e-06 is still above the tolerance 1e-06.
    INFO - 12:32:21:     78%|███████▊  | 78/100 [00:02<00:00, 33.92 it/sec, obj=-3.07e+3]
    INFO - 12:32:22:     79%|███████▉  | 79/100 [00:02<00:00, 33.98 it/sec, obj=-3.69e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.3277311553287673e-06 is still above the tolerance 1e-06.
    INFO - 12:32:22:     80%|████████  | 80/100 [00:02<00:00, 33.93 it/sec, obj=-3.08e+3]
    INFO - 12:32:22:     81%|████████  | 81/100 [00:02<00:00, 33.89 it/sec, obj=-3.39e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 5.388041776135559e-06 is still above the tolerance 1e-06.
    INFO - 12:32:22:     82%|████████▏ | 82/100 [00:02<00:00, 33.84 it/sec, obj=-3.5e+3]
    INFO - 12:32:22:     83%|████████▎ | 83/100 [00:02<00:00, 33.80 it/sec, obj=-3.08e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.3902672321401141e-05 is still above the tolerance 1e-06.
    INFO - 12:32:22:     84%|████████▍ | 84/100 [00:02<00:00, 33.74 it/sec, obj=-3.79e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 8.258646891354083e-06 is still above the tolerance 1e-06.
    INFO - 12:32:22:     85%|████████▌ | 85/100 [00:02<00:00, 33.68 it/sec, obj=-3.67e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.0805763550512402e-05 is still above the tolerance 1e-06.
    INFO - 12:32:22:     86%|████████▌ | 86/100 [00:02<00:00, 33.60 it/sec, obj=-3.87e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.9796750242748394e-06 is still above the tolerance 1e-06.
    INFO - 12:32:22:     87%|████████▋ | 87/100 [00:02<00:00, 33.54 it/sec, obj=-3.38e+3]
    INFO - 12:32:22:     88%|████████▊ | 88/100 [00:02<00:00, 33.58 it/sec, obj=-3.96e+3]
    INFO - 12:32:22:     89%|████████▉ | 89/100 [00:02<00:00, 33.59 it/sec, obj=-3.94e+3]
    INFO - 12:32:22:     90%|█████████ | 90/100 [00:02<00:00, 33.62 it/sec, obj=-3.96e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.7338183877226514e-05 is still above the tolerance 1e-06.
    INFO - 12:32:22:     91%|█████████ | 91/100 [00:02<00:00, 33.56 it/sec, obj=-3.92e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.5198708905547502e-05 is still above the tolerance 1e-06.
    INFO - 12:32:22:     92%|█████████▏| 92/100 [00:02<00:00, 33.52 it/sec, obj=-3.9e+3]
    INFO - 12:32:22:     93%|█████████▎| 93/100 [00:02<00:00, 33.53 it/sec, obj=-3.96e+3]
    INFO - 12:32:22:     94%|█████████▍| 94/100 [00:02<00:00, 33.57 it/sec, obj=-3.92e+3]
    INFO - 12:32:22:     95%|█████████▌| 95/100 [00:02<00:00, 33.60 it/sec, obj=-3.96e+3]
    INFO - 12:32:22:     96%|█████████▌| 96/100 [00:02<00:00, 33.63 it/sec, obj=-3.94e+3]
    INFO - 12:32:22:     97%|█████████▋| 97/100 [00:02<00:00, 33.65 it/sec, obj=-3.92e+3]
    INFO - 12:32:22:     98%|█████████▊| 98/100 [00:02<00:00, 33.65 it/sec, obj=-3.92e+3]
    INFO - 12:32:22:     99%|█████████▉| 99/100 [00:02<00:00, 33.66 it/sec, obj=-3.91e+3]
 WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.842849391330206e-05 is still above the tolerance 1e-06.
    INFO - 12:32:22:    100%|██████████| 100/100 [00:02<00:00, 33.61 it/sec, obj=-3.93e+3]
    INFO - 12:32:22: Optimization result:
    INFO - 12:32:22:    Optimizer info:
    INFO - 12:32:22:       Status: None
    INFO - 12:32:22:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 12:32:22:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:22:    Solution:
    INFO - 12:32:22:       The solution is feasible.
    INFO - 12:32:22:       Objective: -3963.3793053483255
    INFO - 12:32:22:       Standardized constraints:
    INFO - 12:32:22:          g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
    INFO - 12:32:22:  -0.10279135]
    INFO - 12:32:22:          g_2 = 0.0
    INFO - 12:32:22:          g_3 = [-7.67185581e-01 -2.32814419e-01 -1.20219524e-06 -1.83255000e-01]
    INFO - 12:32:22:       Design space:
    INFO - 12:32:22:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:22:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:22:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:22:          | x_shared[0] |     0.01    | 0.05999999999999999 |     0.09    | float |
    INFO - 12:32:22:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 12:32:22:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 12:32:22:          | x_shared[3] |     2.5     |  2.500000000000015  |     8.5     | float |
    INFO - 12:32:22:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 12:32:22:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 12:32:22:          | x_1[0]      |     0.1     |         0.4         |     0.4     | float |
    INFO - 12:32:22:          | x_1[1]      |     0.75    |  0.7500000000000009 |     1.25    | float |
    INFO - 12:32:22:          | x_2         |     0.75    |  0.7500000000000089 |     1.25    | float |
    INFO - 12:32:22:          | x_3         |     0.1     |  0.1562445578095981 |      1      | float |
    INFO - 12:32:22:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:22: *** End MDOScenario execution ***

Conclusion

JAX is about 4 times faster than NumPy in the case of an optimization loop with a Jacobi MDA.

MDF with MDAGaussSeidel

Solve the Sobieski's SSBJ problem with JAX

chain = JAXSobieskiChain()
mod_scenario = MDOScenario(
    [chain],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
    main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)

Out:

    INFO - 12:32:24: Compilation of the output function JAXSobieskiChain: 0:00:00.326763 seconds.
    INFO - 12:32:24: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.016398 seconds.
    INFO - 12:32:24: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:24: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:24: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:24: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:24: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 12:32:24: *** Start MDOScenario execution ***
    INFO - 12:32:24: MDOScenario
    INFO - 12:32:24:    Disciplines: JAXSobieskiChain
    INFO - 12:32:24:    MDO formulation: MDF
    INFO - 12:32:24: Optimization problem:
    INFO - 12:32:24:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:24:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:24:    under the inequality constraints
    INFO - 12:32:24:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:24:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:24:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:24:    over the design space:
    INFO - 12:32:24:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:24:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:24:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:24:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:24:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:24:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:24:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:24:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:24:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:24:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:24:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:24:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:24:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:24:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:24: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 12:32:24:      1%|          | 1/100 [00:00<00:00, 242.25 it/sec, obj=-536]
    INFO - 12:32:24:      2%|         | 2/100 [00:00<00:00, 192.13 it/sec, obj=-539]
    INFO - 12:32:24:      3%|         | 3/100 [00:00<00:00, 192.09 it/sec, obj=-763]
    INFO - 12:32:24:      4%|         | 4/100 [00:00<00:00, 192.82 it/sec, obj=-713]
    INFO - 12:32:24:      5%|         | 5/100 [00:00<00:00, 191.43 it/sec, obj=-687]
    INFO - 12:32:24:      6%|         | 6/100 [00:00<00:00, 190.46 it/sec, obj=-897]
    INFO - 12:32:24:      7%|         | 7/100 [00:00<00:00, 187.96 it/sec, obj=-957]
    INFO - 12:32:24:      8%|         | 8/100 [00:00<00:00, 185.99 it/sec, obj=-956]
    INFO - 12:32:24:      9%|         | 9/100 [00:00<00:00, 177.97 it/sec, obj=-930]
    INFO - 12:32:24:     10%|         | 10/100 [00:00<00:00, 177.65 it/sec, obj=-943]
    INFO - 12:32:24:     11%|         | 11/100 [00:00<00:00, 177.71 it/sec, obj=-768]
    INFO - 12:32:24:     12%|█▏        | 12/100 [00:00<00:00, 175.03 it/sec, obj=-1e+3]
    INFO - 12:32:24:     13%|█▎        | 13/100 [00:00<00:00, 172.21 it/sec, obj=-1.34e+3]
    INFO - 12:32:24:     14%|█▍        | 14/100 [00:00<00:00, 169.43 it/sec, obj=-1.85e+3]
 WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.5897449414804664e-05 is still above the tolerance 1e-06.
    INFO - 12:32:24:     15%|█▌        | 15/100 [00:00<00:00, 165.26 it/sec, obj=-1.87e+3]
 WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 3.1764060178304437e-06 is still above the tolerance 1e-06.
    INFO - 12:32:24:     16%|█▌        | 16/100 [00:00<00:00, 161.75 it/sec, obj=-1.99e+3]
 WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.2161314217002324e-06 is still above the tolerance 1e-06.
    INFO - 12:32:24:     17%|█▋        | 17/100 [00:00<00:00, 158.92 it/sec, obj=-2.18e+3]
    INFO - 12:32:24:     18%|█▊        | 18/100 [00:00<00:00, 156.35 it/sec, obj=-2.51e+3]
    INFO - 12:32:24:     19%|█▉        | 19/100 [00:00<00:00, 155.73 it/sec, obj=-2.92e+3]
    INFO - 12:32:24:     20%|██        | 20/100 [00:00<00:00, 155.85 it/sec, obj=-3.03e+3]
    INFO - 12:32:24:     21%|██        | 21/100 [00:00<00:00, 157.31 it/sec, obj=-3.16e+3]
    INFO - 12:32:24:     22%|██▏       | 22/100 [00:00<00:00, 154.59 it/sec, obj=-2.75e+3]
    INFO - 12:32:24:     23%|██▎       | 23/100 [00:00<00:00, 155.50 it/sec, obj=-2.61e+3]
    INFO - 12:32:24:     24%|██▍       | 24/100 [00:00<00:00, 156.51 it/sec, obj=-2.22e+3]
    INFO - 12:32:24:     25%|██▌       | 25/100 [00:00<00:00, 157.90 it/sec, obj=-2.95e+3]
    INFO - 12:32:24:     26%|██▌       | 26/100 [00:00<00:00, 159.47 it/sec, obj=-3.3e+3]
    INFO - 12:32:24:     27%|██▋       | 27/100 [00:00<00:00, 160.97 it/sec, obj=-3.22e+3]
    INFO - 12:32:24:     28%|██▊       | 28/100 [00:00<00:00, 161.41 it/sec, obj=-3.49e+3]
    INFO - 12:32:24:     29%|██▉       | 29/100 [00:00<00:00, 162.21 it/sec, obj=-3.57e+3]
    INFO - 12:32:24:     30%|███       | 30/100 [00:00<00:00, 161.81 it/sec, obj=-3.13e+3]
    INFO - 12:32:24:     31%|███       | 31/100 [00:00<00:00, 162.67 it/sec, obj=-3.43e+3]
    INFO - 12:32:24:     32%|███▏      | 32/100 [00:00<00:00, 163.10 it/sec, obj=-3.52e+3]
    INFO - 12:32:24:     33%|███▎      | 33/100 [00:00<00:00, 163.87 it/sec, obj=-3.27e+3]
    INFO - 12:32:24:     34%|███▍      | 34/100 [00:00<00:00, 163.77 it/sec, obj=-3.56e+3]
    INFO - 12:32:24:     35%|███▌      | 35/100 [00:00<00:00, 164.17 it/sec, obj=-3.81e+3]
    INFO - 12:32:24:     36%|███▌      | 36/100 [00:00<00:00, 165.07 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     37%|███▋      | 37/100 [00:00<00:00, 165.20 it/sec, obj=-3.5e+3]
    INFO - 12:32:24:     38%|███▊      | 38/100 [00:00<00:00, 166.16 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     39%|███▉      | 39/100 [00:00<00:00, 166.23 it/sec, obj=-3.52e+3]
    INFO - 12:32:24:     40%|████      | 40/100 [00:00<00:00, 167.07 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     41%|████      | 41/100 [00:00<00:00, 167.40 it/sec, obj=-3.54e+3]
    INFO - 12:32:24:     42%|████▏     | 42/100 [00:00<00:00, 168.30 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     43%|████▎     | 43/100 [00:00<00:00, 168.30 it/sec, obj=-3.53e+3]
    INFO - 12:32:24:     44%|████▍     | 44/100 [00:00<00:00, 169.16 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     45%|████▌     | 45/100 [00:00<00:00, 169.53 it/sec, obj=-3.39e+3]
    INFO - 12:32:24:     46%|████▌     | 46/100 [00:00<00:00, 170.29 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     47%|████▋     | 47/100 [00:00<00:00, 171.02 it/sec, obj=-3.37e+3]
    INFO - 12:32:24:     48%|████▊     | 48/100 [00:00<00:00, 171.94 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     49%|████▉     | 49/100 [00:00<00:00, 171.69 it/sec, obj=-3.13e+3]
    INFO - 12:32:24:     50%|█████     | 50/100 [00:00<00:00, 172.57 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     51%|█████     | 51/100 [00:00<00:00, 173.17 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     52%|█████▏    | 52/100 [00:00<00:00, 173.52 it/sec, obj=-3.69e+3]
    INFO - 12:32:24:     53%|█████▎    | 53/100 [00:00<00:00, 173.88 it/sec, obj=-3.43e+3]
    INFO - 12:32:24:     54%|█████▍    | 54/100 [00:00<00:00, 174.32 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     55%|█████▌    | 55/100 [00:00<00:00, 174.25 it/sec, obj=-3.44e+3]
    INFO - 12:32:24:     56%|█████▌    | 56/100 [00:00<00:00, 174.72 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     57%|█████▋    | 57/100 [00:00<00:00, 174.76 it/sec, obj=-3.38e+3]
    INFO - 12:32:24:     58%|█████▊    | 58/100 [00:00<00:00, 175.13 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     59%|█████▉    | 59/100 [00:00<00:00, 174.35 it/sec, obj=-3.51e+3]
    INFO - 12:32:24:     60%|██████    | 60/100 [00:00<00:00, 174.53 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     61%|██████    | 61/100 [00:00<00:00, 173.67 it/sec, obj=-3.67e+3]
    INFO - 12:32:24:     62%|██████▏   | 62/100 [00:00<00:00, 173.98 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     63%|██████▎   | 63/100 [00:00<00:00, 173.99 it/sec, obj=-3.37e+3]
    INFO - 12:32:24:     64%|██████▍   | 64/100 [00:00<00:00, 174.31 it/sec, obj=-3.7e+3]
    INFO - 12:32:24:     65%|██████▌   | 65/100 [00:00<00:00, 174.64 it/sec, obj=-3.76e+3]
    INFO - 12:32:24:     66%|██████▌   | 66/100 [00:00<00:00, 174.47 it/sec, obj=-3.6e+3]
    INFO - 12:32:24:     67%|██████▋   | 67/100 [00:00<00:00, 174.87 it/sec, obj=-3.76e+3]
    INFO - 12:32:24:     68%|██████▊   | 68/100 [00:00<00:00, 175.07 it/sec, obj=-3.67e+3]
    INFO - 12:32:24:     69%|██████▉   | 69/100 [00:00<00:00, 174.91 it/sec, obj=-3.89e+3]
    INFO - 12:32:24:     70%|███████   | 70/100 [00:00<00:00, 174.77 it/sec, obj=-3.84e+3]
    INFO - 12:32:24:     71%|███████   | 71/100 [00:00<00:00, 174.75 it/sec, obj=-3.79e+3]
    INFO - 12:32:24:     72%|███████▏  | 72/100 [00:00<00:00, 174.42 it/sec, obj=-3.93e+3]
    INFO - 12:32:24:     73%|███████▎  | 73/100 [00:00<00:00, 174.09 it/sec, obj=-3.9e+3]
    INFO - 12:32:24:     74%|███████▍  | 74/100 [00:00<00:00, 173.81 it/sec, obj=-3.67e+3]
    INFO - 12:32:24:     75%|███████▌  | 75/100 [00:00<00:00, 173.55 it/sec, obj=-3.9e+3]
    INFO - 12:32:24:     76%|███████▌  | 76/100 [00:00<00:00, 173.37 it/sec, obj=-3.8e+3]
    INFO - 12:32:24:     77%|███████▋  | 77/100 [00:00<00:00, 173.17 it/sec, obj=-3.9e+3]
    INFO - 12:32:24:     78%|███████▊  | 78/100 [00:00<00:00, 172.40 it/sec, obj=-3.78e+3]
    INFO - 12:32:24:     79%|███████▉  | 79/100 [00:00<00:00, 171.91 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     80%|████████  | 80/100 [00:00<00:00, 171.63 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     81%|████████  | 81/100 [00:00<00:00, 171.52 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     82%|████████▏ | 82/100 [00:00<00:00, 171.37 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     83%|████████▎ | 83/100 [00:00<00:00, 171.23 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     84%|████████▍ | 84/100 [00:00<00:00, 171.02 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     85%|████████▌ | 85/100 [00:00<00:00, 170.36 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     86%|████████▌ | 86/100 [00:00<00:00, 170.13 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     87%|████████▋ | 87/100 [00:00<00:00, 169.93 it/sec, obj=-3.96e+3]
    INFO - 12:32:24:     88%|████████▊ | 88/100 [00:00<00:00, 169.79 it/sec, obj=-3.72e+3]
    INFO - 12:32:24:     89%|████████▉ | 89/100 [00:00<00:00, 169.70 it/sec, obj=-3.77e+3]
    INFO - 12:32:24:     90%|█████████ | 90/100 [00:00<00:00, 169.68 it/sec, obj=-3.79e+3]
    INFO - 12:32:24:     91%|█████████ | 91/100 [00:00<00:00, 169.63 it/sec, obj=-3.78e+3]
    INFO - 12:32:24:     92%|█████████▏| 92/100 [00:00<00:00, 169.07 it/sec, obj=-4.09e+3]
    INFO - 12:32:24:     93%|█████████▎| 93/100 [00:00<00:00, 168.93 it/sec, obj=-3.64e+3]
    INFO - 12:32:24:     94%|█████████▍| 94/100 [00:00<00:00, 168.95 it/sec, obj=-3.8e+3]
    INFO - 12:32:24:     95%|█████████▌| 95/100 [00:00<00:00, 168.96 it/sec, obj=-4.1e+3]
    INFO - 12:32:24:     96%|█████████▌| 96/100 [00:00<00:00, 168.80 it/sec, obj=-4.01e+3]
    INFO - 12:32:24:     97%|█████████▋| 97/100 [00:00<00:00, 168.71 it/sec, obj=-3.95e+3]
    INFO - 12:32:24:     98%|█████████▊| 98/100 [00:00<00:00, 168.67 it/sec, obj=-4.17e+3]
    INFO - 12:32:24:     99%|█████████▉| 99/100 [00:00<00:00, 167.76 it/sec, obj=-3.67e+3]
    INFO - 12:32:24:    100%|██████████| 100/100 [00:00<00:00, 167.00 it/sec, obj=-3.71e+3]
    INFO - 12:32:24: Optimization result:
    INFO - 12:32:24:    Optimizer info:
    INFO - 12:32:24:       Status: None
    INFO - 12:32:24:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 12:32:24:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:24:    Solution:
    INFO - 12:32:24:       The solution is feasible.
    INFO - 12:32:24:       Objective: -3963.3800122141256
    INFO - 12:32:24:       Standardized constraints:
    INFO - 12:32:24:          g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
    INFO - 12:32:24:  -0.10279135]
    INFO - 12:32:24:          g_2 = 0.0
    INFO - 12:32:24:          g_3 = [-7.67186463e-01 -2.32813537e-01 -9.08552122e-11 -1.83255000e-01]
    INFO - 12:32:24:       Design space:
    INFO - 12:32:24:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:24:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:24:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:24:          | x_shared[0] |     0.01    | 0.06000000000000003 |     0.09    | float |
    INFO - 12:32:24:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 12:32:24:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 12:32:24:          | x_shared[3] |     2.5     |         2.5         |     8.5     | float |
    INFO - 12:32:24:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 12:32:24:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 12:32:24:          | x_1[0]      |     0.1     |         0.4         |     0.4     | float |
    INFO - 12:32:24:          | x_1[1]      |     0.75    |         0.75        |     1.25    | float |
    INFO - 12:32:24:          | x_2         |     0.75    |         0.75        |     1.25    | float |
    INFO - 12:32:24:          | x_3         |     0.1     |  0.1562447456320918 |      1      | float |
    INFO - 12:32:24:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:24: *** End MDOScenario execution ***

Solve the Sobieski's SSBJ problem with NumPy

mod_scenario = MDOScenario(
    [
        SobieskiStructure(),
        SobieskiAerodynamics(),
        SobieskiPropulsion(),
        SobieskiMission(),
    ],
    "y_4",
    SobieskiDesignSpace(),
    maximize_objective=True,
    formulation_name="MDF",
    main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)

Out:

    INFO - 12:32:24: *** Start MDOScenario execution ***
    INFO - 12:32:24: MDOScenario
    INFO - 12:32:24:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 12:32:24:    MDO formulation: MDF
    INFO - 12:32:24: Optimization problem:
    INFO - 12:32:24:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 12:32:24:    with respect to x_1, x_2, x_3, x_shared
    INFO - 12:32:24:    under the inequality constraints
    INFO - 12:32:24:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:24:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:24:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 12:32:24:    over the design space:
    INFO - 12:32:24:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:24:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 12:32:24:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:24:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 12:32:24:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 12:32:24:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 12:32:24:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 12:32:24:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 12:32:24:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 12:32:24:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 12:32:24:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:24:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 12:32:24:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 12:32:24:       +-------------+-------------+-------+-------------+-------+
    INFO - 12:32:24: Solving optimization problem with algorithm NLOPT_COBYLA:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
  ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
    INFO - 12:32:24:      1%|          | 1/100 [00:00<00:00, 109.39 it/sec, obj=-536]
    INFO - 12:32:24:      2%|         | 2/100 [00:00<00:01, 85.17 it/sec, obj=-539]
    INFO - 12:32:24:      3%|         | 3/100 [00:00<00:01, 80.99 it/sec, obj=-763]
    INFO - 12:32:24:      4%|         | 4/100 [00:00<00:01, 80.94 it/sec, obj=-713]
    INFO - 12:32:24:      5%|         | 5/100 [00:00<00:01, 80.96 it/sec, obj=-687]
    INFO - 12:32:24:      6%|         | 6/100 [00:00<00:01, 78.59 it/sec, obj=-897]
    INFO - 12:32:24:      7%|         | 7/100 [00:00<00:01, 77.10 it/sec, obj=-957]
    INFO - 12:32:24:      8%|         | 8/100 [00:00<00:01, 75.80 it/sec, obj=-956]
    INFO - 12:32:24:      9%|         | 9/100 [00:00<00:01, 72.57 it/sec, obj=-930]
    INFO - 12:32:24:     10%|         | 10/100 [00:00<00:01, 72.35 it/sec, obj=-943]
    INFO - 12:32:24:     11%|         | 11/100 [00:00<00:01, 72.18 it/sec, obj=-768]
    INFO - 12:32:24:     12%|█▏        | 12/100 [00:00<00:01, 71.56 it/sec, obj=-1e+3]
    INFO - 12:32:24:     13%|█▎        | 13/100 [00:00<00:01, 70.14 it/sec, obj=-1.34e+3]
    INFO - 12:32:24:     14%|█▍        | 14/100 [00:00<00:01, 69.10 it/sec, obj=-1.85e+3]
 WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.0691449634588397e-05 is still above the tolerance 1e-06.
    INFO - 12:32:24:     15%|█▌        | 15/100 [00:00<00:01, 67.38 it/sec, obj=-1.87e+3]
 WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.6881473826143826e-06 is still above the tolerance 1e-06.
    INFO - 12:32:24:     16%|█▌        | 16/100 [00:00<00:01, 66.00 it/sec, obj=-1.99e+3]
    INFO - 12:32:24:     17%|█▋        | 17/100 [00:00<00:01, 64.76 it/sec, obj=-2.18e+3]
    INFO - 12:32:24:     18%|█▊        | 18/100 [00:00<00:01, 64.09 it/sec, obj=-2.51e+3]
    INFO - 12:32:24:     19%|█▉        | 19/100 [00:00<00:01, 64.04 it/sec, obj=-2.31e+3]
    INFO - 12:32:24:     20%|██        | 20/100 [00:00<00:01, 63.57 it/sec, obj=-2.06e+3]
    INFO - 12:32:24:     21%|██        | 21/100 [00:00<00:01, 63.62 it/sec, obj=-2.7e+3]
    INFO - 12:32:24:     22%|██▏       | 22/100 [00:00<00:01, 64.10 it/sec, obj=-2.83e+3]
    INFO - 12:32:25:     23%|██▎       | 23/100 [00:00<00:01, 64.76 it/sec, obj=-3.41e+3]
    INFO - 12:32:25:     24%|██▍       | 24/100 [00:00<00:01, 65.67 it/sec, obj=-3.34e+3]
    INFO - 12:32:25:     25%|██▌       | 25/100 [00:00<00:01, 66.23 it/sec, obj=-3.11e+3]
    INFO - 12:32:25:     26%|██▌       | 26/100 [00:00<00:01, 66.18 it/sec, obj=-3.07e+3]
    INFO - 12:32:25:     27%|██▋       | 27/100 [00:00<00:01, 66.73 it/sec, obj=-3.14e+3]
    INFO - 12:32:25:     28%|██▊       | 28/100 [00:00<00:01, 67.12 it/sec, obj=-3e+3]
    INFO - 12:32:25:     29%|██▉       | 29/100 [00:00<00:01, 67.64 it/sec, obj=-3.16e+3]
    INFO - 12:32:25:     30%|███       | 30/100 [00:00<00:01, 67.70 it/sec, obj=-3.34e+3]
    INFO - 12:32:25:     31%|███       | 31/100 [00:00<00:01, 67.95 it/sec, obj=-3.11e+3]
    INFO - 12:32:25:     32%|███▏      | 32/100 [00:00<00:01, 67.96 it/sec, obj=-2.79e+3]
    INFO - 12:32:25:     33%|███▎      | 33/100 [00:00<00:00, 68.12 it/sec, obj=-3.65e+3]
    INFO - 12:32:25:     34%|███▍      | 34/100 [00:00<00:00, 68.53 it/sec, obj=-3.52e+3]
    INFO - 12:32:25:     35%|███▌      | 35/100 [00:00<00:00, 68.57 it/sec, obj=-3.08e+3]
    INFO - 12:32:25:     36%|███▌      | 36/100 [00:00<00:00, 68.71 it/sec, obj=-4.17e+3]
    INFO - 12:32:25:     37%|███▋      | 37/100 [00:00<00:00, 68.65 it/sec, obj=-3.66e+3]
    INFO - 12:32:25:     38%|███▊      | 38/100 [00:00<00:00, 68.76 it/sec, obj=-3.49e+3]
    INFO - 12:32:25:     39%|███▉      | 39/100 [00:00<00:00, 69.10 it/sec, obj=-3.49e+3]
    INFO - 12:32:25:     40%|████      | 40/100 [00:00<00:00, 69.13 it/sec, obj=-4.15e+3]
    INFO - 12:32:25:     41%|████      | 41/100 [00:00<00:00, 69.26 it/sec, obj=-4.27e+3]
    INFO - 12:32:25:     42%|████▏     | 42/100 [00:00<00:00, 69.25 it/sec, obj=-4e+3]
    INFO - 12:32:25:     43%|████▎     | 43/100 [00:00<00:00, 69.17 it/sec, obj=-3.53e+3]
    INFO - 12:32:25:     44%|████▍     | 44/100 [00:00<00:00, 69.29 it/sec, obj=-4.36e+3]
    INFO - 12:32:25:     45%|████▌     | 45/100 [00:00<00:00, 69.40 it/sec, obj=-4.35e+3]
    INFO - 12:32:25:     46%|████▌     | 46/100 [00:00<00:00, 69.30 it/sec, obj=-3.65e+3]
    INFO - 12:32:25:     47%|████▋     | 47/100 [00:00<00:00, 69.34 it/sec, obj=-2.99e+3]
    INFO - 12:32:25:     48%|████▊     | 48/100 [00:00<00:00, 69.36 it/sec, obj=-3.39e+3]
    INFO - 12:32:25:     49%|████▉     | 49/100 [00:00<00:00, 69.45 it/sec, obj=-4.45e+3]
    INFO - 12:32:25:     50%|█████     | 50/100 [00:00<00:00, 69.58 it/sec, obj=-4.08e+3]
    INFO - 12:32:25:     51%|█████     | 51/100 [00:00<00:00, 69.54 it/sec, obj=-3.68e+3]
    INFO - 12:32:25:     52%|█████▏    | 52/100 [00:00<00:00, 69.68 it/sec, obj=-4.42e+3]
    INFO - 12:32:25:     53%|█████▎    | 53/100 [00:00<00:00, 69.90 it/sec, obj=-4.59e+3]
    INFO - 12:32:25:     54%|█████▍    | 54/100 [00:00<00:00, 70.03 it/sec, obj=-4.35e+3]
    INFO - 12:32:25:     55%|█████▌    | 55/100 [00:00<00:00, 70.05 it/sec, obj=-3.93e+3]
    INFO - 12:32:25:     56%|█████▌    | 56/100 [00:00<00:00, 70.15 it/sec, obj=-4.43e+3]
    INFO - 12:32:25:     57%|█████▋    | 57/100 [00:00<00:00, 70.18 it/sec, obj=-3.73e+3]
    INFO - 12:32:25:     58%|█████▊    | 58/100 [00:00<00:00, 70.30 it/sec, obj=-4.43e+3]
    INFO - 12:32:25:     59%|█████▉    | 59/100 [00:00<00:00, 70.41 it/sec, obj=-3.68e+3]
    INFO - 12:32:25:     60%|██████    | 60/100 [00:00<00:00, 70.51 it/sec, obj=-4.42e+3]
    INFO - 12:32:25:     61%|██████    | 61/100 [00:00<00:00, 70.45 it/sec, obj=-3.8e+3]
    INFO - 12:32:25:     62%|██████▏   | 62/100 [00:00<00:00, 70.46 it/sec, obj=-4.42e+3]
    INFO - 12:32:25:     63%|██████▎   | 63/100 [00:00<00:00, 70.62 it/sec, obj=-3.76e+3]
    INFO - 12:32:25:     64%|██████▍   | 64/100 [00:00<00:00, 70.71 it/sec, obj=-4.42e+3]
    INFO - 12:32:25:     65%|██████▌   | 65/100 [00:00<00:00, 70.80 it/sec, obj=-4.52e+3]
    INFO - 12:32:25:     66%|██████▌   | 66/100 [00:00<00:00, 70.81 it/sec, obj=-4.43e+3]
    INFO - 12:32:25:     67%|██████▋   | 67/100 [00:00<00:00, 70.96 it/sec, obj=-3.69e+3]
    INFO - 12:32:25:     68%|██████▊   | 68/100 [00:00<00:00, 71.05 it/sec, obj=-4.42e+3]
    INFO - 12:32:25:     69%|██████▉   | 69/100 [00:00<00:00, 71.19 it/sec, obj=-3.73e+3]
    INFO - 12:32:25:     70%|███████   | 70/100 [00:00<00:00, 71.18 it/sec, obj=-4.42e+3]
    INFO - 12:32:25:     71%|███████   | 71/100 [00:00<00:00, 71.27 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     72%|███████▏  | 72/100 [00:01<00:00, 71.33 it/sec, obj=-4.43e+3]
    INFO - 12:32:25:     73%|███████▎  | 73/100 [00:01<00:00, 71.39 it/sec, obj=-4.5e+3]
    INFO - 12:32:25:     74%|███████▍  | 74/100 [00:01<00:00, 71.45 it/sec, obj=-4.5e+3]
    INFO - 12:32:25:     75%|███████▌  | 75/100 [00:01<00:00, 71.46 it/sec, obj=-4.25e+3]
    INFO - 12:32:25:     76%|███████▌  | 76/100 [00:01<00:00, 71.49 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     77%|███████▋  | 77/100 [00:01<00:00, 71.56 it/sec, obj=-4.28e+3]
    INFO - 12:32:25:     78%|███████▊  | 78/100 [00:01<00:00, 71.57 it/sec, obj=-3.92e+3]
    INFO - 12:32:25:     79%|███████▉  | 79/100 [00:01<00:00, 71.56 it/sec, obj=-3.96e+3]
    INFO - 12:32:25:     80%|████████  | 80/100 [00:01<00:00, 71.58 it/sec, obj=-4.38e+3]
    INFO - 12:32:25:     81%|████████  | 81/100 [00:01<00:00, 71.62 it/sec, obj=-4.29e+3]
    INFO - 12:32:25:     82%|████████▏ | 82/100 [00:01<00:00, 71.68 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     83%|████████▎ | 83/100 [00:01<00:00, 71.72 it/sec, obj=-4.34e+3]
    INFO - 12:32:25:     84%|████████▍ | 84/100 [00:01<00:00, 71.78 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     85%|████████▌ | 85/100 [00:01<00:00, 71.83 it/sec, obj=-4.22e+3]
    INFO - 12:32:25:     86%|████████▌ | 86/100 [00:01<00:00, 71.84 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     87%|████████▋ | 87/100 [00:01<00:00, 71.87 it/sec, obj=-4.33e+3]
    INFO - 12:32:25:     88%|████████▊ | 88/100 [00:01<00:00, 71.93 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     89%|████████▉ | 89/100 [00:01<00:00, 71.99 it/sec, obj=-4.31e+3]
    INFO - 12:32:25:     90%|█████████ | 90/100 [00:01<00:00, 72.05 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     91%|█████████ | 91/100 [00:01<00:00, 72.11 it/sec, obj=-4.27e+3]
    INFO - 12:32:25:     92%|█████████▏| 92/100 [00:01<00:00, 72.16 it/sec, obj=-4.31e+3]
    INFO - 12:32:25:     93%|█████████▎| 93/100 [00:01<00:00, 72.20 it/sec, obj=-4.32e+3]
    INFO - 12:32:25:     94%|█████████▍| 94/100 [00:01<00:00, 72.24 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     95%|█████████▌| 95/100 [00:01<00:00, 72.30 it/sec, obj=-4.21e+3]
    INFO - 12:32:25:     96%|█████████▌| 96/100 [00:01<00:00, 72.34 it/sec, obj=-4.49e+3]
    INFO - 12:32:25:     97%|█████████▋| 97/100 [00:01<00:00, 72.39 it/sec, obj=-4.19e+3]
    INFO - 12:32:26:     98%|█████████▊| 98/100 [00:01<00:00, 72.45 it/sec, obj=-4.49e+3]
    INFO - 12:32:26:     99%|█████████▉| 99/100 [00:01<00:00, 72.46 it/sec, obj=-4.13e+3]
    INFO - 12:32:26:    100%|██████████| 100/100 [00:01<00:00, 72.49 it/sec, obj=-4.49e+3]
    INFO - 12:32:26: Optimization result:
    INFO - 12:32:26:    Optimizer info:
    INFO - 12:32:26:       Status: None
    INFO - 12:32:26:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 12:32:26:       Number of calls to the objective function by the optimizer: 0
    INFO - 12:32:26:    Solution:
    INFO - 12:32:26:       The solution is feasible.
    INFO - 12:32:26:       Objective: -3003.8995230595424
    INFO - 12:32:26:       Standardized constraints:
    INFO - 12:32:26:          g_1 = [-0.18177087 -0.15303684 -0.13797373 -0.12871311 -0.12244655 -0.02429768
    INFO - 12:32:26:  -0.21570232]
    INFO - 12:32:26:          g_2 = -0.002615771711972803
    INFO - 12:32:26:          g_3 = [-0.78613294 -0.21386706 -0.07631583 -0.17779628]
    INFO - 12:32:26:       Design space:
    INFO - 12:32:26:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:26:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 12:32:26:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:26:          | x_shared[0] |     0.01    | 0.05934605707200682 |     0.09    | float |
    INFO - 12:32:26:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 12:32:26:          | x_shared[2] |     1.4     |  1.440947137798596  |     1.8     | float |
    INFO - 12:32:26:          | x_shared[3] |     2.5     |  2.682168463995586  |     8.5     | float |
    INFO - 12:32:26:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 12:32:26:          | x_shared[5] |     500     |  1315.825005558175  |     1500    | float |
    INFO - 12:32:26:          | x_1[0]      |     0.1     |  0.1000000000000001 |     0.4     | float |
    INFO - 12:32:26:          | x_1[1]      |     0.75    |  0.9200062439484883 |     1.25    | float |
    INFO - 12:32:26:          | x_2         |     0.75    |  0.8112680369735645 |     1.25    | float |
    INFO - 12:32:26:          | x_3         |     0.1     |  0.1498242691956934 |      1      | float |
    INFO - 12:32:26:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 12:32:26: *** End MDOScenario execution ***

Conclusion

JAX is about 3 times faster than NumPy in the case of an optimization loop with a Gauss-Seidel MDA.

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

Download Python source code: plot_sobieski_mdf.py

Download Jupyter notebook: plot_sobieski_mdf.ipynb

Gallery generated by mkdocs-gallery