問題:
scipy ブルート最適化ルーチン (またはその他の opt ルーチン) が負の整数を持つ関数を評価しないようにします。私が最適化しようとしている全体的な関数は、負の整数に対して定義されていないガンマ関数を使用しています。
バックグラウンド:
私はガンマ関数を含む私が書いた関数を最適化するために、scipy (brute と fmin を含む) のさまざまな最適化ルーチンを利用しています。
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) を利用します。私が直面している問題は、負の整数で関数を評価するたびに、ガンマ (neg.integer) に対して定義されていないため、ルーチンが強制終了されることです。
問題がある関数の一部:
math.gamma(-a)
それをだますために、増分が(-2.1、1.9、0.25)になるようにすべてを0.1にシフトしたので、おそらく負の整数(またはゼロ)にはなりません。
最適化ルーチンがその最初のパラメーターに負の整数を使用しないように指定する、より正式な方法はありますか? ~-2 から ~2 の間の数値で評価したいが、負の整数では評価したくない。