Pythonでは、SciPyを使用して、関数の最大値を見つける必要がありますQ*((1+y)*2-3*Q-0.1)-y**2
制限(1-z)*(Q*((1+y)*2-3*Q-0.1))-y**2=0
を指定します。 z
のために私はいくつかの値がz
の値与えられた機能を最大限に引数を見つけるために、入力したいと思います。Pythonの制限付き最適化
私はSciPy最適化機能を使用するために多くの方法を試しましたが、これを行う方法を理解できません。私はWolframAlphaを使用して成功しましたが、これは私にこの問題をフォローアップする質問への答えを私に提供しません。
試み:
from scipy.optimize import minimize
def equilibrium(z):
#Objective function
min_prof = lambda(Q,y): -1*(Q*((1+y)*2-3*Q-0.1)-y**2)
#initial guess
x0 = (0.6,0.9)
#Restriction function
cons = ({'type': 'eq', 'fun': lambda (Q,y): (1-z)*(Q*((1+y)*2-3*Q-0.1))-y**2})
#y between 0 and 1, Q between 0 and 4
bnds = ((0,4),(0,1))
res = minimize(min_prof,x0, method='SLSQP', bounds=bnds ,constraints=cons)
return res.x
from numpy import arange
range_z = arange(0,1,0.001)
print equilibrium(range_z)
エラー:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-20-527013574373> in <module>()
21 range_z = arange(0,1,0.01)
22
---> 23 print equilibrium(range_z)
<ipython-input-20-527013574373> in equilibrium(z)
14 bnds = ((0,4),(0,1))
15
---> 16 res = minimize(min_prof,x0, method='SLSQP', bounds=bnds ,constraints=cons)
17
18 return res.x
/Users/Joost/anaconda/lib/python2.7/site-packages/scipy/optimize/_minimize.pyc in minimize(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)
456 elif meth == 'slsqp':
457 return _minimize_slsqp(fun, x0, args, jac, bounds,
--> 458 constraints, callback=callback, **options)
459 elif meth == 'dogleg':
460 return _minimize_dogleg(fun, x0, args, jac, hess,
/Users/Joost/anaconda/lib/python2.7/site-packages/scipy/optimize/slsqp.pyc in _minimize_slsqp(func, x0, args, jac, bounds, constraints, maxiter, ftol, iprint, disp, eps, callback, **unknown_options)
324 + 2*meq + n1 + ((n+1)*n)//2 + 2*m + 3*n + 3*n1 + 1
325 len_jw = mineq
--> 326 w = zeros(len_w)
327 jw = zeros(len_jw)
328
ValueError: negative dimensions are not allowed
上記のリンクは制約付き最適化の例です。あなたの問題を解決して問題に挑戦しようとするなら、あなたのコードの試みと実行している特定のエラーを共有してください。私は私の問題を言い換え – CoryKramer
@CoryKramerは、私は今、私はこれらの最適はz' 'の値にどのように反応するか勉強したいと思い、(0.3)' z'ための特定の値を持つために今すぐ解決策を得ます。 –