python - 优化两个变量的函数,这两个变量的大小在 python 中相差几个数量级

标签 python optimization nonlinear-functions

我正在尝试优化一个非线性函数,一个项的总和,看起来像这样:

1/(x1+x1)+2/(x1+x2)+1/(x2+x2)+1/(x1+w1)+1/(x2+w1)+1/(x1+w2)+1/(x2+w2)+... 

变量是 x1x2,我有一个 w 列表。

在测试我知道答案的各种 w 集时,我发现我正在使用的优化器 (scipy.optimize.fmin_tnc) 无法给出 x1 的正确答案x2 值相差几个数量级。

如果值的大小更相似,则给出正确答案。

例如,一组 2 个唯一值和几个退化值(给定少量噪声):

w=[5e-13,5e-13,5e-13,5e-13,5e-13,5e-7,5e-7,5e-7] 

返回值 ~5e-13~2.4e-7。

我尝试调整容差,但这似乎并没有改善这个测试用例的结果。

最佳答案

将“rescale”标志设置为高于默认值 (1.3) 可消除该问题。我相信这个标志通过缩放变量使最小化器更稳定,因此它们的大小更相似。

关于python - 优化两个变量的函数,这两个变量的大小在 python 中相差几个数量级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813587/

相关文章:

python - Numpy 中的平铺

python - 获取每行列表中最常用的单词

python - 无法以 UTF-8 进行解码/编码

python - 如何在 PuLP 中添加约束以使工厂在一段时间内保持打开或关闭状态?

mysql - 优化 MySQL 中的 SELECT DISTINCT CONCAT 查询

python - Nelder-Mead 优化中的终止容差

python - 在python中求解colebrook(非线性)方程

python - 比较 python 和 matlab 中的 fsolve 结果

python - Jacobi theta函数导数的实现

python - Scipy 的 fsolve 替代品?