Я новичок в 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 как состояния в неявном компоненте и заставить нелинейный решатель определить правильные значения y и z при заданном x, а затем передать x драйверу оптимизации.
Это возможный подход? Если да, то как в этом случае будет выглядеть неявный компонент? Я просмотрел учебник по проблеме Селлара, но не смог перевести его на этот случай.