0

所以我有一些功能

def fun(x,y=None):
    # Do some stuff

我想在 x 上最小化这个函数,但有时我会想要一个额外的参数 y。(本质上,我希望 y 始终采用其默认值,除非我最小化。)

通常,如果该功能只是def fun(x,y):我能够做到的scipy.optimize.minimize(x,args=(y))。但是当 y 是可选变量时我该怎么办?putargs=(y=value)给了我无效的语法,(当然,它看起来非常错误),但我不确定正确的语法是什么。

如果相关,我正在使用 Python 3.7。

4

1 回答 1

0

你不能。minimize只为它调用的函数接受不带关键字的可选参数。这写在文档中,因为它描述了要调用的函数fun(x, *args),没有任何可选参数。

如果您的功能是f(x, y=None, z=None)您将不得不调用scipy.optimize.minimize(f, x, (y, z)).

相反,我会构造一个 lambda,它直接将参数作为关键字传递。这样做:

scipy.optimize.minimize(lambda x: f(x, z=0), x)

这清楚地表明您正在传递哪些可选参数。

于 2020-02-06T09:28:08.453 回答