【发布时间】:2020-06-09 06:44:34
【问题描述】:
在this question 之后,我想让我的问题尽可能具体,重点放在我无法解决的部分。考虑一个非常简单的函数:
def foo(x, y, a, b, c):
return a * x**4 + b * y**2 + c
现在我想使用scipy.optimize.minimize 或任何其他现有函数来查找x 和y(即参数)以最小化foo 给定常量a、b 和c(即 args)。如果我只有一个参数和多个参数,那么从this page 我可以这样做:
def foo(x, *args):
a, b, c = args
return a * x**4 + b * x**2 + c
# X0 = to some scalar
# ARGS = a tuple of scalars (A, B, C)
x_min = scipy.optimize.minimize(foo, x0=X0, args=ARGS)
如果我只有自变量,没有常量参数,那么从this page 我可以做到:
def foo(*params):
x, y = params
return 4 * x**4 + 2 * y**2 + 1
# P0 = to a list of scalars [X0, Y0]
x_min = scipy.optimize.minimize(foo, x0=P0)
但是,我不能使用上述任何语法。我相信我必须将我的功能定义为:
def foo(*args, **kwargs):
x, y = args
a, b, c = tuple(kwargs.values())
return a * x**4 + b * y**2 + c
但是我不知道如何将args 和kwargs 传递给scipy.optimize 函数。如果您能帮助我理解使用多个独立参数和 scipy.optimize 函数的常量参数定义 foo 函数的最佳方法,我将不胜感激。提前感谢您的支持。
【问题讨论】:
标签: python scipy keyword-argument scipy-optimize scipy-optimize-minimize