首页 > 解决方案 > 在 cvxpy 0.4.10 但不是 1.0.18 中获得“无法乘以 AFFINE 和 CONVEX”

问题描述

我正在两个不同的环境中工作,它们具有不同版本的 cvxpy。

1.0.18 上,这按预期工作:

import cvxpy as cp

print(cp.__version__)

X = cp.Parameter(name='X', shape=(10), nonneg=True)
Y = cp.Variable(shape=(10))

print(X.T @ cp.abs(Y))

>>> Expression(CONVEX, NONNEGATIVE, ())

但是在0.4.10上,这不会:

import cvxpy as cp

print(cp.__version__)

X = cp.NonNegative(name='X', rows=10)
Y = cp.Variable(rows=10)

print(X.T @ cp.abs(Y))

>>> DCPError: Cannot multiply AFFINE and CONVEX.

有谁知道为什么?我做错什么了吗?

非常感激!谢谢!

标签: cvxpy

解决方案


cp.NonNegative用于创建一个Variable,而不是一个Parameter

这行得通。

import cvxpy as cp

print(cp.__version__)

X = cp.Parameter(name='X', rows=10, sign='positive')
Y = cp.Variable(rows=10)

print(X.T @ cp.abs(Y))

推荐阅读