【发布时间】:2018-04-16 11:24:31
【问题描述】:
我正在尝试使用scipy.optimize 来确定 3 个参数(变量)的最佳值。我从一个非常简单的优化函数开始,它将分析的参数与一些预定义的(过去的)值相加。这些值使用一些固定值进行绑定。在处理最大化问题时,我将sign 参数的值设置为-1。但是,scipy 返回 [0, 0, 0] 作为最佳值(与设置 sign=1 相同),而正确的解决方案是 [2, 2, 2]。我设置错了吗?我错过了什么?
import scipy.optimize as optimize
import numpy as np
old = [1,1,1]
def f(params,sign=-1.0):
first, second, third = params
return sum(old+[first, second, third])
initial_guess = [2,2,2]
in1 = 1
in2 = 2
in3 = 1
bnds = ((0, in1+2), (0, in2+2), (0, in3+2))
result = optimize.minimize(f, initial_guess, bounds=bnds)
print result.x
【问题讨论】:
-
您不要在
f中使用sign。是故意的吗? -
那我应该在哪里使用呢?
-
乘以你返回的总和
-
[0, 0, 0]is 如果你正在做一个最小化(你是)正确的解决方案。old是一个常数,因此将找到first、second和third的下限的最小值,它们都为零。我认为@AndreySobolev 是对的,您的意思是将f的返回值乘以-1。 -
由于某些原因,我认为它是直接被optimize.minimize使用的。乘以返回值确实有意义! (捂脸)
标签: python function numpy optimization scipy