首页 > 解决方案 > CVXPY 数值不稳定性

问题描述

我注意到,如果您向目标添加乘以零的东西,它将显着影响解决方案。我在我的数据集上使用 cvxpy 时发现了这个错误,我当然无法上传。但这里有一个来自他们官方资源的例子:https ://www.cvxpy.org/examples/basic/sdp.html

import cvxpy as cp
import numpy as np

# Generate a random SDP.
n = 3
p = 3
np.random.seed(1)
C = np.random.randn(n, n)
A = []
b = []
for i in range(p):
    A.append(np.random.randn(n, n))
    b.append(np.random.randn())

# Define and solve the CVXPY problem.
# Create a symmetric matrix variable.
X = cp.Variable((n,n), symmetric=True)
# The operator >> denotes matrix inequality.
constraints = [X >> 0]
constraints += [
    cp.trace(A[i] @ X) == b[i] for i in range(p)]

prob = cp.Problem(cp.Minimize(cp.trace(C @ X)),
              constraints)
prob.solve()

# Print result.
print("The optimal value is", prob.value)
print("A solution X is")
print(X.value)

现在做同样的事情但改变

prob = cp.Problem(cp.Minimize(cp.trace(C @ X) + 0*cp.trace(C @ X)**9),
              constraints)

你会看到 X 的值会改变。

标签: pythoncvxpy

解决方案


推荐阅读