【发布时间】:2015-07-20 01:31:42
【问题描述】:
我有一个目标函数,比如obj(x, arg_1, arg_2)
在f() 内,我有variable_3 = f(x, arg_1, arg_2)
obj() 将返回 abs(x-variable_3)
我需要使用scipy.optimize.minimize最小化obj()的返回值
我想我需要这样做:
def obj(x, arg_1, arg_2)
v_3 = f(x, arg_1, arg_2)
return abs(x-v_3)
x0 = 1
result = minimize(obj, x0, args = (arg_1, arg_2))
这是正确的吗?为什么我总是出错?
或者,实际上我可以这样做:
def obj(x, v_3)
return abs(x-v_3)
def myfun(arg_1, arg_2)
x0 = 1
v_3 = f(x0, arg_1, arg_2)
result = minimize(obj, x0, args = v_3)
return result
但显然,这就是我想要的。 那么有人可以告诉我如何进行最小化吗?谢谢
【问题讨论】:
-
您遇到什么错误?当您尝试在
obj中执行abs(x-v_3)时,为什么x0是长度为3 的向量? -
我认为这里的简化代码无法生成我得到的错误。所以我想我可以改变我问的方式:它是使用最小化()的正确方法吗?我不认为我告诉 minimize() 哪个变量应该是“x”,哪些变量是静态的。
-
@user2357112 不知何故,我想我部分解决了这个问题。我想我可以用这种方式解释最小化()。它总是将第一个参数(如果有多个)作为自变量。我需要使用 args=(other variables) 声明其他变量。它们应该是相同的顺序。这是正确的吗?