0

为了简化,假设我可以描述一个系统

变量x1x2,

参数p1p2, 和

约束f(x, p) = 0g(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,根存在。scipy.optimize但是,在我的情况下,参数的确定方式并不完美,并且像's这样的非线性寻根器fsolve是不成功的。可以将参数作为变量输入并尝试找到根,但是将变量和参数增加一个数量级,就像在我的实际系统中一样,约束变得非常难以遵守。

因此,我一直在寻找可以“解决”我的非线性方程组的 python 优化包。这就是我对优化缺乏理解的障碍。

如果我理解正确,假设我的方程是约束,这意味着必须尊重它们才能使我的设计成功。但是,我已经意识到,鉴于参数(或大量可能的变量)的不完美性,我需要有一个(或多个)目标函数来最小化而不是约束。

描述我的系统的所有方程都具有相同的有效性,所以我认为我不能简单地选择一个或几个方程作为目标函数,其余的仍然作为约束。看起来我需要将所有方程作为目标函数。

因此,我有两个问题:

  1. 我的逻辑是让我的所有方程都作为目标函数有效吗?
  2. 什么 python 包可以让我最小化这些目标函数?

我看过cyipoptcasadipyomoDEAP,但我有点迷茫。我认为一旦我的系统模型得到更好的定义,我就会确切地知道要寻找什么。但是,如果可以提供我的简单示例的代码,我将不胜感激。

PS:我的模型现在有 11 个变量和 11*5 个参数(五个系数代表每个变量的 4 次多项式)。如果需要,我还可以在优化包中为变量添加约束。

4

0 回答 0