在scipy.optimize.minimize中,如何将可选参数输入args =()元组?

问题描述 投票:0回答:1

所以我有一些功能

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

并且我想通过x最小化此函数,但是有时我将要有一个附加参数y。 (基本上,我希望y始终采用其默认值,除非在最小化时。)

通常,如果函数只是def fun(x,y):,我将能够执行scipy.optimize.minimize(x,args=(y))。但是,当y是可选变量时该怎么办?放args=(y=value)给我无效的语法,(当然,它看起来很不对劲),但是我不确定正确的语法是什么。

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

python parameter-passing scipy-optimize scipy-optimize-minimize
1个回答
0
投票

你不能。 minimize仅对其调用的函数采用不带关键字的可选参数。这是用the documentation编写的,因为它描述了被称为fun(x, *args)的函数,没有任何可选参数。

如果您的函数是f(x, y=None, z=None),则必须调用scipy.optimize.minimize(f, x, (y, z))

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

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

这很清楚您要传递哪些可选参数。

© www.soinside.com 2019 - 2024. All rights reserved.