从非线性寻根到多目标优化

2024-05-15 07:42:23 发布

您现在位置:Python中文网/ 问答频道 /正文

为了简化,假设我可以用

变量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

现在,假设给定参数p1p2的真实值,根存在。 然而,在我的例子中,参数是以不完美的方式确定的,像scipy.optimizefsolve这样的非线性根查找器是不成功的。我们可以将参数作为变量输入,并尝试找到根,但是将变量和参数增加一个数量级,就像在我的实际系统中一样,约束变得非常难以遵守

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

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

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

因此,我有两个问题:

  1. 我的逻辑是将所有方程作为目标函数,并且
  2. 什么python包可以让我最小化这些目标函数

我已经看了{}、{}、{}和{},但是我有点迷路了。我认为,一旦我的系统模型得到更好的定义,我就会确切地知道要寻找什么。然而,如果能提供我的简单示例的代码,我将非常感激

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


Tags: 函数模型目标参数系统方式scipy例子