我注意到,如果您将目标乘以零,则会大大影响解决方案。我在我无法上传的数据集上使用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的值将会改变。