2

问题:

防止 scipy 蛮力优化例程(或任何与此相关的 opt 例程)评估具有负整数的函数。我试图优化的整体函数使用了一个未定义负整数的 gamma 函数。

背景:

我正在利用 scipy 中的各种优化例程(包括 brute 和 fmin)来优化我编写的包含 gamma 函数的函数。

import scipy.optimize as sopt
param = [a, b, c]
param = sopt.brute(function_I_wrote, ((-2.0, 2.0, 0.25), (0.00, 0.25, 0.05),
                (0, 4, 0.2)),finish=None)

gamma 函数利用第一个参数和您看到的值范围(-2.0、2.0、0.25)。我遇到的问题是每当它以负整数评估函数时,例程都会被杀死,因为它对于 gamma(neg.integer)是未定义的。

问题所在的部分功能:

           math.gamma(-a)

为了欺骗它,我将所有内容都移动了 0.1,以便增量为 (-2.1, 1.9, 0.25),所以现在它可能不会落在负整数(或零)上。

是否有更正式的方法来指定优化例程必须避免第一个参数的负整数?我希望它评估 ~-2 和 ~2 之间的数字,而不是负整数。

4

0 回答 0