次のコード:最小化制約を持つ方程式系(scipy.optimize.minimize)
import numpy as np
from scipy.optimize import minimize
def eq(p):
s1,s2,s3 = p
f1 = 1.1**3/s1*1.1**1+s2*1.1**2+s3*1.1**3
f2 = 0.9**1/s1*0.9**1+s2*0.9**2+s3*0.9**3
return (f1, f2)
bnds = ((0, None), (0, None), (0, None))
cons = ({ 'type' : 'ineq', 'fun': lambda p: p[0]+[p1]+[p2] - 1})
minimize(eq, (0.3,0.3,0.3), bounds=bnds, constraints=cons)
は、私がf1
とf2
などs_t > 0
やsum s_t <= 1
それを最小限にしたい
TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'
エラーをスローします、t = 1,2,3について。
'Pを使用してみてください、型ndarrayでなければなりません[0] + [P1] + [P2]は'これは間違っている、それはないですか? – xvan
これは 'sum s_t <= 1'という制約をモデル化すべきです。また、制約を許可するために 'method = 'SLSQP'を指定する必要があることに気付きましたが、' error:_slsqp.slsqpの8番目の引数g 'をC/Fortran配列に変換できませんでした。 stackoverflow上の別のトピックが、答えはありません.. – norac