Переход от нелинейного поиска root к многокритериальной оптимизации - PullRequest
0 голосов
/ 07 августа 2020

Для упрощения, скажем, я могу описать систему с

переменными x1 и x2,

параметрами p1 и p2 и

ограничения f(x, p) = 0 и g(x, p) = 0:

Например:

f(x1, x2, p1, p2) = x1^2 * p1 + x1^2 * p2 + x2 = 0

g(x1, x2, p1, p2) = x2^2 * p2 + x1 * p1 = 0

Теперь предположим, что с учетом истинное значение параметров p1 и p2, существует (а) root (а). Однако в моем случае параметры определены неидеально, и нелинейный root -поискатель типа scipy.optimize s fsolve не работает. Можно ввести параметры как переменные и попытаться найти корни, но увеличить переменные и параметры на порядок, как в моей реальной системе, и ограничения станут очень трудно соблюдать.

Следовательно , Я искал пакеты оптимизации в python, которые могли бы «решить» мой набор нелинейных уравнений. И именно здесь мое непонимание оптимизации представляет собой препятствие.

Если я правильно понимаю, как изложено, мои уравнения являются ограничениями, что означает, что они должны соблюдаться, чтобы мой дизайн был успешным. Однако я понял, что, учитывая несовершенный характер параметров (или большое количество возможных переменных), мне нужно иметь одну (или несколько) целевых функций, которые нужно минимизировать, а не ограничивать.

Все уравнения, описывающие мою систему, имеют одинаковую силу, поэтому я не думаю, что могу просто выбрать одно или несколько уравнений в качестве целевых функций, а остальные останутся ограничениями. Похоже, мне нужно, чтобы все мои уравнения были целевыми функциями.

Поэтому у меня есть два вопроса:

  1. Могу ли я c иметь все мои уравнения как целевые функции и
  2. Какой пакет python позволит мне минимизировать эти целевые функции?

Я рассмотрел cyipopt, casadi, pyomo и DEAP, но я немного заблудился. Я думаю, что как только моя модель моей системы будет лучше определена, я буду точно знать, что искать. Однако, если можно предоставить код для моего простого примера, я был бы очень признателен.

PS: Моя модель в ее нынешнем виде имеет 11 переменных и 11 * 5 параметров (пять коэффициентов, представляющих полином 4-й степени для каждого переменная). Я также могу добавить ограничения к переменным, если необходимо, в пакете оптимизации.

...