objective 函数可以有除可优化变量之外的多个输入变量吗?
Can the objective function have multiple input variables except the optimizable variable?
使用scipy.optimize时,我试成功的objective函数只能取一个变量,标量或向量。
例如,这段代码有效:
from scipy import optimize
def f(x, a=2, b=-5, c=3):
return a*x*x+b*x+c
res=optimize.minimize_scalar(f)
print(res.x)
但是,如果我想要跟踪 res.x 随着 a、b、c 的变化?以下代码不起作用,但如何使其起作用?
from scipy import optimize
def f(x, a, b, c):
return a*x*x+b*x+c
def change(a, b, c):
res=optimize.minimize_scalar(f(x, a, b, c))
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
我能想到的唯一办法是这样的:
from scipy import optimize
def change(a, b, c):
def f(x):
return a*x*x+b*x+c
res=optimize.minimize_scalar(f)
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
function inside another function让我心情不好,还有什么办法吗?谢谢
只需这样做就可以了:
from scipy import optimize
def f(x, a, b, c):
return a*x*x+b*x+c
def change(a, b, c):
tup=(a, b, c)
res=optimize.minimize_scalar(f, args=tup)
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
使用scipy.optimize时,我试成功的objective函数只能取一个变量,标量或向量。
例如,这段代码有效:
from scipy import optimize
def f(x, a=2, b=-5, c=3):
return a*x*x+b*x+c
res=optimize.minimize_scalar(f)
print(res.x)
但是,如果我想要跟踪 res.x 随着 a、b、c 的变化?以下代码不起作用,但如何使其起作用?
from scipy import optimize
def f(x, a, b, c):
return a*x*x+b*x+c
def change(a, b, c):
res=optimize.minimize_scalar(f(x, a, b, c))
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
我能想到的唯一办法是这样的:
from scipy import optimize
def change(a, b, c):
def f(x):
return a*x*x+b*x+c
res=optimize.minimize_scalar(f)
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
function inside another function让我心情不好,还有什么办法吗?谢谢
只需这样做就可以了:
from scipy import optimize
def f(x, a, b, c):
return a*x*x+b*x+c
def change(a, b, c):
tup=(a, b, c)
res=optimize.minimize_scalar(f, args=tup)
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)