【问题标题】:Outer product in CVXPYCVXPY 中的外积
【发布时间】:2018-11-24 07:37:12
【问题描述】:

我有一个依赖于外部产品总和的目标函数。如果我可以使用 Numpy 函数,我会这样写:

A = np.ones(m, n)
U = Variable(m, n)
objective = np.trace(sum([np.outer(A[i,:], U[i,:]) for i in range(m)]))

当然,当 U 是变量时,np.outer 不起作用。是否有一个 cvxpy 仿射函数可以实现这个?

【问题讨论】:

    标签: python numpy cvxpy


    【解决方案1】:

    cvxpy 有一个可以工作的 kron 函数。由于它仅适用于 2d 变量和 2d 数组,因此您必须先将向量重塑为 (n, 1) 个向量:

    cvx.trace(sum([cvx.kron(A[i, :].reshape(n,1), cvx.reshape(U[i,:], (n,1))
                   for i in range(m)]))
    

    另一种解决方案是简单地编写矩阵乘积:

    cvx.trace(sum([A[i, :].reshape(n, 1) @ cvx.reshape(U[i,:], (1, n)
                   for i in range(m)]))
    

    【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2017-02-26
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多