【问题标题】:Python: Using scipy optimize minimize does not minimize functionPython:使用 scipy optimize minimize 不会最小化函数
【发布时间】:2020-03-11 08:44:54
【问题描述】:

我是 Python 新手,我试图弄清楚一切是如何工作的。我对 scipy.optimize 包的最小化功能有一点问题。我尝试使用一些起始值最小化给定函数,但 python 给了我非常高的参数值。 这是我的简单代码:

import numpy as np
from scipy.optimize import minimize
global array
y_wert = np.array([1,2,3,4,5,6,7,8])
global x_wert
x_wert = np.array([1,2,3,4,5,6,7,8])
def Test(x):
    Summe = 0
    for i in range(0,len(y_wert)):
        Summe = Summe + (y_wert[i] - (x[0]*x_wert[i]+x[1]))
    return(Summe)
x_0 = [1,0]
xopt = minimize(Test,x_0, method='nelder-mead',options={'xatol': 1e-8, 'disp': True})
print(xopt)

如果我运行这个脚本,最好的给定参数是:

[1.02325529e+44, 9.52347084e+40]

这确实不能解决这个问题。我也尝试了一些稍微不同的起始值,但这并不能解决我的问题。 谁能告诉我我的错误在哪里? 非常感谢您的帮助!

【问题讨论】:

  • 您希望最小化总和的 absolute 值。您的代码将负和最小化为 -∞。在Test 做:return(abs(Summe))。还要看看输出消息,它通常是非常有价值的信息。 success 字段需要在解释结果之前检查。

标签: python numpy scipy scipy-optimize-minimize


【解决方案1】:

您的测试函数实际上是一条具有负梯度的直线,因此没有最小值,它是一个无限递减函数,可以解释您的大结果,请尝试使用 x squared 之类的方法

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 2020-06-28
    • 2022-10-16
    • 2019-07-13
    • 2020-02-23
    • 2019-07-02
    • 2018-01-30
    • 2015-02-18
    相关资源
    最近更新 更多