Optimization 如何最小化包含frobenius和nuclear范数的目标函数?

Optimization 如何最小化包含frobenius和nuclear范数的目标函数?,optimization,mathematical-optimization,cvxpy,convex-optimization,cvxopt,Optimization,Mathematical Optimization,Cvxpy,Convex Optimization,Cvxopt,受Ds矩阵Frobenius范数平方必须小于或等于1的约束 目前我正在使用CVXPY库来求解目标函数。我的代码示例看起来像 import cvxpy as cp import numpy as np np.random.seed(1) Xs = np.random.randn(100,4096) Ys = np.random.randn(100,300) # Define and solve the CVXPY problem. Ds = cp.Variable(shape=(30

受Ds矩阵Frobenius范数平方必须小于或等于1的约束

目前我正在使用CVXPY库来求解目标函数。我的代码示例看起来像

import cvxpy as cp 
import numpy as np


np.random.seed(1) 
Xs = np.random.randn(100,4096) 
Ys = np.random.randn(100,300)

# Define and solve the CVXPY problem. 
Ds = cp.Variable(shape=(300,4096))

lamda1 = 1 

obj = cp.Minimize(cp.square(cp.norm(Xs - (Ys*Ds),'fro')) + lamda1*cp.norm(Ds,'nuc')) 
constraints = [cp.square(cp.norm(Ds,'fro')) <= 1]

prob = cp.Problem(obj, constraints) 
prob.solve(solver=cp.SCS, verbose=True)
将cvxpy作为cp导入
将numpy作为np导入
np.随机种子(1)
Xs=np.random.randn(1004096)
Ys=np.random.randn(100300)
#定义并解决CVXPY问题。
Ds=cp.Variable(shape=(3004096))
lamda1=1
obj=cp.Minimize(cp.square(cp.norm(Xs-(Ys*Ds),'fro'))+lamda1*cp.norm(Ds,'nuc'))

constraints=[cp.square(cp.norm(Ds,'fro'))问题是DCP(我已经用prob.is_DCP()验证了它)。希望这有助于您使用投影次梯度法或ADMM解决它。我可以在MATLAB中完成。