Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scipy最小化迭代过界_Python_Scipy_Scipy Optimize Minimize - Fatal编程技术网

Python Scipy最小化迭代过界

Python Scipy最小化迭代过界,python,scipy,scipy-optimize-minimize,Python,Scipy,Scipy Optimize Minimize,我正在尝试使用scipy最小化3个输入变量的函数。函数的内容如下所示- def myfunc(x): x[0] = a x[1] = b x[2] = c n = f(a,b,c) return n bound1 = (80,100) bound2 = (10,20) bound3 = (312,740) guess = [a0,b0,c0] bds = (bound1,bound2,bound3) result = minimize(myfunc, g

我正在尝试使用scipy最小化3个输入变量的函数。函数的内容如下所示-

def myfunc(x):
    x[0] = a
    x[1] = b
    x[2] = c
    n = f(a,b,c)
    return n

bound1 = (80,100)
bound2 = (10,20)
bound3 = (312,740)
guess = [a0,b0,c0]
bds = (bound1,bound2,bound3)
result = minimize(myfunc, guess,method='L-BFGS-B',bounds=bds)
我当前尝试运行的函数在
a=100
b=10
c=740
达到最小值,该值位于边界的末尾

minimize函数不断尝试迭代超过界限3的末尾(在其最后一次迭代中获得c0值
740.0000000 149012

有没有办法阻止这种情况发生?即在我的边界实际结束时停止迭代?

这种情况是由于数值微分引起的,它本身不仅需要推断步长方向和大小,还需要推断终止的原因

通常情况下,对于正在使用的任何解算器(以及许多后端解算器),如果不非常小心,您将无法做很多事情。基本思想是用您提供的自动数值微分替换该自动数值微分:该自动微分将尊重这些边界,并且必须小心解算器的内部,例如。“如何解释终止合同的原因”

修正一个: 使用触及您的配置的:
L-BFGS-B
时,您的问题应该会自动消失

看起来,此PR不是当前版本的一部分(因为这是在PR之前2个月)

另请参见,其中提到了有关某些更改的里程碑1.5.0,包括遵守num-diff中的边界

对于上述PR,您需要从以下来源安装scipy:

  • linux上非常可行(可能还有os x)
  • 您不应该在windows上尝试这些功能!
    • 相信我
如果需要,请参阅文档

修正B: 除此之外,在进行无约束优化(具有可变边界)时,如果有更多的解算器后端可用(与约束优化相比),您可以尝试另一个解算器,
trust constr
,它对此有明确的支持,请参阅

请注意,在设置边界时需要明确地发出信号!

这是由于数值微分引起的,数值微分本身不仅用于推断步长方向和大小,还用于推断终止

一般来说,对于正在使用的任何解算器(并且有许多后端解算器),如果不非常小心,您将无法做很多事情。基本思想是用您提供的自动数值微分替换该自动数值微分:该自动微分将尊重这些边界,并且必须小心解算器的内部,例如。”如何对此终止进行推理”

修正一个: 使用触及您的配置的:
L-BFGS-B
时,您的问题应该会自动消失

看起来,此PR不是当前版本的一部分(因为这是在PR之前2个月)

另请参见,其中提到了有关某些更改的里程碑1.5.0,包括遵守num-diff中的边界

对于上述PR,您需要从以下来源安装scipy:

  • linux上非常可行(可能还有os x)
  • 您不应该在windows上尝试这些功能!
    • 相信我
如果需要,请参阅文档

修正B: 除此之外,在进行无约束优化(具有可变边界)时,如果有更多的解算器后端可用(与约束优化相比),您可以尝试另一个解算器,
trust constr
,它对此有明确的支持,请参阅


请注意,在设置边界时,您需要明确指出这一点!

谢谢,使用
trust constr
keep_exability=True
对我有效。您能告诉我从GitHub源代码安装scipy所需的确切文档吗?我对Git没有太多经验。我有os x和d使用PyCharm。谢谢,使用
trust constr
keep_exability=True
对我来说很有效。你能告诉我从GitHub源代码安装scipy需要的确切文档吗?我对Git没有太多经验。我有os x和PyCharm。