我是 OpenMDAO 的新手,我仍在学习如何制定问题。举个简单的例子,假设我有 3 个具有给定边界的输入变量:
1 <= x <= 10
0 <= y <= 10
1 <= z <= 10
我有 4 个输出,定义为:
f1 = x * y
f2 = 2 * z
g1 = x + y - 1
g2 = z
我的目标是最小化 f1 * g1,但强制执行约束 f1 = f2 和 g1 = g2。例如,一种解决方案是 x=3、y=4、z=6(不知道这是否是最优的)。
对于这个简单的问题,您可能只需将输出相等约束提供给驱动程序。但是,对于我的实际问题,很难找到满足所有约束的初始起点,因此优化器无法做任何事情。我想也许我可以将 y 和 z 定义为隐式组件中的状态,并让非线性求解器在给定 x 的情况下计算出 y 和 z 的正确值,然后将 x 馈送到优化驱动程序。
这是一种可能的方法吗?如果是这样,在这种情况下,隐式组件会是什么样子?我查看了 Sellar 问题教程,但无法将其翻译为这种情况。