微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有多个返回值作为 scipy.minimize

如何解决具有多个返回值作为 scipy.minimize

我是 python 新手,我的任务是最小化具有 3 个返回值的数学函数(如我必须使用的模板中提供的那样),但我只需要这些返回值中的第一个。这是一个例子

```
def exponential_function(x):

   value = -np.exp(-0.5 * (x[0]**2 + x[1]**2))
   grad = np.array([-value * x[0],-value * x[1]])

   return value,grad,np.array([0,0])

```

这必须是 optimize.minimize 的第一个参数。这仅适用于一个回报(=值),但在这种情况下我不知道。我尝试了包装函数,但失败了。

提前致谢

解决方法

适合作为优化.minimize的第一个参数的函数对象,它接受这些返回值中的第一个是:

lambda x: exponential_function(x)[0]
,

您尝试过哪种包装纸。你不需要任何花哨的东西,只需要调用给定函数的东西,但只返回第一个结果,value

def exponential_function(x):

   value = -np.exp(-0.5 * (x[0]**2 + x[1]**2))
   grad = np.array([-value * x[0],-value * x[1]])

   return value,grad,np.array([0,0])

def myfunc(x):
   value,arr = exponential_function(x)
   return value

您可以在其他答案中使用 lambda 作为建议,但我尝试制作一个更明确的包装函数,这可能更容易理解。

当我们询问您尝试过的内容时,我们并不期待有效的尝试。我们想看看您尝试了什么,并更好地了解您理解(或缺少)的内容。目标是让您思考,并在可能的情况下最终解决您自己的问题,而不是用勺子提供答案。

,

嘿,您可以使用三个变量调用该函数来存储返回值,例如:

value_return,grad_return,array_return = exponential_function(x)

因此每个返回都存储在适当的变量中。之后您可以使用这些变量(在函数之外!)。 或者,只需删除您不需要的其他退货。

这是否回答了您的问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。