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.9/site-packages/networkx/utils/backends.py:135: RuntimeWarning: networkx backend defined more than once: nx-loopback
  backends.update(_get_backends("networkx.backends"))
<frozen importlib._bootstrap>:228: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute
<frozen importlib._bootstrap>:228: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute
<frozen importlib._bootstrap>:228: DeprecationWarning: builtin type swigvarlink has no __module__ attribute

<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 - 13:31:47: Unable to initialize backend 'cuda': 
    INFO - 13:31:47: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
    INFO - 13:31:47: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
    INFO - 13:31:49: Compilation of the output function JAXSobieskiChain: 0:00:00.340010 seconds.
    INFO - 13:31:49: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.357947 seconds.
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
    INFO - 13:31:49: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:49: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:49: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:49: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:49: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:49:  
    INFO - 13:31:49: *** Start DOEScenario execution ***
    INFO - 13:31:49: DOEScenario
    INFO - 13:31:49:    Disciplines: JAXSobieskiChain
    INFO - 13:31:49:    MDO formulation: MDF
    INFO - 13:31:49: Optimization problem:
    INFO - 13:31:49:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:31:49:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:31:49:    subject to constraints:
    INFO - 13:31:49:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:49:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:49:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:49:    over the design space:
    INFO - 13:31:49:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:49:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:31:49:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:49:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:31:49:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:31:49:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:31:49:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:31:49:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:31:49:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:31:49:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:31:49:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:49:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:49:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:31:49:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:49: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 13:31:49:      1%|          | 1/100 [00:00<00:00, 174.94 it/sec, obj=-1.25e+3]
    INFO - 13:31:49:      2%|         | 2/100 [00:00<00:00, 209.34 it/sec, obj=-303]
    INFO - 13:31:49:      3%|         | 3/100 [00:00<00:00, 194.97 it/sec, obj=-447]
    INFO - 13:31:49:      4%|         | 4/100 [00:00<00:00, 195.84 it/sec, obj=-444]
    INFO - 13:31:49:      5%|         | 5/100 [00:00<00:00, 202.15 it/sec, obj=-804]
    INFO - 13:31:49:      6%|         | 6/100 [00:00<00:00, 206.46 it/sec, obj=-232]
    INFO - 13:31:49:      7%|         | 7/100 [00:00<00:00, 208.32 it/sec, obj=-701]
    INFO - 13:31:49:      8%|         | 8/100 [00:00<00:00, 210.55 it/sec, obj=-253]
    INFO - 13:31:49:      9%|         | 9/100 [00:00<00:00, 215.54 it/sec, obj=-773]
    INFO - 13:31:49:     10%|         | 10/100 [00:00<00:00, 215.55 it/sec, obj=-448]
    INFO - 13:31:49:     11%|         | 11/100 [00:00<00:00, 213.20 it/sec, obj=-659]
    INFO - 13:31:49:     12%|█▏        | 12/100 [00:00<00:00, 214.40 it/sec, obj=-282]
    INFO - 13:31:49:     13%|█▎        | 13/100 [00:00<00:00, 215.36 it/sec, obj=-387]
    INFO - 13:31:49:     14%|█▍        | 14/100 [00:00<00:00, 218.81 it/sec, obj=-379]
    INFO - 13:31:49:     15%|█▌        | 15/100 [00:00<00:00, 216.63 it/sec, obj=-196]
    INFO - 13:31:49:     16%|█▌        | 16/100 [00:00<00:00, 214.38 it/sec, obj=-647]
    INFO - 13:31:49:     17%|█▋        | 17/100 [00:00<00:00, 210.43 it/sec, obj=-238]
    INFO - 13:31:49:     18%|█▊        | 18/100 [00:00<00:00, 210.82 it/sec, obj=-304]
    INFO - 13:31:49:     19%|█▉        | 19/100 [00:00<00:00, 209.59 it/sec, obj=-372]
    INFO - 13:31:49:     20%|██        | 20/100 [00:00<00:00, 211.98 it/sec, obj=-699]
    INFO - 13:31:49:     21%|██        | 21/100 [00:00<00:00, 212.75 it/sec, obj=-873]
    INFO - 13:31:49:     22%|██▏       | 22/100 [00:00<00:00, 213.44 it/sec, obj=-489]
    INFO - 13:31:49:     23%|██▎       | 23/100 [00:00<00:00, 212.17 it/sec, obj=-623]
    INFO - 13:31:49:     24%|██▍       | 24/100 [00:00<00:00, 214.42 it/sec, obj=-262]
    INFO - 13:31:49:     25%|██▌       | 25/100 [00:00<00:00, 216.38 it/sec, obj=-345]
    INFO - 13:31:49:     26%|██▌       | 26/100 [00:00<00:00, 215.50 it/sec, obj=-377]
    INFO - 13:31:49:     27%|██▋       | 27/100 [00:00<00:00, 216.10 it/sec, obj=-387]
    INFO - 13:31:49:     28%|██▊       | 28/100 [00:00<00:00, 213.57 it/sec, obj=-334]
    INFO - 13:31:49:     29%|██▉       | 29/100 [00:00<00:00, 215.20 it/sec, obj=-438]
    INFO - 13:31:49:     30%|███       | 30/100 [00:00<00:00, 216.74 it/sec, obj=-1.94e+3]
    INFO - 13:31:49:     31%|███       | 31/100 [00:00<00:00, 217.13 it/sec, obj=-733]
    INFO - 13:31:49:     32%|███▏      | 32/100 [00:00<00:00, 217.25 it/sec, obj=-774]
    INFO - 13:31:49:     33%|███▎      | 33/100 [00:00<00:00, 216.50 it/sec, obj=-517]
    INFO - 13:31:49:     34%|███▍      | 34/100 [00:00<00:00, 218.09 it/sec, obj=-232]
    INFO - 13:31:49:     35%|███▌      | 35/100 [00:00<00:00, 217.43 it/sec, obj=-195]
    INFO - 13:31:49:     36%|███▌      | 36/100 [00:00<00:00, 217.81 it/sec, obj=-218]
    INFO - 13:31:49:     37%|███▋      | 37/100 [00:00<00:00, 217.17 it/sec, obj=-198]
    INFO - 13:31:49:     38%|███▊      | 38/100 [00:00<00:00, 214.69 it/sec, obj=-536]
    INFO - 13:31:49:     39%|███▉      | 39/100 [00:00<00:00, 212.91 it/sec, obj=-173]
    INFO - 13:31:49:     40%|████      | 40/100 [00:00<00:00, 213.32 it/sec, obj=-388]
    INFO - 13:31:49:     41%|████      | 41/100 [00:00<00:00, 212.77 it/sec, obj=-723]
    INFO - 13:31:49:     42%|████▏     | 42/100 [00:00<00:00, 212.22 it/sec, obj=-240]
    INFO - 13:31:49:     43%|████▎     | 43/100 [00:00<00:00, 212.50 it/sec, obj=-663]
    INFO - 13:31:49:     44%|████▍     | 44/100 [00:00<00:00, 212.08 it/sec, obj=-1.14e+3]
    INFO - 13:31:49:     45%|████▌     | 45/100 [00:00<00:00, 212.25 it/sec, obj=-438]
    INFO - 13:31:49:     46%|████▌     | 46/100 [00:00<00:00, 211.86 it/sec, obj=-301]
    INFO - 13:31:49:     47%|████▋     | 47/100 [00:00<00:00, 212.18 it/sec, obj=-682]
    INFO - 13:31:49:     48%|████▊     | 48/100 [00:00<00:00, 211.77 it/sec, obj=-750]
    INFO - 13:31:49:     49%|████▉     | 49/100 [00:00<00:00, 212.15 it/sec, obj=-789]
    INFO - 13:31:49:     50%|█████     | 50/100 [00:00<00:00, 211.80 it/sec, obj=-395]
    INFO - 13:31:49:     51%|█████     | 51/100 [00:00<00:00, 210.50 it/sec, obj=-407]
    INFO - 13:31:49:     52%|█████▏    | 52/100 [00:00<00:00, 210.86 it/sec, obj=-315]
    INFO - 13:31:49:     53%|█████▎    | 53/100 [00:00<00:00, 210.41 it/sec, obj=-337]
    INFO - 13:31:49:     54%|█████▍    | 54/100 [00:00<00:00, 210.69 it/sec, obj=-414]
    INFO - 13:31:49:     55%|█████▌    | 55/100 [00:00<00:00, 210.45 it/sec, obj=-240]
    INFO - 13:31:49:     56%|█████▌    | 56/100 [00:00<00:00, 211.38 it/sec, obj=-297]
    INFO - 13:31:49:     57%|█████▋    | 57/100 [00:00<00:00, 211.61 it/sec, obj=-442]
    INFO - 13:31:49:     58%|█████▊    | 58/100 [00:00<00:00, 211.23 it/sec, obj=-233]
    INFO - 13:31:49:     59%|█████▉    | 59/100 [00:00<00:00, 210.96 it/sec, obj=-519]
    INFO - 13:31:49:     60%|██████    | 60/100 [00:00<00:00, 210.71 it/sec, obj=-920]
    INFO - 13:31:49:     61%|██████    | 61/100 [00:00<00:00, 210.44 it/sec, obj=-517]
    INFO - 13:31:49:     62%|██████▏   | 62/100 [00:00<00:00, 210.68 it/sec, obj=-390]
    INFO - 13:31:49:     63%|██████▎   | 63/100 [00:00<00:00, 210.93 it/sec, obj=-434]
    INFO - 13:31:49:     64%|██████▍   | 64/100 [00:00<00:00, 210.69 it/sec, obj=-244]
    INFO - 13:31:49:     65%|██████▌   | 65/100 [00:00<00:00, 208.99 it/sec, obj=-192]
    INFO - 13:31:49:     66%|██████▌   | 66/100 [00:00<00:00, 208.54 it/sec, obj=-305]
    INFO - 13:31:49:     67%|██████▋   | 67/100 [00:00<00:00, 207.74 it/sec, obj=-393]
    INFO - 13:31:49:     68%|██████▊   | 68/100 [00:00<00:00, 208.03 it/sec, obj=-307]
    INFO - 13:31:49:     69%|██████▉   | 69/100 [00:00<00:00, 208.34 it/sec, obj=-328]
    INFO - 13:31:49:     70%|███████   | 70/100 [00:00<00:00, 208.16 it/sec, obj=-998]
    INFO - 13:31:49:     71%|███████   | 71/100 [00:00<00:00, 208.50 it/sec, obj=-1.06e+3]
    INFO - 13:31:49:     72%|███████▏  | 72/100 [00:00<00:00, 208.00 it/sec, obj=-707]
    INFO - 13:31:49:     73%|███████▎  | 73/100 [00:00<00:00, 208.60 it/sec, obj=-897]
    INFO - 13:31:49:     74%|███████▍  | 74/100 [00:00<00:00, 208.36 it/sec, obj=-1.36e+3]
    INFO - 13:31:49:     75%|███████▌  | 75/100 [00:00<00:00, 208.43 it/sec, obj=-853]
    INFO - 13:31:49:     76%|███████▌  | 76/100 [00:00<00:00, 208.69 it/sec, obj=-217]
    INFO - 13:31:49:     77%|███████▋  | 77/100 [00:00<00:00, 208.53 it/sec, obj=-370]
    INFO - 13:31:49:     78%|███████▊  | 78/100 [00:00<00:00, 208.81 it/sec, obj=-636]
    INFO - 13:31:49:     79%|███████▉  | 79/100 [00:00<00:00, 209.13 it/sec, obj=-337]
    INFO - 13:31:50:     80%|████████  | 80/100 [00:00<00:00, 209.30 it/sec, obj=-804]
    INFO - 13:31:50:     81%|████████  | 81/100 [00:00<00:00, 209.53 it/sec, obj=-318]
    INFO - 13:31:50:     82%|████████▏ | 82/100 [00:00<00:00, 209.37 it/sec, obj=-253]
    INFO - 13:31:50:     83%|████████▎ | 83/100 [00:00<00:00, 209.27 it/sec, obj=-590]
    INFO - 13:31:50:     84%|████████▍ | 84/100 [00:00<00:00, 209.17 it/sec, obj=-438]
    INFO - 13:31:50:     85%|████████▌ | 85/100 [00:00<00:00, 209.07 it/sec, obj=-642]
    INFO - 13:31:50:     86%|████████▌ | 86/100 [00:00<00:00, 209.69 it/sec, obj=-381]
    INFO - 13:31:50:     87%|████████▋ | 87/100 [00:00<00:00, 209.99 it/sec, obj=-447]
    INFO - 13:31:50:     88%|████████▊ | 88/100 [00:00<00:00, 209.87 it/sec, obj=-707]
    INFO - 13:31:50:     89%|████████▉ | 89/100 [00:00<00:00, 210.49 it/sec, obj=-384]
    INFO - 13:31:50:     90%|█████████ | 90/100 [00:00<00:00, 210.67 it/sec, obj=-491]
    INFO - 13:31:50:     91%|█████████ | 91/100 [00:00<00:00, 210.91 it/sec, obj=-285]
    INFO - 13:31:50:     92%|█████████▏| 92/100 [00:00<00:00, 210.82 it/sec, obj=-433]
    INFO - 13:31:50:     93%|█████████▎| 93/100 [00:00<00:00, 210.71 it/sec, obj=-377]
    INFO - 13:31:50:     94%|█████████▍| 94/100 [00:00<00:00, 210.96 it/sec, obj=-827]
    INFO - 13:31:50:     95%|█████████▌| 95/100 [00:00<00:00, 210.83 it/sec, obj=-712]
    INFO - 13:31:50:     96%|█████████▌| 96/100 [00:00<00:00, 211.09 it/sec, obj=-245]
    INFO - 13:31:50:     97%|█████████▋| 97/100 [00:00<00:00, 211.30 it/sec, obj=-502]
    INFO - 13:31:50:     98%|█████████▊| 98/100 [00:00<00:00, 210.85 it/sec, obj=-309]
    INFO - 13:31:50:     99%|█████████▉| 99/100 [00:00<00:00, 211.07 it/sec, obj=-971]
    INFO - 13:31:50:    100%|██████████| 100/100 [00:00<00:00, 210.95 it/sec, obj=-649]
    INFO - 13:31:50: Optimization result:
    INFO - 13:31:50:    Optimizer info:
    INFO - 13:31:50:       Status: None
    INFO - 13:31:50:       Message: None
    INFO - 13:31:50:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:31:50:    Solution:
    INFO - 13:31:50:       The solution is feasible.
    INFO - 13:31:50:       Objective: -659.1819334138517
    INFO - 13:31:50:       Standardized constraints:
    INFO - 13:31:50:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:31:50:  -0.19803381]
    INFO - 13:31:50:          g_2 = -0.007088218675791014
    INFO - 13:31:50:          g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
    INFO - 13:31:50:       Design space:
    INFO - 13:31:50:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:50:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:31:50:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:50:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:31:50:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:31:50:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:31:50:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:31:50:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:31:50:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:31:50:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:31:50:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:31:50:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:31:50:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:31:50:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:50: *** End DOEScenario execution (time: 0:00:00.533798) ***

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:

