回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>请告诉我如何用以下变量解决我的问题</p>
<p>哪个解算器更好</p>
<p>目标函数=<code>x^T Q x + C^T x</code></p>
<ul>
<li><code>Q</code>是带有<code>Q(i,i)>=0</code>的对角矩阵</li>
<li><code>x.shape=(n,1)</code></li>
</ul>
<p>相等约束:<code>Aeq.x =beq</code></p>
<ul>
<li><code>Aeq.shape=(n,n)</code>和<code>beq.shape=(n,1)</code></li>
</ul>
<p>下限和上限:<code>lb <= x <= ub</code></p>
<pre class="lang-py prettyprint-override"><code>import random
import numpy as np
lb.shape=(n,1) and ub.shape=(n,1)
I=np.eye(24)
Z=np.zeros((24,24))
a=0.012
b=1.1
gamma1=0.9/80
gamma2=1.1/80
MM=np.eye(24)
for i in range (22):
MM[i+1,i]=-1
MM[0,23]=-1
M=random.randint(200,300, size=(24,1))
max_pch=30.0
max_pdch=30.0
ppp=random.randint(150,200, size=(24,))
Q=np.asarray(np.bmat([[a*I,Z,Z,Z],[Z,a*I,Z,Z],[Z,Z,0.00001*I,Z],[Z,Z,Z,0.00001*I] ]))
C=np.asarray(np.bmat([[b*np.ones(24),b*np.ones(24),0*np.ones(24),ppp]]))
Aeq=np.asarray(np.bmat([[-I,I,Z,I], [-gamma1*I, gamma2*I,MM,Z],[Z,Z,Z,Z],[Z,Z,Z,Z]]))
beq=np.asarray(np.bmat([[M],[np.zeros((72,1))]]))
lb=np.asarray(np.bmat([[0*np.ones(24),0*np.ones(24),[0.1],0.1*np.ones(22),[0.9],0.0*np.ones(24)]]))
ub=np.asarray(np.bmat([[max_pch*np.ones(24),max_pdch*np.ones(24),[0.9],0.9*np.ones(22),[0.9],500*np.ones(24)]]))
x = solve_qp(P=Q, q=C.T.reshape((96,)),
G=None , h=None,
A=Aeq , b=beq.reshape(96,),
lb=lb.T.reshape((96,)) , ub=ub.T.reshape((96,)))
print("QP solution: x = {}".format(x))
</code></pre>
<p>有什么问题</p>
<ul>
<li>QP解决方案:<code>x = None</code></li>
</ul>
<p>Matlab中的相同代码(带有<code>fmincon</code>)给出了正确的结果。然而,在Python中,我无法得到这个结果</p>