防止scipy.optimization例程在负整数处评估gamma函数

时间:2016-04-25 23:13:03

标签: python python-2.7 optimization scipy gamma-function

问题:

通过评估具有负整数的函数,防止scipy暴力优化例程(或任何选择例程)。我试图优化的整体功能使用伽玛函数,该函数对于负整数是未定义的。

背景:

我正在利用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)

伽玛函数使用第一个参数和您看到的值范围(-2.0,2.0,0.25)。我遇到的问题是,只要它以负整数计算函数,该例程就会被杀死,因为它未定义为gamma(neg.integer)。

问题的一部分,问题是:

           math.gamma(-a)

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

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

0 个答案:

没有答案