【发布时间】:2019-02-25 12:59:09
【问题描述】:
from numpy import *; from scipy.optimize import *; from math import *
def f(X):
x=X[0]; y=X[1]
return x**4-3.5*x**3-2*x**2+12*x+y**2-2*y
bnds = ((1,5), (0, 2))
min_test = minimize(f,[1,0.1], bounds = bnds);
print(min_test.x)
我的函数f(X)在x=2.557, y=1 有一个局部最小值,我应该可以找到它。
上面显示的代码只会在x=1 处给出结果。我尝试了不同的公差和三种方法:L-BFGS-B、TNC 和 SLSQP。
这是我到目前为止一直在看的线程:
Scipy.optimize: how to restrict argument values
我该如何解决这个问题?
我正在使用 Spyder(Python 3.6)。
【问题讨论】:
-
print(f([2557, 1])) = 42690172880760.5,我不会将其称为本地最小值... -
f([1, 1]) = 6.5 -
对不起,我的意思是 2.557。我已经编辑了
-
尝试使用global optimization 方法。 SciPy 提供some of them。
标签: python scipy spyder minimization