Compare JAX and NumPy for the resolution of the Sobieski's SSBJ problem.
Note
Click here to download the full example code
Compare JAX and NumPy for the resolution of the Sobieski's SSBJ problem.
from __future__ import annotations
from gemseo import configure
from gemseo import configure_logger
from gemseo.problems.mdo.sobieski.core.design_space import SobieskiDesignSpace
from gemseo.problems.mdo.sobieski.disciplines import SobieskiAerodynamics
from gemseo.problems.mdo.sobieski.disciplines import SobieskiMission
from gemseo.problems.mdo.sobieski.disciplines import SobieskiPropulsion
from gemseo.problems.mdo.sobieski.disciplines import SobieskiStructure
from gemseo.scenarios.doe_scenario import DOEScenario
from gemseo.scenarios.mdo_scenario import MDOScenario
from gemseo_jax.problems.sobieski.chain import JAXSobieskiChain
# Deactivate some checkers to speed up calculations in presence of cheap disciplines.
configure(False, False, True, False, False, False, False)
configure_logger()
Out:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/caches/_hdf5_file_singleton.py:36: DeprecationWarning: numpy.core.multiarray is deprecated and has been renamed to numpy._core.multiarray. The numpy._core namespace contains private NumPy internals and its use is discouraged, as NumPy internals can change without warning in any release. In practice, most real-world usage of numpy.core is to access functionality in the public NumPy API. If that is the case, use the public NumPy API. If not, you are using NumPy internals. If you would still like to access an internal attribute, use numpy._core.multiarray.array.
from numpy.core.multiarray import array
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type swigvarlink has no __module__ attribute
/usr/lib64/python3.12/importlib/__init__.py:90: DeprecationWarning: The numpy.linalg.linalg has been made private and renamed to numpy.linalg._linalg. All public functions exported by it are available from numpy.linalg. Please use numpy.linalg.norm instead.
return _bootstrap._gcd_import(name[level:], package, level)
<RootLogger root (INFO)>
DOE¶
MDF with MDAJacobi¶
Solve the Sobieski's SSBJ problem with JAX¶
chain = JAXSobieskiChain()
doe_scenario = DOEScenario(
[chain],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)
Out:
INFO:2025-07-16 12:32:10,369:jax._src.xla_bridge:927: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
INFO - 12:32:10: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
INFO:2025-07-16 12:32:10,370:jax._src.xla_bridge:927: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
INFO - 12:32:10: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
INFO - 12:32:12: Compilation of the output function JAXSobieskiChain: 0:00:00.371444 seconds.
INFO - 12:32:12: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.364425 seconds.
INFO - 12:32:12: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:12: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:12: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:12: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:12: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:12: *** Start DOEScenario execution ***
INFO - 12:32:12: DOEScenario
INFO - 12:32:12: Disciplines: JAXSobieskiChain
INFO - 12:32:12: MDO formulation: MDF
INFO - 12:32:12: Optimization problem:
INFO - 12:32:12: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:12: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:12: under the inequality constraints
INFO - 12:32:12: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:12: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:12: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:12: over the design space:
INFO - 12:32:12: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:12: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:12: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:12: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:12: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:12: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:12: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:12: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:12: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:12: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:12: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:12: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:12: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:12: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:12: Solving optimization problem with algorithm OT_OPT_LHS:
INFO - 12:32:12: 1%| | 1/100 [00:00<00:00, 164.22 it/sec, obj=-1.25e+3]
INFO - 12:32:12: 2%|▏ | 2/100 [00:00<00:00, 200.48 it/sec, obj=-303]
INFO - 12:32:12: 3%|▎ | 3/100 [00:00<00:00, 192.04 it/sec, obj=-447]
INFO - 12:32:12: 4%|▍ | 4/100 [00:00<00:00, 195.13 it/sec, obj=-444]
INFO - 12:32:12: 5%|▌ | 5/100 [00:00<00:00, 203.78 it/sec, obj=-804]
INFO - 12:32:12: 6%|▌ | 6/100 [00:00<00:00, 210.38 it/sec, obj=-232]
INFO - 12:32:12: 7%|▋ | 7/100 [00:00<00:00, 214.50 it/sec, obj=-701]
INFO - 12:32:12: 8%|▊ | 8/100 [00:00<00:00, 217.31 it/sec, obj=-253]
INFO - 12:32:12: 9%|▉ | 9/100 [00:00<00:00, 223.34 it/sec, obj=-773]
INFO - 12:32:12: 10%|█ | 10/100 [00:00<00:00, 224.77 it/sec, obj=-448]
INFO - 12:32:12: 11%|█ | 11/100 [00:00<00:00, 222.56 it/sec, obj=-659]
INFO - 12:32:12: 12%|█▏ | 12/100 [00:00<00:00, 224.14 it/sec, obj=-282]
INFO - 12:32:12: 13%|█▎ | 13/100 [00:00<00:00, 225.57 it/sec, obj=-387]
INFO - 12:32:12: 14%|█▍ | 14/100 [00:00<00:00, 229.41 it/sec, obj=-379]
INFO - 12:32:12: 15%|█▌ | 15/100 [00:00<00:00, 227.72 it/sec, obj=-196]
INFO - 12:32:12: 16%|█▌ | 16/100 [00:00<00:00, 226.12 it/sec, obj=-647]
INFO - 12:32:12: 17%|█▋ | 17/100 [00:00<00:00, 223.11 it/sec, obj=-238]
INFO - 12:32:12: 18%|█▊ | 18/100 [00:00<00:00, 223.96 it/sec, obj=-304]
INFO - 12:32:12: 19%|█▉ | 19/100 [00:00<00:00, 222.81 it/sec, obj=-372]
INFO - 12:32:12: 20%|██ | 20/100 [00:00<00:00, 225.26 it/sec, obj=-699]
INFO - 12:32:12: 21%|██ | 21/100 [00:00<00:00, 225.82 it/sec, obj=-873]
INFO - 12:32:12: 22%|██▏ | 22/100 [00:00<00:00, 226.11 it/sec, obj=-489]
INFO - 12:32:12: 23%|██▎ | 23/100 [00:00<00:00, 224.93 it/sec, obj=-623]
INFO - 12:32:12: 24%|██▍ | 24/100 [00:00<00:00, 227.19 it/sec, obj=-262]
INFO - 12:32:12: 25%|██▌ | 25/100 [00:00<00:00, 229.18 it/sec, obj=-345]
INFO - 12:32:12: 26%|██▌ | 26/100 [00:00<00:00, 228.02 it/sec, obj=-377]
INFO - 12:32:12: 27%|██▋ | 27/100 [00:00<00:00, 228.06 it/sec, obj=-387]
INFO - 12:32:13: 28%|██▊ | 28/100 [00:00<00:00, 225.80 it/sec, obj=-334]
INFO - 12:32:13: 29%|██▉ | 29/100 [00:00<00:00, 227.46 it/sec, obj=-438]
INFO - 12:32:13: 30%|███ | 30/100 [00:00<00:00, 229.10 it/sec, obj=-1.94e+3]
INFO - 12:32:13: 31%|███ | 31/100 [00:00<00:00, 229.44 it/sec, obj=-733]
INFO - 12:32:13: 32%|███▏ | 32/100 [00:00<00:00, 229.84 it/sec, obj=-774]
INFO - 12:32:13: 33%|███▎ | 33/100 [00:00<00:00, 228.93 it/sec, obj=-517]
INFO - 12:32:13: 34%|███▍ | 34/100 [00:00<00:00, 230.32 it/sec, obj=-232]
INFO - 12:32:13: 35%|███▌ | 35/100 [00:00<00:00, 229.28 it/sec, obj=-195]
INFO - 12:32:13: 36%|███▌ | 36/100 [00:00<00:00, 229.46 it/sec, obj=-218]
INFO - 12:32:13: 37%|███▋ | 37/100 [00:00<00:00, 228.01 it/sec, obj=-198]
INFO - 12:32:13: 38%|███▊ | 38/100 [00:00<00:00, 224.97 it/sec, obj=-536]
INFO - 12:32:13: 39%|███▉ | 39/100 [00:00<00:00, 223.06 it/sec, obj=-173]
INFO - 12:32:13: 40%|████ | 40/100 [00:00<00:00, 223.44 it/sec, obj=-388]
INFO - 12:32:13: 41%|████ | 41/100 [00:00<00:00, 222.96 it/sec, obj=-723]
INFO - 12:32:13: 42%|████▏ | 42/100 [00:00<00:00, 220.32 it/sec, obj=-240]
INFO - 12:32:13: 43%|████▎ | 43/100 [00:00<00:00, 218.30 it/sec, obj=-663]
INFO - 12:32:13: 44%|████▍ | 44/100 [00:00<00:00, 217.36 it/sec, obj=-1.14e+3]
INFO - 12:32:13: 45%|████▌ | 45/100 [00:00<00:00, 217.75 it/sec, obj=-438]
INFO - 12:32:13: 46%|████▌ | 46/100 [00:00<00:00, 217.10 it/sec, obj=-301]
INFO - 12:32:13: 47%|████▋ | 47/100 [00:00<00:00, 217.18 it/sec, obj=-682]
INFO - 12:32:13: 48%|████▊ | 48/100 [00:00<00:00, 215.12 it/sec, obj=-750]
INFO - 12:32:13: 49%|████▉ | 49/100 [00:00<00:00, 212.53 it/sec, obj=-789]
INFO - 12:32:13: 50%|█████ | 50/100 [00:00<00:00, 209.20 it/sec, obj=-395]
INFO - 12:32:13: 51%|█████ | 51/100 [00:00<00:00, 206.15 it/sec, obj=-407]
INFO - 12:32:13: 52%|█████▏ | 52/100 [00:00<00:00, 206.26 it/sec, obj=-315]
INFO - 12:32:13: 53%|█████▎ | 53/100 [00:00<00:00, 204.72 it/sec, obj=-337]
INFO - 12:32:13: 54%|█████▍ | 54/100 [00:00<00:00, 204.50 it/sec, obj=-414]
INFO - 12:32:13: 55%|█████▌ | 55/100 [00:00<00:00, 203.27 it/sec, obj=-240]
INFO - 12:32:13: 56%|█████▌ | 56/100 [00:00<00:00, 204.09 it/sec, obj=-297]
INFO - 12:32:13: 57%|█████▋ | 57/100 [00:00<00:00, 204.45 it/sec, obj=-442]
INFO - 12:32:13: 58%|█████▊ | 58/100 [00:00<00:00, 204.24 it/sec, obj=-233]
INFO - 12:32:13: 59%|█████▉ | 59/100 [00:00<00:00, 203.69 it/sec, obj=-519]
INFO - 12:32:13: 60%|██████ | 60/100 [00:00<00:00, 202.27 it/sec, obj=-920]
INFO - 12:32:13: 61%|██████ | 61/100 [00:00<00:00, 202.06 it/sec, obj=-517]
INFO - 12:32:13: 62%|██████▏ | 62/100 [00:00<00:00, 202.51 it/sec, obj=-390]
INFO - 12:32:13: 63%|██████▎ | 63/100 [00:00<00:00, 201.77 it/sec, obj=-434]
INFO - 12:32:13: 64%|██████▍ | 64/100 [00:00<00:00, 201.75 it/sec, obj=-244]
INFO - 12:32:13: 65%|██████▌ | 65/100 [00:00<00:00, 201.33 it/sec, obj=-192]
INFO - 12:32:13: 66%|██████▌ | 66/100 [00:00<00:00, 201.76 it/sec, obj=-305]
INFO - 12:32:13: 67%|██████▋ | 67/100 [00:00<00:00, 201.14 it/sec, obj=-393]
INFO - 12:32:13: 68%|██████▊ | 68/100 [00:00<00:00, 201.43 it/sec, obj=-307]
INFO - 12:32:13: 69%|██████▉ | 69/100 [00:00<00:00, 201.87 it/sec, obj=-328]
INFO - 12:32:13: 70%|███████ | 70/100 [00:00<00:00, 201.82 it/sec, obj=-998]
INFO - 12:32:13: 71%|███████ | 71/100 [00:00<00:00, 202.04 it/sec, obj=-1.06e+3]
INFO - 12:32:13: 72%|███████▏ | 72/100 [00:00<00:00, 202.20 it/sec, obj=-707]
INFO - 12:32:13: 73%|███████▎ | 73/100 [00:00<00:00, 203.04 it/sec, obj=-897]
INFO - 12:32:13: 74%|███████▍ | 74/100 [00:00<00:00, 203.86 it/sec, obj=-1.36e+3]
INFO - 12:32:13: 75%|███████▌ | 75/100 [00:00<00:00, 204.23 it/sec, obj=-853]
INFO - 12:32:13: 76%|███████▌ | 76/100 [00:00<00:00, 203.48 it/sec, obj=-217]
INFO - 12:32:13: 77%|███████▋ | 77/100 [00:00<00:00, 203.16 it/sec, obj=-370]
INFO - 12:32:13: 78%|███████▊ | 78/100 [00:00<00:00, 203.26 it/sec, obj=-636]
INFO - 12:32:13: 79%|███████▉ | 79/100 [00:00<00:00, 203.46 it/sec, obj=-337]
INFO - 12:32:13: 80%|████████ | 80/100 [00:00<00:00, 203.64 it/sec, obj=-804]
INFO - 12:32:13: 81%|████████ | 81/100 [00:00<00:00, 203.19 it/sec, obj=-318]
INFO - 12:32:13: 82%|████████▏ | 82/100 [00:00<00:00, 202.79 it/sec, obj=-253]
INFO - 12:32:13: 83%|████████▎ | 83/100 [00:00<00:00, 202.79 it/sec, obj=-590]
INFO - 12:32:13: 84%|████████▍ | 84/100 [00:00<00:00, 201.00 it/sec, obj=-438]
INFO - 12:32:13: 85%|████████▌ | 85/100 [00:00<00:00, 200.18 it/sec, obj=-642]
INFO - 12:32:13: 86%|████████▌ | 86/100 [00:00<00:00, 200.55 it/sec, obj=-381]
INFO - 12:32:13: 87%|████████▋ | 87/100 [00:00<00:00, 200.47 it/sec, obj=-447]
INFO - 12:32:13: 88%|████████▊ | 88/100 [00:00<00:00, 200.40 it/sec, obj=-707]
INFO - 12:32:13: 89%|████████▉ | 89/100 [00:00<00:00, 201.13 it/sec, obj=-384]
INFO - 12:32:13: 90%|█████████ | 90/100 [00:00<00:00, 201.54 it/sec, obj=-491]
INFO - 12:32:13: 91%|█████████ | 91/100 [00:00<00:00, 201.82 it/sec, obj=-285]
INFO - 12:32:13: 92%|█████████▏| 92/100 [00:00<00:00, 201.80 it/sec, obj=-433]
INFO - 12:32:13: 93%|█████████▎| 93/100 [00:00<00:00, 201.80 it/sec, obj=-377]
INFO - 12:32:13: 94%|█████████▍| 94/100 [00:00<00:00, 202.15 it/sec, obj=-827]
INFO - 12:32:13: 95%|█████████▌| 95/100 [00:00<00:00, 202.16 it/sec, obj=-712]
INFO - 12:32:13: 96%|█████████▌| 96/100 [00:00<00:00, 201.52 it/sec, obj=-245]
INFO - 12:32:13: 97%|█████████▋| 97/100 [00:00<00:00, 201.85 it/sec, obj=-502]
INFO - 12:32:13: 98%|█████████▊| 98/100 [00:00<00:00, 200.15 it/sec, obj=-309]
INFO - 12:32:13: 99%|█████████▉| 99/100 [00:00<00:00, 200.02 it/sec, obj=-971]
INFO - 12:32:13: 100%|██████████| 100/100 [00:00<00:00, 199.95 it/sec, obj=-649]
INFO - 12:32:13: Optimization result:
INFO - 12:32:13: Optimizer info:
INFO - 12:32:13: Status: None
INFO - 12:32:13: Message: None
INFO - 12:32:13: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:13: Solution:
INFO - 12:32:13: The solution is feasible.
INFO - 12:32:13: Objective: -659.1819334138517
INFO - 12:32:13: Standardized constraints:
INFO - 12:32:13: g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
INFO - 12:32:13: -0.19803381]
INFO - 12:32:13: g_2 = -0.007088218675791014
INFO - 12:32:13: g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
INFO - 12:32:13: Design space:
INFO - 12:32:13: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:13: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:13: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:13: | x_shared[0] | 0.01 | 0.05822794533105225 | 0.09 | float |
INFO - 12:32:13: | x_shared[1] | 30000 | 44461.15862672209 | 60000 | float |
INFO - 12:32:13: | x_shared[2] | 1.4 | 1.58903403609043 | 1.8 | float |
INFO - 12:32:13: | x_shared[3] | 2.5 | 2.757102870923486 | 8.5 | float |
INFO - 12:32:13: | x_shared[4] | 40 | 68.73596231164589 | 70 | float |
INFO - 12:32:13: | x_shared[5] | 500 | 723.9554384869837 | 1500 | float |
INFO - 12:32:13: | x_1[0] | 0.1 | 0.2359336189021384 | 0.4 | float |
INFO - 12:32:13: | x_1[1] | 0.75 | 0.8931955972189334 | 1.25 | float |
INFO - 12:32:13: | x_2 | 0.75 | 0.9978936102804572 | 1.25 | float |
INFO - 12:32:13: | x_3 | 0.1 | 0.1551593150888611 | 1 | float |
INFO - 12:32:13: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:13: *** End DOEScenario execution ***
Solve the Sobieski's SSBJ problem with NumPy¶
doe_scenario = DOEScenario(
[
SobieskiStructure(),
SobieskiAerodynamics(),
SobieskiPropulsion(),
SobieskiMission(),
],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)
Out:
INFO - 12:32:13: *** Start DOEScenario execution ***
INFO - 12:32:13: DOEScenario
INFO - 12:32:13: Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
INFO - 12:32:13: MDO formulation: MDF
INFO - 12:32:13: Optimization problem:
INFO - 12:32:13: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:13: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:13: under the inequality constraints
INFO - 12:32:13: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:13: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:13: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:13: over the design space:
INFO - 12:32:13: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:13: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:13: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:13: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:13: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:13: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:13: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:13: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:13: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:13: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:13: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:13: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:13: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:13: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:13: Solving optimization problem with algorithm OT_OPT_LHS:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
INFO - 12:32:13: 1%| | 1/100 [00:00<00:01, 62.18 it/sec, obj=-1.25e+3]
INFO - 12:32:13: 2%|▏ | 2/100 [00:00<00:01, 68.05 it/sec, obj=-303]
INFO - 12:32:13: 3%|▎ | 3/100 [00:00<00:01, 58.59 it/sec, obj=-447]
INFO - 12:32:13: 4%|▍ | 4/100 [00:00<00:01, 56.68 it/sec, obj=-444]
INFO - 12:32:13: 5%|▌ | 5/100 [00:00<00:01, 59.36 it/sec, obj=-804]
INFO - 12:32:13: 6%|▌ | 6/100 [00:00<00:01, 58.26 it/sec, obj=-232]
INFO - 12:32:13: 7%|▋ | 7/100 [00:00<00:01, 60.42 it/sec, obj=-701]
INFO - 12:32:13: 8%|▊ | 8/100 [00:00<00:01, 62.30 it/sec, obj=-253]
INFO - 12:32:13: 9%|▉ | 9/100 [00:00<00:01, 63.89 it/sec, obj=-773]
INFO - 12:32:13: 10%|█ | 10/100 [00:00<00:01, 64.97 it/sec, obj=-448]
INFO - 12:32:13: 11%|█ | 11/100 [00:00<00:01, 62.86 it/sec, obj=-659]
INFO - 12:32:13: 12%|█▏ | 12/100 [00:00<00:01, 63.75 it/sec, obj=-282]
INFO - 12:32:13: 13%|█▎ | 13/100 [00:00<00:01, 64.10 it/sec, obj=-387]
INFO - 12:32:13: 14%|█▍ | 14/100 [00:00<00:01, 63.86 it/sec, obj=-379]
INFO - 12:32:13: 15%|█▌ | 15/100 [00:00<00:01, 62.43 it/sec, obj=-196]
INFO - 12:32:13: 16%|█▌ | 16/100 [00:00<00:01, 63.16 it/sec, obj=-647]
INFO - 12:32:13: 17%|█▋ | 17/100 [00:00<00:01, 61.47 it/sec, obj=-238]
INFO - 12:32:13: 18%|█▊ | 18/100 [00:00<00:01, 62.35 it/sec, obj=-304]
INFO - 12:32:13: 19%|█▉ | 19/100 [00:00<00:01, 62.51 it/sec, obj=-372]
INFO - 12:32:13: 20%|██ | 20/100 [00:00<00:01, 62.96 it/sec, obj=-699]
INFO - 12:32:13: 21%|██ | 21/100 [00:00<00:01, 63.48 it/sec, obj=-873]
INFO - 12:32:13: 22%|██▏ | 22/100 [00:00<00:01, 63.88 it/sec, obj=-489]
INFO - 12:32:13: 23%|██▎ | 23/100 [00:00<00:01, 64.34 it/sec, obj=-623]
INFO - 12:32:13: 24%|██▍ | 24/100 [00:00<00:01, 64.77 it/sec, obj=-262]
INFO - 12:32:13: 25%|██▌ | 25/100 [00:00<00:01, 64.76 it/sec, obj=-345]
INFO - 12:32:13: 26%|██▌ | 26/100 [00:00<00:01, 65.09 it/sec, obj=-377]
INFO - 12:32:13: 27%|██▋ | 27/100 [00:00<00:01, 65.43 it/sec, obj=-387]
INFO - 12:32:13: 28%|██▊ | 28/100 [00:00<00:01, 63.72 it/sec, obj=-334]
INFO - 12:32:13: 29%|██▉ | 29/100 [00:00<00:01, 63.86 it/sec, obj=-438]
INFO - 12:32:13: 30%|███ | 30/100 [00:00<00:01, 64.20 it/sec, obj=-1.94e+3]
INFO - 12:32:13: 31%|███ | 31/100 [00:00<00:01, 64.56 it/sec, obj=-733]
INFO - 12:32:13: 32%|███▏ | 32/100 [00:00<00:01, 65.10 it/sec, obj=-774]
INFO - 12:32:13: 33%|███▎ | 33/100 [00:00<00:01, 64.82 it/sec, obj=-517]
INFO - 12:32:13: 34%|███▍ | 34/100 [00:00<00:01, 64.95 it/sec, obj=-232]
INFO - 12:32:13: 35%|███▌ | 35/100 [00:00<00:01, 64.75 it/sec, obj=-195]
INFO - 12:32:13: 36%|███▌ | 36/100 [00:00<00:00, 64.87 it/sec, obj=-218]
INFO - 12:32:13: 37%|███▋ | 37/100 [00:00<00:00, 64.52 it/sec, obj=-198]
INFO - 12:32:14: 38%|███▊ | 38/100 [00:00<00:00, 64.65 it/sec, obj=-536]
INFO - 12:32:14: 39%|███▉ | 39/100 [00:00<00:00, 64.30 it/sec, obj=-173]
INFO - 12:32:14: 40%|████ | 40/100 [00:00<00:00, 64.76 it/sec, obj=-388]
INFO - 12:32:14: 41%|████ | 41/100 [00:00<00:00, 64.73 it/sec, obj=-723]
INFO - 12:32:14: 42%|████▏ | 42/100 [00:00<00:00, 64.36 it/sec, obj=-240]
INFO - 12:32:14: 43%|████▎ | 43/100 [00:00<00:00, 64.61 it/sec, obj=-663]
INFO - 12:32:14: 44%|████▍ | 44/100 [00:00<00:00, 64.41 it/sec, obj=-1.14e+3]
INFO - 12:32:14: 45%|████▌ | 45/100 [00:00<00:00, 64.66 it/sec, obj=-438]
INFO - 12:32:14: 46%|████▌ | 46/100 [00:00<00:00, 64.24 it/sec, obj=-301]
INFO - 12:32:14: 47%|████▋ | 47/100 [00:00<00:00, 64.61 it/sec, obj=-682]
INFO - 12:32:14: 48%|████▊ | 48/100 [00:00<00:00, 64.51 it/sec, obj=-750]
INFO - 12:32:14: 49%|████▉ | 49/100 [00:00<00:00, 64.32 it/sec, obj=-789]
INFO - 12:32:14: 50%|█████ | 50/100 [00:00<00:00, 64.34 it/sec, obj=-395]
INFO - 12:32:14: 51%|█████ | 51/100 [00:00<00:00, 64.15 it/sec, obj=-407]
INFO - 12:32:14: 52%|█████▏ | 52/100 [00:00<00:00, 64.35 it/sec, obj=-315]
INFO - 12:32:14: 53%|█████▎ | 53/100 [00:00<00:00, 64.03 it/sec, obj=-337]
INFO - 12:32:14: 54%|█████▍ | 54/100 [00:00<00:00, 63.88 it/sec, obj=-414]
INFO - 12:32:14: 55%|█████▌ | 55/100 [00:00<00:00, 63.55 it/sec, obj=-240]
INFO - 12:32:14: 56%|█████▌ | 56/100 [00:00<00:00, 63.72 it/sec, obj=-297]
INFO - 12:32:14: 57%|█████▋ | 57/100 [00:00<00:00, 63.83 it/sec, obj=-442]
INFO - 12:32:14: 58%|█████▊ | 58/100 [00:00<00:00, 63.60 it/sec, obj=-233]
INFO - 12:32:14: 59%|█████▉ | 59/100 [00:00<00:00, 63.68 it/sec, obj=-519]
INFO - 12:32:14: 60%|██████ | 60/100 [00:00<00:00, 63.76 it/sec, obj=-920]
INFO - 12:32:14: 61%|██████ | 61/100 [00:00<00:00, 63.74 it/sec, obj=-517]
INFO - 12:32:14: 62%|██████▏ | 62/100 [00:00<00:00, 63.71 it/sec, obj=-390]
INFO - 12:32:14: 63%|██████▎ | 63/100 [00:00<00:00, 63.51 it/sec, obj=-434]
INFO - 12:32:14: 64%|██████▍ | 64/100 [00:01<00:00, 63.40 it/sec, obj=-244]
INFO - 12:32:14: 65%|██████▌ | 65/100 [00:01<00:00, 63.02 it/sec, obj=-192]
INFO - 12:32:14: 66%|██████▌ | 66/100 [00:01<00:00, 63.16 it/sec, obj=-305]
INFO - 12:32:14: 67%|██████▋ | 67/100 [00:01<00:00, 63.03 it/sec, obj=-393]
INFO - 12:32:14: 68%|██████▊ | 68/100 [00:01<00:00, 63.15 it/sec, obj=-307]
INFO - 12:32:14: 69%|██████▉ | 69/100 [00:01<00:00, 63.31 it/sec, obj=-328]
INFO - 12:32:14: 70%|███████ | 70/100 [00:01<00:00, 63.37 it/sec, obj=-998]
INFO - 12:32:14: 71%|███████ | 71/100 [00:01<00:00, 63.36 it/sec, obj=-1.06e+3]
INFO - 12:32:14: 72%|███████▏ | 72/100 [00:01<00:00, 62.96 it/sec, obj=-707]
INFO - 12:32:14: 73%|███████▎ | 73/100 [00:01<00:00, 63.11 it/sec, obj=-897]
INFO - 12:32:14: 74%|███████▍ | 74/100 [00:01<00:00, 63.02 it/sec, obj=-1.36e+3]
INFO - 12:32:14: 75%|███████▌ | 75/100 [00:01<00:00, 63.18 it/sec, obj=-853]
INFO - 12:32:14: 76%|███████▌ | 76/100 [00:01<00:00, 63.33 it/sec, obj=-217]
INFO - 12:32:14: 77%|███████▋ | 77/100 [00:01<00:00, 63.26 it/sec, obj=-370]
INFO - 12:32:14: 78%|███████▊ | 78/100 [00:01<00:00, 63.08 it/sec, obj=-636]
INFO - 12:32:14: 79%|███████▉ | 79/100 [00:01<00:00, 63.30 it/sec, obj=-337]
INFO - 12:32:14: 80%|████████ | 80/100 [00:01<00:00, 63.20 it/sec, obj=-804]
INFO - 12:32:14: 81%|████████ | 81/100 [00:01<00:00, 63.34 it/sec, obj=-318]
INFO - 12:32:14: 82%|████████▏ | 82/100 [00:01<00:00, 63.34 it/sec, obj=-253]
INFO - 12:32:14: 83%|████████▎ | 83/100 [00:01<00:00, 62.88 it/sec, obj=-590]
INFO - 12:32:14: 84%|████████▍ | 84/100 [00:01<00:00, 62.82 it/sec, obj=-438]
INFO - 12:32:14: 85%|████████▌ | 85/100 [00:01<00:00, 62.96 it/sec, obj=-642]
INFO - 12:32:14: 86%|████████▌ | 86/100 [00:01<00:00, 63.17 it/sec, obj=-381]
INFO - 12:32:14: 87%|████████▋ | 87/100 [00:01<00:00, 63.30 it/sec, obj=-447]
INFO - 12:32:14: 88%|████████▊ | 88/100 [00:01<00:00, 63.17 it/sec, obj=-707]
INFO - 12:32:14: 89%|████████▉ | 89/100 [00:01<00:00, 63.30 it/sec, obj=-384]
INFO - 12:32:14: 90%|█████████ | 90/100 [00:01<00:00, 63.43 it/sec, obj=-491]
INFO - 12:32:14: 91%|█████████ | 91/100 [00:01<00:00, 63.55 it/sec, obj=-285]
INFO - 12:32:14: 92%|█████████▏| 92/100 [00:01<00:00, 63.54 it/sec, obj=-433]
INFO - 12:32:14: 93%|█████████▎| 93/100 [00:01<00:00, 63.60 it/sec, obj=-377]
INFO - 12:32:14: 94%|█████████▍| 94/100 [00:01<00:00, 63.61 it/sec, obj=-827]
INFO - 12:32:14: 95%|█████████▌| 95/100 [00:01<00:00, 63.64 it/sec, obj=-712]
INFO - 12:32:14: 96%|█████████▌| 96/100 [00:01<00:00, 63.68 it/sec, obj=-245]
INFO - 12:32:14: 97%|█████████▋| 97/100 [00:01<00:00, 63.86 it/sec, obj=-502]
INFO - 12:32:14: 98%|█████████▊| 98/100 [00:01<00:00, 63.64 it/sec, obj=-309]
INFO - 12:32:14: 99%|█████████▉| 99/100 [00:01<00:00, 63.53 it/sec, obj=-971]
INFO - 12:32:14: 100%|██████████| 100/100 [00:01<00:00, 63.49 it/sec, obj=-649]
INFO - 12:32:14: Optimization result:
INFO - 12:32:14: Optimizer info:
INFO - 12:32:14: Status: None
INFO - 12:32:14: Message: None
INFO - 12:32:14: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:14: Solution:
INFO - 12:32:14: The solution is feasible.
INFO - 12:32:14: Objective: -659.181929189823
INFO - 12:32:14: Standardized constraints:
INFO - 12:32:14: g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
INFO - 12:32:14: -0.19803381]
INFO - 12:32:14: g_2 = -0.007088218675791014
INFO - 12:32:14: g_3 = [-0.43705891 -0.56294109 -0.64490518 -0.08117258]
INFO - 12:32:14: Design space:
INFO - 12:32:14: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:14: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:14: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:14: | x_shared[0] | 0.01 | 0.05822794533105225 | 0.09 | float |
INFO - 12:32:14: | x_shared[1] | 30000 | 44461.15862672209 | 60000 | float |
INFO - 12:32:14: | x_shared[2] | 1.4 | 1.58903403609043 | 1.8 | float |
INFO - 12:32:14: | x_shared[3] | 2.5 | 2.757102870923486 | 8.5 | float |
INFO - 12:32:14: | x_shared[4] | 40 | 68.73596231164589 | 70 | float |
INFO - 12:32:14: | x_shared[5] | 500 | 723.9554384869837 | 1500 | float |
INFO - 12:32:14: | x_1[0] | 0.1 | 0.2359336189021384 | 0.4 | float |
INFO - 12:32:14: | x_1[1] | 0.75 | 0.8931955972189334 | 1.25 | float |
INFO - 12:32:14: | x_2 | 0.75 | 0.9978936102804572 | 1.25 | float |
INFO - 12:32:14: | x_3 | 0.1 | 0.1551593150888611 | 1 | float |
INFO - 12:32:14: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:14: *** End DOEScenario execution ***
Conclusion¶
JAX is about 3 times faster than NumPy in the case of a sampling loop with a Jacobi MDA.
MDF with MDAGaussSeidel¶
Solve the Sobieski's SSBJ problem with JAX¶
chain = JAXSobieskiChain()
doe_scenario = DOEScenario(
[chain],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)
Out:
INFO - 12:32:16: Compilation of the output function JAXSobieskiChain: 0:00:00.316570 seconds.
INFO - 12:32:16: Compilation of the Jacobian function JAXSobieskiChain: 0:00:00.991171 seconds.
INFO - 12:32:16: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:16: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:16: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:16: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:16: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:16: *** Start DOEScenario execution ***
INFO - 12:32:16: DOEScenario
INFO - 12:32:16: Disciplines: JAXSobieskiChain
INFO - 12:32:16: MDO formulation: MDF
INFO - 12:32:16: Optimization problem:
INFO - 12:32:16: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:16: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:16: under the inequality constraints
INFO - 12:32:16: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:16: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:16: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:16: over the design space:
INFO - 12:32:16: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:16: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:16: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:16: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:16: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:16: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:16: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:16: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:16: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:16: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:16: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:16: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:16: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:16: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:16: Solving optimization problem with algorithm OT_OPT_LHS:
INFO - 12:32:16: 1%| | 1/100 [00:00<00:00, 254.85 it/sec, obj=-1.25e+3]
INFO - 12:32:16: 2%|▏ | 2/100 [00:00<00:00, 245.18 it/sec, obj=-303]
INFO - 12:32:16: 3%|▎ | 3/100 [00:00<00:00, 208.72 it/sec, obj=-447]
INFO - 12:32:16: 4%|▍ | 4/100 [00:00<00:00, 231.98 it/sec, obj=-444]
INFO - 12:32:16: 5%|▌ | 5/100 [00:00<00:00, 248.81 it/sec, obj=-804]
INFO - 12:32:16: 6%|▌ | 6/100 [00:00<00:00, 257.83 it/sec, obj=-232]
INFO - 12:32:16: 7%|▋ | 7/100 [00:00<00:00, 264.87 it/sec, obj=-701]
INFO - 12:32:16: 8%|▊ | 8/100 [00:00<00:00, 251.87 it/sec, obj=-253]
INFO - 12:32:16: 9%|▉ | 9/100 [00:00<00:00, 259.06 it/sec, obj=-773]
INFO - 12:32:16: 10%|█ | 10/100 [00:00<00:00, 264.44 it/sec, obj=-448]
INFO - 12:32:16: 11%|█ | 11/100 [00:00<00:00, 266.88 it/sec, obj=-659]
INFO - 12:32:16: 12%|█▏ | 12/100 [00:00<00:00, 268.67 it/sec, obj=-282]
INFO - 12:32:16: 13%|█▎ | 13/100 [00:00<00:00, 275.87 it/sec, obj=-387]
INFO - 12:32:16: 14%|█▍ | 14/100 [00:00<00:00, 280.78 it/sec, obj=-379]
INFO - 12:32:16: 15%|█▌ | 15/100 [00:00<00:00, 281.95 it/sec, obj=-196]
INFO - 12:32:16: 16%|█▌ | 16/100 [00:00<00:00, 278.98 it/sec, obj=-647]
INFO - 12:32:16: 17%|█▋ | 17/100 [00:00<00:00, 276.45 it/sec, obj=-238]
INFO - 12:32:16: 18%|█▊ | 18/100 [00:00<00:00, 279.98 it/sec, obj=-304]
INFO - 12:32:16: 19%|█▉ | 19/100 [00:00<00:00, 280.34 it/sec, obj=-372]
INFO - 12:32:16: 20%|██ | 20/100 [00:00<00:00, 284.61 it/sec, obj=-699]
INFO - 12:32:16: 21%|██ | 21/100 [00:00<00:00, 286.56 it/sec, obj=-873]
INFO - 12:32:16: 22%|██▏ | 22/100 [00:00<00:00, 286.08 it/sec, obj=-489]
INFO - 12:32:16: 23%|██▎ | 23/100 [00:00<00:00, 284.75 it/sec, obj=-623]
INFO - 12:32:16: 24%|██▍ | 24/100 [00:00<00:00, 288.51 it/sec, obj=-262]
INFO - 12:32:16: 25%|██▌ | 25/100 [00:00<00:00, 291.79 it/sec, obj=-345]
INFO - 12:32:16: 26%|██▌ | 26/100 [00:00<00:00, 290.35 it/sec, obj=-377]
INFO - 12:32:16: 27%|██▋ | 27/100 [00:00<00:00, 289.78 it/sec, obj=-387]
INFO - 12:32:16: 28%|██▊ | 28/100 [00:00<00:00, 284.73 it/sec, obj=-334]
INFO - 12:32:16: 29%|██▉ | 29/100 [00:00<00:00, 287.54 it/sec, obj=-438]
INFO - 12:32:16: 30%|███ | 30/100 [00:00<00:00, 290.23 it/sec, obj=-1.94e+3]
INFO - 12:32:16: 31%|███ | 31/100 [00:00<00:00, 288.83 it/sec, obj=-733]
INFO - 12:32:16: 32%|███▏ | 32/100 [00:00<00:00, 290.60 it/sec, obj=-774]
INFO - 12:32:16: 33%|███▎ | 33/100 [00:00<00:00, 290.70 it/sec, obj=-517]
INFO - 12:32:16: 34%|███▍ | 34/100 [00:00<00:00, 292.22 it/sec, obj=-232]
INFO - 12:32:16: 35%|███▌ | 35/100 [00:00<00:00, 294.45 it/sec, obj=-195]
INFO - 12:32:16: 36%|███▌ | 36/100 [00:00<00:00, 295.77 it/sec, obj=-218]
INFO - 12:32:16: 37%|███▋ | 37/100 [00:00<00:00, 297.23 it/sec, obj=-198]
INFO - 12:32:16: 38%|███▊ | 38/100 [00:00<00:00, 292.21 it/sec, obj=-536]
INFO - 12:32:16: 39%|███▉ | 39/100 [00:00<00:00, 287.12 it/sec, obj=-173]
INFO - 12:32:16: 40%|████ | 40/100 [00:00<00:00, 288.63 it/sec, obj=-388]
INFO - 12:32:16: 41%|████ | 41/100 [00:00<00:00, 289.05 it/sec, obj=-723]
INFO - 12:32:16: 42%|████▏ | 42/100 [00:00<00:00, 288.32 it/sec, obj=-240]
INFO - 12:32:16: 43%|████▎ | 43/100 [00:00<00:00, 289.57 it/sec, obj=-663]
INFO - 12:32:16: 44%|████▍ | 44/100 [00:00<00:00, 288.30 it/sec, obj=-1.14e+3]
INFO - 12:32:16: 45%|████▌ | 45/100 [00:00<00:00, 287.01 it/sec, obj=-438]
INFO - 12:32:16: 46%|████▌ | 46/100 [00:00<00:00, 286.29 it/sec, obj=-301]
INFO - 12:32:16: 47%|████▋ | 47/100 [00:00<00:00, 287.58 it/sec, obj=-682]
INFO - 12:32:16: 48%|████▊ | 48/100 [00:00<00:00, 287.37 it/sec, obj=-750]
INFO - 12:32:16: 49%|████▉ | 49/100 [00:00<00:00, 287.25 it/sec, obj=-789]
INFO - 12:32:16: 50%|█████ | 50/100 [00:00<00:00, 287.19 it/sec, obj=-395]
INFO - 12:32:16: 51%|█████ | 51/100 [00:00<00:00, 286.01 it/sec, obj=-407]
INFO - 12:32:16: 52%|█████▏ | 52/100 [00:00<00:00, 285.85 it/sec, obj=-315]
INFO - 12:32:16: 53%|█████▎ | 53/100 [00:00<00:00, 286.17 it/sec, obj=-337]
INFO - 12:32:16: 54%|█████▍ | 54/100 [00:00<00:00, 285.67 it/sec, obj=-414]
INFO - 12:32:16: 55%|█████▌ | 55/100 [00:00<00:00, 286.50 it/sec, obj=-240]
INFO - 12:32:16: 56%|█████▌ | 56/100 [00:00<00:00, 288.10 it/sec, obj=-297]
INFO - 12:32:16: 57%|█████▋ | 57/100 [00:00<00:00, 286.10 it/sec, obj=-442]
INFO - 12:32:16: 58%|█████▊ | 58/100 [00:00<00:00, 285.93 it/sec, obj=-233]
INFO - 12:32:16: 59%|█████▉ | 59/100 [00:00<00:00, 284.34 it/sec, obj=-519]
INFO - 12:32:16: 60%|██████ | 60/100 [00:00<00:00, 283.04 it/sec, obj=-920]
INFO - 12:32:16: 61%|██████ | 61/100 [00:00<00:00, 280.17 it/sec, obj=-517]
INFO - 12:32:16: 62%|██████▏ | 62/100 [00:00<00:00, 280.44 it/sec, obj=-390]
INFO - 12:32:16: 63%|██████▎ | 63/100 [00:00<00:00, 281.30 it/sec, obj=-434]
INFO - 12:32:16: 64%|██████▍ | 64/100 [00:00<00:00, 282.28 it/sec, obj=-244]
INFO - 12:32:16: 65%|██████▌ | 65/100 [00:00<00:00, 280.18 it/sec, obj=-192]
INFO - 12:32:16: 66%|██████▌ | 66/100 [00:00<00:00, 279.31 it/sec, obj=-305]
INFO - 12:32:16: 67%|██████▋ | 67/100 [00:00<00:00, 277.92 it/sec, obj=-393]
INFO - 12:32:16: 68%|██████▊ | 68/100 [00:00<00:00, 277.41 it/sec, obj=-307]
INFO - 12:32:16: 69%|██████▉ | 69/100 [00:00<00:00, 277.42 it/sec, obj=-328]
INFO - 12:32:16: 70%|███████ | 70/100 [00:00<00:00, 277.57 it/sec, obj=-998]
INFO - 12:32:16: 71%|███████ | 71/100 [00:00<00:00, 277.34 it/sec, obj=-1.06e+3]
INFO - 12:32:16: 72%|███████▏ | 72/100 [00:00<00:00, 277.43 it/sec, obj=-707]
INFO - 12:32:16: 73%|███████▎ | 73/100 [00:00<00:00, 278.47 it/sec, obj=-897]
INFO - 12:32:16: 74%|███████▍ | 74/100 [00:00<00:00, 279.54 it/sec, obj=-1.36e+3]
INFO - 12:32:16: 75%|███████▌ | 75/100 [00:00<00:00, 280.29 it/sec, obj=-853]
INFO - 12:32:16: 76%|███████▌ | 76/100 [00:00<00:00, 281.38 it/sec, obj=-217]
INFO - 12:32:16: 77%|███████▋ | 77/100 [00:00<00:00, 280.70 it/sec, obj=-370]
INFO - 12:32:16: 78%|███████▊ | 78/100 [00:00<00:00, 281.21 it/sec, obj=-636]
INFO - 12:32:16: 79%|███████▉ | 79/100 [00:00<00:00, 282.07 it/sec, obj=-337]
INFO - 12:32:16: 80%|████████ | 80/100 [00:00<00:00, 282.49 it/sec, obj=-804]
INFO - 12:32:16: 81%|████████ | 81/100 [00:00<00:00, 282.99 it/sec, obj=-318]
INFO - 12:32:16: 82%|████████▏ | 82/100 [00:00<00:00, 283.55 it/sec, obj=-253]
INFO - 12:32:16: 83%|████████▎ | 83/100 [00:00<00:00, 283.54 it/sec, obj=-590]
INFO - 12:32:16: 84%|████████▍ | 84/100 [00:00<00:00, 282.70 it/sec, obj=-438]
INFO - 12:32:16: 85%|████████▌ | 85/100 [00:00<00:00, 281.37 it/sec, obj=-642]
INFO - 12:32:16: 86%|████████▌ | 86/100 [00:00<00:00, 282.67 it/sec, obj=-381]
INFO - 12:32:16: 87%|████████▋ | 87/100 [00:00<00:00, 282.37 it/sec, obj=-447]
INFO - 12:32:16: 88%|████████▊ | 88/100 [00:00<00:00, 282.05 it/sec, obj=-707]
INFO - 12:32:16: 89%|████████▉ | 89/100 [00:00<00:00, 282.96 it/sec, obj=-384]
INFO - 12:32:16: 90%|█████████ | 90/100 [00:00<00:00, 283.53 it/sec, obj=-491]
INFO - 12:32:16: 91%|█████████ | 91/100 [00:00<00:00, 283.69 it/sec, obj=-285]
INFO - 12:32:16: 92%|█████████▏| 92/100 [00:00<00:00, 283.65 it/sec, obj=-433]
INFO - 12:32:16: 93%|█████████▎| 93/100 [00:00<00:00, 283.18 it/sec, obj=-377]
INFO - 12:32:16: 94%|█████████▍| 94/100 [00:00<00:00, 283.33 it/sec, obj=-827]
INFO - 12:32:16: 95%|█████████▌| 95/100 [00:00<00:00, 282.12 it/sec, obj=-712]
INFO - 12:32:16: 96%|█████████▌| 96/100 [00:00<00:00, 282.83 it/sec, obj=-245]
INFO - 12:32:16: 97%|█████████▋| 97/100 [00:00<00:00, 283.50 it/sec, obj=-502]
INFO - 12:32:16: 98%|█████████▊| 98/100 [00:00<00:00, 283.23 it/sec, obj=-309]
INFO - 12:32:16: 99%|█████████▉| 99/100 [00:00<00:00, 283.38 it/sec, obj=-971]
INFO - 12:32:16: 100%|██████████| 100/100 [00:00<00:00, 282.34 it/sec, obj=-649]
INFO - 12:32:16: Optimization result:
INFO - 12:32:16: Optimizer info:
INFO - 12:32:16: Status: None
INFO - 12:32:16: Message: None
INFO - 12:32:16: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:16: Solution:
INFO - 12:32:16: The solution is feasible.
INFO - 12:32:16: Objective: -659.1818108437288
INFO - 12:32:16: Standardized constraints:
INFO - 12:32:16: g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
INFO - 12:32:16: -0.19803381]
INFO - 12:32:16: g_2 = -0.007088218675791014
INFO - 12:32:16: g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
INFO - 12:32:16: Design space:
INFO - 12:32:16: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:16: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:16: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:16: | x_shared[0] | 0.01 | 0.05822794533105225 | 0.09 | float |
INFO - 12:32:16: | x_shared[1] | 30000 | 44461.15862672209 | 60000 | float |
INFO - 12:32:16: | x_shared[2] | 1.4 | 1.58903403609043 | 1.8 | float |
INFO - 12:32:16: | x_shared[3] | 2.5 | 2.757102870923486 | 8.5 | float |
INFO - 12:32:16: | x_shared[4] | 40 | 68.73596231164589 | 70 | float |
INFO - 12:32:16: | x_shared[5] | 500 | 723.9554384869837 | 1500 | float |
INFO - 12:32:16: | x_1[0] | 0.1 | 0.2359336189021384 | 0.4 | float |
INFO - 12:32:16: | x_1[1] | 0.75 | 0.8931955972189334 | 1.25 | float |
INFO - 12:32:16: | x_2 | 0.75 | 0.9978936102804572 | 1.25 | float |
INFO - 12:32:16: | x_3 | 0.1 | 0.1551593150888611 | 1 | float |
INFO - 12:32:16: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:16: *** End DOEScenario execution ***
Solve the Sobieski's SSBJ problem with NumPy¶
doe_scenario = DOEScenario(
[
SobieskiStructure(),
SobieskiAerodynamics(),
SobieskiPropulsion(),
SobieskiMission(),
],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
doe_scenario.add_constraint("g_1", "ineq")
doe_scenario.add_constraint("g_2", "ineq")
doe_scenario.add_constraint("g_3", "ineq")
doe_scenario.execute(algo_name="OT_OPT_LHS", n_samples=100)
Out:
INFO - 12:32:16: *** Start DOEScenario execution ***
INFO - 12:32:16: DOEScenario
INFO - 12:32:16: Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
INFO - 12:32:16: MDO formulation: MDF
INFO - 12:32:16: Optimization problem:
INFO - 12:32:16: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:16: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:16: under the inequality constraints
INFO - 12:32:16: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:16: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:16: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:16: over the design space:
INFO - 12:32:16: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:16: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:16: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:16: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:16: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:16: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:16: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:16: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:16: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:16: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:16: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:16: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:16: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:16: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:16: Solving optimization problem with algorithm OT_OPT_LHS:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
INFO - 12:32:16: 1%| | 1/100 [00:00<00:00, 154.57 it/sec, obj=-1.25e+3]
INFO - 12:32:16: 2%|▏ | 2/100 [00:00<00:00, 146.99 it/sec, obj=-303]
INFO - 12:32:16: 3%|▎ | 3/100 [00:00<00:00, 106.26 it/sec, obj=-447]
INFO - 12:32:16: 4%|▍ | 4/100 [00:00<00:00, 113.89 it/sec, obj=-444]
INFO - 12:32:16: 5%|▌ | 5/100 [00:00<00:00, 121.61 it/sec, obj=-804]
INFO - 12:32:16: 6%|▌ | 6/100 [00:00<00:00, 123.19 it/sec, obj=-232]
INFO - 12:32:16: 7%|▋ | 7/100 [00:00<00:00, 124.29 it/sec, obj=-701]
INFO - 12:32:16: 8%|▊ | 8/100 [00:00<00:00, 121.12 it/sec, obj=-253]
INFO - 12:32:16: 9%|▉ | 9/100 [00:00<00:00, 126.14 it/sec, obj=-773]
INFO - 12:32:16: 10%|█ | 10/100 [00:00<00:00, 128.06 it/sec, obj=-448]
INFO - 12:32:16: 11%|█ | 11/100 [00:00<00:00, 126.79 it/sec, obj=-659]
INFO - 12:32:16: 12%|█▏ | 12/100 [00:00<00:00, 127.15 it/sec, obj=-282]
INFO - 12:32:16: 13%|█▎ | 13/100 [00:00<00:00, 129.65 it/sec, obj=-387]
INFO - 12:32:16: 14%|█▍ | 14/100 [00:00<00:00, 130.67 it/sec, obj=-379]
INFO - 12:32:16: 15%|█▌ | 15/100 [00:00<00:00, 129.44 it/sec, obj=-196]
INFO - 12:32:16: 16%|█▌ | 16/100 [00:00<00:00, 126.66 it/sec, obj=-647]
INFO - 12:32:16: 17%|█▋ | 17/100 [00:00<00:00, 123.57 it/sec, obj=-238]
INFO - 12:32:16: 18%|█▊ | 18/100 [00:00<00:00, 124.06 it/sec, obj=-304]
INFO - 12:32:16: 19%|█▉ | 19/100 [00:00<00:00, 123.54 it/sec, obj=-372]
INFO - 12:32:16: 20%|██ | 20/100 [00:00<00:00, 125.84 it/sec, obj=-699]
INFO - 12:32:16: 21%|██ | 21/100 [00:00<00:00, 125.69 it/sec, obj=-873]
INFO - 12:32:16: 22%|██▏ | 22/100 [00:00<00:00, 124.31 it/sec, obj=-489]
INFO - 12:32:16: 23%|██▎ | 23/100 [00:00<00:00, 122.79 it/sec, obj=-623]
INFO - 12:32:16: 24%|██▍ | 24/100 [00:00<00:00, 124.13 it/sec, obj=-262]
INFO - 12:32:16: 25%|██▌ | 25/100 [00:00<00:00, 126.00 it/sec, obj=-345]
INFO - 12:32:16: 26%|██▌ | 26/100 [00:00<00:00, 124.60 it/sec, obj=-377]
INFO - 12:32:16: 27%|██▋ | 27/100 [00:00<00:00, 123.80 it/sec, obj=-387]
INFO - 12:32:16: 28%|██▊ | 28/100 [00:00<00:00, 120.88 it/sec, obj=-334]
INFO - 12:32:16: 29%|██▉ | 29/100 [00:00<00:00, 122.49 it/sec, obj=-438]
INFO - 12:32:16: 30%|███ | 30/100 [00:00<00:00, 123.65 it/sec, obj=-1.94e+3]
INFO - 12:32:16: 31%|███ | 31/100 [00:00<00:00, 122.63 it/sec, obj=-733]
INFO - 12:32:16: 32%|███▏ | 32/100 [00:00<00:00, 123.31 it/sec, obj=-774]
INFO - 12:32:16: 33%|███▎ | 33/100 [00:00<00:00, 123.14 it/sec, obj=-517]
INFO - 12:32:17: 34%|███▍ | 34/100 [00:00<00:00, 123.54 it/sec, obj=-232]
INFO - 12:32:17: 35%|███▌ | 35/100 [00:00<00:00, 124.46 it/sec, obj=-195]
INFO - 12:32:17: 36%|███▌ | 36/100 [00:00<00:00, 124.94 it/sec, obj=-218]
INFO - 12:32:17: 37%|███▋ | 37/100 [00:00<00:00, 126.17 it/sec, obj=-198]
INFO - 12:32:17: 38%|███▊ | 38/100 [00:00<00:00, 123.13 it/sec, obj=-536]
INFO - 12:32:17: 39%|███▉ | 39/100 [00:00<00:00, 120.38 it/sec, obj=-173]
INFO - 12:32:17: 40%|████ | 40/100 [00:00<00:00, 120.88 it/sec, obj=-388]
INFO - 12:32:17: 41%|████ | 41/100 [00:00<00:00, 120.77 it/sec, obj=-723]
INFO - 12:32:17: 42%|████▏ | 42/100 [00:00<00:00, 120.06 it/sec, obj=-240]
INFO - 12:32:17: 43%|████▎ | 43/100 [00:00<00:00, 120.57 it/sec, obj=-663]
INFO - 12:32:17: 44%|████▍ | 44/100 [00:00<00:00, 119.61 it/sec, obj=-1.14e+3]
INFO - 12:32:17: 45%|████▌ | 45/100 [00:00<00:00, 118.81 it/sec, obj=-438]
INFO - 12:32:17: 46%|████▌ | 46/100 [00:00<00:00, 118.29 it/sec, obj=-301]
INFO - 12:32:17: 47%|████▋ | 47/100 [00:00<00:00, 118.46 it/sec, obj=-682]
INFO - 12:32:17: 48%|████▊ | 48/100 [00:00<00:00, 118.12 it/sec, obj=-750]
INFO - 12:32:17: 49%|████▉ | 49/100 [00:00<00:00, 117.87 it/sec, obj=-789]
INFO - 12:32:17: 50%|█████ | 50/100 [00:00<00:00, 117.12 it/sec, obj=-395]
INFO - 12:32:17: 51%|█████ | 51/100 [00:00<00:00, 116.25 it/sec, obj=-407]
INFO - 12:32:17: 52%|█████▏ | 52/100 [00:00<00:00, 116.04 it/sec, obj=-315]
INFO - 12:32:17: 53%|█████▎ | 53/100 [00:00<00:00, 116.07 it/sec, obj=-337]
INFO - 12:32:17: 54%|█████▍ | 54/100 [00:00<00:00, 115.65 it/sec, obj=-414]
INFO - 12:32:17: 55%|█████▌ | 55/100 [00:00<00:00, 116.08 it/sec, obj=-240]
INFO - 12:32:17: 56%|█████▌ | 56/100 [00:00<00:00, 116.71 it/sec, obj=-297]
INFO - 12:32:17: 57%|█████▋ | 57/100 [00:00<00:00, 116.94 it/sec, obj=-442]
INFO - 12:32:17: 58%|█████▊ | 58/100 [00:00<00:00, 117.15 it/sec, obj=-233]
INFO - 12:32:17: 59%|█████▉ | 59/100 [00:00<00:00, 116.49 it/sec, obj=-519]
INFO - 12:32:17: 60%|██████ | 60/100 [00:00<00:00, 115.73 it/sec, obj=-920]
INFO - 12:32:17: 61%|██████ | 61/100 [00:00<00:00, 115.37 it/sec, obj=-517]
INFO - 12:32:17: 62%|██████▏ | 62/100 [00:00<00:00, 115.74 it/sec, obj=-390]
INFO - 12:32:17: 63%|██████▎ | 63/100 [00:00<00:00, 116.13 it/sec, obj=-434]
INFO - 12:32:17: 64%|██████▍ | 64/100 [00:00<00:00, 116.49 it/sec, obj=-244]
INFO - 12:32:17: 65%|██████▌ | 65/100 [00:00<00:00, 116.10 it/sec, obj=-192]
INFO - 12:32:17: 66%|██████▌ | 66/100 [00:00<00:00, 116.26 it/sec, obj=-305]
INFO - 12:32:17: 67%|██████▋ | 67/100 [00:00<00:00, 115.53 it/sec, obj=-393]
INFO - 12:32:17: 68%|██████▊ | 68/100 [00:00<00:00, 115.21 it/sec, obj=-307]
INFO - 12:32:17: 69%|██████▉ | 69/100 [00:00<00:00, 115.13 it/sec, obj=-328]
INFO - 12:32:17: 70%|███████ | 70/100 [00:00<00:00, 115.13 it/sec, obj=-998]
INFO - 12:32:17: 71%|███████ | 71/100 [00:00<00:00, 114.98 it/sec, obj=-1.06e+3]
INFO - 12:32:17: 72%|███████▏ | 72/100 [00:00<00:00, 115.13 it/sec, obj=-707]
INFO - 12:32:17: 73%|███████▎ | 73/100 [00:00<00:00, 115.60 it/sec, obj=-897]
INFO - 12:32:17: 74%|███████▍ | 74/100 [00:00<00:00, 115.96 it/sec, obj=-1.36e+3]
INFO - 12:32:17: 75%|███████▌ | 75/100 [00:00<00:00, 115.99 it/sec, obj=-853]
INFO - 12:32:17: 76%|███████▌ | 76/100 [00:00<00:00, 116.39 it/sec, obj=-217]
INFO - 12:32:17: 77%|███████▋ | 77/100 [00:00<00:00, 116.04 it/sec, obj=-370]
INFO - 12:32:17: 78%|███████▊ | 78/100 [00:00<00:00, 115.96 it/sec, obj=-636]
INFO - 12:32:17: 79%|███████▉ | 79/100 [00:00<00:00, 116.21 it/sec, obj=-337]
INFO - 12:32:17: 80%|████████ | 80/100 [00:00<00:00, 116.33 it/sec, obj=-804]
INFO - 12:32:17: 81%|████████ | 81/100 [00:00<00:00, 116.63 it/sec, obj=-318]
INFO - 12:32:17: 82%|████████▏ | 82/100 [00:00<00:00, 116.92 it/sec, obj=-253]
INFO - 12:32:17: 83%|████████▎ | 83/100 [00:00<00:00, 116.71 it/sec, obj=-590]
INFO - 12:32:17: 84%|████████▍ | 84/100 [00:00<00:00, 115.81 it/sec, obj=-438]
INFO - 12:32:17: 85%|████████▌ | 85/100 [00:00<00:00, 115.00 it/sec, obj=-642]
INFO - 12:32:17: 86%|████████▌ | 86/100 [00:00<00:00, 115.68 it/sec, obj=-381]
INFO - 12:32:17: 87%|████████▋ | 87/100 [00:00<00:00, 115.47 it/sec, obj=-447]
INFO - 12:32:17: 88%|████████▊ | 88/100 [00:00<00:00, 115.25 it/sec, obj=-707]
INFO - 12:32:17: 89%|████████▉ | 89/100 [00:00<00:00, 115.65 it/sec, obj=-384]
INFO - 12:32:17: 90%|█████████ | 90/100 [00:00<00:00, 115.84 it/sec, obj=-491]
INFO - 12:32:17: 91%|█████████ | 91/100 [00:00<00:00, 115.86 it/sec, obj=-285]
INFO - 12:32:17: 92%|█████████▏| 92/100 [00:00<00:00, 115.73 it/sec, obj=-433]
INFO - 12:32:17: 93%|█████████▎| 93/100 [00:00<00:00, 115.53 it/sec, obj=-377]
INFO - 12:32:17: 94%|█████████▍| 94/100 [00:00<00:00, 115.56 it/sec, obj=-827]
INFO - 12:32:17: 95%|█████████▌| 95/100 [00:00<00:00, 114.81 it/sec, obj=-712]
INFO - 12:32:17: 96%|█████████▌| 96/100 [00:00<00:00, 115.07 it/sec, obj=-245]
INFO - 12:32:17: 97%|█████████▋| 97/100 [00:00<00:00, 115.32 it/sec, obj=-502]
INFO - 12:32:17: 98%|█████████▊| 98/100 [00:00<00:00, 115.12 it/sec, obj=-309]
INFO - 12:32:17: 99%|█████████▉| 99/100 [00:00<00:00, 115.25 it/sec, obj=-971]
INFO - 12:32:17: 100%|██████████| 100/100 [00:00<00:00, 114.74 it/sec, obj=-649]
INFO - 12:32:17: Optimization result:
INFO - 12:32:17: Optimizer info:
INFO - 12:32:17: Status: None
INFO - 12:32:17: Message: None
INFO - 12:32:17: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:17: Solution:
INFO - 12:32:17: The solution is feasible.
INFO - 12:32:17: Objective: -659.1819417003436
INFO - 12:32:17: Standardized constraints:
INFO - 12:32:17: g_1 = [-0.11936975 -0.11352202 -0.10911984 -0.10600546 -0.10373211 -0.04196619
INFO - 12:32:17: -0.19803381]
INFO - 12:32:17: g_2 = -0.007088218675791014
INFO - 12:32:17: g_3 = [-0.43705892 -0.56294108 -0.64490518 -0.08117258]
INFO - 12:32:17: Design space:
INFO - 12:32:17: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:17: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:17: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:17: | x_shared[0] | 0.01 | 0.05822794533105225 | 0.09 | float |
INFO - 12:32:17: | x_shared[1] | 30000 | 44461.15862672209 | 60000 | float |
INFO - 12:32:17: | x_shared[2] | 1.4 | 1.58903403609043 | 1.8 | float |
INFO - 12:32:17: | x_shared[3] | 2.5 | 2.757102870923486 | 8.5 | float |
INFO - 12:32:17: | x_shared[4] | 40 | 68.73596231164589 | 70 | float |
INFO - 12:32:17: | x_shared[5] | 500 | 723.9554384869837 | 1500 | float |
INFO - 12:32:17: | x_1[0] | 0.1 | 0.2359336189021384 | 0.4 | float |
INFO - 12:32:17: | x_1[1] | 0.75 | 0.8931955972189334 | 1.25 | float |
INFO - 12:32:17: | x_2 | 0.75 | 0.9978936102804572 | 1.25 | float |
INFO - 12:32:17: | x_3 | 0.1 | 0.1551593150888611 | 1 | float |
INFO - 12:32:17: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:17: *** End DOEScenario execution ***
Conclusion¶
JAX is about 3 times faster than NumPy in the case of a sampling loop with a Gauss-Seidel MDA.
Optimization¶
MDF with MDAJacobi¶
Solve the Sobieski's SSBJ problem with JAX¶
chain = JAXSobieskiChain()
mod_scenario = MDOScenario(
[chain],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)
Out:
INFO - 12:32:18: Compilation of the output function JAXSobieskiChain: 0:00:00.323144 seconds.
INFO - 12:32:18: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.020122 seconds.
INFO - 12:32:18: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:18: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:18: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:18: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:18: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:18: *** Start MDOScenario execution ***
INFO - 12:32:18: MDOScenario
INFO - 12:32:18: Disciplines: JAXSobieskiChain
INFO - 12:32:18: MDO formulation: MDF
INFO - 12:32:18: Optimization problem:
INFO - 12:32:18: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:18: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:18: under the inequality constraints
INFO - 12:32:18: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:18: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:18: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:18: over the design space:
INFO - 12:32:18: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:18: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:18: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:18: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:18: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:18: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:18: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:18: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:18: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:18: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:18: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:18: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:18: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:18: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:18: Solving optimization problem with algorithm NLOPT_COBYLA:
INFO - 12:32:18: 1%| | 1/100 [00:00<00:00, 241.37 it/sec, obj=-536]
INFO - 12:32:18: 2%|▏ | 2/100 [00:00<00:00, 185.35 it/sec, obj=-539]
INFO - 12:32:18: 3%|▎ | 3/100 [00:00<00:00, 180.89 it/sec, obj=-763]
INFO - 12:32:18: 4%|▍ | 4/100 [00:00<00:00, 180.33 it/sec, obj=-713]
INFO - 12:32:19: 5%|▌ | 5/100 [00:00<00:00, 179.81 it/sec, obj=-687]
INFO - 12:32:19: 6%|▌ | 6/100 [00:00<00:00, 180.37 it/sec, obj=-897]
INFO - 12:32:19: 7%|▋ | 7/100 [00:00<00:00, 177.41 it/sec, obj=-957]
INFO - 12:32:19: 8%|▊ | 8/100 [00:00<00:00, 161.53 it/sec, obj=-956]
INFO - 12:32:19: 9%|▉ | 9/100 [00:00<00:00, 160.32 it/sec, obj=-930]
INFO - 12:32:19: 10%|█ | 10/100 [00:00<00:00, 157.50 it/sec, obj=-943]
INFO - 12:32:19: 11%|█ | 11/100 [00:00<00:00, 159.47 it/sec, obj=-768]
INFO - 12:32:19: 12%|█▏ | 12/100 [00:00<00:00, 158.38 it/sec, obj=-1e+3]
INFO - 12:32:19: 13%|█▎ | 13/100 [00:00<00:00, 157.73 it/sec, obj=-1.34e+3]
INFO - 12:32:19: 14%|█▍ | 14/100 [00:00<00:00, 157.17 it/sec, obj=-1.85e+3]
INFO - 12:32:19: 15%|█▌ | 15/100 [00:00<00:00, 155.64 it/sec, obj=-1.87e+3]
INFO - 12:32:19: 16%|█▌ | 16/100 [00:00<00:00, 154.08 it/sec, obj=-1.99e+3]
INFO - 12:32:19: 17%|█▋ | 17/100 [00:00<00:00, 153.66 it/sec, obj=-2.18e+3]
INFO - 12:32:19: 18%|█▊ | 18/100 [00:00<00:00, 151.99 it/sec, obj=-2.2e+3]
INFO - 12:32:19: 19%|█▉ | 19/100 [00:00<00:00, 150.83 it/sec, obj=-2.42e+3]
INFO - 12:32:19: 20%|██ | 20/100 [00:00<00:00, 150.78 it/sec, obj=-3.03e+3]
INFO - 12:32:19: 21%|██ | 21/100 [00:00<00:00, 150.78 it/sec, obj=-2.99e+3]
INFO - 12:32:19: 22%|██▏ | 22/100 [00:00<00:00, 150.53 it/sec, obj=-2.63e+3]
INFO - 12:32:19: 23%|██▎ | 23/100 [00:00<00:00, 149.85 it/sec, obj=-3.08e+3]
INFO - 12:32:19: 24%|██▍ | 24/100 [00:00<00:00, 149.21 it/sec, obj=-3.12e+3]
INFO - 12:32:19: 25%|██▌ | 25/100 [00:00<00:00, 148.66 it/sec, obj=-3.2e+3]
INFO - 12:32:19: 26%|██▌ | 26/100 [00:00<00:00, 147.94 it/sec, obj=-2.76e+3]
INFO - 12:32:19: 27%|██▋ | 27/100 [00:00<00:00, 147.52 it/sec, obj=-3.46e+3]
INFO - 12:32:19: 28%|██▊ | 28/100 [00:00<00:00, 147.73 it/sec, obj=-3.51e+3]
INFO - 12:32:19: 29%|██▉ | 29/100 [00:00<00:00, 148.02 it/sec, obj=-3.41e+3]
INFO - 12:32:19: 30%|███ | 30/100 [00:00<00:00, 148.34 it/sec, obj=-3.28e+3]
INFO - 12:32:19: 31%|███ | 31/100 [00:00<00:00, 147.32 it/sec, obj=-3.87e+3]
INFO - 12:32:19: 32%|███▏ | 32/100 [00:00<00:00, 146.94 it/sec, obj=-3.49e+3]
INFO - 12:32:19: 33%|███▎ | 33/100 [00:00<00:00, 146.97 it/sec, obj=-3.67e+3]
INFO - 12:32:19: 34%|███▍ | 34/100 [00:00<00:00, 147.17 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 35%|███▌ | 35/100 [00:00<00:00, 147.01 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 36%|███▌ | 36/100 [00:00<00:00, 147.09 it/sec, obj=-3.68e+3]
INFO - 12:32:19: 37%|███▋ | 37/100 [00:00<00:00, 146.82 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 38%|███▊ | 38/100 [00:00<00:00, 146.82 it/sec, obj=-3.93e+3]
INFO - 12:32:19: 39%|███▉ | 39/100 [00:00<00:00, 146.39 it/sec, obj=-3.64e+3]
INFO - 12:32:19: 40%|████ | 40/100 [00:00<00:00, 146.25 it/sec, obj=-3.4e+3]
INFO - 12:32:19: 41%|████ | 41/100 [00:00<00:00, 145.90 it/sec, obj=-3.37e+3]
INFO - 12:32:19: 42%|████▏ | 42/100 [00:00<00:00, 145.48 it/sec, obj=-3.83e+3]
INFO - 12:32:19: 43%|████▎ | 43/100 [00:00<00:00, 145.52 it/sec, obj=-3.95e+3]
INFO - 12:32:19: 44%|████▍ | 44/100 [00:00<00:00, 145.55 it/sec, obj=-3.83e+3]
INFO - 12:32:19: 45%|████▌ | 45/100 [00:00<00:00, 145.63 it/sec, obj=-3.67e+3]
INFO - 12:32:19: 46%|████▌ | 46/100 [00:00<00:00, 145.25 it/sec, obj=-3.39e+3]
INFO - 12:32:19: 47%|████▋ | 47/100 [00:00<00:00, 144.96 it/sec, obj=-3.49e+3]
INFO - 12:32:19: 48%|████▊ | 48/100 [00:00<00:00, 145.09 it/sec, obj=-3.56e+3]
INFO - 12:32:19: 49%|████▉ | 49/100 [00:00<00:00, 145.14 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 50%|█████ | 50/100 [00:00<00:00, 144.91 it/sec, obj=-3.76e+3]
INFO - 12:32:19: 51%|█████ | 51/100 [00:00<00:00, 145.02 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 52%|█████▏ | 52/100 [00:00<00:00, 145.43 it/sec, obj=-3.62e+3]
INFO - 12:32:19: 53%|█████▎ | 53/100 [00:00<00:00, 145.77 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 54%|█████▍ | 54/100 [00:00<00:00, 146.11 it/sec, obj=-3.58e+3]
INFO - 12:32:19: 55%|█████▌ | 55/100 [00:00<00:00, 146.36 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 56%|█████▌ | 56/100 [00:00<00:00, 146.69 it/sec, obj=-3.46e+3]
INFO - 12:32:19: 57%|█████▋ | 57/100 [00:00<00:00, 147.00 it/sec, obj=-3.82e+3]
INFO - 12:32:19: 58%|█████▊ | 58/100 [00:00<00:00, 147.25 it/sec, obj=-3.59e+3]
INFO - 12:32:19: 59%|█████▉ | 59/100 [00:00<00:00, 147.48 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 60%|██████ | 60/100 [00:00<00:00, 147.69 it/sec, obj=-3.53e+3]
INFO - 12:32:19: 61%|██████ | 61/100 [00:00<00:00, 147.93 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 62%|██████▏ | 62/100 [00:00<00:00, 148.18 it/sec, obj=-3.41e+3]
INFO - 12:32:19: 63%|██████▎ | 63/100 [00:00<00:00, 148.46 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 64%|██████▍ | 64/100 [00:00<00:00, 148.55 it/sec, obj=-3.15e+3]
INFO - 12:32:19: 65%|██████▌ | 65/100 [00:00<00:00, 148.55 it/sec, obj=-3.87e+3]
INFO - 12:32:19: 66%|██████▌ | 66/100 [00:00<00:00, 148.50 it/sec, obj=-3.15e+3]
INFO - 12:32:19: 67%|██████▋ | 67/100 [00:00<00:00, 148.78 it/sec, obj=-3.54e+3]
INFO - 12:32:19: 68%|██████▊ | 68/100 [00:00<00:00, 148.83 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 69%|██████▉ | 69/100 [00:00<00:00, 148.61 it/sec, obj=-3.43e+3]
INFO - 12:32:19: 70%|███████ | 70/100 [00:00<00:00, 148.59 it/sec, obj=-3.76e+3]
INFO - 12:32:19: 71%|███████ | 71/100 [00:00<00:00, 148.59 it/sec, obj=-3.98e+3]
INFO - 12:32:19: 72%|███████▏ | 72/100 [00:00<00:00, 148.55 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 73%|███████▎ | 73/100 [00:00<00:00, 148.34 it/sec, obj=-3.4e+3]
INFO - 12:32:19: 74%|███████▍ | 74/100 [00:00<00:00, 148.34 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 75%|███████▌ | 75/100 [00:00<00:00, 148.10 it/sec, obj=-3.35e+3]
INFO - 12:32:19: 76%|███████▌ | 76/100 [00:00<00:00, 147.94 it/sec, obj=-3.43e+3]
INFO - 12:32:19: 77%|███████▋ | 77/100 [00:00<00:00, 147.71 it/sec, obj=-3.5e+3]
INFO - 12:32:19: 78%|███████▊ | 78/100 [00:00<00:00, 147.49 it/sec, obj=-3.4e+3]
INFO - 12:32:19: 79%|███████▉ | 79/100 [00:00<00:00, 147.54 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 80%|████████ | 80/100 [00:00<00:00, 147.38 it/sec, obj=-3.26e+3]
INFO - 12:32:19: 81%|████████ | 81/100 [00:00<00:00, 147.28 it/sec, obj=-3.74e+3]
INFO - 12:32:19: 82%|████████▏ | 82/100 [00:00<00:00, 147.32 it/sec, obj=-4.03e+3]
INFO - 12:32:19: 83%|████████▎ | 83/100 [00:00<00:00, 147.22 it/sec, obj=-3.44e+3]
INFO - 12:32:19: 84%|████████▍ | 84/100 [00:00<00:00, 147.09 it/sec, obj=-3.66e+3]
INFO - 12:32:19: 85%|████████▌ | 85/100 [00:00<00:00, 146.94 it/sec, obj=-3.48e+3]
INFO - 12:32:19: 86%|████████▌ | 86/100 [00:00<00:00, 146.79 it/sec, obj=-3.6e+3]
INFO - 12:32:19: 87%|████████▋ | 87/100 [00:00<00:00, 146.61 it/sec, obj=-3.42e+3]
INFO - 12:32:19: 88%|████████▊ | 88/100 [00:00<00:00, 146.41 it/sec, obj=-3.3e+3]
INFO - 12:32:19: 89%|████████▉ | 89/100 [00:00<00:00, 146.26 it/sec, obj=-3.73e+3]
INFO - 12:32:19: 90%|█████████ | 90/100 [00:00<00:00, 146.14 it/sec, obj=-3.88e+3]
INFO - 12:32:19: 91%|█████████ | 91/100 [00:00<00:00, 145.95 it/sec, obj=-3.78e+3]
INFO - 12:32:19: 92%|█████████▏| 92/100 [00:00<00:00, 145.79 it/sec, obj=-3.6e+3]
INFO - 12:32:19: 93%|█████████▎| 93/100 [00:00<00:00, 145.70 it/sec, obj=-3.71e+3]
INFO - 12:32:19: 94%|█████████▍| 94/100 [00:00<00:00, 145.74 it/sec, obj=-3.79e+3]
INFO - 12:32:19: 95%|█████████▌| 95/100 [00:00<00:00, 145.74 it/sec, obj=-3.77e+3]
INFO - 12:32:19: 96%|█████████▌| 96/100 [00:00<00:00, 145.69 it/sec, obj=-3.74e+3]
INFO - 12:32:19: 97%|█████████▋| 97/100 [00:00<00:00, 145.21 it/sec, obj=-3.63e+3]
INFO - 12:32:19: 98%|█████████▊| 98/100 [00:00<00:00, 145.12 it/sec, obj=-3.57e+3]
INFO - 12:32:19: 99%|█████████▉| 99/100 [00:00<00:00, 144.90 it/sec, obj=-3.96e+3]
INFO - 12:32:19: 100%|██████████| 100/100 [00:00<00:00, 144.50 it/sec, obj=-3.96e+3]
INFO - 12:32:19: Optimization result:
INFO - 12:32:19: Optimizer info:
INFO - 12:32:19: Status: None
INFO - 12:32:19: Message: Maximum number of iterations reached. GEMSEO stopped the driver.
INFO - 12:32:19: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:19: Solution:
INFO - 12:32:19: The solution is feasible.
INFO - 12:32:19: Objective: -3963.381916234575
INFO - 12:32:19: Standardized constraints:
INFO - 12:32:19: g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
INFO - 12:32:19: -0.10279135]
INFO - 12:32:19: g_2 = 0.0
INFO - 12:32:19: g_3 = [-7.67188837e-01 -2.32811163e-01 3.23790288e-06 -1.83255000e-01]
INFO - 12:32:19: Design space:
INFO - 12:32:19: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:19: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:19: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:19: | x_shared[0] | 0.01 | 0.06000000000000003 | 0.09 | float |
INFO - 12:32:19: | x_shared[1] | 30000 | 60000 | 60000 | float |
INFO - 12:32:19: | x_shared[2] | 1.4 | 1.4 | 1.8 | float |
INFO - 12:32:19: | x_shared[3] | 2.5 | 2.5 | 8.5 | float |
INFO - 12:32:19: | x_shared[4] | 40 | 70 | 70 | float |
INFO - 12:32:19: | x_shared[5] | 500 | 1500 | 1500 | float |
INFO - 12:32:19: | x_1[0] | 0.1 | 0.4 | 0.4 | float |
INFO - 12:32:19: | x_1[1] | 0.75 | 0.75 | 1.25 | float |
INFO - 12:32:19: | x_2 | 0.75 | 0.75 | 1.25 | float |
INFO - 12:32:19: | x_3 | 0.1 | 0.1562452515515999 | 1 | float |
INFO - 12:32:19: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:19: *** End MDOScenario execution ***
Solve the Sobieski's SSBJ problem with NumPy¶
mod_scenario = MDOScenario(
[
SobieskiStructure(),
SobieskiAerodynamics(),
SobieskiPropulsion(),
SobieskiMission(),
],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)
Out:
INFO - 12:32:19: *** Start MDOScenario execution ***
INFO - 12:32:19: MDOScenario
INFO - 12:32:19: Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
INFO - 12:32:19: MDO formulation: MDF
INFO - 12:32:19: Optimization problem:
INFO - 12:32:19: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:19: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:19: under the inequality constraints
INFO - 12:32:19: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:19: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:19: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:19: over the design space:
INFO - 12:32:19: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:19: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:19: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:19: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:19: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:19: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:19: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:19: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:19: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:19: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:19: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:19: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:19: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:19: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:19: Solving optimization problem with algorithm NLOPT_COBYLA:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
INFO - 12:32:19: 1%| | 1/100 [00:00<00:01, 55.98 it/sec, obj=-536]
INFO - 12:32:19: 2%|▏ | 2/100 [00:00<00:01, 50.52 it/sec, obj=-539]
INFO - 12:32:19: 3%|▎ | 3/100 [00:00<00:01, 50.46 it/sec, obj=-763]
INFO - 12:32:19: 4%|▍ | 4/100 [00:00<00:01, 50.71 it/sec, obj=-713]
INFO - 12:32:19: 5%|▌ | 5/100 [00:00<00:01, 51.72 it/sec, obj=-687]
INFO - 12:32:19: 6%|▌ | 6/100 [00:00<00:01, 51.74 it/sec, obj=-897]
INFO - 12:32:19: 7%|▋ | 7/100 [00:00<00:01, 52.86 it/sec, obj=-957]
INFO - 12:32:19: 8%|▊ | 8/100 [00:00<00:01, 53.01 it/sec, obj=-956]
INFO - 12:32:19: 9%|▉ | 9/100 [00:00<00:01, 53.55 it/sec, obj=-930]
INFO - 12:32:19: 10%|█ | 10/100 [00:00<00:01, 54.05 it/sec, obj=-943]
INFO - 12:32:19: 11%|█ | 11/100 [00:00<00:01, 54.35 it/sec, obj=-768]
INFO - 12:32:19: 12%|█▏ | 12/100 [00:00<00:01, 51.70 it/sec, obj=-1e+3]
INFO - 12:32:19: 13%|█▎ | 13/100 [00:00<00:01, 49.94 it/sec, obj=-1.34e+3]
INFO - 12:32:19: 14%|█▍ | 14/100 [00:00<00:01, 48.91 it/sec, obj=-1.85e+3]
INFO - 12:32:20: 15%|█▌ | 15/100 [00:00<00:01, 47.26 it/sec, obj=-1.87e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.7204854871194414e-05 is still above the tolerance 1e-06.
INFO - 12:32:20: 16%|█▌ | 16/100 [00:00<00:01, 45.68 it/sec, obj=-1.99e+3]
INFO - 12:32:20: 17%|█▋ | 17/100 [00:00<00:01, 44.65 it/sec, obj=-2.18e+3]
INFO - 12:32:20: 18%|█▊ | 18/100 [00:00<00:01, 43.57 it/sec, obj=-2.2e+3]
INFO - 12:32:20: 19%|█▉ | 19/100 [00:00<00:01, 42.88 it/sec, obj=-2.42e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.9335592270087927e-05 is still above the tolerance 1e-06.
INFO - 12:32:20: 20%|██ | 20/100 [00:00<00:01, 42.03 it/sec, obj=-2.37e+3]
INFO - 12:32:20: 21%|██ | 21/100 [00:00<00:01, 41.76 it/sec, obj=-2.83e+3]
INFO - 12:32:20: 22%|██▏ | 22/100 [00:00<00:01, 40.92 it/sec, obj=-3.12e+3]
INFO - 12:32:20: 23%|██▎ | 23/100 [00:00<00:01, 40.86 it/sec, obj=-3.21e+3]
INFO - 12:32:20: 24%|██▍ | 24/100 [00:00<00:01, 40.92 it/sec, obj=-3.99e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.6602480542748623e-05 is still above the tolerance 1e-06.
INFO - 12:32:20: 25%|██▌ | 25/100 [00:00<00:01, 40.35 it/sec, obj=-2.6e+3]
INFO - 12:32:20: 26%|██▌ | 26/100 [00:00<00:01, 40.05 it/sec, obj=-3.06e+3]
INFO - 12:32:20: 27%|██▋ | 27/100 [00:00<00:01, 39.92 it/sec, obj=-2.98e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.131065719805529e-06 is still above the tolerance 1e-06.
INFO - 12:32:20: 28%|██▊ | 28/100 [00:00<00:01, 39.14 it/sec, obj=-3.24e+3]
INFO - 12:32:20: 29%|██▉ | 29/100 [00:00<00:01, 38.95 it/sec, obj=-3.67e+3]
INFO - 12:32:20: 30%|███ | 30/100 [00:00<00:01, 38.97 it/sec, obj=-3.16e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 0.00020046262987076315 is still above the tolerance 1e-06.
INFO - 12:32:20: 31%|███ | 31/100 [00:00<00:01, 38.63 it/sec, obj=-3.09e+3]
INFO - 12:32:20: 32%|███▏ | 32/100 [00:00<00:01, 38.28 it/sec, obj=-3.47e+3]
INFO - 12:32:20: 33%|███▎ | 33/100 [00:00<00:01, 37.96 it/sec, obj=-3.52e+3]
INFO - 12:32:20: 34%|███▍ | 34/100 [00:00<00:01, 37.97 it/sec, obj=-3.52e+3]
INFO - 12:32:20: 35%|███▌ | 35/100 [00:00<00:01, 37.63 it/sec, obj=-3.2e+3]
INFO - 12:32:20: 36%|███▌ | 36/100 [00:00<00:01, 37.53 it/sec, obj=-3.52e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.5187500368837417e-06 is still above the tolerance 1e-06.
INFO - 12:32:20: 37%|███▋ | 37/100 [00:00<00:01, 37.29 it/sec, obj=-2.96e+3]
INFO - 12:32:20: 38%|███▊ | 38/100 [00:01<00:01, 37.33 it/sec, obj=-3.18e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.3580820715243732e-06 is still above the tolerance 1e-06.
INFO - 12:32:20: 39%|███▉ | 39/100 [00:01<00:01, 37.11 it/sec, obj=-3.15e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.0068765557476064e-05 is still above the tolerance 1e-06.
INFO - 12:32:20: 40%|████ | 40/100 [00:01<00:01, 36.84 it/sec, obj=-3.92e+3]
INFO - 12:32:20: 41%|████ | 41/100 [00:01<00:01, 36.60 it/sec, obj=-3.96e+3]
INFO - 12:32:20: 42%|████▏ | 42/100 [00:01<00:01, 36.52 it/sec, obj=-3.96e+3]
INFO - 12:32:20: 43%|████▎ | 43/100 [00:01<00:01, 36.52 it/sec, obj=-3.96e+3]
INFO - 12:32:20: 44%|████▍ | 44/100 [00:01<00:01, 36.33 it/sec, obj=-3.75e+3]
INFO - 12:32:20: 45%|████▌ | 45/100 [00:01<00:01, 36.25 it/sec, obj=-3.94e+3]
WARNING - 12:32:20: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.9699912018918902e-06 is still above the tolerance 1e-06.
INFO - 12:32:20: 46%|████▌ | 46/100 [00:01<00:01, 36.04 it/sec, obj=-3.38e+3]
INFO - 12:32:20: 47%|████▋ | 47/100 [00:01<00:01, 36.14 it/sec, obj=-3.79e+3]
INFO - 12:32:21: 48%|████▊ | 48/100 [00:01<00:01, 36.05 it/sec, obj=-3.41e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.9604198356566634e-05 is still above the tolerance 1e-06.
INFO - 12:32:21: 49%|████▉ | 49/100 [00:01<00:01, 35.92 it/sec, obj=-3.88e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.0414068021569107e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 50%|█████ | 50/100 [00:01<00:01, 35.76 it/sec, obj=-3.56e+3]
INFO - 12:32:21: 51%|█████ | 51/100 [00:01<00:01, 35.78 it/sec, obj=-3.57e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.339805325609159e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 52%|█████▏ | 52/100 [00:01<00:01, 35.65 it/sec, obj=-3.31e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.903076918194352e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 53%|█████▎ | 53/100 [00:01<00:01, 35.55 it/sec, obj=-3.18e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.222419054177024e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 54%|█████▍ | 54/100 [00:01<00:01, 35.45 it/sec, obj=-3.27e+3]
INFO - 12:32:21: 55%|█████▌ | 55/100 [00:01<00:01, 35.49 it/sec, obj=-3.83e+3]
INFO - 12:32:21: 56%|█████▌ | 56/100 [00:01<00:01, 35.58 it/sec, obj=-3.75e+3]
INFO - 12:32:21: 57%|█████▋ | 57/100 [00:01<00:01, 35.55 it/sec, obj=-3.42e+3]
INFO - 12:32:21: 58%|█████▊ | 58/100 [00:01<00:01, 35.37 it/sec, obj=-3.51e+3]
INFO - 12:32:21: 59%|█████▉ | 59/100 [00:01<00:01, 35.28 it/sec, obj=-3.62e+3]
INFO - 12:32:21: 60%|██████ | 60/100 [00:01<00:01, 35.24 it/sec, obj=-3.5e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.439216568543729e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 61%|██████ | 61/100 [00:01<00:01, 35.11 it/sec, obj=-3.46e+3]
INFO - 12:32:21: 62%|██████▏ | 62/100 [00:01<00:01, 35.09 it/sec, obj=-3.34e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 6.1842511238495055e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 63%|██████▎ | 63/100 [00:01<00:01, 35.01 it/sec, obj=-3.36e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.6372363218085485e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 64%|██████▍ | 64/100 [00:01<00:01, 34.94 it/sec, obj=-3.19e+3]
INFO - 12:32:21: 65%|██████▌ | 65/100 [00:01<00:01, 34.83 it/sec, obj=-3.45e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 6.279609664777154e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 66%|██████▌ | 66/100 [00:01<00:00, 34.73 it/sec, obj=-3.45e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 4.405999600169342e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 67%|██████▋ | 67/100 [00:01<00:00, 34.65 it/sec, obj=-3.45e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.4425135716984906e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 68%|██████▊ | 68/100 [00:01<00:00, 34.49 it/sec, obj=-3.32e+3]
INFO - 12:32:21: 69%|██████▉ | 69/100 [00:02<00:00, 34.39 it/sec, obj=-3.42e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.662998088252376e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 70%|███████ | 70/100 [00:02<00:00, 34.33 it/sec, obj=-3.54e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.981553508096536e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 71%|███████ | 71/100 [00:02<00:00, 34.21 it/sec, obj=-3.3e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.529222752819427e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 72%|███████▏ | 72/100 [00:02<00:00, 34.17 it/sec, obj=-3.34e+3]
INFO - 12:32:21: 73%|███████▎ | 73/100 [00:02<00:00, 34.10 it/sec, obj=-3.14e+3]
INFO - 12:32:21: 74%|███████▍ | 74/100 [00:02<00:00, 34.14 it/sec, obj=-3.64e+3]
INFO - 12:32:21: 75%|███████▌ | 75/100 [00:02<00:00, 34.09 it/sec, obj=-3.39e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.6083054685158987e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 76%|███████▌ | 76/100 [00:02<00:00, 34.04 it/sec, obj=-3.11e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.712717311801625e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 77%|███████▋ | 77/100 [00:02<00:00, 33.98 it/sec, obj=-3.51e+3]
WARNING - 12:32:21: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.1988893016520166e-06 is still above the tolerance 1e-06.
INFO - 12:32:21: 78%|███████▊ | 78/100 [00:02<00:00, 33.92 it/sec, obj=-3.07e+3]
INFO - 12:32:22: 79%|███████▉ | 79/100 [00:02<00:00, 33.98 it/sec, obj=-3.69e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 3.3277311553287673e-06 is still above the tolerance 1e-06.
INFO - 12:32:22: 80%|████████ | 80/100 [00:02<00:00, 33.93 it/sec, obj=-3.08e+3]
INFO - 12:32:22: 81%|████████ | 81/100 [00:02<00:00, 33.89 it/sec, obj=-3.39e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 5.388041776135559e-06 is still above the tolerance 1e-06.
INFO - 12:32:22: 82%|████████▏ | 82/100 [00:02<00:00, 33.84 it/sec, obj=-3.5e+3]
INFO - 12:32:22: 83%|████████▎ | 83/100 [00:02<00:00, 33.80 it/sec, obj=-3.08e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.3902672321401141e-05 is still above the tolerance 1e-06.
INFO - 12:32:22: 84%|████████▍ | 84/100 [00:02<00:00, 33.74 it/sec, obj=-3.79e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 8.258646891354083e-06 is still above the tolerance 1e-06.
INFO - 12:32:22: 85%|████████▌ | 85/100 [00:02<00:00, 33.68 it/sec, obj=-3.67e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.0805763550512402e-05 is still above the tolerance 1e-06.
INFO - 12:32:22: 86%|████████▌ | 86/100 [00:02<00:00, 33.60 it/sec, obj=-3.87e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 2.9796750242748394e-06 is still above the tolerance 1e-06.
INFO - 12:32:22: 87%|████████▋ | 87/100 [00:02<00:00, 33.54 it/sec, obj=-3.38e+3]
INFO - 12:32:22: 88%|████████▊ | 88/100 [00:02<00:00, 33.58 it/sec, obj=-3.96e+3]
INFO - 12:32:22: 89%|████████▉ | 89/100 [00:02<00:00, 33.59 it/sec, obj=-3.94e+3]
INFO - 12:32:22: 90%|█████████ | 90/100 [00:02<00:00, 33.62 it/sec, obj=-3.96e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.7338183877226514e-05 is still above the tolerance 1e-06.
INFO - 12:32:22: 91%|█████████ | 91/100 [00:02<00:00, 33.56 it/sec, obj=-3.92e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.5198708905547502e-05 is still above the tolerance 1e-06.
INFO - 12:32:22: 92%|█████████▏| 92/100 [00:02<00:00, 33.52 it/sec, obj=-3.9e+3]
INFO - 12:32:22: 93%|█████████▎| 93/100 [00:02<00:00, 33.53 it/sec, obj=-3.96e+3]
INFO - 12:32:22: 94%|█████████▍| 94/100 [00:02<00:00, 33.57 it/sec, obj=-3.92e+3]
INFO - 12:32:22: 95%|█████████▌| 95/100 [00:02<00:00, 33.60 it/sec, obj=-3.96e+3]
INFO - 12:32:22: 96%|█████████▌| 96/100 [00:02<00:00, 33.63 it/sec, obj=-3.94e+3]
INFO - 12:32:22: 97%|█████████▋| 97/100 [00:02<00:00, 33.65 it/sec, obj=-3.92e+3]
INFO - 12:32:22: 98%|█████████▊| 98/100 [00:02<00:00, 33.65 it/sec, obj=-3.92e+3]
INFO - 12:32:22: 99%|█████████▉| 99/100 [00:02<00:00, 33.66 it/sec, obj=-3.91e+3]
WARNING - 12:32:22: MDAJacobi has reached its maximum number of iterations, but the normalized residual norm 1.842849391330206e-05 is still above the tolerance 1e-06.
INFO - 12:32:22: 100%|██████████| 100/100 [00:02<00:00, 33.61 it/sec, obj=-3.93e+3]
INFO - 12:32:22: Optimization result:
INFO - 12:32:22: Optimizer info:
INFO - 12:32:22: Status: None
INFO - 12:32:22: Message: Maximum number of iterations reached. GEMSEO stopped the driver.
INFO - 12:32:22: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:22: Solution:
INFO - 12:32:22: The solution is feasible.
INFO - 12:32:22: Objective: -3963.3793053483255
INFO - 12:32:22: Standardized constraints:
INFO - 12:32:22: g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
INFO - 12:32:22: -0.10279135]
INFO - 12:32:22: g_2 = 0.0
INFO - 12:32:22: g_3 = [-7.67185581e-01 -2.32814419e-01 -1.20219524e-06 -1.83255000e-01]
INFO - 12:32:22: Design space:
INFO - 12:32:22: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:22: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:22: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:22: | x_shared[0] | 0.01 | 0.05999999999999999 | 0.09 | float |
INFO - 12:32:22: | x_shared[1] | 30000 | 60000 | 60000 | float |
INFO - 12:32:22: | x_shared[2] | 1.4 | 1.4 | 1.8 | float |
INFO - 12:32:22: | x_shared[3] | 2.5 | 2.500000000000015 | 8.5 | float |
INFO - 12:32:22: | x_shared[4] | 40 | 70 | 70 | float |
INFO - 12:32:22: | x_shared[5] | 500 | 1500 | 1500 | float |
INFO - 12:32:22: | x_1[0] | 0.1 | 0.4 | 0.4 | float |
INFO - 12:32:22: | x_1[1] | 0.75 | 0.7500000000000009 | 1.25 | float |
INFO - 12:32:22: | x_2 | 0.75 | 0.7500000000000089 | 1.25 | float |
INFO - 12:32:22: | x_3 | 0.1 | 0.1562445578095981 | 1 | float |
INFO - 12:32:22: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:22: *** End MDOScenario execution ***
Conclusion¶
JAX is about 4 times faster than NumPy in the case of an optimization loop with a Jacobi MDA.
MDF with MDAGaussSeidel¶
Solve the Sobieski's SSBJ problem with JAX¶
chain = JAXSobieskiChain()
mod_scenario = MDOScenario(
[chain],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)
Out:
INFO - 12:32:24: Compilation of the output function JAXSobieskiChain: 0:00:00.326763 seconds.
INFO - 12:32:24: Compilation of the Jacobian function JAXSobieskiChain: 0:00:01.016398 seconds.
INFO - 12:32:24: Variable y_14 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:24: Variable y_24 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:24: Variable y_34 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:24: Variable y_23 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:24: Variable y_21 was removed from the Design Space, it is not an input of any discipline.
INFO - 12:32:24: *** Start MDOScenario execution ***
INFO - 12:32:24: MDOScenario
INFO - 12:32:24: Disciplines: JAXSobieskiChain
INFO - 12:32:24: MDO formulation: MDF
INFO - 12:32:24: Optimization problem:
INFO - 12:32:24: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:24: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:24: under the inequality constraints
INFO - 12:32:24: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:24: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:24: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:24: over the design space:
INFO - 12:32:24: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:24: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:24: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:24: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:24: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:24: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:24: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:24: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:24: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:24: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:24: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:24: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:24: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:24: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:24: Solving optimization problem with algorithm NLOPT_COBYLA:
INFO - 12:32:24: 1%| | 1/100 [00:00<00:00, 242.25 it/sec, obj=-536]
INFO - 12:32:24: 2%|▏ | 2/100 [00:00<00:00, 192.13 it/sec, obj=-539]
INFO - 12:32:24: 3%|▎ | 3/100 [00:00<00:00, 192.09 it/sec, obj=-763]
INFO - 12:32:24: 4%|▍ | 4/100 [00:00<00:00, 192.82 it/sec, obj=-713]
INFO - 12:32:24: 5%|▌ | 5/100 [00:00<00:00, 191.43 it/sec, obj=-687]
INFO - 12:32:24: 6%|▌ | 6/100 [00:00<00:00, 190.46 it/sec, obj=-897]
INFO - 12:32:24: 7%|▋ | 7/100 [00:00<00:00, 187.96 it/sec, obj=-957]
INFO - 12:32:24: 8%|▊ | 8/100 [00:00<00:00, 185.99 it/sec, obj=-956]
INFO - 12:32:24: 9%|▉ | 9/100 [00:00<00:00, 177.97 it/sec, obj=-930]
INFO - 12:32:24: 10%|█ | 10/100 [00:00<00:00, 177.65 it/sec, obj=-943]
INFO - 12:32:24: 11%|█ | 11/100 [00:00<00:00, 177.71 it/sec, obj=-768]
INFO - 12:32:24: 12%|█▏ | 12/100 [00:00<00:00, 175.03 it/sec, obj=-1e+3]
INFO - 12:32:24: 13%|█▎ | 13/100 [00:00<00:00, 172.21 it/sec, obj=-1.34e+3]
INFO - 12:32:24: 14%|█▍ | 14/100 [00:00<00:00, 169.43 it/sec, obj=-1.85e+3]
WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.5897449414804664e-05 is still above the tolerance 1e-06.
INFO - 12:32:24: 15%|█▌ | 15/100 [00:00<00:00, 165.26 it/sec, obj=-1.87e+3]
WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 3.1764060178304437e-06 is still above the tolerance 1e-06.
INFO - 12:32:24: 16%|█▌ | 16/100 [00:00<00:00, 161.75 it/sec, obj=-1.99e+3]
WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.2161314217002324e-06 is still above the tolerance 1e-06.
INFO - 12:32:24: 17%|█▋ | 17/100 [00:00<00:00, 158.92 it/sec, obj=-2.18e+3]
INFO - 12:32:24: 18%|█▊ | 18/100 [00:00<00:00, 156.35 it/sec, obj=-2.51e+3]
INFO - 12:32:24: 19%|█▉ | 19/100 [00:00<00:00, 155.73 it/sec, obj=-2.92e+3]
INFO - 12:32:24: 20%|██ | 20/100 [00:00<00:00, 155.85 it/sec, obj=-3.03e+3]
INFO - 12:32:24: 21%|██ | 21/100 [00:00<00:00, 157.31 it/sec, obj=-3.16e+3]
INFO - 12:32:24: 22%|██▏ | 22/100 [00:00<00:00, 154.59 it/sec, obj=-2.75e+3]
INFO - 12:32:24: 23%|██▎ | 23/100 [00:00<00:00, 155.50 it/sec, obj=-2.61e+3]
INFO - 12:32:24: 24%|██▍ | 24/100 [00:00<00:00, 156.51 it/sec, obj=-2.22e+3]
INFO - 12:32:24: 25%|██▌ | 25/100 [00:00<00:00, 157.90 it/sec, obj=-2.95e+3]
INFO - 12:32:24: 26%|██▌ | 26/100 [00:00<00:00, 159.47 it/sec, obj=-3.3e+3]
INFO - 12:32:24: 27%|██▋ | 27/100 [00:00<00:00, 160.97 it/sec, obj=-3.22e+3]
INFO - 12:32:24: 28%|██▊ | 28/100 [00:00<00:00, 161.41 it/sec, obj=-3.49e+3]
INFO - 12:32:24: 29%|██▉ | 29/100 [00:00<00:00, 162.21 it/sec, obj=-3.57e+3]
INFO - 12:32:24: 30%|███ | 30/100 [00:00<00:00, 161.81 it/sec, obj=-3.13e+3]
INFO - 12:32:24: 31%|███ | 31/100 [00:00<00:00, 162.67 it/sec, obj=-3.43e+3]
INFO - 12:32:24: 32%|███▏ | 32/100 [00:00<00:00, 163.10 it/sec, obj=-3.52e+3]
INFO - 12:32:24: 33%|███▎ | 33/100 [00:00<00:00, 163.87 it/sec, obj=-3.27e+3]
INFO - 12:32:24: 34%|███▍ | 34/100 [00:00<00:00, 163.77 it/sec, obj=-3.56e+3]
INFO - 12:32:24: 35%|███▌ | 35/100 [00:00<00:00, 164.17 it/sec, obj=-3.81e+3]
INFO - 12:32:24: 36%|███▌ | 36/100 [00:00<00:00, 165.07 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 37%|███▋ | 37/100 [00:00<00:00, 165.20 it/sec, obj=-3.5e+3]
INFO - 12:32:24: 38%|███▊ | 38/100 [00:00<00:00, 166.16 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 39%|███▉ | 39/100 [00:00<00:00, 166.23 it/sec, obj=-3.52e+3]
INFO - 12:32:24: 40%|████ | 40/100 [00:00<00:00, 167.07 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 41%|████ | 41/100 [00:00<00:00, 167.40 it/sec, obj=-3.54e+3]
INFO - 12:32:24: 42%|████▏ | 42/100 [00:00<00:00, 168.30 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 43%|████▎ | 43/100 [00:00<00:00, 168.30 it/sec, obj=-3.53e+3]
INFO - 12:32:24: 44%|████▍ | 44/100 [00:00<00:00, 169.16 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 45%|████▌ | 45/100 [00:00<00:00, 169.53 it/sec, obj=-3.39e+3]
INFO - 12:32:24: 46%|████▌ | 46/100 [00:00<00:00, 170.29 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 47%|████▋ | 47/100 [00:00<00:00, 171.02 it/sec, obj=-3.37e+3]
INFO - 12:32:24: 48%|████▊ | 48/100 [00:00<00:00, 171.94 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 49%|████▉ | 49/100 [00:00<00:00, 171.69 it/sec, obj=-3.13e+3]
INFO - 12:32:24: 50%|█████ | 50/100 [00:00<00:00, 172.57 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 51%|█████ | 51/100 [00:00<00:00, 173.17 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 52%|█████▏ | 52/100 [00:00<00:00, 173.52 it/sec, obj=-3.69e+3]
INFO - 12:32:24: 53%|█████▎ | 53/100 [00:00<00:00, 173.88 it/sec, obj=-3.43e+3]
INFO - 12:32:24: 54%|█████▍ | 54/100 [00:00<00:00, 174.32 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 55%|█████▌ | 55/100 [00:00<00:00, 174.25 it/sec, obj=-3.44e+3]
INFO - 12:32:24: 56%|█████▌ | 56/100 [00:00<00:00, 174.72 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 57%|█████▋ | 57/100 [00:00<00:00, 174.76 it/sec, obj=-3.38e+3]
INFO - 12:32:24: 58%|█████▊ | 58/100 [00:00<00:00, 175.13 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 59%|█████▉ | 59/100 [00:00<00:00, 174.35 it/sec, obj=-3.51e+3]
INFO - 12:32:24: 60%|██████ | 60/100 [00:00<00:00, 174.53 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 61%|██████ | 61/100 [00:00<00:00, 173.67 it/sec, obj=-3.67e+3]
INFO - 12:32:24: 62%|██████▏ | 62/100 [00:00<00:00, 173.98 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 63%|██████▎ | 63/100 [00:00<00:00, 173.99 it/sec, obj=-3.37e+3]
INFO - 12:32:24: 64%|██████▍ | 64/100 [00:00<00:00, 174.31 it/sec, obj=-3.7e+3]
INFO - 12:32:24: 65%|██████▌ | 65/100 [00:00<00:00, 174.64 it/sec, obj=-3.76e+3]
INFO - 12:32:24: 66%|██████▌ | 66/100 [00:00<00:00, 174.47 it/sec, obj=-3.6e+3]
INFO - 12:32:24: 67%|██████▋ | 67/100 [00:00<00:00, 174.87 it/sec, obj=-3.76e+3]
INFO - 12:32:24: 68%|██████▊ | 68/100 [00:00<00:00, 175.07 it/sec, obj=-3.67e+3]
INFO - 12:32:24: 69%|██████▉ | 69/100 [00:00<00:00, 174.91 it/sec, obj=-3.89e+3]
INFO - 12:32:24: 70%|███████ | 70/100 [00:00<00:00, 174.77 it/sec, obj=-3.84e+3]
INFO - 12:32:24: 71%|███████ | 71/100 [00:00<00:00, 174.75 it/sec, obj=-3.79e+3]
INFO - 12:32:24: 72%|███████▏ | 72/100 [00:00<00:00, 174.42 it/sec, obj=-3.93e+3]
INFO - 12:32:24: 73%|███████▎ | 73/100 [00:00<00:00, 174.09 it/sec, obj=-3.9e+3]
INFO - 12:32:24: 74%|███████▍ | 74/100 [00:00<00:00, 173.81 it/sec, obj=-3.67e+3]
INFO - 12:32:24: 75%|███████▌ | 75/100 [00:00<00:00, 173.55 it/sec, obj=-3.9e+3]
INFO - 12:32:24: 76%|███████▌ | 76/100 [00:00<00:00, 173.37 it/sec, obj=-3.8e+3]
INFO - 12:32:24: 77%|███████▋ | 77/100 [00:00<00:00, 173.17 it/sec, obj=-3.9e+3]
INFO - 12:32:24: 78%|███████▊ | 78/100 [00:00<00:00, 172.40 it/sec, obj=-3.78e+3]
INFO - 12:32:24: 79%|███████▉ | 79/100 [00:00<00:00, 171.91 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 80%|████████ | 80/100 [00:00<00:00, 171.63 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 81%|████████ | 81/100 [00:00<00:00, 171.52 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 82%|████████▏ | 82/100 [00:00<00:00, 171.37 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 83%|████████▎ | 83/100 [00:00<00:00, 171.23 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 84%|████████▍ | 84/100 [00:00<00:00, 171.02 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 85%|████████▌ | 85/100 [00:00<00:00, 170.36 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 86%|████████▌ | 86/100 [00:00<00:00, 170.13 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 87%|████████▋ | 87/100 [00:00<00:00, 169.93 it/sec, obj=-3.96e+3]
INFO - 12:32:24: 88%|████████▊ | 88/100 [00:00<00:00, 169.79 it/sec, obj=-3.72e+3]
INFO - 12:32:24: 89%|████████▉ | 89/100 [00:00<00:00, 169.70 it/sec, obj=-3.77e+3]
INFO - 12:32:24: 90%|█████████ | 90/100 [00:00<00:00, 169.68 it/sec, obj=-3.79e+3]
INFO - 12:32:24: 91%|█████████ | 91/100 [00:00<00:00, 169.63 it/sec, obj=-3.78e+3]
INFO - 12:32:24: 92%|█████████▏| 92/100 [00:00<00:00, 169.07 it/sec, obj=-4.09e+3]
INFO - 12:32:24: 93%|█████████▎| 93/100 [00:00<00:00, 168.93 it/sec, obj=-3.64e+3]
INFO - 12:32:24: 94%|█████████▍| 94/100 [00:00<00:00, 168.95 it/sec, obj=-3.8e+3]
INFO - 12:32:24: 95%|█████████▌| 95/100 [00:00<00:00, 168.96 it/sec, obj=-4.1e+3]
INFO - 12:32:24: 96%|█████████▌| 96/100 [00:00<00:00, 168.80 it/sec, obj=-4.01e+3]
INFO - 12:32:24: 97%|█████████▋| 97/100 [00:00<00:00, 168.71 it/sec, obj=-3.95e+3]
INFO - 12:32:24: 98%|█████████▊| 98/100 [00:00<00:00, 168.67 it/sec, obj=-4.17e+3]
INFO - 12:32:24: 99%|█████████▉| 99/100 [00:00<00:00, 167.76 it/sec, obj=-3.67e+3]
INFO - 12:32:24: 100%|██████████| 100/100 [00:00<00:00, 167.00 it/sec, obj=-3.71e+3]
INFO - 12:32:24: Optimization result:
INFO - 12:32:24: Optimizer info:
INFO - 12:32:24: Status: None
INFO - 12:32:24: Message: Maximum number of iterations reached. GEMSEO stopped the driver.
INFO - 12:32:24: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:24: Solution:
INFO - 12:32:24: The solution is feasible.
INFO - 12:32:24: Objective: -3963.3800122141256
INFO - 12:32:24: Standardized constraints:
INFO - 12:32:24: g_1 = [-0.01805093 -0.03333915 -0.04424381 -0.05182998 -0.05732217 -0.13720865
INFO - 12:32:24: -0.10279135]
INFO - 12:32:24: g_2 = 0.0
INFO - 12:32:24: g_3 = [-7.67186463e-01 -2.32813537e-01 -9.08552122e-11 -1.83255000e-01]
INFO - 12:32:24: Design space:
INFO - 12:32:24: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:24: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:24: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:24: | x_shared[0] | 0.01 | 0.06000000000000003 | 0.09 | float |
INFO - 12:32:24: | x_shared[1] | 30000 | 60000 | 60000 | float |
INFO - 12:32:24: | x_shared[2] | 1.4 | 1.4 | 1.8 | float |
INFO - 12:32:24: | x_shared[3] | 2.5 | 2.5 | 8.5 | float |
INFO - 12:32:24: | x_shared[4] | 40 | 70 | 70 | float |
INFO - 12:32:24: | x_shared[5] | 500 | 1500 | 1500 | float |
INFO - 12:32:24: | x_1[0] | 0.1 | 0.4 | 0.4 | float |
INFO - 12:32:24: | x_1[1] | 0.75 | 0.75 | 1.25 | float |
INFO - 12:32:24: | x_2 | 0.75 | 0.75 | 1.25 | float |
INFO - 12:32:24: | x_3 | 0.1 | 0.1562447456320918 | 1 | float |
INFO - 12:32:24: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:24: *** End MDOScenario execution ***
Solve the Sobieski's SSBJ problem with NumPy¶
mod_scenario = MDOScenario(
[
SobieskiStructure(),
SobieskiAerodynamics(),
SobieskiPropulsion(),
SobieskiMission(),
],
"y_4",
SobieskiDesignSpace(),
maximize_objective=True,
formulation_name="MDF",
main_mda_settings={"inner_mda_name": "MDAGaussSeidel"},
)
mod_scenario.add_constraint("g_1", "ineq")
mod_scenario.add_constraint("g_2", "ineq")
mod_scenario.add_constraint("g_3", "ineq")
mod_scenario.execute(algo_name="NLOPT_COBYLA", max_iter=100)
Out:
INFO - 12:32:24: *** Start MDOScenario execution ***
INFO - 12:32:24: MDOScenario
INFO - 12:32:24: Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure
INFO - 12:32:24: MDO formulation: MDF
INFO - 12:32:24: Optimization problem:
INFO - 12:32:24: minimize -y_4(x_shared, x_1, x_2, x_3)
INFO - 12:32:24: with respect to x_1, x_2, x_3, x_shared
INFO - 12:32:24: under the inequality constraints
INFO - 12:32:24: g_1(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:24: g_2(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:24: g_3(x_shared, x_1, x_2, x_3) <= 0
INFO - 12:32:24: over the design space:
INFO - 12:32:24: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:24: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:24: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:24: | x_shared[0] | 0.01 | 0.05 | 0.09 | float |
INFO - 12:32:24: | x_shared[1] | 30000 | 45000 | 60000 | float |
INFO - 12:32:24: | x_shared[2] | 1.4 | 1.6 | 1.8 | float |
INFO - 12:32:24: | x_shared[3] | 2.5 | 5.5 | 8.5 | float |
INFO - 12:32:24: | x_shared[4] | 40 | 55 | 70 | float |
INFO - 12:32:24: | x_shared[5] | 500 | 1000 | 1500 | float |
INFO - 12:32:24: | x_1[0] | 0.1 | 0.25 | 0.4 | float |
INFO - 12:32:24: | x_1[1] | 0.75 | 1 | 1.25 | float |
INFO - 12:32:24: | x_2 | 0.75 | 1 | 1.25 | float |
INFO - 12:32:24: | x_3 | 0.1 | 0.5 | 1 | float |
INFO - 12:32:24: +-------------+-------------+-------+-------------+-------+
INFO - 12:32:24: Solving optimization problem with algorithm NLOPT_COBYLA:
/builds/gemseo/dev/gemseo-jax/.tox/doc/lib64/python3.12/site-packages/gemseo/problems/mdo/sobieski/core/utils.py:225: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
ai_coeff[index] = -(f_bound[2] - f_bound[0]) / (2 * mtx_shifted[0, 1])
INFO - 12:32:24: 1%| | 1/100 [00:00<00:00, 109.39 it/sec, obj=-536]
INFO - 12:32:24: 2%|▏ | 2/100 [00:00<00:01, 85.17 it/sec, obj=-539]
INFO - 12:32:24: 3%|▎ | 3/100 [00:00<00:01, 80.99 it/sec, obj=-763]
INFO - 12:32:24: 4%|▍ | 4/100 [00:00<00:01, 80.94 it/sec, obj=-713]
INFO - 12:32:24: 5%|▌ | 5/100 [00:00<00:01, 80.96 it/sec, obj=-687]
INFO - 12:32:24: 6%|▌ | 6/100 [00:00<00:01, 78.59 it/sec, obj=-897]
INFO - 12:32:24: 7%|▋ | 7/100 [00:00<00:01, 77.10 it/sec, obj=-957]
INFO - 12:32:24: 8%|▊ | 8/100 [00:00<00:01, 75.80 it/sec, obj=-956]
INFO - 12:32:24: 9%|▉ | 9/100 [00:00<00:01, 72.57 it/sec, obj=-930]
INFO - 12:32:24: 10%|█ | 10/100 [00:00<00:01, 72.35 it/sec, obj=-943]
INFO - 12:32:24: 11%|█ | 11/100 [00:00<00:01, 72.18 it/sec, obj=-768]
INFO - 12:32:24: 12%|█▏ | 12/100 [00:00<00:01, 71.56 it/sec, obj=-1e+3]
INFO - 12:32:24: 13%|█▎ | 13/100 [00:00<00:01, 70.14 it/sec, obj=-1.34e+3]
INFO - 12:32:24: 14%|█▍ | 14/100 [00:00<00:01, 69.10 it/sec, obj=-1.85e+3]
WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.0691449634588397e-05 is still above the tolerance 1e-06.
INFO - 12:32:24: 15%|█▌ | 15/100 [00:00<00:01, 67.38 it/sec, obj=-1.87e+3]
WARNING - 12:32:24: MDAGaussSeidel has reached its maximum number of iterations, but the normalized residual norm 1.6881473826143826e-06 is still above the tolerance 1e-06.
INFO - 12:32:24: 16%|█▌ | 16/100 [00:00<00:01, 66.00 it/sec, obj=-1.99e+3]
INFO - 12:32:24: 17%|█▋ | 17/100 [00:00<00:01, 64.76 it/sec, obj=-2.18e+3]
INFO - 12:32:24: 18%|█▊ | 18/100 [00:00<00:01, 64.09 it/sec, obj=-2.51e+3]
INFO - 12:32:24: 19%|█▉ | 19/100 [00:00<00:01, 64.04 it/sec, obj=-2.31e+3]
INFO - 12:32:24: 20%|██ | 20/100 [00:00<00:01, 63.57 it/sec, obj=-2.06e+3]
INFO - 12:32:24: 21%|██ | 21/100 [00:00<00:01, 63.62 it/sec, obj=-2.7e+3]
INFO - 12:32:24: 22%|██▏ | 22/100 [00:00<00:01, 64.10 it/sec, obj=-2.83e+3]
INFO - 12:32:25: 23%|██▎ | 23/100 [00:00<00:01, 64.76 it/sec, obj=-3.41e+3]
INFO - 12:32:25: 24%|██▍ | 24/100 [00:00<00:01, 65.67 it/sec, obj=-3.34e+3]
INFO - 12:32:25: 25%|██▌ | 25/100 [00:00<00:01, 66.23 it/sec, obj=-3.11e+3]
INFO - 12:32:25: 26%|██▌ | 26/100 [00:00<00:01, 66.18 it/sec, obj=-3.07e+3]
INFO - 12:32:25: 27%|██▋ | 27/100 [00:00<00:01, 66.73 it/sec, obj=-3.14e+3]
INFO - 12:32:25: 28%|██▊ | 28/100 [00:00<00:01, 67.12 it/sec, obj=-3e+3]
INFO - 12:32:25: 29%|██▉ | 29/100 [00:00<00:01, 67.64 it/sec, obj=-3.16e+3]
INFO - 12:32:25: 30%|███ | 30/100 [00:00<00:01, 67.70 it/sec, obj=-3.34e+3]
INFO - 12:32:25: 31%|███ | 31/100 [00:00<00:01, 67.95 it/sec, obj=-3.11e+3]
INFO - 12:32:25: 32%|███▏ | 32/100 [00:00<00:01, 67.96 it/sec, obj=-2.79e+3]
INFO - 12:32:25: 33%|███▎ | 33/100 [00:00<00:00, 68.12 it/sec, obj=-3.65e+3]
INFO - 12:32:25: 34%|███▍ | 34/100 [00:00<00:00, 68.53 it/sec, obj=-3.52e+3]
INFO - 12:32:25: 35%|███▌ | 35/100 [00:00<00:00, 68.57 it/sec, obj=-3.08e+3]
INFO - 12:32:25: 36%|███▌ | 36/100 [00:00<00:00, 68.71 it/sec, obj=-4.17e+3]
INFO - 12:32:25: 37%|███▋ | 37/100 [00:00<00:00, 68.65 it/sec, obj=-3.66e+3]
INFO - 12:32:25: 38%|███▊ | 38/100 [00:00<00:00, 68.76 it/sec, obj=-3.49e+3]
INFO - 12:32:25: 39%|███▉ | 39/100 [00:00<00:00, 69.10 it/sec, obj=-3.49e+3]
INFO - 12:32:25: 40%|████ | 40/100 [00:00<00:00, 69.13 it/sec, obj=-4.15e+3]
INFO - 12:32:25: 41%|████ | 41/100 [00:00<00:00, 69.26 it/sec, obj=-4.27e+3]
INFO - 12:32:25: 42%|████▏ | 42/100 [00:00<00:00, 69.25 it/sec, obj=-4e+3]
INFO - 12:32:25: 43%|████▎ | 43/100 [00:00<00:00, 69.17 it/sec, obj=-3.53e+3]
INFO - 12:32:25: 44%|████▍ | 44/100 [00:00<00:00, 69.29 it/sec, obj=-4.36e+3]
INFO - 12:32:25: 45%|████▌ | 45/100 [00:00<00:00, 69.40 it/sec, obj=-4.35e+3]
INFO - 12:32:25: 46%|████▌ | 46/100 [00:00<00:00, 69.30 it/sec, obj=-3.65e+3]
INFO - 12:32:25: 47%|████▋ | 47/100 [00:00<00:00, 69.34 it/sec, obj=-2.99e+3]
INFO - 12:32:25: 48%|████▊ | 48/100 [00:00<00:00, 69.36 it/sec, obj=-3.39e+3]
INFO - 12:32:25: 49%|████▉ | 49/100 [00:00<00:00, 69.45 it/sec, obj=-4.45e+3]
INFO - 12:32:25: 50%|█████ | 50/100 [00:00<00:00, 69.58 it/sec, obj=-4.08e+3]
INFO - 12:32:25: 51%|█████ | 51/100 [00:00<00:00, 69.54 it/sec, obj=-3.68e+3]
INFO - 12:32:25: 52%|█████▏ | 52/100 [00:00<00:00, 69.68 it/sec, obj=-4.42e+3]
INFO - 12:32:25: 53%|█████▎ | 53/100 [00:00<00:00, 69.90 it/sec, obj=-4.59e+3]
INFO - 12:32:25: 54%|█████▍ | 54/100 [00:00<00:00, 70.03 it/sec, obj=-4.35e+3]
INFO - 12:32:25: 55%|█████▌ | 55/100 [00:00<00:00, 70.05 it/sec, obj=-3.93e+3]
INFO - 12:32:25: 56%|█████▌ | 56/100 [00:00<00:00, 70.15 it/sec, obj=-4.43e+3]
INFO - 12:32:25: 57%|█████▋ | 57/100 [00:00<00:00, 70.18 it/sec, obj=-3.73e+3]
INFO - 12:32:25: 58%|█████▊ | 58/100 [00:00<00:00, 70.30 it/sec, obj=-4.43e+3]
INFO - 12:32:25: 59%|█████▉ | 59/100 [00:00<00:00, 70.41 it/sec, obj=-3.68e+3]
INFO - 12:32:25: 60%|██████ | 60/100 [00:00<00:00, 70.51 it/sec, obj=-4.42e+3]
INFO - 12:32:25: 61%|██████ | 61/100 [00:00<00:00, 70.45 it/sec, obj=-3.8e+3]
INFO - 12:32:25: 62%|██████▏ | 62/100 [00:00<00:00, 70.46 it/sec, obj=-4.42e+3]
INFO - 12:32:25: 63%|██████▎ | 63/100 [00:00<00:00, 70.62 it/sec, obj=-3.76e+3]
INFO - 12:32:25: 64%|██████▍ | 64/100 [00:00<00:00, 70.71 it/sec, obj=-4.42e+3]
INFO - 12:32:25: 65%|██████▌ | 65/100 [00:00<00:00, 70.80 it/sec, obj=-4.52e+3]
INFO - 12:32:25: 66%|██████▌ | 66/100 [00:00<00:00, 70.81 it/sec, obj=-4.43e+3]
INFO - 12:32:25: 67%|██████▋ | 67/100 [00:00<00:00, 70.96 it/sec, obj=-3.69e+3]
INFO - 12:32:25: 68%|██████▊ | 68/100 [00:00<00:00, 71.05 it/sec, obj=-4.42e+3]
INFO - 12:32:25: 69%|██████▉ | 69/100 [00:00<00:00, 71.19 it/sec, obj=-3.73e+3]
INFO - 12:32:25: 70%|███████ | 70/100 [00:00<00:00, 71.18 it/sec, obj=-4.42e+3]
INFO - 12:32:25: 71%|███████ | 71/100 [00:00<00:00, 71.27 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 72%|███████▏ | 72/100 [00:01<00:00, 71.33 it/sec, obj=-4.43e+3]
INFO - 12:32:25: 73%|███████▎ | 73/100 [00:01<00:00, 71.39 it/sec, obj=-4.5e+3]
INFO - 12:32:25: 74%|███████▍ | 74/100 [00:01<00:00, 71.45 it/sec, obj=-4.5e+3]
INFO - 12:32:25: 75%|███████▌ | 75/100 [00:01<00:00, 71.46 it/sec, obj=-4.25e+3]
INFO - 12:32:25: 76%|███████▌ | 76/100 [00:01<00:00, 71.49 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 77%|███████▋ | 77/100 [00:01<00:00, 71.56 it/sec, obj=-4.28e+3]
INFO - 12:32:25: 78%|███████▊ | 78/100 [00:01<00:00, 71.57 it/sec, obj=-3.92e+3]
INFO - 12:32:25: 79%|███████▉ | 79/100 [00:01<00:00, 71.56 it/sec, obj=-3.96e+3]
INFO - 12:32:25: 80%|████████ | 80/100 [00:01<00:00, 71.58 it/sec, obj=-4.38e+3]
INFO - 12:32:25: 81%|████████ | 81/100 [00:01<00:00, 71.62 it/sec, obj=-4.29e+3]
INFO - 12:32:25: 82%|████████▏ | 82/100 [00:01<00:00, 71.68 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 83%|████████▎ | 83/100 [00:01<00:00, 71.72 it/sec, obj=-4.34e+3]
INFO - 12:32:25: 84%|████████▍ | 84/100 [00:01<00:00, 71.78 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 85%|████████▌ | 85/100 [00:01<00:00, 71.83 it/sec, obj=-4.22e+3]
INFO - 12:32:25: 86%|████████▌ | 86/100 [00:01<00:00, 71.84 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 87%|████████▋ | 87/100 [00:01<00:00, 71.87 it/sec, obj=-4.33e+3]
INFO - 12:32:25: 88%|████████▊ | 88/100 [00:01<00:00, 71.93 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 89%|████████▉ | 89/100 [00:01<00:00, 71.99 it/sec, obj=-4.31e+3]
INFO - 12:32:25: 90%|█████████ | 90/100 [00:01<00:00, 72.05 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 91%|█████████ | 91/100 [00:01<00:00, 72.11 it/sec, obj=-4.27e+3]
INFO - 12:32:25: 92%|█████████▏| 92/100 [00:01<00:00, 72.16 it/sec, obj=-4.31e+3]
INFO - 12:32:25: 93%|█████████▎| 93/100 [00:01<00:00, 72.20 it/sec, obj=-4.32e+3]
INFO - 12:32:25: 94%|█████████▍| 94/100 [00:01<00:00, 72.24 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 95%|█████████▌| 95/100 [00:01<00:00, 72.30 it/sec, obj=-4.21e+3]
INFO - 12:32:25: 96%|█████████▌| 96/100 [00:01<00:00, 72.34 it/sec, obj=-4.49e+3]
INFO - 12:32:25: 97%|█████████▋| 97/100 [00:01<00:00, 72.39 it/sec, obj=-4.19e+3]
INFO - 12:32:26: 98%|█████████▊| 98/100 [00:01<00:00, 72.45 it/sec, obj=-4.49e+3]
INFO - 12:32:26: 99%|█████████▉| 99/100 [00:01<00:00, 72.46 it/sec, obj=-4.13e+3]
INFO - 12:32:26: 100%|██████████| 100/100 [00:01<00:00, 72.49 it/sec, obj=-4.49e+3]
INFO - 12:32:26: Optimization result:
INFO - 12:32:26: Optimizer info:
INFO - 12:32:26: Status: None
INFO - 12:32:26: Message: Maximum number of iterations reached. GEMSEO stopped the driver.
INFO - 12:32:26: Number of calls to the objective function by the optimizer: 0
INFO - 12:32:26: Solution:
INFO - 12:32:26: The solution is feasible.
INFO - 12:32:26: Objective: -3003.8995230595424
INFO - 12:32:26: Standardized constraints:
INFO - 12:32:26: g_1 = [-0.18177087 -0.15303684 -0.13797373 -0.12871311 -0.12244655 -0.02429768
INFO - 12:32:26: -0.21570232]
INFO - 12:32:26: g_2 = -0.002615771711972803
INFO - 12:32:26: g_3 = [-0.78613294 -0.21386706 -0.07631583 -0.17779628]
INFO - 12:32:26: Design space:
INFO - 12:32:26: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:26: | Name | Lower bound | Value | Upper bound | Type |
INFO - 12:32:26: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:26: | x_shared[0] | 0.01 | 0.05934605707200682 | 0.09 | float |
INFO - 12:32:26: | x_shared[1] | 30000 | 60000 | 60000 | float |
INFO - 12:32:26: | x_shared[2] | 1.4 | 1.440947137798596 | 1.8 | float |
INFO - 12:32:26: | x_shared[3] | 2.5 | 2.682168463995586 | 8.5 | float |
INFO - 12:32:26: | x_shared[4] | 40 | 70 | 70 | float |
INFO - 12:32:26: | x_shared[5] | 500 | 1315.825005558175 | 1500 | float |
INFO - 12:32:26: | x_1[0] | 0.1 | 0.1000000000000001 | 0.4 | float |
INFO - 12:32:26: | x_1[1] | 0.75 | 0.9200062439484883 | 1.25 | float |
INFO - 12:32:26: | x_2 | 0.75 | 0.8112680369735645 | 1.25 | float |
INFO - 12:32:26: | x_3 | 0.1 | 0.1498242691956934 | 1 | float |
INFO - 12:32:26: +-------------+-------------+---------------------+-------------+-------+
INFO - 12:32:26: *** End MDOScenario execution ***
Conclusion¶
JAX is about 3 times faster than NumPy in the case of an optimization loop with a Gauss-Seidel MDA.
Total running time of the script: ( 0 minutes 22.951 seconds)
Download Python source code: plot_sobieski_mdf.py