С радостью услышу более правильную теорию, хорошо проверенную на практике, как такое можно решать.
Один из лучших алгоритмов для оптимизации "овражистой" функции — метод Нелдера-Мида. Кроме всего прочего, он ещё и не требует знания производных, так как работает только со значениями целевой функции. К сожалению, чтобы воспользоваться им, задачу с ограничениями придётся "допилить". Лучший способ — это ввести параметризацию, которая сразу удовлетворит граничным условиям и за одно понизит размерность задачи. Но это работает не всегда.
-- 27.02.2020, 17:21 --метод Лагранжа
Вот, не понимаю, если честно, как его использовать на практике для численных вычислений. В случае аналитических вычислений всё просто: записываем функцию Лагранжа, берём градиент (аналитически), приравниваем нулю, решаем систему. Только вот решать систему всегда сложнее, чем искать экстремум.
А в лоб найти численно экстремум у функции Лагранжа не получится. Просто потому, что его нет: по множителям Лагранжа функция не ограничена в обе стороны (они входят в виде линейных множителей, на то и множители), соответственно не имеет экстремума. Можно, конечно, взять эти множители в виде квадратов, но тогда надо угадать со знаком каждого множителя (вернее, даже перебрать все
вариантов), так как множители Лагранжа в сущности — это коэффициенты линейной комбинации, и могут быть любых знаков. Если потребовать знакоопределённость, то решения будут теряться.
Естественный выход, разумеется, метод штрафного слагаемого, просто у меня к нему личная неприязнь — какой-то он жуликоватый, хоть и работает.