Я хочу минимизировать вывод одного компонента, при этом гарантируя, что он больше, чем вывод второго компонента.
add_constraint ожидает "Итерируемые числовые значения или скалярное числовое значение", когда япередайте ему строку с именем вывода.
При задании prob['name']
ошибка: «Объект« NoneType »не может быть подписан»
Это должно быть что-то простое и задокументированное,но я еще не нашел его.
import openmdao.api as om
prob=om.Problem()
independant = prob.model.add_subsystem('independant', om.IndepVarComp())
independant.add_output('x', val = 3.0)
prob.model.add_subsystem('steep_line', om.ExecComp('f = x'))
prob.model.add_subsystem('shallow_line', om.ExecComp('g = 0.5*x + 1.0'))
prob.model.connect('independant.x', ['steep_line.x', 'shallow_line.x'])
prob.driver = om.ScipyOptimizeDriver()
prob.driver.options['optimizer'] = 'SLSQP'
prob.model.add_design_var('independant.x', lower=0.0, upper=3.0)
#Change which of the next two lines is commented out to see both errors I
#have encountered.
prob.model.add_constraint('steep_line.f', lower='shallow_line.g')
#prob.model.add_constraint('steep_line.f', lower=prob['shallow_line.g'])
prob.model.add_objective('steep_line.f')
prob.setup()
prob.run_driver()
print('x:', prob['independant.x'])
Желаемый результат - оптимизация, которая приводит к Independant.x = 2,0
Заранее благодарю за любую помощь, которую вы можете оказать.