/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
 WARNING - 13:31:50: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:31:50: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:31:50:  
    INFO - 13:31:50: *** Start DOEScenario execution ***
    INFO - 13:31:50: DOEScenario
    INFO - 13:31:50:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:31:50:    MDO formulation: MDF
    INFO - 13:31:50: Optimization problem:
    INFO - 13:31:50:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:31:50:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:31:50:    subject to constraints:
    INFO - 13:31:50:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:50:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:50:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:50:    over the design space:
    INFO - 13:31:50:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:50:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:31:50:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:50:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:31:50:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:31:50:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:31:50:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:31:50:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:31:50:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:31:50:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:31:50:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:50:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:50:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:31:50:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:50: Solving optimization problem with algorithm OT_OPT_LHS:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/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 - 13:31:50:      1%|          | 1/100 [00:00<00:01, 53.26 it/sec, obj=-1.25e+3]
    INFO - 13:31:50:      2%|         | 2/100 [00:00<00:01, 55.61 it/sec, obj=-303]
    INFO - 13:31:50:      3%|         | 3/100 [00:00<00:02, 47.03 it/sec, obj=-447]
    INFO - 13:31:50:      4%|         | 4/100 [00:00<00:02, 45.25 it/sec, obj=-444]
    INFO - 13:31:50:      5%|         | 5/100 [00:00<00:02, 46.78 it/sec, obj=-804]
    INFO - 13:31:50:      6%|         | 6/100 [00:00<00:02, 45.47 it/sec, obj=-232]
    INFO - 13:31:50:      7%|         | 7/100 [00:00<00:01, 46.92 it/sec, obj=-701]
    INFO - 13:31:50:      8%|         | 8/100 [00:00<00:01, 48.24 it/sec, obj=-253]
    INFO - 13:31:50:      9%|         | 9/100 [00:00<00:01, 49.35 it/sec, obj=-773]
    INFO - 13:31:50:     10%|         | 10/100 [00:00<00:01, 50.46 it/sec, obj=-448]
    INFO - 13:31:50:     11%|         | 11/100 [00:00<00:01, 48.87 it/sec, obj=-659]
    INFO - 13:31:50:     12%|█▏        | 12/100 [00:00<00:01, 49.32 it/sec, obj=-282]
    INFO - 13:31:50:     13%|█▎        | 13/100 [00:00<00:01, 49.71 it/sec, obj=-387]
    INFO - 13:31:50:     14%|█▍        | 14/100 [00:00<00:01, 50.20 it/sec, obj=-379]
    INFO - 13:31:50:     15%|█▌        | 15/100 [00:00<00:01, 49.24 it/sec, obj=-196]
    INFO - 13:31:50:     16%|█▌        | 16/100 [00:00<00:01, 49.67 it/sec, obj=-647]
    INFO - 13:31:50:     17%|█▋        | 17/100 [00:00<00:01, 48.21 it/sec, obj=-238]
    INFO - 13:31:50:     18%|█▊        | 18/100 [00:00<00:01, 48.74 it/sec, obj=-304]
    INFO - 13:31:50:     19%|█▉        | 19/100 [00:00<00:01, 48.88 it/sec, obj=-372]
    INFO - 13:31:50:     20%|██        | 20/100 [00:00<00:01, 49.26 it/sec, obj=-699]
    INFO - 13:31:50:     21%|██        | 21/100 [00:00<00:01, 49.49 it/sec, obj=-873]
    INFO - 13:31:50:     22%|██▏       | 22/100 [00:00<00:01, 49.75 it/sec, obj=-489]
    INFO - 13:31:50:     23%|██▎       | 23/100 [00:00<00:01, 49.88 it/sec, obj=-623]
    INFO - 13:31:50:     24%|██▍       | 24/100 [00:00<00:01, 50.11 it/sec, obj=-262]
    INFO - 13:31:50:     25%|██▌       | 25/100 [00:00<00:01, 49.80 it/sec, obj=-345]
    INFO - 13:31:50:     26%|██▌       | 26/100 [00:00<00:01, 49.93 it/sec, obj=-377]
    INFO - 13:31:50:     27%|██▋       | 27/100 [00:00<00:01, 50.01 it/sec, obj=-387]
    INFO - 13:31:50:     28%|██▊       | 28/100 [00:00<00:01, 48.90 it/sec, obj=-334]
    INFO - 13:31:50:     29%|██▉       | 29/100 [00:00<00:01, 48.99 it/sec, obj=-438]
    INFO - 13:31:50:     30%|███       | 30/100 [00:00<00:01, 49.27 it/sec, obj=-1.94e+3]
    INFO - 13:31:50:     31%|███       | 31/100 [00:00<00:01, 49.42 it/sec, obj=-733]
    INFO - 13:31:50:     32%|███▏      | 32/100 [00:00<00:01, 49.68 it/sec, obj=-774]
    INFO - 13:31:50:     33%|███▎      | 33/100 [00:00<00:01, 49.38 it/sec, obj=-517]
    INFO - 13:31:50:     34%|███▍      | 34/100 [00:00<00:01, 49.48 it/sec, obj=-232]
    INFO - 13:31:50:     35%|███▌      | 35/100 [00:00<00:01, 49.21 it/sec, obj=-195]
    INFO - 13:31:50:     36%|███▌      | 36/100 [00:00<00:01, 49.14 it/sec, obj=-218]
    INFO - 13:31:50:     37%|███▋      | 37/100 [00:00<00:01, 48.68 it/sec, obj=-198]
    INFO - 13:31:50:     38%|███▊      | 38/100 [00:00<00:01, 48.61 it/sec, obj=-536]
    INFO - 13:31:50:     39%|███▉      | 39/100 [00:00<00:01, 48.18 it/sec, obj=-173]
    INFO - 13:31:50:     40%|████      | 40/100 [00:00<00:01, 48.45 it/sec, obj=-388]
    INFO - 13:31:50:     41%|████      | 41/100 [00:00<00:01, 48.37 it/sec, obj=-723]
    INFO - 13:31:51:     42%|████▏     | 42/100 [00:00<00:01, 47.84 it/sec, obj=-240]
    INFO - 13:31:51:     43%|████▎     | 43/100 [00:00<00:01, 47.87 it/sec, obj=-663]
    INFO - 13:31:51:     44%|████▍     | 44/100 [00:00<00:01, 47.68 it/sec, obj=-1.14e+3]
    INFO - 13:31:51:     45%|████▌     | 45/100 [00:00<00:01, 47.79 it/sec, obj=-438]
    INFO - 13:31:51:     46%|████▌     | 46/100 [00:00<00:01, 47.40 it/sec, obj=-301]
    INFO - 13:31:51:     47%|████▋     | 47/100 [00:00<00:01, 47.67 it/sec, obj=-682]
    INFO - 13:31:51:     48%|████▊     | 48/100 [00:01<00:01, 47.61 it/sec, obj=-750]
    INFO - 13:31:51:     49%|████▉     | 49/100 [00:01<00:01, 47.62 it/sec, obj=-789]
    INFO - 13:31:51:     50%|█████     | 50/100 [00:01<00:01, 47.58 it/sec, obj=-395]
    INFO - 13:31:51:     51%|█████     | 51/100 [00:01<00:01, 47.38 it/sec, obj=-407]
    INFO - 13:31:51:     52%|█████▏    | 52/100 [00:01<00:01, 47.48 it/sec, obj=-315]
    INFO - 13:31:51:     53%|█████▎    | 53/100 [00:01<00:00, 47.18 it/sec, obj=-337]
    INFO - 13:31:51:     54%|█████▍    | 54/100 [00:01<00:00, 47.18 it/sec, obj=-414]
    INFO - 13:31:51:     55%|█████▌    | 55/100 [00:01<00:00, 46.95 it/sec, obj=-240]
    INFO - 13:31:51:     56%|█████▌    | 56/100 [00:01<00:00, 47.06 it/sec, obj=-297]
    INFO - 13:31:51:     57%|█████▋    | 57/100 [00:01<00:00, 47.25 it/sec, obj=-442]
    INFO - 13:31:51:     58%|█████▊    | 58/100 [00:01<00:00, 47.27 it/sec, obj=-233]
    INFO - 13:31:51:     59%|█████▉    | 59/100 [00:01<00:00, 47.31 it/sec, obj=-519]
    INFO - 13:31:51:     60%|██████    | 60/100 [00:01<00:00, 47.40 it/sec, obj=-920]
    INFO - 13:31:51:     61%|██████    | 61/100 [00:01<00:00, 47.35 it/sec, obj=-517]
    INFO - 13:31:51:     62%|██████▏   | 62/100 [00:01<00:00, 47.39 it/sec, obj=-390]
    INFO - 13:31:51:     63%|██████▎   | 63/100 [00:01<00:00, 47.15 it/sec, obj=-434]
    INFO - 13:31:51:     64%|██████▍   | 64/100 [00:01<00:00, 47.05 it/sec, obj=-244]
    INFO - 13:31:51:     65%|██████▌   | 65/100 [00:01<00:00, 46.80 it/sec, obj=-192]
    INFO - 13:31:51:     66%|██████▌   | 66/100 [00:01<00:00, 46.92 it/sec, obj=-305]
    INFO - 13:31:51:     67%|██████▋   | 67/100 [00:01<00:00, 46.86 it/sec, obj=-393]
    INFO - 13:31:51:     68%|██████▊   | 68/100 [00:01<00:00, 46.93 it/sec, obj=-307]
    INFO - 13:31:51:     69%|██████▉   | 69/100 [00:01<00:00, 47.03 it/sec, obj=-328]
    INFO - 13:31:51:     70%|███████   | 70/100 [00:01<00:00, 47.08 it/sec, obj=-998]
    INFO - 13:31:51:     71%|███████   | 71/100 [00:01<00:00, 47.04 it/sec, obj=-1.06e+3]
    INFO - 13:31:51:     72%|███████▏  | 72/100 [00:01<00:00, 46.84 it/sec, obj=-707]
    INFO - 13:31:51:     73%|███████▎  | 73/100 [00:01<00:00, 46.96 it/sec, obj=-897]
    INFO - 13:31:51:     74%|███████▍  | 74/100 [00:01<00:00, 46.83 it/sec, obj=-1.36e+3]
    INFO - 13:31:51:     75%|███████▌  | 75/100 [00:01<00:00, 46.87 it/sec, obj=-853]
    INFO - 13:31:51:     76%|███████▌  | 76/100 [00:01<00:00, 46.93 it/sec, obj=-217]
    INFO - 13:31:51:     77%|███████▋  | 77/100 [00:01<00:00, 46.79 it/sec, obj=-370]
    INFO - 13:31:51:     78%|███████▊  | 78/100 [00:01<00:00, 46.65 it/sec, obj=-636]
    INFO - 13:31:51:     79%|███████▉  | 79/100 [00:01<00:00, 46.83 it/sec, obj=-337]
    INFO - 13:31:51:     80%|████████  | 80/100 [00:01<00:00, 46.72 it/sec, obj=-804]
    INFO - 13:31:51:     81%|████████  | 81/100 [00:01<00:00, 46.83 it/sec, obj=-318]
    INFO - 13:31:51:     82%|████████▏ | 82/100 [00:01<00:00, 46.80 it/sec, obj=-253]
    INFO - 13:31:51:     83%|████████▎ | 83/100 [00:01<00:00, 46.50 it/sec, obj=-590]
    INFO - 13:31:51:     84%|████████▍ | 84/100 [00:01<00:00, 46.54 it/sec, obj=-438]
    INFO - 13:31:51:     85%|████████▌ | 85/100 [00:01<00:00, 46.60 it/sec, obj=-642]
    INFO - 13:31:51:     86%|████████▌ | 86/100 [00:01<00:00, 46.72 it/sec, obj=-381]
    INFO - 13:31:51:     87%|████████▋ | 87/100 [00:01<00:00, 46.79 it/sec, obj=-447]
    INFO - 13:31:52:     88%|████████▊ | 88/100 [00:01<00:00, 46.63 it/sec, obj=-707]
    INFO - 13:31:52:     89%|████████▉ | 89/100 [00:01<00:00, 46.64 it/sec, obj=-384]
    INFO - 13:31:52:     90%|█████████ | 90/100 [00:01<00:00, 46.66 it/sec, obj=-491]
    INFO - 13:31:52:     91%|█████████ | 91/100 [00:01<00:00, 46.73 it/sec, obj=-285]
    INFO - 13:31:52:     92%|█████████▏| 92/100 [00:01<00:00, 46.76 it/sec, obj=-433]
    INFO - 13:31:52:     93%|█████████▎| 93/100 [00:01<00:00, 46.79 it/sec, obj=-377]
    INFO - 13:31:52:     94%|█████████▍| 94/100 [00:02<00:00, 46.82 it/sec, obj=-827]
    INFO - 13:31:52:     95%|█████████▌| 95/100 [00:02<00:00, 46.86 it/sec, obj=-712]
    INFO - 13:31:52:     96%|█████████▌| 96/100 [00:02<00:00, 46.94 it/sec, obj=-245]
    INFO - 13:31:52:     97%|█████████▋| 97/100 [00:02<00:00, 47.07 it/sec, obj=-502]
    INFO - 13:31:52:     98%|█████████▊| 98/100 [00:02<00:00, 46.91 it/sec, obj=-309]
    INFO - 13:31:52:     99%|█████████▉| 99/100 [00:02<00:00, 46.90 it/sec, obj=-971]
    INFO - 13:31:52:    100%|██████████| 100/100 [00:02<00:00, 46.90 it/sec, obj=-649]
    INFO - 13:31:52: Optimization result:
    INFO - 13:31:52:    Optimizer info:
    INFO - 13:31:52:       Status: None
    INFO - 13:31:52:       Message: None
    INFO - 13:31:52:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:31:52:    Solution:
    INFO - 13:31:52:       The solution is feasible.
    INFO - 13:31:52:       Objective: -659.181929189823
    INFO - 13:31:52:       Standardized constraints:
    INFO - 13:31:52:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:31:52:  -0.19803381]
    INFO - 13:31:52:          g_2 = -0.007088218675791014
    INFO - 13:31:52:          g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
    INFO - 13:31:52:       Design space:
    INFO - 13:31:52:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:52:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:31:52:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:52:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:31:52:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:31:52:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:31:52:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:31:52:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:31:52:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:31:52:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:31:52:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:31:52:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:31:52:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:31:52:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:52: *** End DOEScenario execution (time: 0:00:02.151497) ***

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 - 13:31:53: Compilation of the output function JAXSobieskiChain: 0:00:00.302696 seconds.
    INFO - 13:31:53: Compilation of the Jacobian function JAXSobieskiChain: 0:00:00.950674 seconds.
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
    INFO - 13:31:53: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:53: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:53: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:53: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:53: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:53:  
    INFO - 13:31:53: *** Start DOEScenario execution ***
    INFO - 13:31:53: DOEScenario
    INFO - 13:31:53:    Disciplines: JAXSobieskiChain
    INFO - 13:31:53:    MDO formulation: MDF
    INFO - 13:31:53: Optimization problem:
    INFO - 13:31:53:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:31:53:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:31:53:    subject to constraints:
    INFO - 13:31:53:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:53:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:53:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:53:    over the design space:
    INFO - 13:31:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:53:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:31:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:53:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:31:53:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:31:53:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:31:53:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:31:53:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:31:53:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:31:53:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:31:53:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:53:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:53:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:31:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:53: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 13:31:53:      1%|          | 1/100 [00:00<00:00, 387.64 it/sec, obj=-1.25e+3]
    INFO - 13:31:53:      2%|         | 2/100 [00:00<00:00, 390.19 it/sec, obj=-303]
    INFO - 13:31:53:      3%|         | 3/100 [00:00<00:00, 257.04 it/sec, obj=-447]
    INFO - 13:31:53:      4%|         | 4/100 [00:00<00:00, 271.41 it/sec, obj=-444]
    INFO - 13:31:53:      5%|         | 5/100 [00:00<00:00, 282.03 it/sec, obj=-804]
    INFO - 13:31:53:      6%|         | 6/100 [00:00<00:00, 289.54 it/sec, obj=-232]
    INFO - 13:31:53:      7%|         | 7/100 [00:00<00:00, 295.80 it/sec, obj=-701]
    INFO - 13:31:53:      8%|         | 8/100 [00:00<00:00, 294.62 it/sec, obj=-253]
    INFO - 13:31:53:      9%|         | 9/100 [00:00<00:00, 304.45 it/sec, obj=-773]
    INFO - 13:31:53:     10%|         | 10/100 [00:00<00:00, 310.18 it/sec, obj=-448]
    INFO - 13:31:53:     11%|         | 11/100 [00:00<00:00, 310.59 it/sec, obj=-659]
    INFO - 13:31:53:     12%|█▏        | 12/100 [00:00<00:00, 310.28 it/sec, obj=-282]
    INFO - 13:31:53:     13%|█▎        | 13/100 [00:00<00:00, 316.37 it/sec, obj=-387]
    INFO - 13:31:53:     14%|█▍        | 14/100 [00:00<00:00, 320.11 it/sec, obj=-379]
    INFO - 13:31:53:     15%|█▌        | 15/100 [00:00<00:00, 319.90 it/sec, obj=-196]
    INFO - 13:31:53:     16%|█▌        | 16/100 [00:00<00:00, 312.80 it/sec, obj=-647]
    INFO - 13:31:53:     17%|█▋        | 17/100 [00:00<00:00, 308.14 it/sec, obj=-238]
    INFO - 13:31:53:     18%|█▊        | 18/100 [00:00<00:00, 311.21 it/sec, obj=-304]
    INFO - 13:31:53:     19%|█▉        | 19/100 [00:00<00:00, 310.90 it/sec, obj=-372]
    INFO - 13:31:53:     20%|██        | 20/100 [00:00<00:00, 315.04 it/sec, obj=-699]
    INFO - 13:31:53:     21%|██        | 21/100 [00:00<00:00, 316.36 it/sec, obj=-873]
    INFO - 13:31:53:     22%|██▏       | 22/100 [00:00<00:00, 314.72 it/sec, obj=-489]
    INFO - 13:31:53:     23%|██▎       | 23/100 [00:00<00:00, 311.86 it/sec, obj=-623]
    INFO - 13:31:53:     24%|██▍       | 24/100 [00:00<00:00, 315.32 it/sec, obj=-262]
    INFO - 13:31:53:     25%|██▌       | 25/100 [00:00<00:00, 318.47 it/sec, obj=-345]
    INFO - 13:31:53:     26%|██▌       | 26/100 [00:00<00:00, 315.41 it/sec, obj=-377]
    INFO - 13:31:53:     27%|██▋       | 27/100 [00:00<00:00, 314.25 it/sec, obj=-387]
    INFO - 13:31:53:     28%|██▊       | 28/100 [00:00<00:00, 305.89 it/sec, obj=-334]
    INFO - 13:31:53:     29%|██▉       | 29/100 [00:00<00:00, 308.95 it/sec, obj=-438]
    INFO - 13:31:53:     30%|███       | 30/100 [00:00<00:00, 311.80 it/sec, obj=-1.94e+3]
    INFO - 13:31:53:     31%|███       | 31/100 [00:00<00:00, 309.98 it/sec, obj=-733]
    INFO - 13:31:53:     32%|███▏      | 32/100 [00:00<00:00, 311.70 it/sec, obj=-774]
    INFO - 13:31:53:     33%|███▎      | 33/100 [00:00<00:00, 311.62 it/sec, obj=-517]
    INFO - 13:31:53:     34%|███▍      | 34/100 [00:00<00:00, 313.17 it/sec, obj=-232]
    INFO - 13:31:53:     35%|███▌      | 35/100 [00:00<00:00, 315.57 it/sec, obj=-195]
    INFO - 13:31:53:     36%|███▌      | 36/100 [00:00<00:00, 317.09 it/sec, obj=-218]
    INFO - 13:31:53:     37%|███▋      | 37/100 [00:00<00:00, 318.63 it/sec, obj=-198]
    INFO - 13:31:53:     38%|███▊      | 38/100 [00:00<00:00, 312.68 it/sec, obj=-536]
    INFO - 13:31:53:     39%|███▉      | 39/100 [00:00<00:00, 307.27 it/sec, obj=-173]
    INFO - 13:31:53:     40%|████      | 40/100 [00:00<00:00, 308.69 it/sec, obj=-388]
    INFO - 13:31:53:     41%|████      | 41/100 [00:00<00:00, 308.77 it/sec, obj=-723]
    INFO - 13:31:53:     42%|████▏     | 42/100 [00:00<00:00, 307.60 it/sec, obj=-240]
    INFO - 13:31:53:     43%|████▎     | 43/100 [00:00<00:00, 308.88 it/sec, obj=-663]
    INFO - 13:31:53:     44%|████▍     | 44/100 [00:00<00:00, 307.23 it/sec, obj=-1.14e+3]
    INFO - 13:31:53:     45%|████▌     | 45/100 [00:00<00:00, 305.57 it/sec, obj=-438]
    INFO - 13:31:53:     46%|████▌     | 46/100 [00:00<00:00, 304.65 it/sec, obj=-301]
    INFO - 13:31:53:     47%|████▋     | 47/100 [00:00<00:00, 305.95 it/sec, obj=-682]
    INFO - 13:31:53:     48%|████▊     | 48/100 [00:00<00:00, 305.67 it/sec, obj=-750]
    INFO - 13:31:53:     49%|████▉     | 49/100 [00:00<00:00, 305.79 it/sec, obj=-789]
    INFO - 13:31:53:     50%|█████     | 50/100 [00:00<00:00, 305.45 it/sec, obj=-395]
    INFO - 13:31:53:     51%|█████     | 51/100 [00:00<00:00, 304.13 it/sec, obj=-407]
    INFO - 13:31:53:     52%|█████▏    | 52/100 [00:00<00:00, 303.83 it/sec, obj=-315]
    INFO - 13:31:53:     53%|█████▎    | 53/100 [00:00<00:00, 303.99 it/sec, obj=-337]
    INFO - 13:31:53:     54%|█████▍    | 54/100 [00:00<00:00, 303.23 it/sec, obj=-414]
    INFO - 13:31:53:     55%|█████▌    | 55/100 [00:00<00:00, 303.93 it/sec, obj=-240]
    INFO - 13:31:53:     56%|█████▌    | 56/100 [00:00<00:00, 305.47 it/sec, obj=-297]
    INFO - 13:31:53:     57%|█████▋    | 57/100 [00:00<00:00, 306.16 it/sec, obj=-442]
    INFO - 13:31:53:     58%|█████▊    | 58/100 [00:00<00:00, 306.27 it/sec, obj=-233]
    INFO - 13:31:53:     59%|█████▉    | 59/100 [00:00<00:00, 304.56 it/sec, obj=-519]
    INFO - 13:31:53:     60%|██████    | 60/100 [00:00<00:00, 303.06 it/sec, obj=-920]
    INFO - 13:31:53:     61%|██████    | 61/100 [00:00<00:00, 301.77 it/sec, obj=-517]
    INFO - 13:31:53:     62%|██████▏   | 62/100 [00:00<00:00, 302.79 it/sec, obj=-390]
    INFO - 13:31:53:     63%|██████▎   | 63/100 [00:00<00:00, 303.79 it/sec, obj=-434]
    INFO - 13:31:53:     64%|██████▍   | 64/100 [00:00<00:00, 304.80 it/sec, obj=-244]
    INFO - 13:31:53:     65%|██████▌   | 65/100 [00:00<00:00, 304.03 it/sec, obj=-192]
    INFO - 13:31:53:     66%|██████▌   | 66/100 [00:00<00:00, 304.98 it/sec, obj=-305]
    INFO - 13:31:53:     67%|██████▋   | 67/100 [00:00<00:00, 303.54 it/sec, obj=-393]
    INFO - 13:31:53:     68%|██████▊   | 68/100 [00:00<00:00, 301.05 it/sec, obj=-307]
    INFO - 13:31:53:     69%|██████▉   | 69/100 [00:00<00:00, 300.74 it/sec, obj=-328]
    INFO - 13:31:53:     70%|███████   | 70/100 [00:00<00:00, 300.63 it/sec, obj=-998]
    INFO - 13:31:53:     71%|███████   | 71/100 [00:00<00:00, 300.21 it/sec, obj=-1.06e+3]
    INFO - 13:31:53:     72%|███████▏  | 72/100 [00:00<00:00, 300.25 it/sec, obj=-707]
    INFO - 13:31:53:     73%|███████▎  | 73/100 [00:00<00:00, 301.34 it/sec, obj=-897]
    INFO - 13:31:53:     74%|███████▍  | 74/100 [00:00<00:00, 302.53 it/sec, obj=-1.36e+3]
    INFO - 13:31:53:     75%|███████▌  | 75/100 [00:00<00:00, 303.25 it/sec, obj=-853]
    INFO - 13:31:53:     76%|███████▌  | 76/100 [00:00<00:00, 304.37 it/sec, obj=-217]
    INFO - 13:31:53:     77%|███████▋  | 77/100 [00:00<00:00, 303.59 it/sec, obj=-370]
    INFO - 13:31:53:     78%|███████▊  | 78/100 [00:00<00:00, 303.82 it/sec, obj=-636]
    INFO - 13:31:53:     79%|███████▉  | 79/100 [00:00<00:00, 304.50 it/sec, obj=-337]
    INFO - 13:31:53:     80%|████████  | 80/100 [00:00<00:00, 304.82 it/sec, obj=-804]
    INFO - 13:31:53:     81%|████████  | 81/100 [00:00<00:00, 305.18 it/sec, obj=-318]
    INFO - 13:31:53:     82%|████████▏ | 82/100 [00:00<00:00, 305.50 it/sec, obj=-253]
    INFO - 13:31:53:     83%|████████▎ | 83/100 [00:00<00:00, 305.19 it/sec, obj=-590]
    INFO - 13:31:53:     84%|████████▍ | 84/100 [00:00<00:00, 304.01 it/sec, obj=-438]
    INFO - 13:31:53:     85%|████████▌ | 85/100 [00:00<00:00, 302.33 it/sec, obj=-642]
    INFO - 13:31:53:     86%|████████▌ | 86/100 [00:00<00:00, 303.58 it/sec, obj=-381]
    INFO - 13:31:53:     87%|████████▋ | 87/100 [00:00<00:00, 303.14 it/sec, obj=-447]
    INFO - 13:31:53:     88%|████████▊ | 88/100 [00:00<00:00, 302.61 it/sec, obj=-707]
    INFO - 13:31:53:     89%|████████▉ | 89/100 [00:00<00:00, 303.60 it/sec, obj=-384]
    INFO - 13:31:53:     90%|█████████ | 90/100 [00:00<00:00, 304.20 it/sec, obj=-491]
    INFO - 13:31:53:     91%|█████████ | 91/100 [00:00<00:00, 304.25 it/sec, obj=-285]
    INFO - 13:31:53:     92%|█████████▏| 92/100 [00:00<00:00, 304.04 it/sec, obj=-433]
    INFO - 13:31:53:     93%|█████████▎| 93/100 [00:00<00:00, 303.56 it/sec, obj=-377]
    INFO - 13:31:53:     94%|█████████▍| 94/100 [00:00<00:00, 303.67 it/sec, obj=-827]
    INFO - 13:31:53:     95%|█████████▌| 95/100 [00:00<00:00, 302.10 it/sec, obj=-712]
    INFO - 13:31:53:     96%|█████████▌| 96/100 [00:00<00:00, 302.74 it/sec, obj=-245]
    INFO - 13:31:53:     97%|█████████▋| 97/100 [00:00<00:00, 303.37 it/sec, obj=-502]
    INFO - 13:31:53:     98%|█████████▊| 98/100 [00:00<00:00, 302.93 it/sec, obj=-309]
    INFO - 13:31:53:     99%|█████████▉| 99/100 [00:00<00:00, 303.30 it/sec, obj=-971]
    INFO - 13:31:53:    100%|██████████| 100/100 [00:00<00:00, 301.98 it/sec, obj=-649]
    INFO - 13:31:53: Optimization result:
    INFO - 13:31:53:    Optimizer info:
    INFO - 13:31:53:       Status: None
    INFO - 13:31:53:       Message: None
    INFO - 13:31:53:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:31:53:    Solution:
    INFO - 13:31:53:       The solution is feasible.
    INFO - 13:31:53:       Objective: -659.1818108437288
    INFO - 13:31:53:       Standardized constraints:
    INFO - 13:31:53:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:31:53:  -0.19803381]
    INFO - 13:31:53:          g_2 = -0.007088218675791014
    INFO - 13:31:53:          g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
    INFO - 13:31:53:       Design space:
    INFO - 13:31:53:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:53:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:31:53:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:53:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:31:53:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:31:53:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:31:53:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:31:53:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:31:53:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:31:53:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:31:53:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:31:53:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:31:53:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:31:53:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:53: *** End DOEScenario execution (time: 0:00:00.350495) ***

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:

