2
scipy.optimize.minimize
を使用しようとすると、最適化が失敗するようです。
1.目的関数は以下のとおりです:f(x)= x[0]+x[1]+x[2]+x[3]+10
2.制約がある:x_i >= 0
3.初期の推測では、次のとおりです。x0 = [1,1,1,1]
非常に些細な問題を、最適解x=[0,0,0,0], f(x)=10
で、私は次のようでした。
コード:Python scipy最適化で最小値が見つからない
fun: 100543626.59510386
jac: array([ 0., 0., 0., 0., 0.])
message: 'Optimization terminated successfully.'
nfev: 54
nit: 9
njev: 9
status: 0
success: True
x: array([ 24128556.46553156, 24130378.42917114, 28154390.61929696,
24130291.0811042 ])
明らかに間違った答え(しかし、成功フラグが真である)である:
def pos(x):
return min(x)
def f1(p):
return (p[0] + p[1] + p[2] +p[3] + 10)
cons2 = ({'type' : 'ineq', 'fun' : pos})
x0 = np.array([1,1,1,1])
res = opt.minimize(f1, x0,method='SLSQP',constraints=cons2)
私は、次の結果を得ます。
私はいくつかの前提があることを知っています。 "f"は続く必要がありますが、この場合 "f"は単なる超平面なので、私は本当に混乱しています。何か案は?
ありがとうございます。実際に問題を解決しました –