python - 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 的值会改变。
解决方案
推荐阅读
- powershell - 新员工脚本问题
- c# - C#如何通过少量更改重新启动应用程序
- ibm-content-navigator - IBM 内容导航器。功能打开时如何运行搜索
- android - 如何检查字符串是否等于 SQlite 中的一行并打印整行?
- javascript - WebdriverIO 使用 Java 脚本遍历元素列表
- javascript - 满足条件时添加脚本
- c# - 从 C# 运行 tabcmd 命令时 Process.Start() 未完成
- objective-c - 如何从代码在 SceneKit 中设置基于物理的渲染?
- jquery - 无法使用 jQuery.toggle() 以编程方式切换(仅关闭)Highchart 的默认上下文菜单
- go - 如何在 Go 中自动生成 Avro 模式?