/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
 WARNING - 13:31:53: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:31:53: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:31:53:  
    INFO - 13:31:53: *** Start DOEScenario execution ***
    INFO - 13:31:53: DOEScenario
    INFO - 13:31:53:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:31:53:    MDO formulation: MDF
    INFO - 13:31:53: Optimization problem:
    INFO - 13:31:53:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:31:53:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:31:53:    subject to constraints:
    INFO - 13:31:53:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:53:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:53:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:53:    over the design space:
    INFO - 13:31:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:53:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:31:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:53:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:31:53:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:31:53:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:31:53:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:31:53:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:31:53:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:31:53:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:31:53:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:53:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:53:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:31:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:53: Solving optimization problem with algorithm OT_OPT_LHS:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/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 - 13:31:53:      1%|          | 1/100 [00:00<00:00, 156.78 it/sec, obj=-1.25e+3]
    INFO - 13:31:53:      2%|         | 2/100 [00:00<00:00, 153.32 it/sec, obj=-303]
    INFO - 13:31:53:      3%|         | 3/100 [00:00<00:00, 102.64 it/sec, obj=-447]
    INFO - 13:31:53:      4%|         | 4/100 [00:00<00:00, 109.00 it/sec, obj=-444]
    INFO - 13:31:53:      5%|         | 5/100 [00:00<00:00, 115.24 it/sec, obj=-804]
    INFO - 13:31:53:      6%|         | 6/100 [00:00<00:00, 115.79 it/sec, obj=-232]
    INFO - 13:31:53:      7%|         | 7/100 [00:00<00:00, 116.43 it/sec, obj=-701]
    INFO - 13:31:53:      8%|         | 8/100 [00:00<00:00, 113.28 it/sec, obj=-253]
    INFO - 13:31:53:      9%|         | 9/100 [00:00<00:00, 118.04 it/sec, obj=-773]
    INFO - 13:31:54:     10%|         | 10/100 [00:00<00:00, 119.08 it/sec, obj=-448]
    INFO - 13:31:54:     11%|         | 11/100 [00:00<00:00, 117.71 it/sec, obj=-659]
    INFO - 13:31:54:     12%|█▏        | 12/100 [00:00<00:00, 117.84 it/sec, obj=-282]
    INFO - 13:31:54:     13%|█▎        | 13/100 [00:00<00:00, 119.97 it/sec, obj=-387]
    INFO - 13:31:54:     14%|█▍        | 14/100 [00:00<00:00, 120.95 it/sec, obj=-379]
    INFO - 13:31:54:     15%|█▌        | 15/100 [00:00<00:00, 119.90 it/sec, obj=-196]
    INFO - 13:31:54:     16%|█▌        | 16/100 [00:00<00:00, 117.26 it/sec, obj=-647]
    INFO - 13:31:54:     17%|█▋        | 17/100 [00:00<00:00, 113.53 it/sec, obj=-238]
    INFO - 13:31:54:     18%|█▊        | 18/100 [00:00<00:00, 114.37 it/sec, obj=-304]
    INFO - 13:31:54:     19%|█▉        | 19/100 [00:00<00:00, 113.83 it/sec, obj=-372]
    INFO - 13:31:54:     20%|██        | 20/100 [00:00<00:00, 115.96 it/sec, obj=-699]
    INFO - 13:31:54:     21%|██        | 21/100 [00:00<00:00, 116.15 it/sec, obj=-873]
    INFO - 13:31:54:     22%|██▏       | 22/100 [00:00<00:00, 115.10 it/sec, obj=-489]
    INFO - 13:31:54:     23%|██▎       | 23/100 [00:00<00:00, 113.63 it/sec, obj=-623]
    INFO - 13:31:54:     24%|██▍       | 24/100 [00:00<00:00, 114.87 it/sec, obj=-262]
    INFO - 13:31:54:     25%|██▌       | 25/100 [00:00<00:00, 116.58 it/sec, obj=-345]
    INFO - 13:31:54:     26%|██▌       | 26/100 [00:00<00:00, 115.15 it/sec, obj=-377]
    INFO - 13:31:54:     27%|██▋       | 27/100 [00:00<00:00, 114.29 it/sec, obj=-387]
    INFO - 13:31:54:     28%|██▊       | 28/100 [00:00<00:00, 111.38 it/sec, obj=-334]
    INFO - 13:31:54:     29%|██▉       | 29/100 [00:00<00:00, 112.85 it/sec, obj=-438]
    INFO - 13:31:54:     30%|███       | 30/100 [00:00<00:00, 113.89 it/sec, obj=-1.94e+3]
    INFO - 13:31:54:     31%|███       | 31/100 [00:00<00:00, 112.80 it/sec, obj=-733]
    INFO - 13:31:54:     32%|███▏      | 32/100 [00:00<00:00, 113.27 it/sec, obj=-774]
    INFO - 13:31:54:     33%|███▎      | 33/100 [00:00<00:00, 112.99 it/sec, obj=-517]
    INFO - 13:31:54:     34%|███▍      | 34/100 [00:00<00:00, 113.42 it/sec, obj=-232]
    INFO - 13:31:54:     35%|███▌      | 35/100 [00:00<00:00, 114.26 it/sec, obj=-195]
    INFO - 13:31:54:     36%|███▌      | 36/100 [00:00<00:00, 114.70 it/sec, obj=-218]
    INFO - 13:31:54:     37%|███▋      | 37/100 [00:00<00:00, 115.83 it/sec, obj=-198]
    INFO - 13:31:54:     38%|███▊      | 38/100 [00:00<00:00, 112.95 it/sec, obj=-536]
    INFO - 13:31:54:     39%|███▉      | 39/100 [00:00<00:00, 110.34 it/sec, obj=-173]
    INFO - 13:31:54:     40%|████      | 40/100 [00:00<00:00, 110.84 it/sec, obj=-388]
    INFO - 13:31:54:     41%|████      | 41/100 [00:00<00:00, 110.77 it/sec, obj=-723]
    INFO - 13:31:54:     42%|████▏     | 42/100 [00:00<00:00, 110.13 it/sec, obj=-240]
    INFO - 13:31:54:     43%|████▎     | 43/100 [00:00<00:00, 110.60 it/sec, obj=-663]
    INFO - 13:31:54:     44%|████▍     | 44/100 [00:00<00:00, 109.70 it/sec, obj=-1.14e+3]
    INFO - 13:31:54:     45%|████▌     | 45/100 [00:00<00:00, 108.89 it/sec, obj=-438]
    INFO - 13:31:54:     46%|████▌     | 46/100 [00:00<00:00, 108.38 it/sec, obj=-301]
    INFO - 13:31:54:     47%|████▋     | 47/100 [00:00<00:00, 108.81 it/sec, obj=-682]
    INFO - 13:31:54:     48%|████▊     | 48/100 [00:00<00:00, 108.51 it/sec, obj=-750]
    INFO - 13:31:54:     49%|████▉     | 49/100 [00:00<00:00, 108.43 it/sec, obj=-789]
    INFO - 13:31:54:     50%|█████     | 50/100 [00:00<00:00, 108.12 it/sec, obj=-395]
    INFO - 13:31:54:     51%|█████     | 51/100 [00:00<00:00, 107.37 it/sec, obj=-407]
    INFO - 13:31:54:     52%|█████▏    | 52/100 [00:00<00:00, 107.09 it/sec, obj=-315]
    INFO - 13:31:54:     53%|█████▎    | 53/100 [00:00<00:00, 107.07 it/sec, obj=-337]
    INFO - 13:31:54:     54%|█████▍    | 54/100 [00:00<00:00, 106.68 it/sec, obj=-414]
    INFO - 13:31:54:     55%|█████▌    | 55/100 [00:00<00:00, 107.00 it/sec, obj=-240]
    INFO - 13:31:54:     56%|█████▌    | 56/100 [00:00<00:00, 107.53 it/sec, obj=-297]
    INFO - 13:31:54:     57%|█████▋    | 57/100 [00:00<00:00, 107.67 it/sec, obj=-442]
    INFO - 13:31:54:     58%|█████▊    | 58/100 [00:00<00:00, 107.84 it/sec, obj=-233]
    INFO - 13:31:54:     59%|█████▉    | 59/100 [00:00<00:00, 107.28 it/sec, obj=-519]
    INFO - 13:31:54:     60%|██████    | 60/100 [00:00<00:00, 106.58 it/sec, obj=-920]
    INFO - 13:31:54:     61%|██████    | 61/100 [00:00<00:00, 106.25 it/sec, obj=-517]
    INFO - 13:31:54:     62%|██████▏   | 62/100 [00:00<00:00, 106.61 it/sec, obj=-390]
    INFO - 13:31:54:     63%|██████▎   | 63/100 [00:00<00:00, 106.98 it/sec, obj=-434]
    INFO - 13:31:54:     64%|██████▍   | 64/100 [00:00<00:00, 107.33 it/sec, obj=-244]
    INFO - 13:31:54:     65%|██████▌   | 65/100 [00:00<00:00, 106.99 it/sec, obj=-192]
    INFO - 13:31:54:     66%|██████▌   | 66/100 [00:00<00:00, 107.17 it/sec, obj=-305]
    INFO - 13:31:54:     67%|██████▋   | 67/100 [00:00<00:00, 106.53 it/sec, obj=-393]
    INFO - 13:31:54:     68%|██████▊   | 68/100 [00:00<00:00, 106.23 it/sec, obj=-307]
    INFO - 13:31:54:     69%|██████▉   | 69/100 [00:00<00:00, 106.25 it/sec, obj=-328]
    INFO - 13:31:54:     70%|███████   | 70/100 [00:00<00:00, 106.25 it/sec, obj=-998]
    INFO - 13:31:54:     71%|███████   | 71/100 [00:00<00:00, 106.11 it/sec, obj=-1.06e+3]
    INFO - 13:31:54:     72%|███████▏  | 72/100 [00:00<00:00, 106.20 it/sec, obj=-707]
    INFO - 13:31:54:     73%|███████▎  | 73/100 [00:00<00:00, 106.64 it/sec, obj=-897]
    INFO - 13:31:54:     74%|███████▍  | 74/100 [00:00<00:00, 107.23 it/sec, obj=-1.36e+3]
    INFO - 13:31:54:     75%|███████▌  | 75/100 [00:00<00:00, 107.52 it/sec, obj=-853]
    INFO - 13:31:54:     76%|███████▌  | 76/100 [00:00<00:00, 107.92 it/sec, obj=-217]
    INFO - 13:31:54:     77%|███████▋  | 77/100 [00:00<00:00, 107.58 it/sec, obj=-370]
    INFO - 13:31:54:     78%|███████▊  | 78/100 [00:00<00:00, 107.73 it/sec, obj=-636]
    INFO - 13:31:54:     79%|███████▉  | 79/100 [00:00<00:00, 107.95 it/sec, obj=-337]
    INFO - 13:31:54:     80%|████████  | 80/100 [00:00<00:00, 108.04 it/sec, obj=-804]
    INFO - 13:31:54:     81%|████████  | 81/100 [00:00<00:00, 108.28 it/sec, obj=-318]
    INFO - 13:31:54:     82%|████████▏ | 82/100 [00:00<00:00, 108.52 it/sec, obj=-253]
    INFO - 13:31:54:     83%|████████▎ | 83/100 [00:00<00:00, 108.49 it/sec, obj=-590]
    INFO - 13:31:54:     84%|████████▍ | 84/100 [00:00<00:00, 107.92 it/sec, obj=-438]
    INFO - 13:31:54:     85%|████████▌ | 85/100 [00:00<00:00, 107.10 it/sec, obj=-642]
    INFO - 13:31:54:     86%|████████▌ | 86/100 [00:00<00:00, 107.74 it/sec, obj=-381]
    INFO - 13:31:54:     87%|████████▋ | 87/100 [00:00<00:00, 107.44 it/sec, obj=-447]
    INFO - 13:31:54:     88%|████████▊ | 88/100 [00:00<00:00, 107.18 it/sec, obj=-707]
    INFO - 13:31:54:     89%|████████▉ | 89/100 [00:00<00:00, 107.55 it/sec, obj=-384]
    INFO - 13:31:54:     90%|█████████ | 90/100 [00:00<00:00, 107.79 it/sec, obj=-491]
    INFO - 13:31:54:     91%|█████████ | 91/100 [00:00<00:00, 107.79 it/sec, obj=-285]
    INFO - 13:31:54:     92%|█████████▏| 92/100 [00:00<00:00, 107.66 it/sec, obj=-433]
    INFO - 13:31:54:     93%|█████████▎| 93/100 [00:00<00:00, 107.43 it/sec, obj=-377]
    INFO - 13:31:54:     94%|█████████▍| 94/100 [00:00<00:00, 107.43 it/sec, obj=-827]
    INFO - 13:31:54:     95%|█████████▌| 95/100 [00:00<00:00, 106.76 it/sec, obj=-712]
    INFO - 13:31:54:     96%|█████████▌| 96/100 [00:00<00:00, 107.00 it/sec, obj=-245]
    INFO - 13:31:54:     97%|█████████▋| 97/100 [00:00<00:00, 107.22 it/sec, obj=-502]
    INFO - 13:31:54:     98%|█████████▊| 98/100 [00:00<00:00, 107.01 it/sec, obj=-309]
    INFO - 13:31:54:     99%|█████████▉| 99/100 [00:00<00:00, 107.13 it/sec, obj=-971]
    INFO - 13:31:54:    100%|██████████| 100/100 [00:00<00:00, 106.60 it/sec, obj=-649]
    INFO - 13:31:54: Optimization result:
    INFO - 13:31:54:    Optimizer info:
    INFO - 13:31:54:       Status: None
    INFO - 13:31:54:       Message: None
    INFO - 13:31:54:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:31:54:    Solution:
    INFO - 13:31:54:       The solution is feasible.
    INFO - 13:31:54:       Objective: -659.1819417003436
    INFO - 13:31:54:       Standardized constraints:
    INFO - 13:31:54:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:31:54:  -0.19803381]
    INFO - 13:31:54:          g_2 = -0.007088218675791014
    INFO - 13:31:54:          g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
    INFO - 13:31:54:       Design space:
    INFO - 13:31:54:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:54:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:31:54:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:54:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:31:54:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:31:54:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:31:54:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:31:54:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:31:54:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:31:54:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:31:54:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:31:54:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:31:54:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:31:54:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:31:54: *** End DOEScenario execution (time: 0:00:00.957319) ***

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 - 13:31:56: Compilation of the output function JAXSobieskiChain: 0:00:00.303666 seconds.
    INFO - 13:31:56: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.121086 seconds.
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
    INFO - 13:31:56: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:56: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:56: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:56: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:56: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:31:56:  
    INFO - 13:31:56: *** Start MDOScenario execution ***
    INFO - 13:31:56: MDOScenario
    INFO - 13:31:56:    Disciplines: JAXSobieskiChain
    INFO - 13:31:56:    MDO formulation: MDF
    INFO - 13:31:56: Optimization problem:
    INFO - 13:31:56:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:31:56:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:31:56:    subject to constraints:
    INFO - 13:31:56:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:56:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:56:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:56:    over the design space:
    INFO - 13:31:56:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:56:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:31:56:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:56:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:31:56:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:31:56:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:31:56:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:31:56:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:31:56:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:31:56:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:31:56:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:56:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:56:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:31:56:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:56: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 13:31:56:      1%|          | 1/100 [00:00<00:00, 302.27 it/sec, obj=-536]
    INFO - 13:31:56:      2%|         | 2/100 [00:00<00:00, 214.84 it/sec, obj=-539]
    INFO - 13:31:56:      3%|         | 3/100 [00:00<00:00, 201.26 it/sec, obj=-763]
    INFO - 13:31:56:      4%|         | 4/100 [00:00<00:00, 195.67 it/sec, obj=-713]
    INFO - 13:31:56:      5%|         | 5/100 [00:00<00:00, 192.00 it/sec, obj=-687]
    INFO - 13:31:56:      6%|         | 6/100 [00:00<00:00, 189.60 it/sec, obj=-897]
    INFO - 13:31:56:      7%|         | 7/100 [00:00<00:00, 184.03 it/sec, obj=-957]
    INFO - 13:31:56:      8%|         | 8/100 [00:00<00:00, 180.29 it/sec, obj=-956]
    INFO - 13:31:56:      9%|         | 9/100 [00:00<00:00, 177.50 it/sec, obj=-930]
    INFO - 13:31:56:     10%|         | 10/100 [00:00<00:00, 175.26 it/sec, obj=-943]
    INFO - 13:31:56:     11%|         | 11/100 [00:00<00:00, 175.64 it/sec, obj=-768]
    INFO - 13:31:56:     12%|█▏        | 12/100 [00:00<00:00, 172.63 it/sec, obj=-1e+3]
    INFO - 13:31:56:     13%|█▎        | 13/100 [00:00<00:00, 170.24 it/sec, obj=-1.34e+3]
    INFO - 13:31:56:     14%|█▍        | 14/100 [00:00<00:00, 168.16 it/sec, obj=-1.85e+3]
    INFO - 13:31:56:     15%|█▌        | 15/100 [00:00<00:00, 165.25 it/sec, obj=-1.87e+3]
    INFO - 13:31:56:     16%|█▌        | 16/100 [00:00<00:00, 162.61 it/sec, obj=-1.99e+3]
    INFO - 13:31:56:     17%|█▋        | 17/100 [00:00<00:00, 161.40 it/sec, obj=-2.18e+3]
    INFO - 13:31:56:     18%|█▊        | 18/100 [00:00<00:00, 158.85 it/sec, obj=-2.2e+3]
    INFO - 13:31:56:     19%|█▉        | 19/100 [00:00<00:00, 156.82 it/sec, obj=-2.42e+3]
    INFO - 13:31:56:     20%|██        | 20/100 [00:00<00:00, 155.93 it/sec, obj=-3.03e+3]
    INFO - 13:31:56:     21%|██        | 21/100 [00:00<00:00, 155.19 it/sec, obj=-2.99e+3]
    INFO - 13:31:56:     22%|██▏       | 22/100 [00:00<00:00, 154.62 it/sec, obj=-2.63e+3]
    INFO - 13:31:56:     23%|██▎       | 23/100 [00:00<00:00, 153.30 it/sec, obj=-3.08e+3]
    INFO - 13:31:56:     24%|██▍       | 24/100 [00:00<00:00, 152.32 it/sec, obj=-3.12e+3]
    INFO - 13:31:56:     25%|██▌       | 25/100 [00:00<00:00, 152.17 it/sec, obj=-3.23e+3]
    INFO - 13:31:56:     26%|██▌       | 26/100 [00:00<00:00, 152.08 it/sec, obj=-3.58e+3]
    INFO - 13:31:56:     27%|██▋       | 27/100 [00:00<00:00, 152.03 it/sec, obj=-3.68e+3]
    INFO - 13:31:56:     28%|██▊       | 28/100 [00:00<00:00, 151.77 it/sec, obj=-3.95e+3]
    INFO - 13:31:56:     29%|██▉       | 29/100 [00:00<00:00, 151.02 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     30%|███       | 30/100 [00:00<00:00, 150.70 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     31%|███       | 31/100 [00:00<00:00, 149.63 it/sec, obj=-3.34e+3]
    INFO - 13:31:56:     32%|███▏      | 32/100 [00:00<00:00, 149.63 it/sec, obj=-3.82e+3]
    INFO - 13:31:56:     33%|███▎      | 33/100 [00:00<00:00, 149.18 it/sec, obj=-3.52e+3]
    INFO - 13:31:56:     34%|███▍      | 34/100 [00:00<00:00, 148.65 it/sec, obj=-3.37e+3]
    INFO - 13:31:56:     35%|███▌      | 35/100 [00:00<00:00, 148.21 it/sec, obj=-3.42e+3]
    INFO - 13:31:56:     36%|███▌      | 36/100 [00:00<00:00, 148.26 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     37%|███▋      | 37/100 [00:00<00:00, 148.33 it/sec, obj=-4.03e+3]
    INFO - 13:31:56:     38%|███▊      | 38/100 [00:00<00:00, 148.34 it/sec, obj=-4.02e+3]
    INFO - 13:31:56:     39%|███▉      | 39/100 [00:00<00:00, 147.94 it/sec, obj=-3.63e+3]
    INFO - 13:31:56:     40%|████      | 40/100 [00:00<00:00, 147.95 it/sec, obj=-3.97e+3]
    INFO - 13:31:56:     41%|████      | 41/100 [00:00<00:00, 147.60 it/sec, obj=-3.67e+3]
    INFO - 13:31:56:     42%|████▏     | 42/100 [00:00<00:00, 147.21 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     43%|████▎     | 43/100 [00:00<00:00, 146.88 it/sec, obj=-3.39e+3]
    INFO - 13:31:56:     44%|████▍     | 44/100 [00:00<00:00, 146.54 it/sec, obj=-3.99e+3]
    INFO - 13:31:56:     45%|████▌     | 45/100 [00:00<00:00, 145.79 it/sec, obj=-3.51e+3]
    INFO - 13:31:56:     46%|████▌     | 46/100 [00:00<00:00, 145.30 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     47%|████▋     | 47/100 [00:00<00:00, 144.48 it/sec, obj=-3.2e+3]
    INFO - 13:31:56:     48%|████▊     | 48/100 [00:00<00:00, 144.04 it/sec, obj=-3.25e+3]
    INFO - 13:31:56:     49%|████▉     | 49/100 [00:00<00:00, 143.78 it/sec, obj=-3.29e+3]
    INFO - 13:31:56:     50%|█████     | 50/100 [00:00<00:00, 143.55 it/sec, obj=-3.47e+3]
    INFO - 13:31:56:     51%|█████     | 51/100 [00:00<00:00, 143.17 it/sec, obj=-3.25e+3]
    INFO - 13:31:56:     52%|█████▏    | 52/100 [00:00<00:00, 142.93 it/sec, obj=-3.54e+3]
    INFO - 13:31:56:     53%|█████▎    | 53/100 [00:00<00:00, 143.07 it/sec, obj=-3.95e+3]
    INFO - 13:31:56:     54%|█████▍    | 54/100 [00:00<00:00, 142.89 it/sec, obj=-3.58e+3]
    INFO - 13:31:56:     55%|█████▌    | 55/100 [00:00<00:00, 143.00 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     56%|█████▌    | 56/100 [00:00<00:00, 142.70 it/sec, obj=-3.62e+3]
    INFO - 13:31:56:     57%|█████▋    | 57/100 [00:00<00:00, 142.79 it/sec, obj=-3.91e+3]
    INFO - 13:31:56:     58%|█████▊    | 58/100 [00:00<00:00, 142.66 it/sec, obj=-3.3e+3]
    INFO - 13:31:56:     59%|█████▉    | 59/100 [00:00<00:00, 142.47 it/sec, obj=-3.57e+3]
    INFO - 13:31:56:     60%|██████    | 60/100 [00:00<00:00, 142.65 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     61%|██████    | 61/100 [00:00<00:00, 142.52 it/sec, obj=-3.43e+3]
    INFO - 13:31:56:     62%|██████▏   | 62/100 [00:00<00:00, 142.41 it/sec, obj=-3.26e+3]
    INFO - 13:31:56:     63%|██████▎   | 63/100 [00:00<00:00, 142.50 it/sec, obj=-3.94e+3]
    INFO - 13:31:56:     64%|██████▍   | 64/100 [00:00<00:00, 142.35 it/sec, obj=-3.5e+3]
    INFO - 13:31:56:     65%|██████▌   | 65/100 [00:00<00:00, 142.23 it/sec, obj=-3.3e+3]
    INFO - 13:31:56:     66%|██████▌   | 66/100 [00:00<00:00, 142.09 it/sec, obj=-3.53e+3]
    INFO - 13:31:56:     67%|██████▋   | 67/100 [00:00<00:00, 141.91 it/sec, obj=-3.27e+3]
    INFO - 13:31:56:     68%|██████▊   | 68/100 [00:00<00:00, 141.77 it/sec, obj=-3.52e+3]
    INFO - 13:31:56:     69%|██████▉   | 69/100 [00:00<00:00, 141.88 it/sec, obj=-3.83e+3]
    INFO - 13:31:56:     70%|███████   | 70/100 [00:00<00:00, 141.79 it/sec, obj=-3.48e+3]
    INFO - 13:31:56:     71%|███████   | 71/100 [00:00<00:00, 141.88 it/sec, obj=-3.87e+3]
    INFO - 13:31:56:     72%|███████▏  | 72/100 [00:00<00:00, 141.77 it/sec, obj=-3.48e+3]
    INFO - 13:31:56:     73%|███████▎  | 73/100 [00:00<00:00, 141.64 it/sec, obj=-3.49e+3]
    INFO - 13:31:56:     74%|███████▍  | 74/100 [00:00<00:00, 141.69 it/sec, obj=-3.87e+3]
    INFO - 13:31:56:     75%|███████▌  | 75/100 [00:00<00:00, 141.58 it/sec, obj=-3.47e+3]
    INFO - 13:31:56:     76%|███████▌  | 76/100 [00:00<00:00, 141.51 it/sec, obj=-3.46e+3]
    INFO - 13:31:56:     77%|███████▋  | 77/100 [00:00<00:00, 141.41 it/sec, obj=-3.48e+3]
    INFO - 13:31:56:     78%|███████▊  | 78/100 [00:00<00:00, 141.31 it/sec, obj=-3.33e+3]
    INFO - 13:31:56:     79%|███████▉  | 79/100 [00:00<00:00, 141.41 it/sec, obj=-3.51e+3]
    INFO - 13:31:56:     80%|████████  | 80/100 [00:00<00:00, 141.53 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     81%|████████  | 81/100 [00:00<00:00, 141.44 it/sec, obj=-3.41e+3]
    INFO - 13:31:56:     82%|████████▏ | 82/100 [00:00<00:00, 141.56 it/sec, obj=-3.97e+3]
    INFO - 13:31:56:     83%|████████▎ | 83/100 [00:00<00:00, 141.48 it/sec, obj=-3.35e+3]
    INFO - 13:31:56:     84%|████████▍ | 84/100 [00:00<00:00, 141.40 it/sec, obj=-3.2e+3]
    INFO - 13:31:56:     85%|████████▌ | 85/100 [00:00<00:00, 141.30 it/sec, obj=-3.64e+3]
    INFO - 13:31:56:     86%|████████▌ | 86/100 [00:00<00:00, 141.23 it/sec, obj=-3.65e+3]
    INFO - 13:31:56:     87%|████████▋ | 87/100 [00:00<00:00, 141.33 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     88%|████████▊ | 88/100 [00:00<00:00, 141.24 it/sec, obj=-3.32e+3]
    INFO - 13:31:56:     89%|████████▉ | 89/100 [00:00<00:00, 141.14 it/sec, obj=-3.3e+3]
    INFO - 13:31:56:     90%|█████████ | 90/100 [00:00<00:00, 141.21 it/sec, obj=-3.87e+3]
    INFO - 13:31:56:     91%|█████████ | 91/100 [00:00<00:00, 141.17 it/sec, obj=-3.63e+3]
    INFO - 13:31:56:     92%|█████████▏| 92/100 [00:00<00:00, 141.11 it/sec, obj=-3.45e+3]
    INFO - 13:31:56:     93%|█████████▎| 93/100 [00:00<00:00, 141.06 it/sec, obj=-3.41e+3]
    INFO - 13:31:56:     94%|█████████▍| 94/100 [00:00<00:00, 141.19 it/sec, obj=-3.77e+3]
    INFO - 13:31:56:     95%|█████████▌| 95/100 [00:00<00:00, 141.32 it/sec, obj=-3.96e+3]
    INFO - 13:31:56:     96%|█████████▌| 96/100 [00:00<00:00, 141.27 it/sec, obj=-3.48e+3]
    INFO - 13:31:57:     97%|█████████▋| 97/100 [00:00<00:00, 141.20 it/sec, obj=-3.41e+3]
    INFO - 13:31:57:     98%|█████████▊| 98/100 [00:00<00:00, 141.29 it/sec, obj=-3.97e+3]
    INFO - 13:31:57:     99%|█████████▉| 99/100 [00:00<00:00, 141.04 it/sec, obj=-3.29e+3]
    INFO - 13:31:57:    100%|██████████| 100/100 [00:00<00:00, 140.93 it/sec, obj=-3.33e+3]
    INFO - 13:31:57: Optimization result:
    INFO - 13:31:57:    Optimizer info:
    INFO - 13:31:57:       Status: None
    INFO - 13:31:57:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:31:57:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:31:57:    Solution:
    INFO - 13:31:57:       The solution is feasible.
    INFO - 13:31:57:       Objective: -3963.5978188452605
    INFO - 13:31:57:       Standardized constraints:
    INFO - 13:31:57:          g_1 = [-0.01827806 -0.0334989  -0.04436674 -0.05192983 -0.05740621 -0.13708086
    INFO - 13:31:57:  -0.10291914]
    INFO - 13:31:57:          g_2 = 2.8205413821202896e-05
    INFO - 13:31:57:          g_3 = [-7.67134672e-01 -2.32865328e-01 -9.95245644e-06 -1.83255000e-01]
    INFO - 13:31:57:       Design space:
    INFO - 13:31:57:          +-------------+-------------+--------------------+-------------+-------+
    INFO - 13:31:57:          | Name        | Lower bound |       Value        | Upper bound | Type  |
    INFO - 13:31:57:          +-------------+-------------+--------------------+-------------+-------+
    INFO - 13:31:57:          | x_shared[0] |     0.01    | 0.0600070513534553 |     0.09    | float |
    INFO - 13:31:57:          | x_shared[1] |    30000    |       60000        |    60000    | float |
    INFO - 13:31:57:          | x_shared[2] |     1.4     |        1.4         |     1.8     | float |
    INFO - 13:31:57:          | x_shared[3] |     2.5     | 2.500000000000004  |     8.5     | float |
    INFO - 13:31:57:          | x_shared[4] |      40     |         70         |      70     | float |
    INFO - 13:31:57:          | x_shared[5] |     500     |        1500        |     1500    | float |
    INFO - 13:31:57:          | x_1[0]      |     0.1     | 0.3992532360683517 |     0.4     | float |
    INFO - 13:31:57:          | x_1[1]      |     0.75    |        0.75        |     1.25    | float |
    INFO - 13:31:57:          | x_2         |     0.75    |        0.75        |     1.25    | float |
    INFO - 13:31:57:          | x_3         |     0.1     | 0.1562431906272621 |      1      | float |
    INFO - 13:31:57:          +-------------+-------------+--------------------+-------------+-------+
    INFO - 13:31:57: *** End MDOScenario execution (time: 0:00:00.717845) ***

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:

/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
 WARNING - 13:31:57: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:31:57: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:31:57:  
    INFO - 13:31:57: *** Start MDOScenario execution ***
    INFO - 13:31:57: MDOScenario
    INFO - 13:31:57:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:31:57:    MDO formulation: MDF
    INFO - 13:31:57: Optimization problem:
    INFO - 13:31:57:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:31:57:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:31:57:    subject to constraints:
    INFO - 13:31:57:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:57:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:57:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:31:57:    over the design space:
    INFO - 13:31:57:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:57:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:31:57:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:57:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:31:57:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:31:57:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:31:57:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:31:57:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:31:57:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:31:57:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:31:57:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:57:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:31:57:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:31:57:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:31:57: Solving optimization problem with algorithm NLOPT_COBYLA:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/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 - 13:31:57:      1%|          | 1/100 [00:00<00:02, 48.04 it/sec, obj=-536]
    INFO - 13:31:57:      2%|         | 2/100 [00:00<00:02, 42.74 it/sec, obj=-539]
    INFO - 13:31:57:      3%|         | 3/100 [00:00<00:02, 42.21 it/sec, obj=-763]
    INFO - 13:31:57:      4%|         | 4/100 [00:00<00:02, 42.09 it/sec, obj=-713]
    INFO - 13:31:57:      5%|         | 5/100 [00:00<00:02, 41.34 it/sec, obj=-687]
    INFO - 13:31:57:      6%|         | 6/100 [00:00<00:02, 40.28 it/sec, obj=-897]
    INFO - 13:31:57:      7%|         | 7/100 [00:00<00:02, 40.47 it/sec, obj=-957]
    INFO - 13:31:57:      8%|         | 8/100 [00:00<00:02, 41.08 it/sec, obj=-956]
    INFO - 13:31:57:      9%|         | 9/100 [00:00<00:02, 41.44 it/sec, obj=-930]
    INFO - 13:31:57:     10%|         | 10/100 [00:00<00:02, 41.15 it/sec, obj=-943]
    INFO - 13:31:57:     11%|         | 11/100 [00:00<00:02, 41.38 it/sec, obj=-768]
    INFO - 13:31:57:     12%|█▏        | 12/100 [00:00<00:02, 39.26 it/sec, obj=-1e+3]
    INFO - 13:31:57:     13%|█▎        | 13/100 [00:00<00:02, 37.71 it/sec, obj=-1.34e+3]
    INFO - 13:31:57:     14%|█▍        | 14/100 [00:00<00:02, 36.82 it/sec, obj=-1.85e+3]
    INFO - 13:31:57:     15%|█▌        | 15/100 [00:00<00:02, 35.46 it/sec, obj=-1.87e+3]
 WARNING - 13:31:57: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.7204854871194414e-05 is still above the tolerance 1e-06.
    INFO - 13:31:57:     16%|█▌        | 16/100 [00:00<00:02, 34.06 it/sec, obj=-1.99e+3]
    INFO - 13:31:57:     17%|█▋        | 17/100 [00:00<00:02, 33.50 it/sec, obj=-2.18e+3]
    INFO - 13:31:57:     18%|█▊        | 18/100 [00:00<00:02, 32.88 it/sec, obj=-2.2e+3]
    INFO - 13:31:57:     19%|█▉        | 19/100 [00:00<00:02, 32.60 it/sec, obj=-2.42e+3]
 WARNING - 13:31:57: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.9335592270087927e-05 is still above the tolerance 1e-06.
    INFO - 13:31:57:     20%|██        | 20/100 [00:00<00:02, 31.56 it/sec, obj=-2.37e+3]
    INFO - 13:31:57:     21%|██        | 21/100 [00:00<00:02, 31.41 it/sec, obj=-2.83e+3]
    INFO - 13:31:57:     22%|██▏       | 22/100 [00:00<00:02, 30.83 it/sec, obj=-3.12e+3]
    INFO - 13:31:57:     23%|██▎       | 23/100 [00:00<00:02, 30.71 it/sec, obj=-3.21e+3]
    INFO - 13:31:57:     24%|██▍       | 24/100 [00:00<00:02, 30.71 it/sec, obj=-3.99e+3]
 WARNING - 13:31:57: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.6602480542748623e-05 is still above the tolerance 1e-06.
    INFO - 13:31:57:     25%|██▌       | 25/100 [00:00<00:02, 30.21 it/sec, obj=-2.6e+3]
    INFO - 13:31:57:     26%|██▌       | 26/100 [00:00<00:02, 29.97 it/sec, obj=-3.06e+3]
    INFO - 13:31:57:     27%|██▋       | 27/100 [00:00<00:02, 29.95 it/sec, obj=-2.98e+3]
 WARNING - 13:31:57: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.131065719805529e-06 is still above the tolerance 1e-06.
    INFO - 13:31:57:     28%|██▊       | 28/100 [00:00<00:02, 29.55 it/sec, obj=-3.24e+3]
    INFO - 13:31:58:     29%|██▉       | 29/100 [00:00<00:02, 29.41 it/sec, obj=-3.67e+3]
    INFO - 13:31:58:     30%|███       | 30/100 [00:01<00:02, 29.38 it/sec, obj=-3.16e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 0.00020046262987076315 is still above the tolerance 1e-06.
    INFO - 13:31:58:     31%|███       | 31/100 [00:01<00:02, 29.00 it/sec, obj=-3.09e+3]
    INFO - 13:31:58:     32%|███▏      | 32/100 [00:01<00:02, 28.67 it/sec, obj=-3.47e+3]
    INFO - 13:31:58:     33%|███▎      | 33/100 [00:01<00:02, 28.42 it/sec, obj=-3.52e+3]
    INFO - 13:31:58:     34%|███▍      | 34/100 [00:01<00:02, 28.38 it/sec, obj=-3.52e+3]
    INFO - 13:31:58:     35%|███▌      | 35/100 [00:01<00:02, 28.18 it/sec, obj=-3.2e+3]
    INFO - 13:31:58:     36%|███▌      | 36/100 [00:01<00:02, 28.08 it/sec, obj=-3.52e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.5187500368837417e-06 is still above the tolerance 1e-06.
    INFO - 13:31:58:     37%|███▋      | 37/100 [00:01<00:02, 27.77 it/sec, obj=-2.96e+3]
    INFO - 13:31:58:     38%|███▊      | 38/100 [00:01<00:02, 27.79 it/sec, obj=-3.18e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.3580820715243732e-06 is still above the tolerance 1e-06.
    INFO - 13:31:58:     39%|███▉      | 39/100 [00:01<00:02, 27.58 it/sec, obj=-3.15e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.0068765557476064e-05 is still above the tolerance 1e-06.
    INFO - 13:31:58:     40%|████      | 40/100 [00:01<00:02, 27.40 it/sec, obj=-3.92e+3]
    INFO - 13:31:58:     41%|████      | 41/100 [00:01<00:02, 27.38 it/sec, obj=-3.96e+3]
    INFO - 13:31:58:     42%|████▏     | 42/100 [00:01<00:02, 27.39 it/sec, obj=-3.96e+3]
    INFO - 13:31:58:     43%|████▎     | 43/100 [00:01<00:02, 27.36 it/sec, obj=-3.96e+3]
    INFO - 13:31:58:     44%|████▍     | 44/100 [00:01<00:02, 27.27 it/sec, obj=-3.75e+3]
    INFO - 13:31:58:     45%|████▌     | 45/100 [00:01<00:02, 27.27 it/sec, obj=-3.94e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.9699912018918902e-06 is still above the tolerance 1e-06.
    INFO - 13:31:58:     46%|████▌     | 46/100 [00:01<00:01, 27.18 it/sec, obj=-3.38e+3]
    INFO - 13:31:58:     47%|████▋     | 47/100 [00:01<00:01, 27.27 it/sec, obj=-3.79e+3]
    INFO - 13:31:58:     48%|████▊     | 48/100 [00:01<00:01, 27.15 it/sec, obj=-3.41e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.9604198356566634e-05 is still above the tolerance 1e-06.
    INFO - 13:31:58:     49%|████▉     | 49/100 [00:01<00:01, 26.99 it/sec, obj=-3.88e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.0414068021569107e-06 is still above the tolerance 1e-06.
    INFO - 13:31:58:     50%|█████     | 50/100 [00:01<00:01, 26.87 it/sec, obj=-3.56e+3]
    INFO - 13:31:58:     51%|█████     | 51/100 [00:01<00:01, 26.84 it/sec, obj=-3.57e+3]
 WARNING - 13:31:58: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.339805325609159e-06 is still above the tolerance 1e-06.
    INFO - 13:31:58:     52%|█████▏    | 52/100 [00:01<00:01, 26.71 it/sec, obj=-3.31e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.903076918194352e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     53%|█████▎    | 53/100 [00:01<00:01, 26.64 it/sec, obj=-3.18e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.222419054177024e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     54%|█████▍    | 54/100 [00:02<00:01, 26.49 it/sec, obj=-3.27e+3]
    INFO - 13:31:59:     55%|█████▌    | 55/100 [00:02<00:01, 26.48 it/sec, obj=-3.83e+3]
    INFO - 13:31:59:     56%|█████▌    | 56/100 [00:02<00:01, 26.55 it/sec, obj=-3.75e+3]
    INFO - 13:31:59:     57%|█████▋    | 57/100 [00:02<00:01, 26.51 it/sec, obj=-3.42e+3]
    INFO - 13:31:59:     58%|█████▊    | 58/100 [00:02<00:01, 26.38 it/sec, obj=-3.51e+3]
    INFO - 13:31:59:     59%|█████▉    | 59/100 [00:02<00:01, 26.29 it/sec, obj=-3.62e+3]
    INFO - 13:31:59:     60%|██████    | 60/100 [00:02<00:01, 26.24 it/sec, obj=-3.5e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.439216568543729e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     61%|██████    | 61/100 [00:02<00:01, 26.12 it/sec, obj=-3.46e+3]
    INFO - 13:31:59:     62%|██████▏   | 62/100 [00:02<00:01, 26.11 it/sec, obj=-3.34e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 6.1842511238495055e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     63%|██████▎   | 63/100 [00:02<00:01, 26.01 it/sec, obj=-3.36e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.6372363218085485e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     64%|██████▍   | 64/100 [00:02<00:01, 25.93 it/sec, obj=-3.19e+3]
    INFO - 13:31:59:     65%|██████▌   | 65/100 [00:02<00:01, 25.85 it/sec, obj=-3.45e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 6.279609664777154e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     66%|██████▌   | 66/100 [00:02<00:01, 25.79 it/sec, obj=-3.45e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.405999600169342e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     67%|██████▋   | 67/100 [00:02<00:01, 25.71 it/sec, obj=-3.45e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.4425135716984906e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     68%|██████▊   | 68/100 [00:02<00:01, 25.65 it/sec, obj=-3.32e+3]
    INFO - 13:31:59:     69%|██████▉   | 69/100 [00:02<00:01, 25.58 it/sec, obj=-3.42e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.662998088252376e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     70%|███████   | 70/100 [00:02<00:01, 25.52 it/sec, obj=-3.54e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.981553508096536e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     71%|███████   | 71/100 [00:02<00:01, 25.48 it/sec, obj=-3.3e+3]
 WARNING - 13:31:59: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.529222752819427e-06 is still above the tolerance 1e-06.
    INFO - 13:31:59:     72%|███████▏  | 72/100 [00:02<00:01, 25.44 it/sec, obj=-3.34e+3]
    INFO - 13:31:59:     73%|███████▎  | 73/100 [00:02<00:01, 25.39 it/sec, obj=-3.14e+3]
    INFO - 13:31:59:     74%|███████▍  | 74/100 [00:02<00:01, 25.43 it/sec, obj=-3.64e+3]
    INFO - 13:32:00:     75%|███████▌  | 75/100 [00:02<00:00, 25.39 it/sec, obj=-3.39e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.6083054685158987e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     76%|███████▌  | 76/100 [00:03<00:00, 25.33 it/sec, obj=-3.11e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.712717311801625e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     77%|███████▋  | 77/100 [00:03<00:00, 25.26 it/sec, obj=-3.51e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.1988893016520166e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     78%|███████▊  | 78/100 [00:03<00:00, 25.22 it/sec, obj=-3.07e+3]
    INFO - 13:32:00:     79%|███████▉  | 79/100 [00:03<00:00, 25.25 it/sec, obj=-3.69e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.3277311553287673e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     80%|████████  | 80/100 [00:03<00:00, 25.20 it/sec, obj=-3.08e+3]
    INFO - 13:32:00:     81%|████████  | 81/100 [00:03<00:00, 25.16 it/sec, obj=-3.39e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 5.388041776135559e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     82%|████████▏ | 82/100 [00:03<00:00, 25.13 it/sec, obj=-3.5e+3]
    INFO - 13:32:00:     83%|████████▎ | 83/100 [00:03<00:00, 25.07 it/sec, obj=-3.08e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.3902672321401141e-05 is still above the tolerance 1e-06.
    INFO - 13:32:00:     84%|████████▍ | 84/100 [00:03<00:00, 25.02 it/sec, obj=-3.79e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 8.258646891354083e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     85%|████████▌ | 85/100 [00:03<00:00, 24.99 it/sec, obj=-3.67e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.0805763550512402e-05 is still above the tolerance 1e-06.
    INFO - 13:32:00:     86%|████████▌ | 86/100 [00:03<00:00, 24.94 it/sec, obj=-3.87e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.9796750242748394e-06 is still above the tolerance 1e-06.
    INFO - 13:32:00:     87%|████████▋ | 87/100 [00:03<00:00, 24.91 it/sec, obj=-3.38e+3]
    INFO - 13:32:00:     88%|████████▊ | 88/100 [00:03<00:00, 24.92 it/sec, obj=-3.96e+3]
    INFO - 13:32:00:     89%|████████▉ | 89/100 [00:03<00:00, 24.94 it/sec, obj=-3.94e+3]
    INFO - 13:32:00:     90%|█████████ | 90/100 [00:03<00:00, 24.96 it/sec, obj=-3.96e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.7338183877226514e-05 is still above the tolerance 1e-06.
    INFO - 13:32:00:     91%|█████████ | 91/100 [00:03<00:00, 24.91 it/sec, obj=-3.92e+3]
 WARNING - 13:32:00: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.5198708905547502e-05 is still above the tolerance 1e-06.
    INFO - 13:32:00:     92%|█████████▏| 92/100 [00:03<00:00, 24.88 it/sec, obj=-3.9e+3]
    INFO - 13:32:00:     93%|█████████▎| 93/100 [00:03<00:00, 24.89 it/sec, obj=-3.96e+3]
    INFO - 13:32:00:     94%|█████████▍| 94/100 [00:03<00:00, 24.92 it/sec, obj=-3.92e+3]
    INFO - 13:32:00:     95%|█████████▌| 95/100 [00:03<00:00, 24.96 it/sec, obj=-3.96e+3]
    INFO - 13:32:00:     96%|█████████▌| 96/100 [00:03<00:00, 24.97 it/sec, obj=-3.94e+3]
    INFO - 13:32:00:     97%|█████████▋| 97/100 [00:03<00:00, 24.99 it/sec, obj=-3.92e+3]
    INFO - 13:32:00:     98%|█████████▊| 98/100 [00:03<00:00, 25.01 it/sec, obj=-3.92e+3]
    INFO - 13:32:01:     99%|█████████▉| 99/100 [00:03<00:00, 25.02 it/sec, obj=-3.91e+3]
 WARNING - 13:32:01: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.842849391330206e-05 is still above the tolerance 1e-06.
    INFO - 13:32:01:    100%|██████████| 100/100 [00:04<00:00, 24.97 it/sec, obj=-3.93e+3]
    INFO - 13:32:01: Optimization result:
    INFO - 13:32:01:    Optimizer info:
    INFO - 13:32:01:       Status: None
    INFO - 13:32:01:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:32:01:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:32:01:    Solution:
    INFO - 13:32:01:       The solution is feasible.
    INFO - 13:32:01:       Objective: -3963.3793053483255
    INFO - 13:32:01:       Standardized constraints:
    INFO - 13:32:01:          g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
    INFO - 13:32:01:  -0.10279135]
    INFO - 13:32:01:          g_2 = 0.0
    INFO - 13:32:01:          g_3 = [-7.67185581e-01 -2.32814419e-01 -1.20219524e-06 -1.83255000e-01]
    INFO - 13:32:01:       Design space:
    INFO - 13:32:01:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:01:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:32:01:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:01:          | x_shared[0] |     0.01    | 0.05999999999999999 |     0.09    | float |
    INFO - 13:32:01:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 13:32:01:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 13:32:01:          | x_shared[3] |     2.5     |  2.500000000000015  |     8.5     | float |
    INFO - 13:32:01:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 13:32:01:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 13:32:01:          | x_1[0]      |     0.1     |         0.4         |     0.4     | float |
    INFO - 13:32:01:          | x_1[1]      |     0.75    |  0.7500000000000009 |     1.25    | float |
    INFO - 13:32:01:          | x_2         |     0.75    |  0.7500000000000089 |     1.25    | float |
    INFO - 13:32:01:          | x_3         |     0.1     |  0.1562445578095981 |      1      | float |
    INFO - 13:32:01:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:01: *** End MDOScenario execution (time: 0:00:04.013561) ***

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 - 13:32:02: Compilation of the output function JAXSobieskiChain: 0:00:00.305794 seconds.
    INFO - 13:32:02: Compilation of the Jacobian function JAXSobieskiChain: 0:00:00.956701 seconds.
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
    INFO - 13:32:02: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:32:02: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:32:02: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:32:02: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:32:02: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:32:02:  
    INFO - 13:32:02: *** Start MDOScenario execution ***
    INFO - 13:32:02: MDOScenario
    INFO - 13:32:02:    Disciplines: JAXSobieskiChain
    INFO - 13:32:02:    MDO formulation: MDF
    INFO - 13:32:02: Optimization problem:
    INFO - 13:32:02:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:32:02:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:32:02:    subject to constraints:
    INFO - 13:32:02:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:32:02:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:32:02:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:32:02:    over the design space:
    INFO - 13:32:02:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:32:02:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:32:02:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:32:02:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:32:02:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:32:02:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:32:02:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:32:02:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:32:02:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:32:02:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:32:02:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:32:02:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:32:02:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:32:02:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:32:02: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 13:32:02:      1%|          | 1/100 [00:00<00:00, 315.93 it/sec, obj=-536]
    INFO - 13:32:02:      2%|         | 2/100 [00:00<00:00, 223.85 it/sec, obj=-539]
    INFO - 13:32:02:      3%|         | 3/100 [00:00<00:00, 214.38 it/sec, obj=-763]
    INFO - 13:32:02:      4%|         | 4/100 [00:00<00:00, 211.21 it/sec, obj=-713]
    INFO - 13:32:02:      5%|         | 5/100 [00:00<00:00, 206.84 it/sec, obj=-687]
    INFO - 13:32:02:      6%|         | 6/100 [00:00<00:00, 204.38 it/sec, obj=-897]
    INFO - 13:32:02:      7%|         | 7/100 [00:00<00:00, 201.29 it/sec, obj=-957]
    INFO - 13:32:02:      8%|         | 8/100 [00:00<00:00, 191.79 it/sec, obj=-956]
    INFO - 13:32:02:      9%|         | 9/100 [00:00<00:00, 183.76 it/sec, obj=-930]
    INFO - 13:32:02:     10%|         | 10/100 [00:00<00:00, 183.17 it/sec, obj=-943]
    INFO - 13:32:02:     11%|         | 11/100 [00:00<00:00, 182.89 it/sec, obj=-768]
    INFO - 13:32:02:     12%|█▏        | 12/100 [00:00<00:00, 180.92 it/sec, obj=-1e+3]
    INFO - 13:32:02:     13%|█▎        | 13/100 [00:00<00:00, 177.45 it/sec, obj=-1.34e+3]
    INFO - 13:32:02:     14%|█▍        | 14/100 [00:00<00:00, 173.89 it/sec, obj=-1.85e+3]
 WARNING - 13:32:02: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.5897449643940727e-05 is still above the tolerance 1e-06.
    INFO - 13:32:02:     15%|█▌        | 15/100 [00:00<00:00, 169.52 it/sec, obj=-1.87e+3]
 WARNING - 13:32:02: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 3.1764060178304437e-06 is still above the tolerance 1e-06.
    INFO - 13:32:02:     16%|█▌        | 16/100 [00:00<00:00, 166.16 it/sec, obj=-1.99e+3]
 WARNING - 13:32:02: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.2161314217002324e-06 is still above the tolerance 1e-06.
    INFO - 13:32:02:     17%|█▋        | 17/100 [00:00<00:00, 163.26 it/sec, obj=-2.18e+3]
    INFO - 13:32:02:     18%|█▊        | 18/100 [00:00<00:00, 160.56 it/sec, obj=-2.51e+3]
    INFO - 13:32:02:     19%|█▉        | 19/100 [00:00<00:00, 159.87 it/sec, obj=-2.92e+3]
    INFO - 13:32:02:     20%|██        | 20/100 [00:00<00:00, 160.09 it/sec, obj=-3.03e+3]
    INFO - 13:32:02:     21%|██        | 21/100 [00:00<00:00, 161.41 it/sec, obj=-3.16e+3]
    INFO - 13:32:02:     22%|██▏       | 22/100 [00:00<00:00, 160.24 it/sec, obj=-2.75e+3]
    INFO - 13:32:02:     23%|██▎       | 23/100 [00:00<00:00, 161.22 it/sec, obj=-2.61e+3]
    INFO - 13:32:02:     24%|██▍       | 24/100 [00:00<00:00, 162.12 it/sec, obj=-2.22e+3]
    INFO - 13:32:02:     25%|██▌       | 25/100 [00:00<00:00, 163.37 it/sec, obj=-2.95e+3]
    INFO - 13:32:02:     26%|██▌       | 26/100 [00:00<00:00, 164.87 it/sec, obj=-3.3e+3]
    INFO - 13:32:02:     27%|██▋       | 27/100 [00:00<00:00, 166.29 it/sec, obj=-3.22e+3]
    INFO - 13:32:02:     28%|██▊       | 28/100 [00:00<00:00, 165.82 it/sec, obj=-3.79e+3]
    INFO - 13:32:02:     29%|██▉       | 29/100 [00:00<00:00, 165.62 it/sec, obj=-3.59e+3]
    INFO - 13:32:02:     30%|███       | 30/100 [00:00<00:00, 165.46 it/sec, obj=-3.63e+3]
    INFO - 13:32:02:     31%|███       | 31/100 [00:00<00:00, 165.38 it/sec, obj=-3.69e+3]
    INFO - 13:32:02:     32%|███▏      | 32/100 [00:00<00:00, 165.53 it/sec, obj=-3.42e+3]
    INFO - 13:32:02:     33%|███▎      | 33/100 [00:00<00:00, 166.14 it/sec, obj=-3.47e+3]
    INFO - 13:32:02:     34%|███▍      | 34/100 [00:00<00:00, 166.27 it/sec, obj=-3.21e+3]
    INFO - 13:32:02:     35%|███▌      | 35/100 [00:00<00:00, 166.15 it/sec, obj=-3.94e+3]
    INFO - 13:32:02:     36%|███▌      | 36/100 [00:00<00:00, 165.86 it/sec, obj=-3.21e+3]
    INFO - 13:32:02:     37%|███▋      | 37/100 [00:00<00:00, 165.42 it/sec, obj=-3.31e+3]
    INFO - 13:32:02:     38%|███▊      | 38/100 [00:00<00:00, 164.77 it/sec, obj=-3.31e+3]
    INFO - 13:32:02:     39%|███▉      | 39/100 [00:00<00:00, 164.40 it/sec, obj=-3.26e+3]
    INFO - 13:32:02:     40%|████      | 40/100 [00:00<00:00, 164.12 it/sec, obj=-3.39e+3]
    INFO - 13:32:02:     41%|████      | 41/100 [00:00<00:00, 164.01 it/sec, obj=-3.37e+3]
    INFO - 13:32:02:     42%|████▏     | 42/100 [00:00<00:00, 163.96 it/sec, obj=-3.55e+3]
    INFO - 13:32:02:     43%|████▎     | 43/100 [00:00<00:00, 163.56 it/sec, obj=-3.22e+3]
    INFO - 13:32:02:     44%|████▍     | 44/100 [00:00<00:00, 163.55 it/sec, obj=-2.8e+3]
    INFO - 13:32:02:     45%|████▌     | 45/100 [00:00<00:00, 163.59 it/sec, obj=-3.54e+3]
    INFO - 13:32:02:     46%|████▌     | 46/100 [00:00<00:00, 163.51 it/sec, obj=-3.83e+3]
    INFO - 13:32:02:     47%|████▋     | 47/100 [00:00<00:00, 163.33 it/sec, obj=-3.25e+3]
    INFO - 13:32:02:     48%|████▊     | 48/100 [00:00<00:00, 163.12 it/sec, obj=-3.36e+3]
    INFO - 13:32:02:     49%|████▉     | 49/100 [00:00<00:00, 162.73 it/sec, obj=-3.53e+3]
    INFO - 13:32:02:     50%|█████     | 50/100 [00:00<00:00, 162.52 it/sec, obj=-3.5e+3]
    INFO - 13:32:02:     51%|█████     | 51/100 [00:00<00:00, 162.46 it/sec, obj=-3.57e+3]
    INFO - 13:32:02:     52%|█████▏    | 52/100 [00:00<00:00, 162.27 it/sec, obj=-3.94e+3]
    INFO - 13:32:02:     53%|█████▎    | 53/100 [00:00<00:00, 162.20 it/sec, obj=-3.22e+3]
    INFO - 13:32:02:     54%|█████▍    | 54/100 [00:00<00:00, 162.15 it/sec, obj=-3.94e+3]
    INFO - 13:32:02:     55%|█████▌    | 55/100 [00:00<00:00, 162.01 it/sec, obj=-3.94e+3]
    INFO - 13:32:02:     56%|█████▌    | 56/100 [00:00<00:00, 161.66 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     57%|█████▋    | 57/100 [00:00<00:00, 161.86 it/sec, obj=-3.52e+3]
    INFO - 13:32:02:     58%|█████▊    | 58/100 [00:00<00:00, 161.72 it/sec, obj=-3.72e+3]
    INFO - 13:32:02:     59%|█████▉    | 59/100 [00:00<00:00, 161.76 it/sec, obj=-3.34e+3]
    INFO - 13:32:02:     60%|██████    | 60/100 [00:00<00:00, 161.51 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     61%|██████    | 61/100 [00:00<00:00, 161.63 it/sec, obj=-3.84e+3]
    INFO - 13:32:02:     62%|██████▏   | 62/100 [00:00<00:00, 161.70 it/sec, obj=-4.29e+3]
    INFO - 13:32:02:     63%|██████▎   | 63/100 [00:00<00:00, 161.55 it/sec, obj=-3.27e+3]
    INFO - 13:32:02:     64%|██████▍   | 64/100 [00:00<00:00, 161.58 it/sec, obj=-4.07e+3]
    INFO - 13:32:02:     65%|██████▌   | 65/100 [00:00<00:00, 161.65 it/sec, obj=-3.09e+3]
    INFO - 13:32:02:     66%|██████▌   | 66/100 [00:00<00:00, 161.71 it/sec, obj=-4.22e+3]
    INFO - 13:32:02:     67%|██████▋   | 67/100 [00:00<00:00, 161.69 it/sec, obj=-4e+3]
    INFO - 13:32:02:     68%|██████▊   | 68/100 [00:00<00:00, 161.50 it/sec, obj=-3.53e+3]
    INFO - 13:32:02:     69%|██████▉   | 69/100 [00:00<00:00, 161.51 it/sec, obj=-4.2e+3]
    INFO - 13:32:02:     70%|███████   | 70/100 [00:00<00:00, 161.58 it/sec, obj=-3.67e+3]
    INFO - 13:32:02:     71%|███████   | 71/100 [00:00<00:00, 161.49 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     72%|███████▏  | 72/100 [00:00<00:00, 161.44 it/sec, obj=-3.76e+3]
    INFO - 13:32:02:     73%|███████▎  | 73/100 [00:00<00:00, 161.39 it/sec, obj=-3.77e+3]
    INFO - 13:32:02:     74%|███████▍  | 74/100 [00:00<00:00, 161.36 it/sec, obj=-3.85e+3]
    INFO - 13:32:02:     75%|███████▌  | 75/100 [00:00<00:00, 161.31 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     76%|███████▌  | 76/100 [00:00<00:00, 161.22 it/sec, obj=-3.76e+3]
    INFO - 13:32:02:     77%|███████▋  | 77/100 [00:00<00:00, 161.06 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     78%|███████▊  | 78/100 [00:00<00:00, 160.97 it/sec, obj=-3.66e+3]
    INFO - 13:32:02:     79%|███████▉  | 79/100 [00:00<00:00, 160.87 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     80%|████████  | 80/100 [00:00<00:00, 160.71 it/sec, obj=-3.65e+3]
    INFO - 13:32:02:     81%|████████  | 81/100 [00:00<00:00, 160.63 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     82%|████████▏ | 82/100 [00:00<00:00, 160.47 it/sec, obj=-3.76e+3]
    INFO - 13:32:02:     83%|████████▎ | 83/100 [00:00<00:00, 160.09 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     84%|████████▍ | 84/100 [00:00<00:00, 160.00 it/sec, obj=-3.58e+3]
    INFO - 13:32:02:     85%|████████▌ | 85/100 [00:00<00:00, 159.98 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     86%|████████▌ | 86/100 [00:00<00:00, 159.83 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     87%|████████▋ | 87/100 [00:00<00:00, 159.87 it/sec, obj=-3.91e+3]
    INFO - 13:32:02:     88%|████████▊ | 88/100 [00:00<00:00, 159.85 it/sec, obj=-3.93e+3]
    INFO - 13:32:02:     89%|████████▉ | 89/100 [00:00<00:00, 159.83 it/sec, obj=-3.97e+3]
    INFO - 13:32:02:     90%|█████████ | 90/100 [00:00<00:00, 159.84 it/sec, obj=-3.92e+3]
    INFO - 13:32:02:     91%|█████████ | 91/100 [00:00<00:00, 159.85 it/sec, obj=-3.96e+3]
    INFO - 13:32:02:     92%|█████████▏| 92/100 [00:00<00:00, 159.84 it/sec, obj=-3.95e+3]
    INFO - 13:32:02:     93%|█████████▎| 93/100 [00:00<00:00, 159.87 it/sec, obj=-3.95e+3]
    INFO - 13:32:02:     94%|█████████▍| 94/100 [00:00<00:00, 159.90 it/sec, obj=-3.95e+3]
    INFO - 13:32:02:     95%|█████████▌| 95/100 [00:00<00:00, 159.86 it/sec, obj=-3.91e+3]
    INFO - 13:32:02:     96%|█████████▌| 96/100 [00:00<00:00, 159.86 it/sec, obj=-3.96e+3]
    INFO - 13:32:02:     97%|█████████▋| 97/100 [00:00<00:00, 159.88 it/sec, obj=-3.96e+3]
    INFO - 13:32:02:     98%|█████████▊| 98/100 [00:00<00:00, 159.91 it/sec, obj=-3.96e+3]
    INFO - 13:32:02:     99%|█████████▉| 99/100 [00:00<00:00, 159.89 it/sec, obj=-3.96e+3]
    INFO - 13:32:02:    100%|██████████| 100/100 [00:00<00:00, 159.87 it/sec, obj=-3.96e+3]
    INFO - 13:32:02: Optimization result:
    INFO - 13:32:02:    Optimizer info:
    INFO - 13:32:02:       Status: None
    INFO - 13:32:02:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:32:02:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:32:02:    Solution:
    INFO - 13:32:02:       The solution is feasible.
    INFO - 13:32:02:       Objective: -3960.4216625697427
    INFO - 13:32:02:       Standardized constraints:
    INFO - 13:32:02:          g_1 = [-0.05722668 -0.06051502 -0.06502273 -0.06864369 -0.07143946 -0.10339509
    INFO - 13:32:02:  -0.13660491]
    INFO - 13:32:02:          g_2 = -2.220446049250313e-16
    INFO - 13:32:02:          g_3 = [-7.67261040e-01 -2.32738960e-01 -7.20534743e-14 -1.83255000e-01]
    INFO - 13:32:02:       Design space:
    INFO - 13:32:02:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:02:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:32:02:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:02:          | x_shared[0] |     0.01    | 0.05999999999999997 |     0.09    | float |
    INFO - 13:32:02:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 13:32:02:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 13:32:02:          | x_shared[3] |     2.5     |         2.5         |     8.5     | float |
    INFO - 13:32:02:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 13:32:02:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 13:32:02:          | x_1[0]      |     0.1     |  0.2198966756241587 |     0.4     | float |
    INFO - 13:32:02:          | x_1[1]      |     0.75    |         0.75        |     1.25    | float |
    INFO - 13:32:02:          | x_2         |     0.75    |         0.75        |     1.25    | float |
    INFO - 13:32:02:          | x_3         |     0.1     |  0.1562447456462762 |      1      | float |
    INFO - 13:32:02:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:02: *** End MDOScenario execution (time: 0:00:00.633472) ***

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:

/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/pydantic/main.py:209: 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.)
  validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
 WARNING - 13:32:02: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:32:02: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:32:02:  
    INFO - 13:32:02: *** Start MDOScenario execution ***
    INFO - 13:32:02: MDOScenario
    INFO - 13:32:02:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:32:02:    MDO formulation: MDF
    INFO - 13:32:02: Optimization problem:
    INFO - 13:32:02:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:32:02:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:32:02:    subject to constraints:
    INFO - 13:32:02:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:32:02:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:32:02:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:32:02:    over the design space:
    INFO - 13:32:02:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:32:02:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:32:02:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:32:02:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:32:02:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:32:02:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:32:02:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:32:02:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:32:02:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:32:02:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:32:02:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:32:02:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:32:02:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:32:02:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:32:02: Solving optimization problem with algorithm NLOPT_COBYLA:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/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 - 13:32:03:      1%|          | 1/100 [00:00<00:00, 101.14 it/sec, obj=-536]
    INFO - 13:32:03:      2%|         | 2/100 [00:00<00:01, 78.31 it/sec, obj=-539]
    INFO - 13:32:03:      3%|         | 3/100 [00:00<00:01, 76.12 it/sec, obj=-763]
    INFO - 13:32:03:      4%|         | 4/100 [00:00<00:01, 74.58 it/sec, obj=-713]
    INFO - 13:32:03:      5%|         | 5/100 [00:00<00:01, 74.00 it/sec, obj=-687]
    INFO - 13:32:03:      6%|         | 6/100 [00:00<00:01, 72.78 it/sec, obj=-897]
    INFO - 13:32:03:      7%|         | 7/100 [00:00<00:01, 71.23 it/sec, obj=-957]
    INFO - 13:32:03:      8%|         | 8/100 [00:00<00:01, 70.04 it/sec, obj=-956]
    INFO - 13:32:03:      9%|         | 9/100 [00:00<00:01, 66.68 it/sec, obj=-930]
    INFO - 13:32:03:     10%|         | 10/100 [00:00<00:01, 66.27 it/sec, obj=-943]
    INFO - 13:32:03:     11%|         | 11/100 [00:00<00:01, 65.97 it/sec, obj=-768]
    INFO - 13:32:03:     12%|█▏        | 12/100 [00:00<00:01, 65.18 it/sec, obj=-1e+3]
    INFO - 13:32:03:     13%|█▎        | 13/100 [00:00<00:01, 64.26 it/sec, obj=-1.34e+3]
    INFO - 13:32:03:     14%|█▍        | 14/100 [00:00<00:01, 63.20 it/sec, obj=-1.85e+3]
 WARNING - 13:32:03: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.0691449634588397e-05 is still above the tolerance 1e-06.
    INFO - 13:32:03:     15%|█▌        | 15/100 [00:00<00:01, 61.51 it/sec, obj=-1.87e+3]
 WARNING - 13:32:03: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.6881473826143826e-06 is still above the tolerance 1e-06.
    INFO - 13:32:03:     16%|█▌        | 16/100 [00:00<00:01, 60.15 it/sec, obj=-1.99e+3]
    INFO - 13:32:03:     17%|█▋        | 17/100 [00:00<00:01, 59.03 it/sec, obj=-2.18e+3]
    INFO - 13:32:03:     18%|█▊        | 18/100 [00:00<00:01, 58.38 it/sec, obj=-2.51e+3]
    INFO - 13:32:03:     19%|█▉        | 19/100 [00:00<00:01, 58.39 it/sec, obj=-2.31e+3]
    INFO - 13:32:03:     20%|██        | 20/100 [00:00<00:01, 57.93 it/sec, obj=-2.06e+3]
    INFO - 13:32:03:     21%|██        | 21/100 [00:00<00:01, 57.98 it/sec, obj=-2.7e+3]
    INFO - 13:32:03:     22%|██▏       | 22/100 [00:00<00:01, 58.48 it/sec, obj=-2.83e+3]
    INFO - 13:32:03:     23%|██▎       | 23/100 [00:00<00:01, 59.13 it/sec, obj=-3.41e+3]
    INFO - 13:32:03:     24%|██▍       | 24/100 [00:00<00:01, 60.00 it/sec, obj=-3.34e+3]
    INFO - 13:32:03:     25%|██▌       | 25/100 [00:00<00:01, 60.58 it/sec, obj=-3.11e+3]
    INFO - 13:32:03:     26%|██▌       | 26/100 [00:00<00:01, 60.54 it/sec, obj=-3.07e+3]
    INFO - 13:32:03:     27%|██▋       | 27/100 [00:00<00:01, 61.03 it/sec, obj=-3.14e+3]
    INFO - 13:32:03:     28%|██▊       | 28/100 [00:00<00:01, 61.36 it/sec, obj=-3e+3]
    INFO - 13:32:03:     29%|██▉       | 29/100 [00:00<00:01, 61.74 it/sec, obj=-3.16e+3]
    INFO - 13:32:03:     30%|███       | 30/100 [00:00<00:01, 61.73 it/sec, obj=-3.34e+3]
    INFO - 13:32:03:     31%|███       | 31/100 [00:00<00:01, 61.90 it/sec, obj=-3.11e+3]
    INFO - 13:32:03:     32%|███▏      | 32/100 [00:00<00:01, 61.93 it/sec, obj=-2.79e+3]
    INFO - 13:32:03:     33%|███▎      | 33/100 [00:00<00:01, 62.07 it/sec, obj=-3.65e+3]
    INFO - 13:32:03:     34%|███▍      | 34/100 [00:00<00:01, 62.45 it/sec, obj=-3.52e+3]
    INFO - 13:32:03:     35%|███▌      | 35/100 [00:00<00:01, 62.47 it/sec, obj=-3.08e+3]
    INFO - 13:32:03:     36%|███▌      | 36/100 [00:00<00:01, 62.50 it/sec, obj=-4.17e+3]
    INFO - 13:32:03:     37%|███▋      | 37/100 [00:00<00:01, 62.54 it/sec, obj=-3.66e+3]
    INFO - 13:32:03:     38%|███▊      | 38/100 [00:00<00:00, 62.68 it/sec, obj=-3.49e+3]
    INFO - 13:32:03:     39%|███▉      | 39/100 [00:00<00:00, 63.00 it/sec, obj=-3.49e+3]
    INFO - 13:32:03:     40%|████      | 40/100 [00:00<00:00, 63.17 it/sec, obj=-4.15e+3]
    INFO - 13:32:03:     41%|████      | 41/100 [00:00<00:00, 63.20 it/sec, obj=-4.27e+3]
    INFO - 13:32:03:     42%|████▏     | 42/100 [00:00<00:00, 63.07 it/sec, obj=-4e+3]
    INFO - 13:32:03:     43%|████▎     | 43/100 [00:00<00:00, 63.04 it/sec, obj=-3.53e+3]
    INFO - 13:32:03:     44%|████▍     | 44/100 [00:00<00:00, 63.19 it/sec, obj=-4.36e+3]
    INFO - 13:32:03:     45%|████▌     | 45/100 [00:00<00:00, 63.32 it/sec, obj=-4.35e+3]
    INFO - 13:32:03:     46%|████▌     | 46/100 [00:00<00:00, 63.40 it/sec, obj=-3.65e+3]
    INFO - 13:32:03:     47%|████▋     | 47/100 [00:00<00:00, 63.45 it/sec, obj=-2.99e+3]
    INFO - 13:32:03:     48%|████▊     | 48/100 [00:00<00:00, 63.52 it/sec, obj=-3.39e+3]
    INFO - 13:32:03:     49%|████▉     | 49/100 [00:00<00:00, 63.67 it/sec, obj=-4.45e+3]
    INFO - 13:32:03:     50%|█████     | 50/100 [00:00<00:00, 63.80 it/sec, obj=-4.08e+3]
    INFO - 13:32:03:     51%|█████     | 51/100 [00:00<00:00, 63.78 it/sec, obj=-3.68e+3]
    INFO - 13:32:03:     52%|█████▏    | 52/100 [00:00<00:00, 63.89 it/sec, obj=-4.42e+3]
    INFO - 13:32:03:     53%|█████▎    | 53/100 [00:00<00:00, 64.09 it/sec, obj=-4.59e+3]
    INFO - 13:32:03:     54%|█████▍    | 54/100 [00:00<00:00, 64.20 it/sec, obj=-4.35e+3]
    INFO - 13:32:03:     55%|█████▌    | 55/100 [00:00<00:00, 64.24 it/sec, obj=-3.93e+3]
    INFO - 13:32:03:     56%|█████▌    | 56/100 [00:00<00:00, 64.35 it/sec, obj=-4.43e+3]
    INFO - 13:32:03:     57%|█████▋    | 57/100 [00:00<00:00, 64.39 it/sec, obj=-3.73e+3]
    INFO - 13:32:03:     58%|█████▊    | 58/100 [00:00<00:00, 64.50 it/sec, obj=-4.43e+3]
    INFO - 13:32:03:     59%|█████▉    | 59/100 [00:00<00:00, 64.59 it/sec, obj=-3.68e+3]
    INFO - 13:32:03:     60%|██████    | 60/100 [00:00<00:00, 64.70 it/sec, obj=-4.42e+3]
    INFO - 13:32:03:     61%|██████    | 61/100 [00:00<00:00, 64.67 it/sec, obj=-3.8e+3]
    INFO - 13:32:03:     62%|██████▏   | 62/100 [00:00<00:00, 64.77 it/sec, obj=-4.42e+3]
    INFO - 13:32:03:     63%|██████▎   | 63/100 [00:00<00:00, 64.91 it/sec, obj=-3.76e+3]
    INFO - 13:32:03:     64%|██████▍   | 64/100 [00:00<00:00, 65.01 it/sec, obj=-4.42e+3]
    INFO - 13:32:03:     65%|██████▌   | 65/100 [00:00<00:00, 65.17 it/sec, obj=-4.52e+3]
    INFO - 13:32:04:     66%|██████▌   | 66/100 [00:01<00:00, 65.18 it/sec, obj=-4.43e+3]
    INFO - 13:32:04:     67%|██████▋   | 67/100 [00:01<00:00, 65.28 it/sec, obj=-3.69e+3]
    INFO - 13:32:04:     68%|██████▊   | 68/100 [00:01<00:00, 65.31 it/sec, obj=-4.42e+3]
    INFO - 13:32:04:     69%|██████▉   | 69/100 [00:01<00:00, 65.44 it/sec, obj=-3.73e+3]
    INFO - 13:32:04:     70%|███████   | 70/100 [00:01<00:00, 65.33 it/sec, obj=-4.42e+3]
    INFO - 13:32:04:     71%|███████   | 71/100 [00:01<00:00, 65.41 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     72%|███████▏  | 72/100 [00:01<00:00, 65.47 it/sec, obj=-4.43e+3]
    INFO - 13:32:04:     73%|███████▎  | 73/100 [00:01<00:00, 65.53 it/sec, obj=-4.5e+3]
    INFO - 13:32:04:     74%|███████▍  | 74/100 [00:01<00:00, 65.60 it/sec, obj=-4.5e+3]
    INFO - 13:32:04:     75%|███████▌  | 75/100 [00:01<00:00, 65.61 it/sec, obj=-4.25e+3]
    INFO - 13:32:04:     76%|███████▌  | 76/100 [00:01<00:00, 65.68 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     77%|███████▋  | 77/100 [00:01<00:00, 65.74 it/sec, obj=-4.28e+3]
    INFO - 13:32:04:     78%|███████▊  | 78/100 [00:01<00:00, 65.74 it/sec, obj=-3.92e+3]
    INFO - 13:32:04:     79%|███████▉  | 79/100 [00:01<00:00, 65.75 it/sec, obj=-3.96e+3]
    INFO - 13:32:04:     80%|████████  | 80/100 [00:01<00:00, 65.79 it/sec, obj=-4.38e+3]
    INFO - 13:32:04:     81%|████████  | 81/100 [00:01<00:00, 65.84 it/sec, obj=-4.29e+3]
    INFO - 13:32:04:     82%|████████▏ | 82/100 [00:01<00:00, 65.90 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     83%|████████▎ | 83/100 [00:01<00:00, 65.96 it/sec, obj=-4.34e+3]
    INFO - 13:32:04:     84%|████████▍ | 84/100 [00:01<00:00, 66.00 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     85%|████████▌ | 85/100 [00:01<00:00, 66.05 it/sec, obj=-4.22e+3]
    INFO - 13:32:04:     86%|████████▌ | 86/100 [00:01<00:00, 66.10 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     87%|████████▋ | 87/100 [00:01<00:00, 66.04 it/sec, obj=-4.33e+3]
    INFO - 13:32:04:     88%|████████▊ | 88/100 [00:01<00:00, 65.95 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     89%|████████▉ | 89/100 [00:01<00:00, 65.86 it/sec, obj=-4.31e+3]
    INFO - 13:32:04:     90%|█████████ | 90/100 [00:01<00:00, 65.76 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     91%|█████████ | 91/100 [00:01<00:00, 65.80 it/sec, obj=-4.27e+3]
    INFO - 13:32:04:     92%|█████████▏| 92/100 [00:01<00:00, 65.84 it/sec, obj=-4.31e+3]
    INFO - 13:32:04:     93%|█████████▎| 93/100 [00:01<00:00, 65.87 it/sec, obj=-4.32e+3]
    INFO - 13:32:04:     94%|█████████▍| 94/100 [00:01<00:00, 65.92 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     95%|█████████▌| 95/100 [00:01<00:00, 65.95 it/sec, obj=-4.21e+3]
    INFO - 13:32:04:     96%|█████████▌| 96/100 [00:01<00:00, 65.99 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     97%|█████████▋| 97/100 [00:01<00:00, 66.03 it/sec, obj=-4.19e+3]
    INFO - 13:32:04:     98%|█████████▊| 98/100 [00:01<00:00, 66.07 it/sec, obj=-4.49e+3]
    INFO - 13:32:04:     99%|█████████▉| 99/100 [00:01<00:00, 66.06 it/sec, obj=-4.13e+3]
    INFO - 13:32:04:    100%|██████████| 100/100 [00:01<00:00, 66.08 it/sec, obj=-4.49e+3]
    INFO - 13:32:04: Optimization result:
    INFO - 13:32:04:    Optimizer info:
    INFO - 13:32:04:       Status: None
    INFO - 13:32:04:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:32:04:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:32:04:    Solution:
    INFO - 13:32:04:       The solution is feasible.
    INFO - 13:32:04:       Objective: -3003.8995230595424
    INFO - 13:32:04:       Standardized constraints:
    INFO - 13:32:04:          g_1 = [-0.18177087 -0.15303684 -0.13797373 -0.12871311 -0.12244655 -0.02429768
    INFO - 13:32:04:  -0.21570232]
    INFO - 13:32:04:          g_2 = -0.002615771711972803
    INFO - 13:32:04:          g_3 = [-0.78613294 -0.21386706 -0.07631583 -0.17779628]
    INFO - 13:32:04:       Design space:
    INFO - 13:32:04:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:04:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:32:04:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:04:          | x_shared[0] |     0.01    | 0.05934605707200682 |     0.09    | float |
    INFO - 13:32:04:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 13:32:04:          | x_shared[2] |     1.4     |  1.440947137798596  |     1.8     | float |
    INFO - 13:32:04:          | x_shared[3] |     2.5     |  2.682168463995586  |     8.5     | float |
    INFO - 13:32:04:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 13:32:04:          | x_shared[5] |     500     |  1315.825005558175  |     1500    | float |
    INFO - 13:32:04:          | x_1[0]      |     0.1     |  0.1000000000000001 |     0.4     | float |
    INFO - 13:32:04:          | x_1[1]      |     0.75    |  0.9200062439484883 |     1.25    | float |
    INFO - 13:32:04:          | x_2         |     0.75    |  0.8112680369735645 |     1.25    | float |
    INFO - 13:32:04:          | x_3         |     0.1     |  0.1498242691956934 |      1      | float |
    INFO - 13:32:04:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:32:04: *** End MDOScenario execution (time: 0:00:01.520483) ***

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

Download Python source code: plot_sobieski_mdf.py

Download Jupyter notebook: plot_sobieski_mdf.ipynb

Gallery generated by mkdocs-gallery