0
後者の2つの制約関数である最初の関数をScipyで最適化しようとしています。Python Scipy最適化:ランタイム警告ログに無効な値が発生しました
def entropy(x):
entropy = 0
for i in range(6):
entropy = entropy + x[i]*np.log(x[i])
return entropy
def constraint_1(x):
validpmf = 0
for i in range(6):
validpmf = validpmf + x[i]
return validpmf - 1
def constraint_2(x):
mean = 0
for i in range(7):
mean = mean + (i*x[i-1])
return mean - 4.5
ここはScipyコードです。私はそれが不正解を返していましたシンプルな最適化問題とする前にこの問題を持っていた
[ 0.05447023 0.07863089 0.1140969 0.16556351 0.23970755 0.34753092]
RuntimeWarning: invalid value encountered in log
entropy = entropy + x[i]*np.log(x[i])
:私は戻って、実際の正しい答えを受け付けておりますが、私は、実行時の警告を取得しています
ans = sp.optimize.minimize(entropy, [.04,.08,.1,.15,.25,.35], \
constraints = cons, jac = False, method = 'SLSQP')
私は最初の推測を変えることで修正しました。なぜそれが働いたのか分かりません。しかし、この場合、最初の推測はかなり良い近似であるため、私はそれらを保持したいと同時に、それらを変更することはランタイム警告を緩和することができませんでした。
解決策は正しいものの、実行時の警告は分かりません。