2014-05-24 102 views
1

我需要最大化3可变功能,其在下面的空间中定义:在scipy.optimize.minimize中使用“无限界限”?

] 0,∞[X] 1,∞[X [0,∞]

我要使用SLSQP算法从scipy.optimize.minimize和我想它应该完成定义该函数的界限。但我不知道如何在python或这个限制中写“无穷大”。也许它应该使用,然后,约束,但我找不到一种方法来定义它。

我会很高兴,如果我能得到一些帮助这样做。

在此先感谢!

回答

3

scipy.optimize.minimize的文档指出:

界限:序列,可选

界变量(仅用于L-BFGS-B,TNC和SLSQP)。 (min, max)x中的每个元素,定义该参数的边界。 在 那个方向没有界限时,使用None作为最小或最大值之一。

所以你不必代表无穷大,只需通过None即可。通过浮点数无限可能不按预期工作。


代表在Python无穷的标准方法是使用float('inf')为正无穷大和float('-inf')为负无穷大。这些代表了标准的IEEE 754无穷大值。

numpy也提供numpy.inf

+0

这对于minimize_scalar的bounds参数也是如此https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize_scalar.html? – Adrian

+0

@Adrian看来,这个功能只需要一对值。它说“边界”是两个项目的序列。这是因为'minim_scalar'是用于* one *变量的函数。此外,似乎只有'method ='bounded''边界才被实际使用,而在其他情况下,它们被忽略。请参阅[本页上的最后一个示例。](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize_scalar.html) – Bakuriu