2

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

方向:ndarray,可选

初始方向设定。

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

4

2 回答 2

1

对于鲍威尔最小化,初始方向向量集不需要与轴对齐(尽管通常它们是对齐的)。随着算法的运行,它将方向向量更新为最佳方向,以便快速下坡。

但是,想象一下这样一种情况,您的函数定义的表面在起点附近几乎都是平坦的。除了,在一个特定的方向(不与任何轴对齐)有一个狭窄的沟渠,它迅速向下下降到函数最小值。在这种情况下,使用沟渠的方向作为初始方向向量之一可能会有所帮助。否则,可以想象,算法可能需要一段时间才能找到一个好的方向来开始前进。

于 2014-01-20T00:15:46.927 回答
0

显然需要向量集,所以direc=([1,0,0],[0,0.1,0],[0,0,1])会做这项工作。但是,仍然不清楚这是如何安排和运作的,因此不确定如果其中一些零被更改会发生什么。

于 2014-01-16T20:32:05.867 回答