Scipy.opimize.fmin_powell direc参数语法

时间:2014-01-16 19:30:15

标签: python numpy scipy data-fitting

没有关于如何输入fmin-powell的direc参数的信息。 fmin_powell的所有scipy文档都是

  

direc:ndarray,可选

     

初始方向设定。

我认为通过给direc=(0.1,0.1,1),我告诉它从前两个拟合参数的步长为0.1开始,第三个为1的步长,在我的情况下需要,因为第三个参数不敏感步长为0.1。但是,使用此代码,所有拟合参数的起始值为0.1。如果我尝试direc=(1,0.1,1),它会对所有破坏拟合的参数使用初始步长1,因为第二个参数的范围为(0,1),如果它变为负数则导致除以零。你怎么设置这个论点?

2 个答案:

答案 0 :(得分:1)

对于Powell最小化,初始方向向量集不需要与轴对齐(尽管通常是这些)。当算法运行时,它会将方向向量更新为最佳方向,以便快速下坡。

但是,想象一下这样一种情况,即你的函数所定义的曲面几乎都在起点附近。除了在一个特定方向(未与任何轴对齐)之外,还有一条狭窄的沟槽,它迅速向下下降到最小功能。在这种情况下,使用gulley的方向作为初始方向向量之一可能会有所帮助。否则,可以想象,算法可能需要一段时间才能找到开始移动的好方向。

答案 1 :(得分:0)

显然对于需要矢量集,所以direc=([1,0,0],[0,0.1,0],[0,0,1])将完成这项工作。但是,仍然不清楚这是如何安排和功能的,所以不确定如果这些零中的一些被改变会发生什么。