[英]How to tell cvxpy how to sum over values of a matrix in an objective function?
我想實現從這個優化問題, 本文使用cvxpy或任何類似的庫。 我面臨的問題是如何編寫此代碼,以便cvxpy可以理解。
from cvxpy import *
g = Variable(n)
eta = Variable(n)
loss = sum(g+g-(2*g)+eta-(d**2))
reg = norm(eta, 1)
lambd = Parameter(nonneg=True)
prob = Problem(Minimize(lambd*reg+0.5*loss))
我知道我對損失的定義顯然是不正確的,我只需要提出一些東西來說明我的問題。 我不知道如何告訴cvxpy以我想要的方式對待矩陣索引。 在cvxpy中甚至可能嗎? 是否有其他圖書館可以輕松做到這一點? 任何代碼示例將不勝感激。
您可以循環構造成本函數。 似乎g
應該是正半定的,所以我加了PSD=True
。 這是一個完整的示例:
from cvxpy import *
n = 10
g = Variable((n, n), PSD=True)
eta = Variable((n, n))
reg = norm(eta, 1)
d = np.ones((n, n))
lamb = 1.
cost = 0
for i in range(n):
for j in range(n):
cost += (g[i, i] + g[j, j] - 2 * g[i, j] + eta[i, j] - d[i, j]**2) ** 2
cost = 0.5 * cost + lamb * reg
prob = Problem(Minimize(cost))
prob.solve()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.