Внутреннее вычисление градиентов цели / ограничения в функциях цели / ограничения
Я новичок в ipopt и pyomo. Моя проблема заключается в следующем:
Я хочу, чтобы указать функции цели / ограничения, чтобы:
1) значения функций вычисляются и выводятся, и 2) градиенты вычисляются внутри этих функций и выводятся
Итак, я ищу следующее в pyomo/ipopt:
function_value, gradient_value = objective/constraint_function(x)
и указать алгоритму ipopt, что я указал градиенты таким образом.
Стандартный способ выглядит так:
function_value = objective/constraint_function(x)
gradient_value = objective/constraint_function_gradient(x)
где расчеты делятся на две функции. Тем не менее, у меня есть особая структура в моей задаче оптимизации, где я могу сохранить много вычислений, вычисляя их одновременно.
Возможно ли это каким-либо образом в рамках pyomo / ipopt?