python 二次規劃(argmax)問題

2021-09-28 14:52:01 字數 2188 閱讀 6763

求解argmax時用到二次規劃,matlab中 quadprog使用很簡單,但是在python中這一類資料卻很少,網上給出的大部分答案都是,但是對各個變數的說明幾乎沒有,我帶入自己的變數時總是報錯

def quadprog_solve_qp(p, q, g=none, h=none, a=none, b=none):

qp_g = .5 * (p + p.t) # make sure p is symmetric

qp_a = -q

if a is not none:

qp_c = -numpy.vstack([a, g]).t

qp_b = -numpy.hstack([b, h])

meq = a.shape[0]

else: # no equality constraint

qp_c = -g.t

qp_b = -h

meq = 0

return quadprog.solve_qp(qp_g, qp_a, qp_c, qp_b, meq)[0]

最後使用了另乙個module qpsolvers解決了二次規劃問題

1. 待解決的二次規劃如下:

numpy 點乘連乘的簡單寫法

a.dot(b).dot(c) # a,b and c are numpy array
2. 一次型

import scipy

def reg_rr(phi, output, lam=1, dim_the=6):

[d,n] = phi.shape

f = matrix(np.vstack((np.zeros((d,1)),np.zeros((n,1)))))

a = matrix(np.vstack((np.hstack((-phi.t, -np.eye(n))),np.hstack((phi.t,-np.eye(n))))))

b = np.vstack((-output,output))

the = scipy.optimize.linprog(f,a,b)['x']

the = the[0:d,np.newaxis]

return the

3. numpy array 的逆矩陣不能用a.i,要用np.linalg.inv(a)

python求解二次規劃問題

python中支援convex optimization 凸規劃 的模組為cvxopt,其安裝方式為 pip install cvxopt二次型 二次型 quadratic form n個變數的二次多項式稱為二次型,即在乙個多項式中,未知數的個數為任意多個,但每一項的次數都為2的多項式。其基本形式如...

序列二次規劃 序列二次規劃法 pdf

序列二次規劃法 序列二次規劃演算法 1 序列二次規劃法簡介 非線性規劃問題是目標函式或約束條件中包含非線性函式的規劃問題。一般 說來,解非線性規劃要比解線性規劃問題困難得多。而且,也不像線性規劃有單 純形法這一通用方法,非線性規劃目前還沒有適於各種問題的一般演算法,各個方 法都有自己特定的適用範圍。...

數學建模 二次規劃

若該線性規劃的目標函式為自變數x的二次函式,約束條件全是線性的,則為二次規劃。在matlab中表達的二次規劃的數學模型如下 mi n12x hx f xs t.ax bae qx b eqlb x u b 其中,f和b是列向量,a是相應維數的矩陣,h實對稱矩陣。matlab中求解二次規劃的命令如下 ...