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/gemseo/third_party/prettytable/prettytable.py:73: DeprecationWarning: invalid escape sequence \[
  _re = re.compile("\033\[[0-9;]*m")
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/gemseo/third_party/prettytable/prettytable.py:1291: DeprecationWarning: invalid escape sequence \{
  self.vertical_char = random.choice("~!@#$%^&*()_+|-=\{}[];':\",./;<>?")
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/gemseo/third_party/prettytable/prettytable.py:1292: DeprecationWarning: invalid escape sequence \{
  self.horizontal_char = random.choice("~!@#$%^&*()_+|-=\{}[];':\",./;<>?")
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.9/site-packages/gemseo/third_party/prettytable/prettytable.py:1293: DeprecationWarning: invalid escape sequence \{
  self.junction_char = random.choice("~!@#$%^&*()_+|-=\{}[];':\",./;<>?")
/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"))

<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:06:42: Unable to initialize backend 'cuda': 
    INFO - 13:06:42: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
    INFO - 13:06:42: 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:06:44: Compilation of the output function JAXSobieskiChain: 0:00:00.410124 seconds.
    INFO - 13:06:44: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.512181 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:06:45: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:45: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:45: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:45: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:45: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:45:  
    INFO - 13:06:45: *** Start DOEScenario execution ***
    INFO - 13:06:45: DOEScenario
    INFO - 13:06:45:    Disciplines: JAXSobieskiChain
    INFO - 13:06:45:    MDO formulation: MDF
    INFO - 13:06:45: Optimization problem:
    INFO - 13:06:45:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:45:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:45:    subject to constraints:
    INFO - 13:06:45:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:45:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:45:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:45:    over the design space:
    INFO - 13:06:45:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:45:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:45:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:45:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:45:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:45:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:45:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:45:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:45:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:45:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:45:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:45:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:45:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:45:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:45: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 13:06:45:      1%|          | 1/100 [00:00<00:00, 154.44 it/sec, obj=-1.25e+3]
    INFO - 13:06:45:      2%|         | 2/100 [00:00<00:00, 185.70 it/sec, obj=-303]
    INFO - 13:06:45:      3%|         | 3/100 [00:00<00:00, 177.67 it/sec, obj=-447]
    INFO - 13:06:45:      4%|         | 4/100 [00:00<00:00, 180.29 it/sec, obj=-444]
    INFO - 13:06:45:      5%|         | 5/100 [00:00<00:00, 187.30 it/sec, obj=-804]
    INFO - 13:06:45:      6%|         | 6/100 [00:00<00:00, 192.00 it/sec, obj=-232]
    INFO - 13:06:45:      7%|         | 7/100 [00:00<00:00, 195.77 it/sec, obj=-701]
    INFO - 13:06:45:      8%|         | 8/100 [00:00<00:00, 197.64 it/sec, obj=-253]
    INFO - 13:06:45:      9%|         | 9/100 [00:00<00:00, 202.98 it/sec, obj=-773]
    INFO - 13:06:45:     10%|         | 10/100 [00:00<00:00, 203.08 it/sec, obj=-448]
    INFO - 13:06:45:     11%|         | 11/100 [00:00<00:00, 196.33 it/sec, obj=-659]
    INFO - 13:06:45:     12%|█▏        | 12/100 [00:00<00:00, 195.59 it/sec, obj=-282]
    INFO - 13:06:45:     13%|█▎        | 13/100 [00:00<00:00, 197.37 it/sec, obj=-387]
    INFO - 13:06:45:     14%|█▍        | 14/100 [00:00<00:00, 200.97 it/sec, obj=-379]
    INFO - 13:06:45:     15%|█▌        | 15/100 [00:00<00:00, 195.26 it/sec, obj=-196]
    INFO - 13:06:45:     16%|█▌        | 16/100 [00:00<00:00, 193.75 it/sec, obj=-647]
    INFO - 13:06:45:     17%|█▋        | 17/100 [00:00<00:00, 191.67 it/sec, obj=-238]
    INFO - 13:06:45:     18%|█▊        | 18/100 [00:00<00:00, 192.82 it/sec, obj=-304]
    INFO - 13:06:45:     19%|█▉        | 19/100 [00:00<00:00, 192.51 it/sec, obj=-372]
    INFO - 13:06:45:     20%|██        | 20/100 [00:00<00:00, 195.08 it/sec, obj=-699]
    INFO - 13:06:45:     21%|██        | 21/100 [00:00<00:00, 196.18 it/sec, obj=-873]
    INFO - 13:06:45:     22%|██▏       | 22/100 [00:00<00:00, 197.29 it/sec, obj=-489]
    INFO - 13:06:45:     23%|██▎       | 23/100 [00:00<00:00, 197.09 it/sec, obj=-623]
    INFO - 13:06:45:     24%|██▍       | 24/100 [00:00<00:00, 199.25 it/sec, obj=-262]
    INFO - 13:06:45:     25%|██▌       | 25/100 [00:00<00:00, 201.37 it/sec, obj=-345]
    INFO - 13:06:45:     26%|██▌       | 26/100 [00:00<00:00, 201.00 it/sec, obj=-377]
    INFO - 13:06:45:     27%|██▋       | 27/100 [00:00<00:00, 201.86 it/sec, obj=-387]
    INFO - 13:06:45:     28%|██▊       | 28/100 [00:00<00:00, 200.41 it/sec, obj=-334]
    INFO - 13:06:45:     29%|██▉       | 29/100 [00:00<00:00, 202.18 it/sec, obj=-438]
    INFO - 13:06:45:     30%|███       | 30/100 [00:00<00:00, 203.97 it/sec, obj=-1.94e+3]
    INFO - 13:06:45:     31%|███       | 31/100 [00:00<00:00, 204.08 it/sec, obj=-733]
    INFO - 13:06:45:     32%|███▏      | 32/100 [00:00<00:00, 204.45 it/sec, obj=-774]
    INFO - 13:06:45:     33%|███▎      | 33/100 [00:00<00:00, 203.81 it/sec, obj=-517]
    INFO - 13:06:45:     34%|███▍      | 34/100 [00:00<00:00, 205.35 it/sec, obj=-232]
    INFO - 13:06:45:     35%|███▌      | 35/100 [00:00<00:00, 205.08 it/sec, obj=-195]
    INFO - 13:06:45:     36%|███▌      | 36/100 [00:00<00:00, 205.37 it/sec, obj=-218]
    INFO - 13:06:45:     37%|███▋      | 37/100 [00:00<00:00, 204.87 it/sec, obj=-198]
    INFO - 13:06:45:     38%|███▊      | 38/100 [00:00<00:00, 202.83 it/sec, obj=-536]
    INFO - 13:06:45:     39%|███▉      | 39/100 [00:00<00:00, 201.31 it/sec, obj=-173]
    INFO - 13:06:45:     40%|████      | 40/100 [00:00<00:00, 201.72 it/sec, obj=-388]
    INFO - 13:06:45:     41%|████      | 41/100 [00:00<00:00, 201.44 it/sec, obj=-723]
    INFO - 13:06:45:     42%|████▏     | 42/100 [00:00<00:00, 200.16 it/sec, obj=-240]
    INFO - 13:06:45:     43%|████▎     | 43/100 [00:00<00:00, 200.29 it/sec, obj=-663]
    INFO - 13:06:45:     44%|████▍     | 44/100 [00:00<00:00, 199.93 it/sec, obj=-1.14e+3]
    INFO - 13:06:45:     45%|████▌     | 45/100 [00:00<00:00, 200.52 it/sec, obj=-438]
    INFO - 13:06:45:     46%|████▌     | 46/100 [00:00<00:00, 200.33 it/sec, obj=-301]
    INFO - 13:06:45:     47%|████▋     | 47/100 [00:00<00:00, 200.81 it/sec, obj=-682]
    INFO - 13:06:45:     48%|████▊     | 48/100 [00:00<00:00, 199.50 it/sec, obj=-750]
    INFO - 13:06:45:     49%|████▉     | 49/100 [00:00<00:00, 199.25 it/sec, obj=-789]
    INFO - 13:06:45:     50%|█████     | 50/100 [00:00<00:00, 198.90 it/sec, obj=-395]
    INFO - 13:06:45:     51%|█████     | 51/100 [00:00<00:00, 198.06 it/sec, obj=-407]
    INFO - 13:06:45:     52%|█████▏    | 52/100 [00:00<00:00, 198.40 it/sec, obj=-315]
    INFO - 13:06:45:     53%|█████▎    | 53/100 [00:00<00:00, 198.04 it/sec, obj=-337]
    INFO - 13:06:45:     54%|█████▍    | 54/100 [00:00<00:00, 198.34 it/sec, obj=-414]
    INFO - 13:06:45:     55%|█████▌    | 55/100 [00:00<00:00, 198.08 it/sec, obj=-240]
    INFO - 13:06:45:     56%|█████▌    | 56/100 [00:00<00:00, 198.90 it/sec, obj=-297]
    INFO - 13:06:45:     57%|█████▋    | 57/100 [00:00<00:00, 199.13 it/sec, obj=-442]
    INFO - 13:06:45:     58%|█████▊    | 58/100 [00:00<00:00, 198.91 it/sec, obj=-233]
    INFO - 13:06:45:     59%|█████▉    | 59/100 [00:00<00:00, 198.66 it/sec, obj=-519]
    INFO - 13:06:45:     60%|██████    | 60/100 [00:00<00:00, 198.35 it/sec, obj=-920]
    INFO - 13:06:45:     61%|██████    | 61/100 [00:00<00:00, 198.20 it/sec, obj=-517]
    INFO - 13:06:45:     62%|██████▏   | 62/100 [00:00<00:00, 198.50 it/sec, obj=-390]
    INFO - 13:06:45:     63%|██████▎   | 63/100 [00:00<00:00, 198.72 it/sec, obj=-434]
    INFO - 13:06:45:     64%|██████▍   | 64/100 [00:00<00:00, 198.42 it/sec, obj=-244]
    INFO - 13:06:45:     65%|██████▌   | 65/100 [00:00<00:00, 197.63 it/sec, obj=-192]
    INFO - 13:06:45:     66%|██████▌   | 66/100 [00:00<00:00, 197.63 it/sec, obj=-305]
    INFO - 13:06:45:     67%|██████▋   | 67/100 [00:00<00:00, 196.74 it/sec, obj=-393]
    INFO - 13:06:45:     68%|██████▊   | 68/100 [00:00<00:00, 196.92 it/sec, obj=-307]
    INFO - 13:06:45:     69%|██████▉   | 69/100 [00:00<00:00, 197.13 it/sec, obj=-328]
    INFO - 13:06:45:     70%|███████   | 70/100 [00:00<00:00, 196.82 it/sec, obj=-998]
    INFO - 13:06:45:     71%|███████   | 71/100 [00:00<00:00, 197.00 it/sec, obj=-1.06e+3]
    INFO - 13:06:45:     72%|███████▏  | 72/100 [00:00<00:00, 196.14 it/sec, obj=-707]
    INFO - 13:06:45:     73%|███████▎  | 73/100 [00:00<00:00, 196.85 it/sec, obj=-897]
    INFO - 13:06:45:     74%|███████▍  | 74/100 [00:00<00:00, 197.54 it/sec, obj=-1.36e+3]
    INFO - 13:06:45:     75%|███████▌  | 75/100 [00:00<00:00, 197.83 it/sec, obj=-853]
    INFO - 13:06:45:     76%|███████▌  | 76/100 [00:00<00:00, 198.15 it/sec, obj=-217]
    INFO - 13:06:45:     77%|███████▋  | 77/100 [00:00<00:00, 198.11 it/sec, obj=-370]
    INFO - 13:06:45:     78%|███████▊  | 78/100 [00:00<00:00, 198.42 it/sec, obj=-636]
    INFO - 13:06:45:     79%|███████▉  | 79/100 [00:00<00:00, 198.74 it/sec, obj=-337]
    INFO - 13:06:45:     80%|████████  | 80/100 [00:00<00:00, 199.03 it/sec, obj=-804]
    INFO - 13:06:45:     81%|████████  | 81/100 [00:00<00:00, 199.31 it/sec, obj=-318]
    INFO - 13:06:45:     82%|████████▏ | 82/100 [00:00<00:00, 199.23 it/sec, obj=-253]
    INFO - 13:06:45:     83%|████████▎ | 83/100 [00:00<00:00, 199.00 it/sec, obj=-590]
    INFO - 13:06:45:     84%|████████▍ | 84/100 [00:00<00:00, 198.88 it/sec, obj=-438]
    INFO - 13:06:45:     85%|████████▌ | 85/100 [00:00<00:00, 198.65 it/sec, obj=-642]
    INFO - 13:06:45:     86%|████████▌ | 86/100 [00:00<00:00, 199.16 it/sec, obj=-381]
    INFO - 13:06:45:     87%|████████▋ | 87/100 [00:00<00:00, 199.31 it/sec, obj=-447]
    INFO - 13:06:45:     88%|████████▊ | 88/100 [00:00<00:00, 199.06 it/sec, obj=-707]
    INFO - 13:06:45:     89%|████████▉ | 89/100 [00:00<00:00, 198.94 it/sec, obj=-384]
    INFO - 13:06:45:     90%|█████████ | 90/100 [00:00<00:00, 198.86 it/sec, obj=-491]
    INFO - 13:06:45:     91%|█████████ | 91/100 [00:00<00:00, 198.95 it/sec, obj=-285]
    INFO - 13:06:45:     92%|█████████▏| 92/100 [00:00<00:00, 198.76 it/sec, obj=-433]
    INFO - 13:06:45:     93%|█████████▎| 93/100 [00:00<00:00, 198.52 it/sec, obj=-377]
    INFO - 13:06:45:     94%|█████████▍| 94/100 [00:00<00:00, 198.62 it/sec, obj=-827]
    INFO - 13:06:45:     95%|█████████▌| 95/100 [00:00<00:00, 198.45 it/sec, obj=-712]
    INFO - 13:06:45:     96%|█████████▌| 96/100 [00:00<00:00, 198.56 it/sec, obj=-245]
    INFO - 13:06:45:     97%|█████████▋| 97/100 [00:00<00:00, 198.69 it/sec, obj=-502]
    INFO - 13:06:45:     98%|█████████▊| 98/100 [00:00<00:00, 198.15 it/sec, obj=-309]
    INFO - 13:06:45:     99%|█████████▉| 99/100 [00:00<00:00, 198.29 it/sec, obj=-971]
    INFO - 13:06:45:    100%|██████████| 100/100 [00:00<00:00, 198.16 it/sec, obj=-649]
    INFO - 13:06:45: Optimization result:
    INFO - 13:06:45:    Optimizer info:
    INFO - 13:06:45:       Status: None
    INFO - 13:06:45:       Message: None
    INFO - 13:06:45:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:06:45:    Solution:
    INFO - 13:06:45:       The solution is feasible.
    INFO - 13:06:45:       Objective: -659.1819334138517
    INFO - 13:06:45:       Standardized constraints:
    INFO - 13:06:45:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:06:45:  -0.19803381]
    INFO - 13:06:45:          g_2 = -0.007088218675791014
    INFO - 13:06:45:          g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
    INFO - 13:06:45:       Design space:
    INFO - 13:06:45:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:45:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:06:45:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:45:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:06:45:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:06:45:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:06:45:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:06:45:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:06:45:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:06:45:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:06:45:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:06:45:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:06:45:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:06:45:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:45: *** End DOEScenario execution (time: 0:00:00.528993) ***

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:06:45: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:06:45: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:06:45:  
    INFO - 13:06:45: *** Start DOEScenario execution ***
    INFO - 13:06:45: DOEScenario
    INFO - 13:06:45:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:06:45:    MDO formulation: MDF
    INFO - 13:06:45: Optimization problem:
    INFO - 13:06:45:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:45:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:45:    subject to constraints:
    INFO - 13:06:45:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:45:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:45:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:45:    over the design space:
    INFO - 13:06:45:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:45:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:45:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:45:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:45:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:45:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:45:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:45:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:45:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:45:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:45:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:45:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:45:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:45:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:45: 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:06:45:      1%|          | 1/100 [00:00<00:02, 47.67 it/sec, obj=-1.25e+3]
    INFO - 13:06:45:      2%|         | 2/100 [00:00<00:01, 49.66 it/sec, obj=-303]
    INFO - 13:06:45:      3%|         | 3/100 [00:00<00:02, 40.65 it/sec, obj=-447]
    INFO - 13:06:45:      4%|         | 4/100 [00:00<00:02, 38.78 it/sec, obj=-444]
    INFO - 13:06:45:      5%|         | 5/100 [00:00<00:02, 38.85 it/sec, obj=-804]
    INFO - 13:06:45:      6%|         | 6/100 [00:00<00:02, 38.22 it/sec, obj=-232]
    INFO - 13:06:45:      7%|         | 7/100 [00:00<00:02, 38.96 it/sec, obj=-701]
    INFO - 13:06:45:      8%|         | 8/100 [00:00<00:02, 39.62 it/sec, obj=-253]
    INFO - 13:06:45:      9%|         | 9/100 [00:00<00:02, 40.74 it/sec, obj=-773]
    INFO - 13:06:45:     10%|         | 10/100 [00:00<00:02, 42.01 it/sec, obj=-448]
    INFO - 13:06:45:     11%|         | 11/100 [00:00<00:02, 40.09 it/sec, obj=-659]
    INFO - 13:06:45:     12%|█▏        | 12/100 [00:00<00:02, 40.17 it/sec, obj=-282]
    INFO - 13:06:45:     13%|█▎        | 13/100 [00:00<00:02, 40.48 it/sec, obj=-387]
    INFO - 13:06:45:     14%|█▍        | 14/100 [00:00<00:02, 40.43 it/sec, obj=-379]
    INFO - 13:06:45:     15%|█▌        | 15/100 [00:00<00:02, 39.90 it/sec, obj=-196]
    INFO - 13:06:46:     16%|█▌        | 16/100 [00:00<00:02, 40.13 it/sec, obj=-647]
    INFO - 13:06:46:     17%|█▋        | 17/100 [00:00<00:02, 39.35 it/sec, obj=-238]
    INFO - 13:06:46:     18%|█▊        | 18/100 [00:00<00:02, 39.84 it/sec, obj=-304]
    INFO - 13:06:46:     19%|█▉        | 19/100 [00:00<00:02, 40.09 it/sec, obj=-372]
    INFO - 13:06:46:     20%|██        | 20/100 [00:00<00:01, 40.25 it/sec, obj=-699]
    INFO - 13:06:46:     21%|██        | 21/100 [00:00<00:01, 40.62 it/sec, obj=-873]
    INFO - 13:06:46:     22%|██▏       | 22/100 [00:00<00:01, 40.93 it/sec, obj=-489]
    INFO - 13:06:46:     23%|██▎       | 23/100 [00:00<00:01, 41.09 it/sec, obj=-623]
    INFO - 13:06:46:     24%|██▍       | 24/100 [00:00<00:01, 41.24 it/sec, obj=-262]
    INFO - 13:06:46:     25%|██▌       | 25/100 [00:00<00:01, 41.49 it/sec, obj=-345]
    INFO - 13:06:46:     26%|██▌       | 26/100 [00:00<00:01, 41.74 it/sec, obj=-377]
    INFO - 13:06:46:     27%|██▋       | 27/100 [00:00<00:01, 41.62 it/sec, obj=-387]
    INFO - 13:06:46:     28%|██▊       | 28/100 [00:00<00:01, 40.71 it/sec, obj=-334]
    INFO - 13:06:46:     29%|██▉       | 29/100 [00:00<00:01, 40.95 it/sec, obj=-438]
    INFO - 13:06:46:     30%|███       | 30/100 [00:00<00:01, 41.20 it/sec, obj=-1.94e+3]
    INFO - 13:06:46:     31%|███       | 31/100 [00:00<00:01, 41.36 it/sec, obj=-733]
    INFO - 13:06:46:     32%|███▏      | 32/100 [00:00<00:01, 41.66 it/sec, obj=-774]
    INFO - 13:06:46:     33%|███▎      | 33/100 [00:00<00:01, 41.47 it/sec, obj=-517]
    INFO - 13:06:46:     34%|███▍      | 34/100 [00:00<00:01, 41.57 it/sec, obj=-232]
    INFO - 13:06:46:     35%|███▌      | 35/100 [00:00<00:01, 41.52 it/sec, obj=-195]
    INFO - 13:06:46:     36%|███▌      | 36/100 [00:00<00:01, 41.67 it/sec, obj=-218]
    INFO - 13:06:46:     37%|███▋      | 37/100 [00:00<00:01, 41.39 it/sec, obj=-198]
    INFO - 13:06:46:     38%|███▊      | 38/100 [00:00<00:01, 41.46 it/sec, obj=-536]
    INFO - 13:06:46:     39%|███▉      | 39/100 [00:00<00:01, 41.11 it/sec, obj=-173]
    INFO - 13:06:46:     40%|████      | 40/100 [00:00<00:01, 41.39 it/sec, obj=-388]
    INFO - 13:06:46:     41%|████      | 41/100 [00:00<00:01, 41.29 it/sec, obj=-723]
    INFO - 13:06:46:     42%|████▏     | 42/100 [00:01<00:01, 41.04 it/sec, obj=-240]
    INFO - 13:06:46:     43%|████▎     | 43/100 [00:01<00:01, 41.13 it/sec, obj=-663]
    INFO - 13:06:46:     44%|████▍     | 44/100 [00:01<00:01, 40.99 it/sec, obj=-1.14e+3]
    INFO - 13:06:46:     45%|████▌     | 45/100 [00:01<00:01, 41.15 it/sec, obj=-438]
    INFO - 13:06:46:     46%|████▌     | 46/100 [00:01<00:01, 40.82 it/sec, obj=-301]
    INFO - 13:06:46:     47%|████▋     | 47/100 [00:01<00:01, 41.08 it/sec, obj=-682]
    INFO - 13:06:46:     48%|████▊     | 48/100 [00:01<00:01, 41.08 it/sec, obj=-750]
    INFO - 13:06:46:     49%|████▉     | 49/100 [00:01<00:01, 41.16 it/sec, obj=-789]
    INFO - 13:06:46:     50%|█████     | 50/100 [00:01<00:01, 41.21 it/sec, obj=-395]
    INFO - 13:06:46:     51%|█████     | 51/100 [00:01<00:01, 41.17 it/sec, obj=-407]
    INFO - 13:06:46:     52%|█████▏    | 52/100 [00:01<00:01, 41.25 it/sec, obj=-315]
    INFO - 13:06:46:     53%|█████▎    | 53/100 [00:01<00:01, 41.02 it/sec, obj=-337]
    INFO - 13:06:46:     54%|█████▍    | 54/100 [00:01<00:01, 41.03 it/sec, obj=-414]
    INFO - 13:06:46:     55%|█████▌    | 55/100 [00:01<00:01, 40.83 it/sec, obj=-240]
    INFO - 13:06:46:     56%|█████▌    | 56/100 [00:01<00:01, 40.96 it/sec, obj=-297]
    INFO - 13:06:47:     57%|█████▋    | 57/100 [00:01<00:01, 41.11 it/sec, obj=-442]
    INFO - 13:06:47:     58%|█████▊    | 58/100 [00:01<00:01, 41.12 it/sec, obj=-233]
    INFO - 13:06:47:     59%|█████▉    | 59/100 [00:01<00:00, 41.17 it/sec, obj=-519]
    INFO - 13:06:47:     60%|██████    | 60/100 [00:01<00:00, 41.25 it/sec, obj=-920]
    INFO - 13:06:47:     61%|██████    | 61/100 [00:01<00:00, 41.23 it/sec, obj=-517]
    INFO - 13:06:47:     62%|██████▏   | 62/100 [00:01<00:00, 41.24 it/sec, obj=-390]
    INFO - 13:06:47:     63%|██████▎   | 63/100 [00:01<00:00, 41.04 it/sec, obj=-434]
    INFO - 13:06:47:     64%|██████▍   | 64/100 [00:01<00:00, 40.88 it/sec, obj=-244]
    INFO - 13:06:47:     65%|██████▌   | 65/100 [00:01<00:00, 40.64 it/sec, obj=-192]
    INFO - 13:06:47:     66%|██████▌   | 66/100 [00:01<00:00, 40.69 it/sec, obj=-305]
    INFO - 13:06:47:     67%|██████▋   | 67/100 [00:01<00:00, 40.59 it/sec, obj=-393]
    INFO - 13:06:47:     68%|██████▊   | 68/100 [00:01<00:00, 40.65 it/sec, obj=-307]
    INFO - 13:06:47:     69%|██████▉   | 69/100 [00:01<00:00, 40.76 it/sec, obj=-328]
    INFO - 13:06:47:     70%|███████   | 70/100 [00:01<00:00, 40.82 it/sec, obj=-998]
    INFO - 13:06:47:     71%|███████   | 71/100 [00:01<00:00, 40.79 it/sec, obj=-1.06e+3]
    INFO - 13:06:47:     72%|███████▏  | 72/100 [00:01<00:00, 40.67 it/sec, obj=-707]
    INFO - 13:06:47:     73%|███████▎  | 73/100 [00:01<00:00, 40.75 it/sec, obj=-897]
    INFO - 13:06:47:     74%|███████▍  | 74/100 [00:01<00:00, 40.69 it/sec, obj=-1.36e+3]
    INFO - 13:06:47:     75%|███████▌  | 75/100 [00:01<00:00, 40.76 it/sec, obj=-853]
    INFO - 13:06:47:     76%|███████▌  | 76/100 [00:01<00:00, 40.85 it/sec, obj=-217]
    INFO - 13:06:47:     77%|███████▋  | 77/100 [00:01<00:00, 40.81 it/sec, obj=-370]
    INFO - 13:06:47:     78%|███████▊  | 78/100 [00:01<00:00, 40.63 it/sec, obj=-636]
    INFO - 13:06:47:     79%|███████▉  | 79/100 [00:01<00:00, 40.78 it/sec, obj=-337]
    INFO - 13:06:47:     80%|████████  | 80/100 [00:01<00:00, 40.67 it/sec, obj=-804]
    INFO - 13:06:47:     81%|████████  | 81/100 [00:01<00:00, 40.74 it/sec, obj=-318]
    INFO - 13:06:47:     82%|████████▏ | 82/100 [00:02<00:00, 40.73 it/sec, obj=-253]
    INFO - 13:06:47:     83%|████████▎ | 83/100 [00:02<00:00, 40.50 it/sec, obj=-590]
    INFO - 13:06:47:     84%|████████▍ | 84/100 [00:02<00:00, 40.53 it/sec, obj=-438]
    INFO - 13:06:47:     85%|████████▌ | 85/100 [00:02<00:00, 40.63 it/sec, obj=-642]
    INFO - 13:06:47:     86%|████████▌ | 86/100 [00:02<00:00, 40.74 it/sec, obj=-381]
    INFO - 13:06:47:     87%|████████▋ | 87/100 [00:02<00:00, 40.82 it/sec, obj=-447]
    INFO - 13:06:47:     88%|████████▊ | 88/100 [00:02<00:00, 40.71 it/sec, obj=-707]
    INFO - 13:06:47:     89%|████████▉ | 89/100 [00:02<00:00, 40.77 it/sec, obj=-384]
    INFO - 13:06:47:     90%|█████████ | 90/100 [00:02<00:00, 40.82 it/sec, obj=-491]
    INFO - 13:06:47:     91%|█████████ | 91/100 [00:02<00:00, 40.90 it/sec, obj=-285]
    INFO - 13:06:47:     92%|█████████▏| 92/100 [00:02<00:00, 40.93 it/sec, obj=-433]
    INFO - 13:06:47:     93%|█████████▎| 93/100 [00:02<00:00, 40.91 it/sec, obj=-377]
    INFO - 13:06:47:     94%|█████████▍| 94/100 [00:02<00:00, 40.89 it/sec, obj=-827]
    INFO - 13:06:47:     95%|█████████▌| 95/100 [00:02<00:00, 40.90 it/sec, obj=-712]
    INFO - 13:06:47:     96%|█████████▌| 96/100 [00:02<00:00, 40.99 it/sec, obj=-245]
    INFO - 13:06:47:     97%|█████████▋| 97/100 [00:02<00:00, 41.10 it/sec, obj=-502]
    INFO - 13:06:48:     98%|█████████▊| 98/100 [00:02<00:00, 41.00 it/sec, obj=-309]
    INFO - 13:06:48:     99%|█████████▉| 99/100 [00:02<00:00, 40.96 it/sec, obj=-971]
    INFO - 13:06:48:    100%|██████████| 100/100 [00:02<00:00, 40.97 it/sec, obj=-649]
    INFO - 13:06:48: Optimization result:
    INFO - 13:06:48:    Optimizer info:
    INFO - 13:06:48:       Status: None
    INFO - 13:06:48:       Message: None
    INFO - 13:06:48:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:06:48:    Solution:
    INFO - 13:06:48:       The solution is feasible.
    INFO - 13:06:48:       Objective: -659.181929189823
    INFO - 13:06:48:       Standardized constraints:
    INFO - 13:06:48:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:06:48:  -0.19803381]
    INFO - 13:06:48:          g_2 = -0.007088218675791014
    INFO - 13:06:48:          g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
    INFO - 13:06:48:       Design space:
    INFO - 13:06:48:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:48:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:06:48:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:48:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:06:48:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:06:48:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:06:48:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:06:48:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:06:48:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:06:48:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:06:48:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:06:48:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:06:48:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:06:48:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:48: *** End DOEScenario execution (time: 0:00:02.463058) ***

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:06:49: Compilation of the output function JAXSobieskiChain: 0:00:00.384233 seconds.
    INFO - 13:06:49: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.225698 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:06:49: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:49: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:49: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:49: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:49: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:49:  
    INFO - 13:06:49: *** Start DOEScenario execution ***
    INFO - 13:06:49: DOEScenario
    INFO - 13:06:49:    Disciplines: JAXSobieskiChain
    INFO - 13:06:49:    MDO formulation: MDF
    INFO - 13:06:49: Optimization problem:
    INFO - 13:06:49:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:49:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:49:    subject to constraints:
    INFO - 13:06:49:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:49:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:49:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:49:    over the design space:
    INFO - 13:06:49:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:49:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:49:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:49:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:49:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:49:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:49:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:49:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:49:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:49:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:49:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:49:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:49:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:49:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:49: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 13:06:49:      1%|          | 1/100 [00:00<00:00, 327.78 it/sec, obj=-1.25e+3]
    INFO - 13:06:49:      2%|         | 2/100 [00:00<00:00, 329.97 it/sec, obj=-303]
    INFO - 13:06:49:      3%|         | 3/100 [00:00<00:00, 257.24 it/sec, obj=-447]
    INFO - 13:06:49:      4%|         | 4/100 [00:00<00:00, 271.80 it/sec, obj=-444]
    INFO - 13:06:49:      5%|         | 5/100 [00:00<00:00, 279.86 it/sec, obj=-804]
    INFO - 13:06:49:      6%|         | 6/100 [00:00<00:00, 284.19 it/sec, obj=-232]
    INFO - 13:06:49:      7%|         | 7/100 [00:00<00:00, 287.34 it/sec, obj=-701]
    INFO - 13:06:49:      8%|         | 8/100 [00:00<00:00, 282.70 it/sec, obj=-253]
    INFO - 13:06:49:      9%|         | 9/100 [00:00<00:00, 289.46 it/sec, obj=-773]
    INFO - 13:06:49:     10%|         | 10/100 [00:00<00:00, 294.12 it/sec, obj=-448]
    INFO - 13:06:49:     11%|         | 11/100 [00:00<00:00, 293.41 it/sec, obj=-659]
    INFO - 13:06:49:     12%|█▏        | 12/100 [00:00<00:00, 292.44 it/sec, obj=-282]
    INFO - 13:06:49:     13%|█▎        | 13/100 [00:00<00:00, 297.44 it/sec, obj=-387]
    INFO - 13:06:49:     14%|█▍        | 14/100 [00:00<00:00, 300.28 it/sec, obj=-379]
    INFO - 13:06:49:     15%|█▌        | 15/100 [00:00<00:00, 299.22 it/sec, obj=-196]
    INFO - 13:06:49:     16%|█▌        | 16/100 [00:00<00:00, 292.78 it/sec, obj=-647]
    INFO - 13:06:49:     17%|█▋        | 17/100 [00:00<00:00, 287.15 it/sec, obj=-238]
    INFO - 13:06:49:     18%|█▊        | 18/100 [00:00<00:00, 289.39 it/sec, obj=-304]
    INFO - 13:06:49:     19%|█▉        | 19/100 [00:00<00:00, 288.83 it/sec, obj=-372]
    INFO - 13:06:49:     20%|██        | 20/100 [00:00<00:00, 292.51 it/sec, obj=-699]
    INFO - 13:06:49:     21%|██        | 21/100 [00:00<00:00, 293.22 it/sec, obj=-873]
    INFO - 13:06:49:     22%|██▏       | 22/100 [00:00<00:00, 291.23 it/sec, obj=-489]
    INFO - 13:06:49:     23%|██▎       | 23/100 [00:00<00:00, 287.62 it/sec, obj=-623]
    INFO - 13:06:49:     24%|██▍       | 24/100 [00:00<00:00, 289.86 it/sec, obj=-262]
    INFO - 13:06:49:     25%|██▌       | 25/100 [00:00<00:00, 292.35 it/sec, obj=-345]
    INFO - 13:06:49:     26%|██▌       | 26/100 [00:00<00:00, 289.77 it/sec, obj=-377]
    INFO - 13:06:49:     27%|██▋       | 27/100 [00:00<00:00, 288.26 it/sec, obj=-387]
    INFO - 13:06:49:     28%|██▊       | 28/100 [00:00<00:00, 282.72 it/sec, obj=-334]
    INFO - 13:06:49:     29%|██▉       | 29/100 [00:00<00:00, 284.88 it/sec, obj=-438]
    INFO - 13:06:49:     30%|███       | 30/100 [00:00<00:00, 287.27 it/sec, obj=-1.94e+3]
    INFO - 13:06:49:     31%|███       | 31/100 [00:00<00:00, 285.68 it/sec, obj=-733]
    INFO - 13:06:49:     32%|███▏      | 32/100 [00:00<00:00, 287.36 it/sec, obj=-774]
    INFO - 13:06:49:     33%|███▎      | 33/100 [00:00<00:00, 287.32 it/sec, obj=-517]
    INFO - 13:06:49:     34%|███▍      | 34/100 [00:00<00:00, 288.52 it/sec, obj=-232]
    INFO - 13:06:49:     35%|███▌      | 35/100 [00:00<00:00, 290.60 it/sec, obj=-195]
    INFO - 13:06:49:     36%|███▌      | 36/100 [00:00<00:00, 291.85 it/sec, obj=-218]
    INFO - 13:06:49:     37%|███▋      | 37/100 [00:00<00:00, 292.81 it/sec, obj=-198]
    INFO - 13:06:49:     38%|███▊      | 38/100 [00:00<00:00, 287.30 it/sec, obj=-536]
    INFO - 13:06:49:     39%|███▉      | 39/100 [00:00<00:00, 282.11 it/sec, obj=-173]
    INFO - 13:06:49:     40%|████      | 40/100 [00:00<00:00, 283.13 it/sec, obj=-388]
    INFO - 13:06:49:     41%|████      | 41/100 [00:00<00:00, 283.20 it/sec, obj=-723]
    INFO - 13:06:49:     42%|████▏     | 42/100 [00:00<00:00, 282.25 it/sec, obj=-240]
    INFO - 13:06:49:     43%|████▎     | 43/100 [00:00<00:00, 283.31 it/sec, obj=-663]
    INFO - 13:06:49:     44%|████▍     | 44/100 [00:00<00:00, 281.86 it/sec, obj=-1.14e+3]
    INFO - 13:06:49:     45%|████▌     | 45/100 [00:00<00:00, 280.42 it/sec, obj=-438]
    INFO - 13:06:49:     46%|████▌     | 46/100 [00:00<00:00, 279.64 it/sec, obj=-301]
    INFO - 13:06:49:     47%|████▋     | 47/100 [00:00<00:00, 280.77 it/sec, obj=-682]
    INFO - 13:06:49:     48%|████▊     | 48/100 [00:00<00:00, 280.56 it/sec, obj=-750]
    INFO - 13:06:49:     49%|████▉     | 49/100 [00:00<00:00, 280.85 it/sec, obj=-789]
    INFO - 13:06:49:     50%|█████     | 50/100 [00:00<00:00, 280.72 it/sec, obj=-395]
    INFO - 13:06:49:     51%|█████     | 51/100 [00:00<00:00, 279.60 it/sec, obj=-407]
    INFO - 13:06:49:     52%|█████▏    | 52/100 [00:00<00:00, 279.20 it/sec, obj=-315]
    INFO - 13:06:49:     53%|█████▎    | 53/100 [00:00<00:00, 279.37 it/sec, obj=-337]
    INFO - 13:06:49:     54%|█████▍    | 54/100 [00:00<00:00, 278.73 it/sec, obj=-414]
    INFO - 13:06:49:     55%|█████▌    | 55/100 [00:00<00:00, 279.26 it/sec, obj=-240]
    INFO - 13:06:49:     56%|█████▌    | 56/100 [00:00<00:00, 280.62 it/sec, obj=-297]
    INFO - 13:06:49:     57%|█████▋    | 57/100 [00:00<00:00, 280.89 it/sec, obj=-442]
    INFO - 13:06:49:     58%|█████▊    | 58/100 [00:00<00:00, 281.12 it/sec, obj=-233]
    INFO - 13:06:49:     59%|█████▉    | 59/100 [00:00<00:00, 279.86 it/sec, obj=-519]
    INFO - 13:06:49:     60%|██████    | 60/100 [00:00<00:00, 278.66 it/sec, obj=-920]
    INFO - 13:06:49:     61%|██████    | 61/100 [00:00<00:00, 277.75 it/sec, obj=-517]
    INFO - 13:06:49:     62%|██████▏   | 62/100 [00:00<00:00, 278.65 it/sec, obj=-390]
    INFO - 13:06:49:     63%|██████▎   | 63/100 [00:00<00:00, 279.65 it/sec, obj=-434]
    INFO - 13:06:49:     64%|██████▍   | 64/100 [00:00<00:00, 280.57 it/sec, obj=-244]
    INFO - 13:06:49:     65%|██████▌   | 65/100 [00:00<00:00, 280.11 it/sec, obj=-192]
    INFO - 13:06:49:     66%|██████▌   | 66/100 [00:00<00:00, 281.04 it/sec, obj=-305]
    INFO - 13:06:49:     67%|██████▋   | 67/100 [00:00<00:00, 279.98 it/sec, obj=-393]
    INFO - 13:06:49:     68%|██████▊   | 68/100 [00:00<00:00, 279.48 it/sec, obj=-307]
    INFO - 13:06:49:     69%|██████▉   | 69/100 [00:00<00:00, 279.58 it/sec, obj=-328]
    INFO - 13:06:49:     70%|███████   | 70/100 [00:00<00:00, 279.72 it/sec, obj=-998]
    INFO - 13:06:49:     71%|███████   | 71/100 [00:00<00:00, 279.52 it/sec, obj=-1.06e+3]
    INFO - 13:06:49:     72%|███████▏  | 72/100 [00:00<00:00, 279.60 it/sec, obj=-707]
    INFO - 13:06:49:     73%|███████▎  | 73/100 [00:00<00:00, 280.69 it/sec, obj=-897]
    INFO - 13:06:49:     74%|███████▍  | 74/100 [00:00<00:00, 281.78 it/sec, obj=-1.36e+3]
    INFO - 13:06:49:     75%|███████▌  | 75/100 [00:00<00:00, 282.47 it/sec, obj=-853]
    INFO - 13:06:49:     76%|███████▌  | 76/100 [00:00<00:00, 283.50 it/sec, obj=-217]
    INFO - 13:06:49:     77%|███████▋  | 77/100 [00:00<00:00, 282.99 it/sec, obj=-370]
    INFO - 13:06:50:     78%|███████▊  | 78/100 [00:00<00:00, 283.35 it/sec, obj=-636]
    INFO - 13:06:50:     79%|███████▉  | 79/100 [00:00<00:00, 283.91 it/sec, obj=-337]
    INFO - 13:06:50:     80%|████████  | 80/100 [00:00<00:00, 284.18 it/sec, obj=-804]
    INFO - 13:06:50:     81%|████████  | 81/100 [00:00<00:00, 284.46 it/sec, obj=-318]
    INFO - 13:06:50:     82%|████████▏ | 82/100 [00:00<00:00, 284.68 it/sec, obj=-253]
    INFO - 13:06:50:     83%|████████▎ | 83/100 [00:00<00:00, 284.35 it/sec, obj=-590]
    INFO - 13:06:50:     84%|████████▍ | 84/100 [00:00<00:00, 283.01 it/sec, obj=-438]
    INFO - 13:06:50:     85%|████████▌ | 85/100 [00:00<00:00, 281.25 it/sec, obj=-642]
    INFO - 13:06:50:     86%|████████▌ | 86/100 [00:00<00:00, 282.29 it/sec, obj=-381]
    INFO - 13:06:50:     87%|████████▋ | 87/100 [00:00<00:00, 281.88 it/sec, obj=-447]
    INFO - 13:06:50:     88%|████████▊ | 88/100 [00:00<00:00, 281.51 it/sec, obj=-707]
    INFO - 13:06:50:     89%|████████▉ | 89/100 [00:00<00:00, 282.42 it/sec, obj=-384]
    INFO - 13:06:50:     90%|█████████ | 90/100 [00:00<00:00, 283.05 it/sec, obj=-491]
    INFO - 13:06:50:     91%|█████████ | 91/100 [00:00<00:00, 283.23 it/sec, obj=-285]
    INFO - 13:06:50:     92%|█████████▏| 92/100 [00:00<00:00, 283.05 it/sec, obj=-433]
    INFO - 13:06:50:     93%|█████████▎| 93/100 [00:00<00:00, 282.70 it/sec, obj=-377]
    INFO - 13:06:50:     94%|█████████▍| 94/100 [00:00<00:00, 282.82 it/sec, obj=-827]
    INFO - 13:06:50:     95%|█████████▌| 95/100 [00:00<00:00, 281.44 it/sec, obj=-712]
    INFO - 13:06:50:     96%|█████████▌| 96/100 [00:00<00:00, 281.99 it/sec, obj=-245]
    INFO - 13:06:50:     97%|█████████▋| 97/100 [00:00<00:00, 282.57 it/sec, obj=-502]
    INFO - 13:06:50:     98%|█████████▊| 98/100 [00:00<00:00, 282.20 it/sec, obj=-309]
    INFO - 13:06:50:     99%|█████████▉| 99/100 [00:00<00:00, 282.58 it/sec, obj=-971]
    INFO - 13:06:50:    100%|██████████| 100/100 [00:00<00:00, 281.58 it/sec, obj=-649]
    INFO - 13:06:50: Optimization result:
    INFO - 13:06:50:    Optimizer info:
    INFO - 13:06:50:       Status: None
    INFO - 13:06:50:       Message: None
    INFO - 13:06:50:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:06:50:    Solution:
    INFO - 13:06:50:       The solution is feasible.
    INFO - 13:06:50:       Objective: -659.1818108437288
    INFO - 13:06:50:       Standardized constraints:
    INFO - 13:06:50:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:06:50:  -0.19803381]
    INFO - 13:06:50:          g_2 = -0.007088218675791014
    INFO - 13:06:50:          g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
    INFO - 13:06:50:       Design space:
    INFO - 13:06:50:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:50:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:06:50:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:50:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:06:50:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:06:50:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:06:50:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:06:50:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:06:50:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:06:50:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:06:50:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:06:50:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:06:50:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:06:50:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:50: *** End DOEScenario execution (time: 0:00:00.376732) ***

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:06:50: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:06:50: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:06:50:  
    INFO - 13:06:50: *** Start DOEScenario execution ***
    INFO - 13:06:50: DOEScenario
    INFO - 13:06:50:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:06:50:    MDO formulation: MDF
    INFO - 13:06:50: Optimization problem:
    INFO - 13:06:50:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:50:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:50:    subject to constraints:
    INFO - 13:06:50:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:50:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:50:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:50:    over the design space:
    INFO - 13:06:50:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:50:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:50:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:50:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:50:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:50:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:50:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:50:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:50:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:50:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:50:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:50:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:50:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:50:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06: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:06:50:      1%|          | 1/100 [00:00<00:00, 130.68 it/sec, obj=-1.25e+3]
    INFO - 13:06:50:      2%|         | 2/100 [00:00<00:00, 130.88 it/sec, obj=-303]
    INFO - 13:06:50:      3%|         | 3/100 [00:00<00:01, 92.61 it/sec, obj=-447]
    INFO - 13:06:50:      4%|         | 4/100 [00:00<00:00, 98.80 it/sec, obj=-444]
    INFO - 13:06:50:      5%|         | 5/100 [00:00<00:00, 105.23 it/sec, obj=-804]
    INFO - 13:06:50:      6%|         | 6/100 [00:00<00:00, 105.95 it/sec, obj=-232]
    INFO - 13:06:50:      7%|         | 7/100 [00:00<00:00, 106.73 it/sec, obj=-701]
    INFO - 13:06:50:      8%|         | 8/100 [00:00<00:00, 104.31 it/sec, obj=-253]
    INFO - 13:06:50:      9%|         | 9/100 [00:00<00:00, 108.69 it/sec, obj=-773]
    INFO - 13:06:50:     10%|         | 10/100 [00:00<00:00, 110.06 it/sec, obj=-448]
    INFO - 13:06:50:     11%|         | 11/100 [00:00<00:00, 109.04 it/sec, obj=-659]
    INFO - 13:06:50:     12%|█▏        | 12/100 [00:00<00:00, 107.76 it/sec, obj=-282]
    INFO - 13:06:50:     13%|█▎        | 13/100 [00:00<00:00, 109.79 it/sec, obj=-387]
    INFO - 13:06:50:     14%|█▍        | 14/100 [00:00<00:00, 110.71 it/sec, obj=-379]
    INFO - 13:06:50:     15%|█▌        | 15/100 [00:00<00:00, 109.88 it/sec, obj=-196]
    INFO - 13:06:50:     16%|█▌        | 16/100 [00:00<00:00, 107.59 it/sec, obj=-647]
    INFO - 13:06:50:     17%|█▋        | 17/100 [00:00<00:00, 105.06 it/sec, obj=-238]
    INFO - 13:06:50:     18%|█▊        | 18/100 [00:00<00:00, 105.81 it/sec, obj=-304]
    INFO - 13:06:50:     19%|█▉        | 19/100 [00:00<00:00, 105.37 it/sec, obj=-372]
    INFO - 13:06:50:     20%|██        | 20/100 [00:00<00:00, 107.21 it/sec, obj=-699]
    INFO - 13:06:50:     21%|██        | 21/100 [00:00<00:00, 107.36 it/sec, obj=-873]
    INFO - 13:06:50:     22%|██▏       | 22/100 [00:00<00:00, 106.42 it/sec, obj=-489]
    INFO - 13:06:50:     23%|██▎       | 23/100 [00:00<00:00, 105.16 it/sec, obj=-623]
    INFO - 13:06:50:     24%|██▍       | 24/100 [00:00<00:00, 106.37 it/sec, obj=-262]
    INFO - 13:06:50:     25%|██▌       | 25/100 [00:00<00:00, 107.22 it/sec, obj=-345]
    INFO - 13:06:50:     26%|██▌       | 26/100 [00:00<00:00, 105.99 it/sec, obj=-377]
    INFO - 13:06:50:     27%|██▋       | 27/100 [00:00<00:00, 105.23 it/sec, obj=-387]
    INFO - 13:06:50:     28%|██▊       | 28/100 [00:00<00:00, 102.75 it/sec, obj=-334]
    INFO - 13:06:50:     29%|██▉       | 29/100 [00:00<00:00, 104.02 it/sec, obj=-438]
    INFO - 13:06:50:     30%|███       | 30/100 [00:00<00:00, 104.97 it/sec, obj=-1.94e+3]
    INFO - 13:06:50:     31%|███       | 31/100 [00:00<00:00, 104.09 it/sec, obj=-733]
    INFO - 13:06:50:     32%|███▏      | 32/100 [00:00<00:00, 104.63 it/sec, obj=-774]
    INFO - 13:06:50:     33%|███▎      | 33/100 [00:00<00:00, 104.43 it/sec, obj=-517]
    INFO - 13:06:50:     34%|███▍      | 34/100 [00:00<00:00, 104.92 it/sec, obj=-232]
    INFO - 13:06:50:     35%|███▌      | 35/100 [00:00<00:00, 105.70 it/sec, obj=-195]
    INFO - 13:06:50:     36%|███▌      | 36/100 [00:00<00:00, 106.11 it/sec, obj=-218]
    INFO - 13:06:50:     37%|███▋      | 37/100 [00:00<00:00, 107.13 it/sec, obj=-198]
    INFO - 13:06:50:     38%|███▊      | 38/100 [00:00<00:00, 104.47 it/sec, obj=-536]
    INFO - 13:06:50:     39%|███▉      | 39/100 [00:00<00:00, 102.11 it/sec, obj=-173]
    INFO - 13:06:50:     40%|████      | 40/100 [00:00<00:00, 102.55 it/sec, obj=-388]
    INFO - 13:06:50:     41%|████      | 41/100 [00:00<00:00, 102.36 it/sec, obj=-723]
    INFO - 13:06:50:     42%|████▏     | 42/100 [00:00<00:00, 101.75 it/sec, obj=-240]
    INFO - 13:06:50:     43%|████▎     | 43/100 [00:00<00:00, 102.11 it/sec, obj=-663]
    INFO - 13:06:50:     44%|████▍     | 44/100 [00:00<00:00, 101.30 it/sec, obj=-1.14e+3]
    INFO - 13:06:50:     45%|████▌     | 45/100 [00:00<00:00, 100.60 it/sec, obj=-438]
    INFO - 13:06:50:     46%|████▌     | 46/100 [00:00<00:00, 100.12 it/sec, obj=-301]
    INFO - 13:06:50:     47%|████▋     | 47/100 [00:00<00:00, 100.54 it/sec, obj=-682]
    INFO - 13:06:50:     48%|████▊     | 48/100 [00:00<00:00, 100.31 it/sec, obj=-750]
    INFO - 13:06:50:     49%|████▉     | 49/100 [00:00<00:00, 100.29 it/sec, obj=-789]
    INFO - 13:06:50:     50%|█████     | 50/100 [00:00<00:00, 100.04 it/sec, obj=-395]
    INFO - 13:06:50:     51%|█████     | 51/100 [00:00<00:00, 99.40 it/sec, obj=-407]
    INFO - 13:06:50:     52%|█████▏    | 52/100 [00:00<00:00, 99.22 it/sec, obj=-315]
    INFO - 13:06:50:     53%|█████▎    | 53/100 [00:00<00:00, 99.17 it/sec, obj=-337]
    INFO - 13:06:50:     54%|█████▍    | 54/100 [00:00<00:00, 98.82 it/sec, obj=-414]
    INFO - 13:06:50:     55%|█████▌    | 55/100 [00:00<00:00, 99.15 it/sec, obj=-240]
    INFO - 13:06:50:     56%|█████▌    | 56/100 [00:00<00:00, 99.67 it/sec, obj=-297]
    INFO - 13:06:50:     57%|█████▋    | 57/100 [00:00<00:00, 99.85 it/sec, obj=-442]
    INFO - 13:06:50:     58%|█████▊    | 58/100 [00:00<00:00, 100.01 it/sec, obj=-233]
    INFO - 13:06:50:     59%|█████▉    | 59/100 [00:00<00:00, 99.49 it/sec, obj=-519]
    INFO - 13:06:50:     60%|██████    | 60/100 [00:00<00:00, 98.84 it/sec, obj=-920]
    INFO - 13:06:50:     61%|██████    | 61/100 [00:00<00:00, 98.52 it/sec, obj=-517]
    INFO - 13:06:50:     62%|██████▏   | 62/100 [00:00<00:00, 98.85 it/sec, obj=-390]
    INFO - 13:06:50:     63%|██████▎   | 63/100 [00:00<00:00, 99.08 it/sec, obj=-434]
    INFO - 13:06:50:     64%|██████▍   | 64/100 [00:00<00:00, 99.36 it/sec, obj=-244]
    INFO - 13:06:50:     65%|██████▌   | 65/100 [00:00<00:00, 99.04 it/sec, obj=-192]
    INFO - 13:06:50:     66%|██████▌   | 66/100 [00:00<00:00, 99.18 it/sec, obj=-305]
    INFO - 13:06:50:     67%|██████▋   | 67/100 [00:00<00:00, 98.58 it/sec, obj=-393]
    INFO - 13:06:50:     68%|██████▊   | 68/100 [00:00<00:00, 98.31 it/sec, obj=-307]
    INFO - 13:06:50:     69%|██████▉   | 69/100 [00:00<00:00, 98.32 it/sec, obj=-328]
    INFO - 13:06:50:     70%|███████   | 70/100 [00:00<00:00, 98.33 it/sec, obj=-998]
    INFO - 13:06:50:     71%|███████   | 71/100 [00:00<00:00, 98.18 it/sec, obj=-1.06e+3]
    INFO - 13:06:50:     72%|███████▏  | 72/100 [00:00<00:00, 98.31 it/sec, obj=-707]
    INFO - 13:06:50:     73%|███████▎  | 73/100 [00:00<00:00, 98.73 it/sec, obj=-897]
    INFO - 13:06:50:     74%|███████▍  | 74/100 [00:00<00:00, 99.27 it/sec, obj=-1.36e+3]
    INFO - 13:06:50:     75%|███████▌  | 75/100 [00:00<00:00, 99.53 it/sec, obj=-853]
    INFO - 13:06:50:     76%|███████▌  | 76/100 [00:00<00:00, 99.94 it/sec, obj=-217]
    INFO - 13:06:50:     77%|███████▋  | 77/100 [00:00<00:00, 99.68 it/sec, obj=-370]
    INFO - 13:06:50:     78%|███████▊  | 78/100 [00:00<00:00, 99.80 it/sec, obj=-636]
    INFO - 13:06:50:     79%|███████▉  | 79/100 [00:00<00:00, 100.05 it/sec, obj=-337]
    INFO - 13:06:50:     80%|████████  | 80/100 [00:00<00:00, 100.17 it/sec, obj=-804]
    INFO - 13:06:50:     81%|████████  | 81/100 [00:00<00:00, 100.38 it/sec, obj=-318]
    INFO - 13:06:50:     82%|████████▏ | 82/100 [00:00<00:00, 100.58 it/sec, obj=-253]
    INFO - 13:06:50:     83%|████████▎ | 83/100 [00:00<00:00, 100.58 it/sec, obj=-590]
    INFO - 13:06:50:     84%|████████▍ | 84/100 [00:00<00:00, 100.06 it/sec, obj=-438]
    INFO - 13:06:50:     85%|████████▌ | 85/100 [00:00<00:00, 99.38 it/sec, obj=-642]
    INFO - 13:06:50:     86%|████████▌ | 86/100 [00:00<00:00, 99.97 it/sec, obj=-381]
    INFO - 13:06:50:     87%|████████▋ | 87/100 [00:00<00:00, 99.76 it/sec, obj=-447]
    INFO - 13:06:51:     88%|████████▊ | 88/100 [00:00<00:00, 99.54 it/sec, obj=-707]
    INFO - 13:06:51:     89%|████████▉ | 89/100 [00:00<00:00, 99.89 it/sec, obj=-384]
    INFO - 13:06:51:     90%|█████████ | 90/100 [00:00<00:00, 100.09 it/sec, obj=-491]
    INFO - 13:06:51:     91%|█████████ | 91/100 [00:00<00:00, 100.09 it/sec, obj=-285]
    INFO - 13:06:51:     92%|█████████▏| 92/100 [00:00<00:00, 99.98 it/sec, obj=-433]
    INFO - 13:06:51:     93%|█████████▎| 93/100 [00:00<00:00, 99.72 it/sec, obj=-377]
    INFO - 13:06:51:     94%|█████████▍| 94/100 [00:00<00:00, 99.71 it/sec, obj=-827]
    INFO - 13:06:51:     95%|█████████▌| 95/100 [00:00<00:00, 98.93 it/sec, obj=-712]
    INFO - 13:06:51:     96%|█████████▌| 96/100 [00:00<00:00, 99.11 it/sec, obj=-245]
    INFO - 13:06:51:     97%|█████████▋| 97/100 [00:00<00:00, 99.32 it/sec, obj=-502]
    INFO - 13:06:51:     98%|█████████▊| 98/100 [00:00<00:00, 99.13 it/sec, obj=-309]
    INFO - 13:06:51:     99%|█████████▉| 99/100 [00:00<00:00, 99.22 it/sec, obj=-971]
    INFO - 13:06:51:    100%|██████████| 100/100 [00:01<00:00, 98.77 it/sec, obj=-649]
    INFO - 13:06:51: Optimization result:
    INFO - 13:06:51:    Optimizer info:
    INFO - 13:06:51:       Status: None
    INFO - 13:06:51:       Message: None
    INFO - 13:06:51:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:06:51:    Solution:
    INFO - 13:06:51:       The solution is feasible.
    INFO - 13:06:51:       Objective: -659.1819417003436
    INFO - 13:06:51:       Standardized constraints:
    INFO - 13:06:51:          g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
    INFO - 13:06:51:  -0.19803381]
    INFO - 13:06:51:          g_2 = -0.007088218675791014
    INFO - 13:06:51:          g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
    INFO - 13:06:51:       Design space:
    INFO - 13:06:51:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:51:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:06:51:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:51:          | x_shared[0] |     0.01    | 0.05822794533105225 |     0.09    | float |
    INFO - 13:06:51:          | x_shared[1] |    30000    |  44461.15862672209  |    60000    | float |
    INFO - 13:06:51:          | x_shared[2] |     1.4     |   1.58903403609043  |     1.8     | float |
    INFO - 13:06:51:          | x_shared[3] |     2.5     |  2.757102870923486  |     8.5     | float |
    INFO - 13:06:51:          | x_shared[4] |      40     |  68.73596231164589  |      70     | float |
    INFO - 13:06:51:          | x_shared[5] |     500     |  723.9554384869837  |     1500    | float |
    INFO - 13:06:51:          | x_1[0]      |     0.1     |  0.2359336189021384 |     0.4     | float |
    INFO - 13:06:51:          | x_1[1]      |     0.75    |  0.8931955972189334 |     1.25    | float |
    INFO - 13:06:51:          | x_2         |     0.75    |  0.9978936102804572 |     1.25    | float |
    INFO - 13:06:51:          | x_3         |     0.1     |  0.1551593150888611 |      1      | float |
    INFO - 13:06:51:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:51: *** End DOEScenario execution (time: 0:00:01.034559) ***

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:06:52: Compilation of the output function JAXSobieskiChain: 0:00:00.360799 seconds.
    INFO - 13:06:52: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.153002 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:06:52: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:52: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:52: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:52: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:52: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:52:  
    INFO - 13:06:52: *** Start MDOScenario execution ***
    INFO - 13:06:52: MDOScenario
    INFO - 13:06:52:    Disciplines: JAXSobieskiChain
    INFO - 13:06:52:    MDO formulation: MDF
    INFO - 13:06:52: Optimization problem:
    INFO - 13:06:52:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:52:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:52:    subject to constraints:
    INFO - 13:06:52:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:52:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:52:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:52:    over the design space:
    INFO - 13:06:52:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:52:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:52:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:52:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:52:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:52:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:52:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:52:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:52:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:52:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:52:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:52:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:52:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:52:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:52: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 13:06:52:      1%|          | 1/100 [00:00<00:00, 260.45 it/sec, obj=-536]
    INFO - 13:06:52:      2%|         | 2/100 [00:00<00:00, 198.90 it/sec, obj=-539]
    INFO - 13:06:52:      3%|         | 3/100 [00:00<00:00, 191.63 it/sec, obj=-763]
    INFO - 13:06:52:      4%|         | 4/100 [00:00<00:00, 166.33 it/sec, obj=-713]
    INFO - 13:06:52:      5%|         | 5/100 [00:00<00:00, 161.14 it/sec, obj=-687]
    INFO - 13:06:52:      6%|         | 6/100 [00:00<00:00, 156.77 it/sec, obj=-897]
    INFO - 13:06:52:      7%|         | 7/100 [00:00<00:00, 150.61 it/sec, obj=-957]
    INFO - 13:06:52:      8%|         | 8/100 [00:00<00:00, 149.01 it/sec, obj=-956]
    INFO - 13:06:52:      9%|         | 9/100 [00:00<00:00, 147.77 it/sec, obj=-930]
    INFO - 13:06:52:     10%|         | 10/100 [00:00<00:00, 146.93 it/sec, obj=-943]
    INFO - 13:06:52:     11%|         | 11/100 [00:00<00:00, 147.46 it/sec, obj=-768]
    INFO - 13:06:52:     12%|█▏        | 12/100 [00:00<00:00, 146.00 it/sec, obj=-1e+3]
    INFO - 13:06:52:     13%|█▎        | 13/100 [00:00<00:00, 144.25 it/sec, obj=-1.34e+3]
    INFO - 13:06:52:     14%|█▍        | 14/100 [00:00<00:00, 142.93 it/sec, obj=-1.85e+3]
    INFO - 13:06:52:     15%|█▌        | 15/100 [00:00<00:00, 141.00 it/sec, obj=-1.87e+3]
    INFO - 13:06:52:     16%|█▌        | 16/100 [00:00<00:00, 139.96 it/sec, obj=-1.99e+3]
    INFO - 13:06:52:     17%|█▋        | 17/100 [00:00<00:00, 139.72 it/sec, obj=-2.18e+3]
    INFO - 13:06:52:     18%|█▊        | 18/100 [00:00<00:00, 137.81 it/sec, obj=-2.2e+3]
    INFO - 13:06:52:     19%|█▉        | 19/100 [00:00<00:00, 136.16 it/sec, obj=-2.42e+3]
    INFO - 13:06:52:     20%|██        | 20/100 [00:00<00:00, 135.85 it/sec, obj=-3.03e+3]
    INFO - 13:06:52:     21%|██        | 21/100 [00:00<00:00, 135.33 it/sec, obj=-2.99e+3]
    INFO - 13:06:52:     22%|██▏       | 22/100 [00:00<00:00, 135.15 it/sec, obj=-2.63e+3]
    INFO - 13:06:52:     23%|██▎       | 23/100 [00:00<00:00, 134.07 it/sec, obj=-3.08e+3]
    INFO - 13:06:52:     24%|██▍       | 24/100 [00:00<00:00, 133.31 it/sec, obj=-3.12e+3]
    INFO - 13:06:52:     25%|██▌       | 25/100 [00:00<00:00, 132.83 it/sec, obj=-3.23e+3]
    INFO - 13:06:52:     26%|██▌       | 26/100 [00:00<00:00, 132.49 it/sec, obj=-3.58e+3]
    INFO - 13:06:52:     27%|██▋       | 27/100 [00:00<00:00, 132.55 it/sec, obj=-3.68e+3]
    INFO - 13:06:52:     28%|██▊       | 28/100 [00:00<00:00, 132.40 it/sec, obj=-3.95e+3]
    INFO - 13:06:52:     29%|██▉       | 29/100 [00:00<00:00, 131.66 it/sec, obj=-3.96e+3]
    INFO - 13:06:52:     30%|███       | 30/100 [00:00<00:00, 131.52 it/sec, obj=-3.96e+3]
    INFO - 13:06:52:     31%|███       | 31/100 [00:00<00:00, 130.98 it/sec, obj=-3.34e+3]
    INFO - 13:06:52:     32%|███▏      | 32/100 [00:00<00:00, 130.91 it/sec, obj=-3.82e+3]
    INFO - 13:06:52:     33%|███▎      | 33/100 [00:00<00:00, 130.34 it/sec, obj=-3.52e+3]
    INFO - 13:06:52:     34%|███▍      | 34/100 [00:00<00:00, 129.94 it/sec, obj=-3.37e+3]
    INFO - 13:06:52:     35%|███▌      | 35/100 [00:00<00:00, 129.85 it/sec, obj=-3.42e+3]
    INFO - 13:06:52:     36%|███▌      | 36/100 [00:00<00:00, 129.81 it/sec, obj=-3.96e+3]
    INFO - 13:06:52:     37%|███▋      | 37/100 [00:00<00:00, 129.69 it/sec, obj=-4.03e+3]
    INFO - 13:06:52:     38%|███▊      | 38/100 [00:00<00:00, 129.55 it/sec, obj=-4.02e+3]
    INFO - 13:06:52:     39%|███▉      | 39/100 [00:00<00:00, 129.04 it/sec, obj=-3.63e+3]
    INFO - 13:06:52:     40%|████      | 40/100 [00:00<00:00, 128.12 it/sec, obj=-3.97e+3]
    INFO - 13:06:53:     41%|████      | 41/100 [00:00<00:00, 127.54 it/sec, obj=-3.67e+3]
    INFO - 13:06:53:     42%|████▏     | 42/100 [00:00<00:00, 126.70 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     43%|████▎     | 43/100 [00:00<00:00, 126.43 it/sec, obj=-3.39e+3]
    INFO - 13:06:53:     44%|████▍     | 44/100 [00:00<00:00, 126.24 it/sec, obj=-3.99e+3]
    INFO - 13:06:53:     45%|████▌     | 45/100 [00:00<00:00, 125.99 it/sec, obj=-3.51e+3]
    INFO - 13:06:53:     46%|████▌     | 46/100 [00:00<00:00, 126.04 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     47%|████▋     | 47/100 [00:00<00:00, 125.85 it/sec, obj=-3.2e+3]
    INFO - 13:06:53:     48%|████▊     | 48/100 [00:00<00:00, 125.77 it/sec, obj=-3.25e+3]
    INFO - 13:06:53:     49%|████▉     | 49/100 [00:00<00:00, 125.66 it/sec, obj=-3.29e+3]
    INFO - 13:06:53:     50%|█████     | 50/100 [00:00<00:00, 125.49 it/sec, obj=-3.47e+3]
    INFO - 13:06:53:     51%|█████     | 51/100 [00:00<00:00, 125.40 it/sec, obj=-3.25e+3]
    INFO - 13:06:53:     52%|█████▏    | 52/100 [00:00<00:00, 125.27 it/sec, obj=-3.54e+3]
    INFO - 13:06:53:     53%|█████▎    | 53/100 [00:00<00:00, 125.40 it/sec, obj=-3.95e+3]
    INFO - 13:06:53:     54%|█████▍    | 54/100 [00:00<00:00, 125.25 it/sec, obj=-3.58e+3]
    INFO - 13:06:53:     55%|█████▌    | 55/100 [00:00<00:00, 125.40 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     56%|█████▌    | 56/100 [00:00<00:00, 125.37 it/sec, obj=-3.62e+3]
    INFO - 13:06:53:     57%|█████▋    | 57/100 [00:00<00:00, 125.52 it/sec, obj=-3.91e+3]
    INFO - 13:06:53:     58%|█████▊    | 58/100 [00:00<00:00, 125.53 it/sec, obj=-3.3e+3]
    INFO - 13:06:53:     59%|█████▉    | 59/100 [00:00<00:00, 125.42 it/sec, obj=-3.57e+3]
    INFO - 13:06:53:     60%|██████    | 60/100 [00:00<00:00, 125.67 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     61%|██████    | 61/100 [00:00<00:00, 125.72 it/sec, obj=-3.43e+3]
    INFO - 13:06:53:     62%|██████▏   | 62/100 [00:00<00:00, 125.81 it/sec, obj=-3.26e+3]
    INFO - 13:06:53:     63%|██████▎   | 63/100 [00:00<00:00, 126.02 it/sec, obj=-3.94e+3]
    INFO - 13:06:53:     64%|██████▍   | 64/100 [00:00<00:00, 126.08 it/sec, obj=-3.5e+3]
    INFO - 13:06:53:     65%|██████▌   | 65/100 [00:00<00:00, 126.11 it/sec, obj=-3.3e+3]
    INFO - 13:06:53:     66%|██████▌   | 66/100 [00:00<00:00, 126.15 it/sec, obj=-3.53e+3]
    INFO - 13:06:53:     67%|██████▋   | 67/100 [00:00<00:00, 126.14 it/sec, obj=-3.27e+3]
    INFO - 13:06:53:     68%|██████▊   | 68/100 [00:00<00:00, 126.13 it/sec, obj=-3.52e+3]
    INFO - 13:06:53:     69%|██████▉   | 69/100 [00:00<00:00, 126.36 it/sec, obj=-3.83e+3]
    INFO - 13:06:53:     70%|███████   | 70/100 [00:00<00:00, 126.42 it/sec, obj=-3.48e+3]
    INFO - 13:06:53:     71%|███████   | 71/100 [00:00<00:00, 126.58 it/sec, obj=-3.87e+3]
    INFO - 13:06:53:     72%|███████▏  | 72/100 [00:00<00:00, 126.63 it/sec, obj=-3.48e+3]
    INFO - 13:06:53:     73%|███████▎  | 73/100 [00:00<00:00, 126.63 it/sec, obj=-3.49e+3]
    INFO - 13:06:53:     74%|███████▍  | 74/100 [00:00<00:00, 126.75 it/sec, obj=-3.87e+3]
    INFO - 13:06:53:     75%|███████▌  | 75/100 [00:00<00:00, 126.76 it/sec, obj=-3.47e+3]
    INFO - 13:06:53:     76%|███████▌  | 76/100 [00:00<00:00, 126.76 it/sec, obj=-3.46e+3]
    INFO - 13:06:53:     77%|███████▋  | 77/100 [00:00<00:00, 126.74 it/sec, obj=-3.48e+3]
    INFO - 13:06:53:     78%|███████▊  | 78/100 [00:00<00:00, 126.69 it/sec, obj=-3.33e+3]
    INFO - 13:06:53:     79%|███████▉  | 79/100 [00:00<00:00, 126.79 it/sec, obj=-3.51e+3]
    INFO - 13:06:53:     80%|████████  | 80/100 [00:00<00:00, 126.95 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     81%|████████  | 81/100 [00:00<00:00, 126.96 it/sec, obj=-3.41e+3]
    INFO - 13:06:53:     82%|████████▏ | 82/100 [00:00<00:00, 127.12 it/sec, obj=-3.97e+3]
    INFO - 13:06:53:     83%|████████▎ | 83/100 [00:00<00:00, 127.17 it/sec, obj=-3.35e+3]
    INFO - 13:06:53:     84%|████████▍ | 84/100 [00:00<00:00, 127.20 it/sec, obj=-3.2e+3]
    INFO - 13:06:53:     85%|████████▌ | 85/100 [00:00<00:00, 127.22 it/sec, obj=-3.64e+3]
    INFO - 13:06:53:     86%|████████▌ | 86/100 [00:00<00:00, 127.21 it/sec, obj=-3.65e+3]
    INFO - 13:06:53:     87%|████████▋ | 87/100 [00:00<00:00, 127.32 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     88%|████████▊ | 88/100 [00:00<00:00, 127.27 it/sec, obj=-3.32e+3]
    INFO - 13:06:53:     89%|████████▉ | 89/100 [00:00<00:00, 127.20 it/sec, obj=-3.3e+3]
    INFO - 13:06:53:     90%|█████████ | 90/100 [00:00<00:00, 127.28 it/sec, obj=-3.87e+3]
    INFO - 13:06:53:     91%|█████████ | 91/100 [00:00<00:00, 127.29 it/sec, obj=-3.63e+3]
    INFO - 13:06:53:     92%|█████████▏| 92/100 [00:00<00:00, 127.26 it/sec, obj=-3.45e+3]
    INFO - 13:06:53:     93%|█████████▎| 93/100 [00:00<00:00, 127.23 it/sec, obj=-3.41e+3]
    INFO - 13:06:53:     94%|█████████▍| 94/100 [00:00<00:00, 127.37 it/sec, obj=-3.77e+3]
    INFO - 13:06:53:     95%|█████████▌| 95/100 [00:00<00:00, 127.51 it/sec, obj=-3.96e+3]
    INFO - 13:06:53:     96%|█████████▌| 96/100 [00:00<00:00, 127.51 it/sec, obj=-3.48e+3]
    INFO - 13:06:53:     97%|█████████▋| 97/100 [00:00<00:00, 127.53 it/sec, obj=-3.41e+3]
    INFO - 13:06:53:     98%|█████████▊| 98/100 [00:00<00:00, 127.65 it/sec, obj=-3.97e+3]
    INFO - 13:06:53:     99%|█████████▉| 99/100 [00:00<00:00, 127.68 it/sec, obj=-3.29e+3]
    INFO - 13:06:53:    100%|██████████| 100/100 [00:00<00:00, 127.62 it/sec, obj=-3.33e+3]
    INFO - 13:06:53: Optimization result:
    INFO - 13:06:53:    Optimizer info:
    INFO - 13:06:53:       Status: None
    INFO - 13:06:53:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:06:53:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:06:53:    Solution:
    INFO - 13:06:53:       The solution is feasible.
    INFO - 13:06:53:       Objective: -3963.5978188452605
    INFO - 13:06:53:       Standardized constraints:
    INFO - 13:06:53:          g_1 = [-0.01827806 -0.0334989  -0.04436674 -0.05192983 -0.05740621 -0.13708086
    INFO - 13:06:53:  -0.10291914]
    INFO - 13:06:53:          g_2 = 2.8205413821202896e-05
    INFO - 13:06:53:          g_3 = [-7.67134672e-01 -2.32865328e-01 -9.95245644e-06 -1.83255000e-01]
    INFO - 13:06:53:       Design space:
    INFO - 13:06:53:          +-------------+-------------+--------------------+-------------+-------+
    INFO - 13:06:53:          | Name        | Lower bound |       Value        | Upper bound | Type  |
    INFO - 13:06:53:          +-------------+-------------+--------------------+-------------+-------+
    INFO - 13:06:53:          | x_shared[0] |     0.01    | 0.0600070513534553 |     0.09    | float |
    INFO - 13:06:53:          | x_shared[1] |    30000    |       60000        |    60000    | float |
    INFO - 13:06:53:          | x_shared[2] |     1.4     |        1.4         |     1.8     | float |
    INFO - 13:06:53:          | x_shared[3] |     2.5     | 2.500000000000004  |     8.5     | float |
    INFO - 13:06:53:          | x_shared[4] |      40     |         70         |      70     | float |
    INFO - 13:06:53:          | x_shared[5] |     500     |        1500        |     1500    | float |
    INFO - 13:06:53:          | x_1[0]      |     0.1     | 0.3992532360683517 |     0.4     | float |
    INFO - 13:06:53:          | x_1[1]      |     0.75    |        0.75        |     1.25    | float |
    INFO - 13:06:53:          | x_2         |     0.75    |        0.75        |     1.25    | float |
    INFO - 13:06:53:          | x_3         |     0.1     | 0.1562431906272621 |      1      | float |
    INFO - 13:06:53:          +-------------+-------------+--------------------+-------------+-------+
    INFO - 13:06:53: *** End MDOScenario execution (time: 0:00:00.793799) ***

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:06:53: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:06:53: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:06:53:  
    INFO - 13:06:53: *** Start MDOScenario execution ***
    INFO - 13:06:53: MDOScenario
    INFO - 13:06:53:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:06:53:    MDO formulation: MDF
    INFO - 13:06:53: Optimization problem:
    INFO - 13:06:53:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:53:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:53:    subject to constraints:
    INFO - 13:06:53:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:53:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:53:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:53:    over the design space:
    INFO - 13:06:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:53:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:53:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:53:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:53:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:53:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:53:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:53:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:53:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:53:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:53:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:53:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:53:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:53: 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:06:53:      1%|          | 1/100 [00:00<00:02, 44.50 it/sec, obj=-536]
    INFO - 13:06:53:      2%|         | 2/100 [00:00<00:02, 38.40 it/sec, obj=-539]
    INFO - 13:06:53:      3%|         | 3/100 [00:00<00:02, 37.01 it/sec, obj=-763]
    INFO - 13:06:53:      4%|         | 4/100 [00:00<00:02, 36.33 it/sec, obj=-713]
    INFO - 13:06:53:      5%|         | 5/100 [00:00<00:02, 35.51 it/sec, obj=-687]
    INFO - 13:06:53:      6%|         | 6/100 [00:00<00:02, 35.23 it/sec, obj=-897]
    INFO - 13:06:53:      7%|         | 7/100 [00:00<00:02, 35.31 it/sec, obj=-957]
    INFO - 13:06:53:      8%|         | 8/100 [00:00<00:02, 35.78 it/sec, obj=-956]
    INFO - 13:06:53:      9%|         | 9/100 [00:00<00:02, 35.91 it/sec, obj=-930]
    INFO - 13:06:53:     10%|         | 10/100 [00:00<00:02, 35.99 it/sec, obj=-943]
    INFO - 13:06:53:     11%|         | 11/100 [00:00<00:02, 36.12 it/sec, obj=-768]
    INFO - 13:06:53:     12%|█▏        | 12/100 [00:00<00:02, 34.12 it/sec, obj=-1e+3]
    INFO - 13:06:53:     13%|█▎        | 13/100 [00:00<00:02, 32.87 it/sec, obj=-1.34e+3]
    INFO - 13:06:53:     14%|█▍        | 14/100 [00:00<00:02, 32.00 it/sec, obj=-1.85e+3]
    INFO - 13:06:53:     15%|█▌        | 15/100 [00:00<00:02, 31.07 it/sec, obj=-1.87e+3]
 WARNING - 13:06:54: MDAJacobi has reached its maximum number of iterations but the normed residual 3.7204854871194414e-05 is still above the tolerance 1e-06.
    INFO - 13:06:54:     16%|█▌        | 16/100 [00:00<00:02, 29.90 it/sec, obj=-1.99e+3]
    INFO - 13:06:54:     17%|█▋        | 17/100 [00:00<00:02, 29.53 it/sec, obj=-2.18e+3]
    INFO - 13:06:54:     18%|█▊        | 18/100 [00:00<00:02, 29.06 it/sec, obj=-2.2e+3]
    INFO - 13:06:54:     19%|█▉        | 19/100 [00:00<00:02, 28.74 it/sec, obj=-2.42e+3]
 WARNING - 13:06:54: MDAJacobi has reached its maximum number of iterations but the normed residual 1.9335592270087927e-05 is still above the tolerance 1e-06.
    INFO - 13:06:54:     20%|██        | 20/100 [00:00<00:02, 28.00 it/sec, obj=-2.37e+3]
    INFO - 13:06:54:     21%|██        | 21/100 [00:00<00:02, 27.68 it/sec, obj=-2.83e+3]
    INFO - 13:06:54:     22%|██▏       | 22/100 [00:00<00:02, 27.24 it/sec, obj=-3.12e+3]
    INFO - 13:06:54:     23%|██▎       | 23/100 [00:00<00:02, 27.17 it/sec, obj=-3.21e+3]
    INFO - 13:06:54:     24%|██▍       | 24/100 [00:00<00:02, 27.14 it/sec, obj=-3.99e+3]
 WARNING - 13:06:54: MDAJacobi has reached its maximum number of iterations but the normed residual 2.6602480542748623e-05 is still above the tolerance 1e-06.
    INFO - 13:06:54:     25%|██▌       | 25/100 [00:00<00:02, 26.65 it/sec, obj=-2.6e+3]
    INFO - 13:06:54:     26%|██▌       | 26/100 [00:00<00:02, 26.40 it/sec, obj=-3.06e+3]
    INFO - 13:06:54:     27%|██▋       | 27/100 [00:01<00:02, 26.39 it/sec, obj=-2.98e+3]
 WARNING - 13:06:54: MDAJacobi has reached its maximum number of iterations but the normed residual 3.131065719805529e-06 is still above the tolerance 1e-06.
    INFO - 13:06:54:     28%|██▊       | 28/100 [00:01<00:02, 26.07 it/sec, obj=-3.24e+3]
    INFO - 13:06:54:     29%|██▉       | 29/100 [00:01<00:02, 25.87 it/sec, obj=-3.67e+3]
    INFO - 13:06:54:     30%|███       | 30/100 [00:01<00:02, 25.75 it/sec, obj=-3.16e+3]
 WARNING - 13:06:54: MDAJacobi has reached its maximum number of iterations but the normed residual 0.00020046262987076315 is still above the tolerance 1e-06.
    INFO - 13:06:54:     31%|███       | 31/100 [00:01<00:02, 25.44 it/sec, obj=-3.09e+3]
    INFO - 13:06:54:     32%|███▏      | 32/100 [00:01<00:02, 25.14 it/sec, obj=-3.47e+3]
    INFO - 13:06:54:     33%|███▎      | 33/100 [00:01<00:02, 24.88 it/sec, obj=-3.52e+3]
    INFO - 13:06:54:     34%|███▍      | 34/100 [00:01<00:02, 24.83 it/sec, obj=-3.52e+3]
    INFO - 13:06:54:     35%|███▌      | 35/100 [00:01<00:02, 24.64 it/sec, obj=-3.2e+3]
    INFO - 13:06:54:     36%|███▌      | 36/100 [00:01<00:02, 24.62 it/sec, obj=-3.52e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 1.5187500368837417e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     37%|███▋      | 37/100 [00:01<00:02, 24.39 it/sec, obj=-2.96e+3]
    INFO - 13:06:55:     38%|███▊      | 38/100 [00:01<00:02, 24.41 it/sec, obj=-3.18e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 1.3580820715243732e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     39%|███▉      | 39/100 [00:01<00:02, 24.25 it/sec, obj=-3.15e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 1.0068765557476064e-05 is still above the tolerance 1e-06.
    INFO - 13:06:55:     40%|████      | 40/100 [00:01<00:02, 24.10 it/sec, obj=-3.92e+3]
    INFO - 13:06:55:     41%|████      | 41/100 [00:01<00:02, 24.11 it/sec, obj=-3.96e+3]
    INFO - 13:06:55:     42%|████▏     | 42/100 [00:01<00:02, 24.09 it/sec, obj=-3.96e+3]
    INFO - 13:06:55:     43%|████▎     | 43/100 [00:01<00:02, 24.07 it/sec, obj=-3.96e+3]
    INFO - 13:06:55:     44%|████▍     | 44/100 [00:01<00:02, 24.00 it/sec, obj=-3.75e+3]
    INFO - 13:06:55:     45%|████▌     | 45/100 [00:01<00:02, 23.99 it/sec, obj=-3.94e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 2.9699912018918902e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     46%|████▌     | 46/100 [00:01<00:02, 23.88 it/sec, obj=-3.38e+3]
    INFO - 13:06:55:     47%|████▋     | 47/100 [00:01<00:02, 23.92 it/sec, obj=-3.79e+3]
    INFO - 13:06:55:     48%|████▊     | 48/100 [00:02<00:02, 23.78 it/sec, obj=-3.41e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 3.9604198356566634e-05 is still above the tolerance 1e-06.
    INFO - 13:06:55:     49%|████▉     | 49/100 [00:02<00:02, 23.62 it/sec, obj=-3.88e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 2.0414068021569107e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     50%|█████     | 50/100 [00:02<00:02, 23.54 it/sec, obj=-3.56e+3]
    INFO - 13:06:55:     51%|█████     | 51/100 [00:02<00:02, 23.51 it/sec, obj=-3.57e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 4.339805325609159e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     52%|█████▏    | 52/100 [00:02<00:02, 23.40 it/sec, obj=-3.31e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 2.903076918194352e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     53%|█████▎    | 53/100 [00:02<00:02, 23.26 it/sec, obj=-3.18e+3]
 WARNING - 13:06:55: MDAJacobi has reached its maximum number of iterations but the normed residual 4.222419054177024e-06 is still above the tolerance 1e-06.
    INFO - 13:06:55:     54%|█████▍    | 54/100 [00:02<00:01, 23.16 it/sec, obj=-3.27e+3]
    INFO - 13:06:55:     55%|█████▌    | 55/100 [00:02<00:01, 23.17 it/sec, obj=-3.83e+3]
    INFO - 13:06:55:     56%|█████▌    | 56/100 [00:02<00:01, 23.22 it/sec, obj=-3.75e+3]
    INFO - 13:06:55:     57%|█████▋    | 57/100 [00:02<00:01, 23.19 it/sec, obj=-3.42e+3]
    INFO - 13:06:56:     58%|█████▊    | 58/100 [00:02<00:01, 23.09 it/sec, obj=-3.51e+3]
    INFO - 13:06:56:     59%|█████▉    | 59/100 [00:02<00:01, 23.03 it/sec, obj=-3.62e+3]
    INFO - 13:06:56:     60%|██████    | 60/100 [00:02<00:01, 23.03 it/sec, obj=-3.5e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 2.439216568543729e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     61%|██████    | 61/100 [00:02<00:01, 22.97 it/sec, obj=-3.46e+3]
    INFO - 13:06:56:     62%|██████▏   | 62/100 [00:02<00:01, 22.94 it/sec, obj=-3.34e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 6.1842511238495055e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     63%|██████▎   | 63/100 [00:02<00:01, 22.88 it/sec, obj=-3.36e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 3.6372363218085485e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     64%|██████▍   | 64/100 [00:03<00:01, 21.14 it/sec, obj=-3.19e+3]
    INFO - 13:06:56:     65%|██████▌   | 65/100 [00:03<00:01, 21.10 it/sec, obj=-3.45e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 6.279609664777154e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     66%|██████▌   | 66/100 [00:03<00:01, 21.06 it/sec, obj=-3.45e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 4.405999600169342e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     67%|██████▋   | 67/100 [00:03<00:01, 21.04 it/sec, obj=-3.45e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 2.4425135716984906e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     68%|██████▊   | 68/100 [00:03<00:01, 21.01 it/sec, obj=-3.32e+3]
    INFO - 13:06:56:     69%|██████▉   | 69/100 [00:03<00:01, 21.00 it/sec, obj=-3.42e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 3.662998088252376e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     70%|███████   | 70/100 [00:03<00:01, 20.99 it/sec, obj=-3.54e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 3.981553508096536e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     71%|███████   | 71/100 [00:03<00:01, 20.97 it/sec, obj=-3.3e+3]
 WARNING - 13:06:56: MDAJacobi has reached its maximum number of iterations but the normed residual 1.529222752819427e-06 is still above the tolerance 1e-06.
    INFO - 13:06:56:     72%|███████▏  | 72/100 [00:03<00:01, 20.93 it/sec, obj=-3.34e+3]
    INFO - 13:06:56:     73%|███████▎  | 73/100 [00:03<00:01, 20.89 it/sec, obj=-3.14e+3]
    INFO - 13:06:57:     74%|███████▍  | 74/100 [00:03<00:01, 20.92 it/sec, obj=-3.64e+3]
    INFO - 13:06:57:     75%|███████▌  | 75/100 [00:03<00:01, 20.89 it/sec, obj=-3.39e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 3.6083054685158987e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     76%|███████▌  | 76/100 [00:03<00:01, 20.87 it/sec, obj=-3.11e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 2.712717311801625e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     77%|███████▋  | 77/100 [00:03<00:01, 20.85 it/sec, obj=-3.51e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 2.1988893016520166e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     78%|███████▊  | 78/100 [00:03<00:01, 20.83 it/sec, obj=-3.07e+3]
    INFO - 13:06:57:     79%|███████▉  | 79/100 [00:03<00:01, 20.89 it/sec, obj=-3.69e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 3.3277311553287673e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     80%|████████  | 80/100 [00:03<00:00, 20.86 it/sec, obj=-3.08e+3]
    INFO - 13:06:57:     81%|████████  | 81/100 [00:03<00:00, 20.85 it/sec, obj=-3.39e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 5.388041776135559e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     82%|████████▏ | 82/100 [00:03<00:00, 20.83 it/sec, obj=-3.5e+3]
    INFO - 13:06:57:     83%|████████▎ | 83/100 [00:03<00:00, 20.82 it/sec, obj=-3.08e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 1.3902672321401141e-05 is still above the tolerance 1e-06.
    INFO - 13:06:57:     84%|████████▍ | 84/100 [00:04<00:00, 20.81 it/sec, obj=-3.79e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 8.258646891354083e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     85%|████████▌ | 85/100 [00:04<00:00, 20.80 it/sec, obj=-3.67e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 1.0805763550512402e-05 is still above the tolerance 1e-06.
    INFO - 13:06:57:     86%|████████▌ | 86/100 [00:04<00:00, 20.79 it/sec, obj=-3.87e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 2.9796750242748394e-06 is still above the tolerance 1e-06.
    INFO - 13:06:57:     87%|████████▋ | 87/100 [00:04<00:00, 20.78 it/sec, obj=-3.38e+3]
    INFO - 13:06:57:     88%|████████▊ | 88/100 [00:04<00:00, 20.80 it/sec, obj=-3.96e+3]
    INFO - 13:06:57:     89%|████████▉ | 89/100 [00:04<00:00, 20.82 it/sec, obj=-3.94e+3]
    INFO - 13:06:57:     90%|█████████ | 90/100 [00:04<00:00, 20.81 it/sec, obj=-3.96e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 1.7338183877226514e-05 is still above the tolerance 1e-06.
    INFO - 13:06:57:     91%|█████████ | 91/100 [00:04<00:00, 20.75 it/sec, obj=-3.92e+3]
 WARNING - 13:06:57: MDAJacobi has reached its maximum number of iterations but the normed residual 1.5198708905547502e-05 is still above the tolerance 1e-06.
    INFO - 13:06:57:     92%|█████████▏| 92/100 [00:04<00:00, 20.74 it/sec, obj=-3.9e+3]
    INFO - 13:06:57:     93%|█████████▎| 93/100 [00:04<00:00, 20.76 it/sec, obj=-3.96e+3]
    INFO - 13:06:58:     94%|█████████▍| 94/100 [00:04<00:00, 20.78 it/sec, obj=-3.92e+3]
    INFO - 13:06:58:     95%|█████████▌| 95/100 [00:04<00:00, 20.80 it/sec, obj=-3.96e+3]
    INFO - 13:06:58:     96%|█████████▌| 96/100 [00:04<00:00, 20.81 it/sec, obj=-3.94e+3]
    INFO - 13:06:58:     97%|█████████▋| 97/100 [00:04<00:00, 20.82 it/sec, obj=-3.92e+3]
    INFO - 13:06:58:     98%|█████████▊| 98/100 [00:04<00:00, 20.85 it/sec, obj=-3.92e+3]
    INFO - 13:06:58:     99%|█████████▉| 99/100 [00:04<00:00, 20.88 it/sec, obj=-3.91e+3]
 WARNING - 13:06:58: MDAJacobi has reached its maximum number of iterations but the normed residual 1.842849391330206e-05 is still above the tolerance 1e-06.
    INFO - 13:06:58:    100%|██████████| 100/100 [00:04<00:00, 20.86 it/sec, obj=-3.93e+3]
    INFO - 13:06:58: Optimization result:
    INFO - 13:06:58:    Optimizer info:
    INFO - 13:06:58:       Status: None
    INFO - 13:06:58:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:06:58:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:06:58:    Solution:
    INFO - 13:06:58:       The solution is feasible.
    INFO - 13:06:58:       Objective: -3963.3793053483255
    INFO - 13:06:58:       Standardized constraints:
    INFO - 13:06:58:          g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
    INFO - 13:06:58:  -0.10279135]
    INFO - 13:06:58:          g_2 = 0.0
    INFO - 13:06:58:          g_3 = [-7.67185581e-01 -2.32814419e-01 -1.20219524e-06 -1.83255000e-01]
    INFO - 13:06:58:       Design space:
    INFO - 13:06:58:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:58:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:06:58:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:58:          | x_shared[0] |     0.01    | 0.05999999999999999 |     0.09    | float |
    INFO - 13:06:58:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 13:06:58:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 13:06:58:          | x_shared[3] |     2.5     |  2.500000000000015  |     8.5     | float |
    INFO - 13:06:58:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 13:06:58:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 13:06:58:          | x_1[0]      |     0.1     |         0.4         |     0.4     | float |
    INFO - 13:06:58:          | x_1[1]      |     0.75    |  0.7500000000000009 |     1.25    | float |
    INFO - 13:06:58:          | x_2         |     0.75    |  0.7500000000000089 |     1.25    | float |
    INFO - 13:06:58:          | x_3         |     0.1     |  0.1562445578095981 |      1      | float |
    INFO - 13:06:58:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:06:58: *** End MDOScenario execution (time: 0:00:04.803692) ***

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:06:59: Compilation of the output function JAXSobieskiChain: 0:00:00.378075 seconds.
    INFO - 13:06:59: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.202048 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:06:59: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:59: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:59: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:59: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:59: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
    INFO - 13:06:59:  
    INFO - 13:06:59: *** Start MDOScenario execution ***
    INFO - 13:06:59: MDOScenario
    INFO - 13:06:59:    Disciplines: JAXSobieskiChain
    INFO - 13:06:59:    MDO formulation: MDF
    INFO - 13:06:59: Optimization problem:
    INFO - 13:06:59:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:06:59:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:06:59:    subject to constraints:
    INFO - 13:06:59:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:59:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:59:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:06:59:    over the design space:
    INFO - 13:06:59:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:59:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:06:59:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:59:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:06:59:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:06:59:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:06:59:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:06:59:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:06:59:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:06:59:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:06:59:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:59:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:06:59:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:06:59:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:06:59: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 13:06:59:      1%|          | 1/100 [00:00<00:00, 255.17 it/sec, obj=-536]
    INFO - 13:06:59:      2%|         | 2/100 [00:00<00:00, 194.90 it/sec, obj=-539]
    INFO - 13:06:59:      3%|         | 3/100 [00:00<00:00, 194.46 it/sec, obj=-763]
    INFO - 13:06:59:      4%|         | 4/100 [00:00<00:00, 194.04 it/sec, obj=-713]
    INFO - 13:06:59:      5%|         | 5/100 [00:00<00:00, 191.35 it/sec, obj=-687]
    INFO - 13:06:59:      6%|         | 6/100 [00:00<00:00, 190.13 it/sec, obj=-897]
    INFO - 13:06:59:      7%|         | 7/100 [00:00<00:00, 187.16 it/sec, obj=-957]
    INFO - 13:06:59:      8%|         | 8/100 [00:00<00:00, 185.44 it/sec, obj=-956]
    INFO - 13:06:59:      9%|         | 9/100 [00:00<00:00, 177.89 it/sec, obj=-930]
    INFO - 13:06:59:     10%|         | 10/100 [00:00<00:00, 177.69 it/sec, obj=-943]
    INFO - 13:06:59:     11%|         | 11/100 [00:00<00:00, 177.20 it/sec, obj=-768]
    INFO - 13:06:59:     12%|█▏        | 12/100 [00:00<00:00, 174.22 it/sec, obj=-1e+3]
    INFO - 13:06:59:     13%|█▎        | 13/100 [00:00<00:00, 171.27 it/sec, obj=-1.34e+3]
    INFO - 13:06:59:     14%|█▍        | 14/100 [00:00<00:00, 166.55 it/sec, obj=-1.85e+3]
 WARNING - 13:06:59: MDAGaussSeidel has reached its maximum number of iterations but the normed residual 1.5897449643940727e-05 is still above the tolerance 1e-06.
    INFO - 13:06:59:     15%|█▌        | 15/100 [00:00<00:00, 162.27 it/sec, obj=-1.87e+3]
 WARNING - 13:07:00: MDAGaussSeidel has reached its maximum number of iterations but the normed residual 3.1764060178304437e-06 is still above the tolerance 1e-06.
    INFO - 13:07:00:     16%|█▌        | 16/100 [00:00<00:00, 158.81 it/sec, obj=-1.99e+3]
 WARNING - 13:07:00: MDAGaussSeidel has reached its maximum number of iterations but the normed residual 1.2161314217002324e-06 is still above the tolerance 1e-06.
    INFO - 13:07:00:     17%|█▋        | 17/100 [00:00<00:00, 155.25 it/sec, obj=-2.18e+3]
    INFO - 13:07:00:     18%|█▊        | 18/100 [00:00<00:00, 151.90 it/sec, obj=-2.51e+3]
    INFO - 13:07:00:     19%|█▉        | 19/100 [00:00<00:00, 150.57 it/sec, obj=-2.92e+3]
    INFO - 13:07:00:     20%|██        | 20/100 [00:00<00:00, 149.72 it/sec, obj=-3.03e+3]
    INFO - 13:07:00:     21%|██        | 21/100 [00:00<00:00, 150.57 it/sec, obj=-3.16e+3]
    INFO - 13:07:00:     22%|██▏       | 22/100 [00:00<00:00, 148.54 it/sec, obj=-2.75e+3]
    INFO - 13:07:00:     23%|██▎       | 23/100 [00:00<00:00, 148.33 it/sec, obj=-2.61e+3]
    INFO - 13:07:00:     24%|██▍       | 24/100 [00:00<00:00, 148.19 it/sec, obj=-2.22e+3]
    INFO - 13:07:00:     25%|██▌       | 25/100 [00:00<00:00, 148.79 it/sec, obj=-2.95e+3]
    INFO - 13:07:00:     26%|██▌       | 26/100 [00:00<00:00, 149.96 it/sec, obj=-3.3e+3]
    INFO - 13:07:00:     27%|██▋       | 27/100 [00:00<00:00, 151.22 it/sec, obj=-3.22e+3]
    INFO - 13:07:00:     28%|██▊       | 28/100 [00:00<00:00, 150.97 it/sec, obj=-3.79e+3]
    INFO - 13:07:00:     29%|██▉       | 29/100 [00:00<00:00, 150.77 it/sec, obj=-3.59e+3]
    INFO - 13:07:00:     30%|███       | 30/100 [00:00<00:00, 150.55 it/sec, obj=-3.63e+3]
    INFO - 13:07:00:     31%|███       | 31/100 [00:00<00:00, 150.15 it/sec, obj=-3.69e+3]
    INFO - 13:07:00:     32%|███▏      | 32/100 [00:00<00:00, 150.10 it/sec, obj=-3.42e+3]
    INFO - 13:07:00:     33%|███▎      | 33/100 [00:00<00:00, 150.63 it/sec, obj=-3.47e+3]
    INFO - 13:07:00:     34%|███▍      | 34/100 [00:00<00:00, 150.63 it/sec, obj=-3.21e+3]
    INFO - 13:07:00:     35%|███▌      | 35/100 [00:00<00:00, 150.21 it/sec, obj=-3.94e+3]
    INFO - 13:07:00:     36%|███▌      | 36/100 [00:00<00:00, 149.88 it/sec, obj=-3.21e+3]
    INFO - 13:07:00:     37%|███▋      | 37/100 [00:00<00:00, 149.47 it/sec, obj=-3.31e+3]
    INFO - 13:07:00:     38%|███▊      | 38/100 [00:00<00:00, 148.84 it/sec, obj=-3.31e+3]
    INFO - 13:07:00:     39%|███▉      | 39/100 [00:00<00:00, 148.38 it/sec, obj=-3.26e+3]
    INFO - 13:07:00:     40%|████      | 40/100 [00:00<00:00, 148.26 it/sec, obj=-3.39e+3]
    INFO - 13:07:00:     41%|████      | 41/100 [00:00<00:00, 147.94 it/sec, obj=-3.37e+3]
    INFO - 13:07:00:     42%|████▏     | 42/100 [00:00<00:00, 147.71 it/sec, obj=-3.55e+3]
    INFO - 13:07:00:     43%|████▎     | 43/100 [00:00<00:00, 147.25 it/sec, obj=-3.22e+3]
    INFO - 13:07:00:     44%|████▍     | 44/100 [00:00<00:00, 147.17 it/sec, obj=-2.8e+3]
    INFO - 13:07:00:     45%|████▌     | 45/100 [00:00<00:00, 147.17 it/sec, obj=-3.54e+3]
    INFO - 13:07:00:     46%|████▌     | 46/100 [00:00<00:00, 147.15 it/sec, obj=-3.83e+3]
    INFO - 13:07:00:     47%|████▋     | 47/100 [00:00<00:00, 146.89 it/sec, obj=-3.25e+3]
    INFO - 13:07:00:     48%|████▊     | 48/100 [00:00<00:00, 146.47 it/sec, obj=-3.36e+3]
    INFO - 13:07:00:     49%|████▉     | 49/100 [00:00<00:00, 146.01 it/sec, obj=-3.53e+3]
    INFO - 13:07:00:     50%|█████     | 50/100 [00:00<00:00, 145.85 it/sec, obj=-3.5e+3]
    INFO - 13:07:00:     51%|█████     | 51/100 [00:00<00:00, 145.77 it/sec, obj=-3.57e+3]
    INFO - 13:07:00:     52%|█████▏    | 52/100 [00:00<00:00, 145.51 it/sec, obj=-3.94e+3]
    INFO - 13:07:00:     53%|█████▎    | 53/100 [00:00<00:00, 145.40 it/sec, obj=-3.22e+3]
    INFO - 13:07:00:     54%|█████▍    | 54/100 [00:00<00:00, 145.25 it/sec, obj=-3.94e+3]
    INFO - 13:07:00:     55%|█████▌    | 55/100 [00:00<00:00, 145.14 it/sec, obj=-3.94e+3]
    INFO - 13:07:00:     56%|█████▌    | 56/100 [00:00<00:00, 145.00 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     57%|█████▋    | 57/100 [00:00<00:00, 144.51 it/sec, obj=-3.52e+3]
    INFO - 13:07:00:     58%|█████▊    | 58/100 [00:00<00:00, 144.34 it/sec, obj=-3.72e+3]
    INFO - 13:07:00:     59%|█████▉    | 59/100 [00:00<00:00, 144.39 it/sec, obj=-3.34e+3]
    INFO - 13:07:00:     60%|██████    | 60/100 [00:00<00:00, 144.41 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     61%|██████    | 61/100 [00:00<00:00, 144.47 it/sec, obj=-3.84e+3]
    INFO - 13:07:00:     62%|██████▏   | 62/100 [00:00<00:00, 144.64 it/sec, obj=-4.29e+3]
    INFO - 13:07:00:     63%|██████▎   | 63/100 [00:00<00:00, 144.79 it/sec, obj=-3.27e+3]
    INFO - 13:07:00:     64%|██████▍   | 64/100 [00:00<00:00, 144.96 it/sec, obj=-4.07e+3]
    INFO - 13:07:00:     65%|██████▌   | 65/100 [00:00<00:00, 145.05 it/sec, obj=-3.09e+3]
    INFO - 13:07:00:     66%|██████▌   | 66/100 [00:00<00:00, 145.04 it/sec, obj=-4.22e+3]
    INFO - 13:07:00:     67%|██████▋   | 67/100 [00:00<00:00, 145.07 it/sec, obj=-4e+3]
    INFO - 13:07:00:     68%|██████▊   | 68/100 [00:00<00:00, 144.92 it/sec, obj=-3.53e+3]
    INFO - 13:07:00:     69%|██████▉   | 69/100 [00:00<00:00, 145.02 it/sec, obj=-4.2e+3]
    INFO - 13:07:00:     70%|███████   | 70/100 [00:00<00:00, 145.15 it/sec, obj=-3.67e+3]
    INFO - 13:07:00:     71%|███████   | 71/100 [00:00<00:00, 145.10 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     72%|███████▏  | 72/100 [00:00<00:00, 145.10 it/sec, obj=-3.76e+3]
    INFO - 13:07:00:     73%|███████▎  | 73/100 [00:00<00:00, 145.14 it/sec, obj=-3.77e+3]
    INFO - 13:07:00:     74%|███████▍  | 74/100 [00:00<00:00, 145.18 it/sec, obj=-3.85e+3]
    INFO - 13:07:00:     75%|███████▌  | 75/100 [00:00<00:00, 145.11 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     76%|███████▌  | 76/100 [00:00<00:00, 145.04 it/sec, obj=-3.76e+3]
    INFO - 13:07:00:     77%|███████▋  | 77/100 [00:00<00:00, 144.98 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     78%|███████▊  | 78/100 [00:00<00:00, 144.91 it/sec, obj=-3.66e+3]
    INFO - 13:07:00:     79%|███████▉  | 79/100 [00:00<00:00, 144.90 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     80%|████████  | 80/100 [00:00<00:00, 144.74 it/sec, obj=-3.65e+3]
    INFO - 13:07:00:     81%|████████  | 81/100 [00:00<00:00, 144.80 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     82%|████████▏ | 82/100 [00:00<00:00, 144.86 it/sec, obj=-3.76e+3]
    INFO - 13:07:00:     83%|████████▎ | 83/100 [00:00<00:00, 144.86 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     84%|████████▍ | 84/100 [00:00<00:00, 144.82 it/sec, obj=-3.58e+3]
    INFO - 13:07:00:     85%|████████▌ | 85/100 [00:00<00:00, 144.85 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     86%|████████▌ | 86/100 [00:00<00:00, 144.91 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     87%|████████▋ | 87/100 [00:00<00:00, 145.06 it/sec, obj=-3.91e+3]
    INFO - 13:07:00:     88%|████████▊ | 88/100 [00:00<00:00, 145.11 it/sec, obj=-3.93e+3]
    INFO - 13:07:00:     89%|████████▉ | 89/100 [00:00<00:00, 144.73 it/sec, obj=-3.97e+3]
    INFO - 13:07:00:     90%|█████████ | 90/100 [00:00<00:00, 144.73 it/sec, obj=-3.92e+3]
    INFO - 13:07:00:     91%|█████████ | 91/100 [00:00<00:00, 144.80 it/sec, obj=-3.96e+3]
    INFO - 13:07:00:     92%|█████████▏| 92/100 [00:00<00:00, 144.85 it/sec, obj=-3.95e+3]
    INFO - 13:07:00:     93%|█████████▎| 93/100 [00:00<00:00, 144.91 it/sec, obj=-3.95e+3]
    INFO - 13:07:00:     94%|█████████▍| 94/100 [00:00<00:00, 144.98 it/sec, obj=-3.95e+3]
    INFO - 13:07:00:     95%|█████████▌| 95/100 [00:00<00:00, 145.08 it/sec, obj=-3.91e+3]
    INFO - 13:07:00:     96%|█████████▌| 96/100 [00:00<00:00, 145.19 it/sec, obj=-3.96e+3]
    INFO - 13:07:00:     97%|█████████▋| 97/100 [00:00<00:00, 145.26 it/sec, obj=-3.96e+3]
    INFO - 13:07:00:     98%|█████████▊| 98/100 [00:00<00:00, 145.31 it/sec, obj=-3.96e+3]
    INFO - 13:07:00:     99%|█████████▉| 99/100 [00:00<00:00, 145.27 it/sec, obj=-3.96e+3]
    INFO - 13:07:00:    100%|██████████| 100/100 [00:00<00:00, 145.33 it/sec, obj=-3.96e+3]
    INFO - 13:07:00: Optimization result:
    INFO - 13:07:00:    Optimizer info:
    INFO - 13:07:00:       Status: None
    INFO - 13:07:00:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:07:00:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:07:00:    Solution:
    INFO - 13:07:00:       The solution is feasible.
    INFO - 13:07:00:       Objective: -3960.4216625697427
    INFO - 13:07:00:       Standardized constraints:
    INFO - 13:07:00:          g_1 = [-0.05722668 -0.06051502 -0.06502273 -0.06864369 -0.07143946 -0.10339509
    INFO - 13:07:00:  -0.13660491]
    INFO - 13:07:00:          g_2 = -2.220446049250313e-16
    INFO - 13:07:00:          g_3 = [-7.67261040e-01 -2.32738960e-01 -7.20534743e-14 -1.83255000e-01]
    INFO - 13:07:00:       Design space:
    INFO - 13:07:00:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:07:00:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:07:00:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:07:00:          | x_shared[0] |     0.01    | 0.05999999999999997 |     0.09    | float |
    INFO - 13:07:00:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 13:07:00:          | x_shared[2] |     1.4     |         1.4         |     1.8     | float |
    INFO - 13:07:00:          | x_shared[3] |     2.5     |         2.5         |     8.5     | float |
    INFO - 13:07:00:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 13:07:00:          | x_shared[5] |     500     |         1500        |     1500    | float |
    INFO - 13:07:00:          | x_1[0]      |     0.1     |  0.2198966756241587 |     0.4     | float |
    INFO - 13:07:00:          | x_1[1]      |     0.75    |         0.75        |     1.25    | float |
    INFO - 13:07:00:          | x_2         |     0.75    |         0.75        |     1.25    | float |
    INFO - 13:07:00:          | x_3         |     0.1     |  0.1562447456462762 |      1      | float |
    INFO - 13:07:00:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:07:00: *** End MDOScenario execution (time: 0:00:00.697733) ***

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:07:00: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 13:07:00: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
    INFO - 13:07:00:  
    INFO - 13:07:00: *** Start MDOScenario execution ***
    INFO - 13:07:00: MDOScenario
    INFO - 13:07:00:    Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
    INFO - 13:07:00:    MDO formulation: MDF
    INFO - 13:07:00: Optimization problem:
    INFO - 13:07:00:    minimize -y_4(x_shared, x_1, x_2, x_3)
    INFO - 13:07:00:    with respect to x_1, x_2, x_3, x_shared
    INFO - 13:07:00:    subject to constraints:
    INFO - 13:07:00:       g_1(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:07:00:       g_2(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:07:00:       g_3(x_shared, x_1, x_2, x_3) <= 0
    INFO - 13:07:00:    over the design space:
    INFO - 13:07:00:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:07:00:       | Name        | Lower bound | Value | Upper bound | Type  |
    INFO - 13:07:00:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:07:00:       | x_shared[0] |     0.01    |  0.05 |     0.09    | float |
    INFO - 13:07:00:       | x_shared[1] |    30000    | 45000 |    60000    | float |
    INFO - 13:07:00:       | x_shared[2] |     1.4     |  1.6  |     1.8     | float |
    INFO - 13:07:00:       | x_shared[3] |     2.5     |  5.5  |     8.5     | float |
    INFO - 13:07:00:       | x_shared[4] |      40     |   55  |      70     | float |
    INFO - 13:07:00:       | x_shared[5] |     500     |  1000 |     1500    | float |
    INFO - 13:07:00:       | x_1[0]      |     0.1     |  0.25 |     0.4     | float |
    INFO - 13:07:00:       | x_1[1]      |     0.75    |   1   |     1.25    | float |
    INFO - 13:07:00:       | x_2         |     0.75    |   1   |     1.25    | float |
    INFO - 13:07:00:       | x_3         |     0.1     |  0.5  |      1      | float |
    INFO - 13:07:00:       +-------------+-------------+-------+-------------+-------+
    INFO - 13:07:00: 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:07:00:      1%|          | 1/100 [00:00<00:00, 99.17 it/sec, obj=-536]
    INFO - 13:07:00:      2%|         | 2/100 [00:00<00:01, 76.91 it/sec, obj=-539]
    INFO - 13:07:00:      3%|         | 3/100 [00:00<00:01, 74.64 it/sec, obj=-763]
    INFO - 13:07:00:      4%|         | 4/100 [00:00<00:01, 73.46 it/sec, obj=-713]
    INFO - 13:07:00:      5%|         | 5/100 [00:00<00:01, 73.00 it/sec, obj=-687]
    INFO - 13:07:00:      6%|         | 6/100 [00:00<00:01, 71.46 it/sec, obj=-897]
    INFO - 13:07:00:      7%|         | 7/100 [00:00<00:01, 69.56 it/sec, obj=-957]
    INFO - 13:07:00:      8%|         | 8/100 [00:00<00:01, 67.93 it/sec, obj=-956]
    INFO - 13:07:00:      9%|         | 9/100 [00:00<00:01, 64.56 it/sec, obj=-930]
    INFO - 13:07:00:     10%|         | 10/100 [00:00<00:01, 64.05 it/sec, obj=-943]
    INFO - 13:07:00:     11%|         | 11/100 [00:00<00:01, 63.70 it/sec, obj=-768]
    INFO - 13:07:00:     12%|█▏        | 12/100 [00:00<00:01, 62.95 it/sec, obj=-1e+3]
    INFO - 13:07:00:     13%|█▎        | 13/100 [00:00<00:01, 61.52 it/sec, obj=-1.34e+3]
    INFO - 13:07:00:     14%|█▍        | 14/100 [00:00<00:01, 60.02 it/sec, obj=-1.85e+3]
 WARNING - 13:07:00: MDAGaussSeidel has reached its maximum number of iterations but the normed residual 1.0691449634588397e-05 is still above the tolerance 1e-06.
    INFO - 13:07:00:     15%|█▌        | 15/100 [00:00<00:01, 58.57 it/sec, obj=-1.87e+3]
 WARNING - 13:07:00: MDAGaussSeidel has reached its maximum number of iterations but the normed residual 1.6881473826143826e-06 is still above the tolerance 1e-06.
    INFO - 13:07:00:     16%|█▌        | 16/100 [00:00<00:01, 57.29 it/sec, obj=-1.99e+3]
    INFO - 13:07:00:     17%|█▋        | 17/100 [00:00<00:01, 56.25 it/sec, obj=-2.18e+3]
    INFO - 13:07:00:     18%|█▊        | 18/100 [00:00<00:01, 55.51 it/sec, obj=-2.51e+3]
    INFO - 13:07:00:     19%|█▉        | 19/100 [00:00<00:01, 55.48 it/sec, obj=-2.31e+3]
    INFO - 13:07:00:     20%|██        | 20/100 [00:00<00:01, 55.01 it/sec, obj=-2.06e+3]
    INFO - 13:07:01:     21%|██        | 21/100 [00:00<00:01, 54.99 it/sec, obj=-2.7e+3]
    INFO - 13:07:01:     22%|██▏       | 22/100 [00:00<00:01, 55.41 it/sec, obj=-2.83e+3]
    INFO - 13:07:01:     23%|██▎       | 23/100 [00:00<00:01, 55.94 it/sec, obj=-3.41e+3]
    INFO - 13:07:01:     24%|██▍       | 24/100 [00:00<00:01, 56.72 it/sec, obj=-3.34e+3]
    INFO - 13:07:01:     25%|██▌       | 25/100 [00:00<00:01, 57.17 it/sec, obj=-3.11e+3]
    INFO - 13:07:01:     26%|██▌       | 26/100 [00:00<00:01, 57.06 it/sec, obj=-3.07e+3]
    INFO - 13:07:01:     27%|██▋       | 27/100 [00:00<00:01, 57.50 it/sec, obj=-3.14e+3]
    INFO - 13:07:01:     28%|██▊       | 28/100 [00:00<00:01, 57.77 it/sec, obj=-3e+3]
    INFO - 13:07:01:     29%|██▉       | 29/100 [00:00<00:01, 58.14 it/sec, obj=-3.16e+3]
    INFO - 13:07:01:     30%|███       | 30/100 [00:00<00:01, 58.19 it/sec, obj=-3.34e+3]
    INFO - 13:07:01:     31%|███       | 31/100 [00:00<00:01, 58.35 it/sec, obj=-3.11e+3]
    INFO - 13:07:01:     32%|███▏      | 32/100 [00:00<00:01, 58.36 it/sec, obj=-2.79e+3]
    INFO - 13:07:01:     33%|███▎      | 33/100 [00:00<00:01, 58.43 it/sec, obj=-3.65e+3]
    INFO - 13:07:01:     34%|███▍      | 34/100 [00:00<00:01, 58.74 it/sec, obj=-3.52e+3]
    INFO - 13:07:01:     35%|███▌      | 35/100 [00:00<00:01, 58.74 it/sec, obj=-3.08e+3]
    INFO - 13:07:01:     36%|███▌      | 36/100 [00:00<00:01, 58.84 it/sec, obj=-4.17e+3]
    INFO - 13:07:01:     37%|███▋      | 37/100 [00:00<00:01, 58.81 it/sec, obj=-3.66e+3]
    INFO - 13:07:01:     38%|███▊      | 38/100 [00:00<00:01, 58.87 it/sec, obj=-3.49e+3]
    INFO - 13:07:01:     39%|███▉      | 39/100 [00:00<00:01, 59.13 it/sec, obj=-3.49e+3]
    INFO - 13:07:01:     40%|████      | 40/100 [00:00<00:01, 59.29 it/sec, obj=-4.15e+3]
    INFO - 13:07:01:     41%|████      | 41/100 [00:00<00:00, 59.40 it/sec, obj=-4.27e+3]
    INFO - 13:07:01:     42%|████▏     | 42/100 [00:00<00:00, 59.39 it/sec, obj=-4e+3]
    INFO - 13:07:01:     43%|████▎     | 43/100 [00:00<00:00, 59.35 it/sec, obj=-3.53e+3]
    INFO - 13:07:01:     44%|████▍     | 44/100 [00:00<00:00, 59.49 it/sec, obj=-4.36e+3]
    INFO - 13:07:01:     45%|████▌     | 45/100 [00:00<00:00, 59.64 it/sec, obj=-4.35e+3]
    INFO - 13:07:01:     46%|████▌     | 46/100 [00:00<00:00, 59.69 it/sec, obj=-3.65e+3]
    INFO - 13:07:01:     47%|████▋     | 47/100 [00:00<00:00, 59.74 it/sec, obj=-2.99e+3]
    INFO - 13:07:01:     48%|████▊     | 48/100 [00:00<00:00, 59.77 it/sec, obj=-3.39e+3]
    INFO - 13:07:01:     49%|████▉     | 49/100 [00:00<00:00, 59.88 it/sec, obj=-4.45e+3]
    INFO - 13:07:01:     50%|█████     | 50/100 [00:00<00:00, 59.98 it/sec, obj=-4.08e+3]
    INFO - 13:07:01:     51%|█████     | 51/100 [00:00<00:00, 59.96 it/sec, obj=-3.68e+3]
    INFO - 13:07:01:     52%|█████▏    | 52/100 [00:00<00:00, 60.05 it/sec, obj=-4.42e+3]
    INFO - 13:07:01:     53%|█████▎    | 53/100 [00:00<00:00, 60.24 it/sec, obj=-4.59e+3]
    INFO - 13:07:01:     54%|█████▍    | 54/100 [00:00<00:00, 60.34 it/sec, obj=-4.35e+3]
    INFO - 13:07:01:     55%|█████▌    | 55/100 [00:00<00:00, 60.37 it/sec, obj=-3.93e+3]
    INFO - 13:07:01:     56%|█████▌    | 56/100 [00:00<00:00, 60.47 it/sec, obj=-4.43e+3]
    INFO - 13:07:01:     57%|█████▋    | 57/100 [00:00<00:00, 60.49 it/sec, obj=-3.73e+3]
    INFO - 13:07:01:     58%|█████▊    | 58/100 [00:00<00:00, 60.56 it/sec, obj=-4.43e+3]
    INFO - 13:07:01:     59%|█████▉    | 59/100 [00:00<00:00, 60.65 it/sec, obj=-3.68e+3]
    INFO - 13:07:01:     60%|██████    | 60/100 [00:00<00:00, 60.74 it/sec, obj=-4.42e+3]
    INFO - 13:07:01:     61%|██████    | 61/100 [00:01<00:00, 60.70 it/sec, obj=-3.8e+3]
    INFO - 13:07:01:     62%|██████▏   | 62/100 [00:01<00:00, 60.78 it/sec, obj=-4.42e+3]
    INFO - 13:07:01:     63%|██████▎   | 63/100 [00:01<00:00, 60.90 it/sec, obj=-3.76e+3]
    INFO - 13:07:01:     64%|██████▍   | 64/100 [00:01<00:00, 60.98 it/sec, obj=-4.42e+3]
    INFO - 13:07:01:     65%|██████▌   | 65/100 [00:01<00:00, 61.11 it/sec, obj=-4.52e+3]
    INFO - 13:07:01:     66%|██████▌   | 66/100 [00:01<00:00, 61.18 it/sec, obj=-4.43e+3]
    INFO - 13:07:01:     67%|██████▋   | 67/100 [00:01<00:00, 61.30 it/sec, obj=-3.69e+3]
    INFO - 13:07:01:     68%|██████▊   | 68/100 [00:01<00:00, 61.36 it/sec, obj=-4.42e+3]
    INFO - 13:07:01:     69%|██████▉   | 69/100 [00:01<00:00, 61.48 it/sec, obj=-3.73e+3]
    INFO - 13:07:01:     70%|███████   | 70/100 [00:01<00:00, 61.54 it/sec, obj=-4.42e+3]
    INFO - 13:07:01:     71%|███████   | 71/100 [00:01<00:00, 61.65 it/sec, obj=-4.49e+3]
    INFO - 13:07:01:     72%|███████▏  | 72/100 [00:01<00:00, 61.71 it/sec, obj=-4.43e+3]
    INFO - 13:07:01:     73%|███████▎  | 73/100 [00:01<00:00, 61.76 it/sec, obj=-4.5e+3]
    INFO - 13:07:01:     74%|███████▍  | 74/100 [00:01<00:00, 61.82 it/sec, obj=-4.5e+3]
    INFO - 13:07:01:     75%|███████▌  | 75/100 [00:01<00:00, 61.83 it/sec, obj=-4.25e+3]
    INFO - 13:07:01:     76%|███████▌  | 76/100 [00:01<00:00, 61.88 it/sec, obj=-4.49e+3]
    INFO - 13:07:01:     77%|███████▋  | 77/100 [00:01<00:00, 61.93 it/sec, obj=-4.28e+3]
    INFO - 13:07:01:     78%|███████▊  | 78/100 [00:01<00:00, 61.90 it/sec, obj=-3.92e+3]
    INFO - 13:07:01:     79%|███████▉  | 79/100 [00:01<00:00, 61.84 it/sec, obj=-3.96e+3]
    INFO - 13:07:01:     80%|████████  | 80/100 [00:01<00:00, 61.83 it/sec, obj=-4.38e+3]
    INFO - 13:07:01:     81%|████████  | 81/100 [00:01<00:00, 61.86 it/sec, obj=-4.29e+3]
    INFO - 13:07:01:     82%|████████▏ | 82/100 [00:01<00:00, 61.90 it/sec, obj=-4.49e+3]
    INFO - 13:07:01:     83%|████████▎ | 83/100 [00:01<00:00, 61.94 it/sec, obj=-4.34e+3]
    INFO - 13:07:01:     84%|████████▍ | 84/100 [00:01<00:00, 61.99 it/sec, obj=-4.49e+3]
    INFO - 13:07:01:     85%|████████▌ | 85/100 [00:01<00:00, 62.05 it/sec, obj=-4.22e+3]
    INFO - 13:07:02:     86%|████████▌ | 86/100 [00:01<00:00, 62.09 it/sec, obj=-4.49e+3]
    INFO - 13:07:02:     87%|████████▋ | 87/100 [00:01<00:00, 62.12 it/sec, obj=-4.33e+3]
    INFO - 13:07:02:     88%|████████▊ | 88/100 [00:01<00:00, 62.17 it/sec, obj=-4.49e+3]
    INFO - 13:07:02:     89%|████████▉ | 89/100 [00:01<00:00, 62.20 it/sec, obj=-4.31e+3]
    INFO - 13:07:02:     90%|█████████ | 90/100 [00:01<00:00, 62.24 it/sec, obj=-4.49e+3]
    INFO - 13:07:02:     91%|█████████ | 91/100 [00:01<00:00, 62.28 it/sec, obj=-4.27e+3]
    INFO - 13:07:02:     92%|█████████▏| 92/100 [00:01<00:00, 62.25 it/sec, obj=-4.31e+3]
    INFO - 13:07:02:     93%|█████████▎| 93/100 [00:01<00:00, 62.27 it/sec, obj=-4.32e+3]
    INFO - 13:07:02:     94%|█████████▍| 94/100 [00:01<00:00, 62.30 it/sec, obj=-4.49e+3]
    INFO - 13:07:02:     95%|█████████▌| 95/100 [00:01<00:00, 62.34 it/sec, obj=-4.21e+3]
    INFO - 13:07:02:     96%|█████████▌| 96/100 [00:01<00:00, 62.33 it/sec, obj=-4.49e+3]
    INFO - 13:07:02:     97%|█████████▋| 97/100 [00:01<00:00, 62.36 it/sec, obj=-4.19e+3]
    INFO - 13:07:02:     98%|█████████▊| 98/100 [00:01<00:00, 62.39 it/sec, obj=-4.49e+3]
    INFO - 13:07:02:     99%|█████████▉| 99/100 [00:01<00:00, 62.36 it/sec, obj=-4.13e+3]
    INFO - 13:07:02:    100%|██████████| 100/100 [00:01<00:00, 62.35 it/sec, obj=-4.49e+3]
    INFO - 13:07:02: Optimization result:
    INFO - 13:07:02:    Optimizer info:
    INFO - 13:07:02:       Status: None
    INFO - 13:07:02:       Message: Maximum number of iterations reached. GEMSEO stopped the driver.
    INFO - 13:07:02:       Number of calls to the objective function by the optimizer: 0
    INFO - 13:07:02:    Solution:
    INFO - 13:07:02:       The solution is feasible.
    INFO - 13:07:02:       Objective: -3003.8995230595424
    INFO - 13:07:02:       Standardized constraints:
    INFO - 13:07:02:          g_1 = [-0.18177087 -0.15303684 -0.13797373 -0.12871311 -0.12244655 -0.02429768
    INFO - 13:07:02:  -0.21570232]
    INFO - 13:07:02:          g_2 = -0.002615771711972803
    INFO - 13:07:02:          g_3 = [-0.78613294 -0.21386706 -0.07631583 -0.17779628]
    INFO - 13:07:02:       Design space:
    INFO - 13:07:02:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:07:02:          | Name        | Lower bound |        Value        | Upper bound | Type  |
    INFO - 13:07:02:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:07:02:          | x_shared[0] |     0.01    | 0.05934605707200682 |     0.09    | float |
    INFO - 13:07:02:          | x_shared[1] |    30000    |        60000        |    60000    | float |
    INFO - 13:07:02:          | x_shared[2] |     1.4     |  1.440947137798596  |     1.8     | float |
    INFO - 13:07:02:          | x_shared[3] |     2.5     |  2.682168463995586  |     8.5     | float |
    INFO - 13:07:02:          | x_shared[4] |      40     |          70         |      70     | float |
    INFO - 13:07:02:          | x_shared[5] |     500     |  1315.825005558175  |     1500    | float |
    INFO - 13:07:02:          | x_1[0]      |     0.1     |  0.1000000000000001 |     0.4     | float |
    INFO - 13:07:02:          | x_1[1]      |     0.75    |  0.9200062439484883 |     1.25    | float |
    INFO - 13:07:02:          | x_2         |     0.75    |  0.8112680369735645 |     1.25    | float |
    INFO - 13:07:02:          | x_3         |     0.1     |  0.1498242691956934 |      1      | float |
    INFO - 13:07:02:          +-------------+-------------+---------------------+-------------+-------+
    INFO - 13:07:02: *** End MDOScenario execution (time: 0:00:01.614032) ***

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 25.580 seconds)

Download Python source code: plot_sobieski_mdf.py

Download Jupyter notebook: plot_sobieski_mdf.ipynb

Gallery generated by mkdocs-gallery