python - cvxpy 正在解决产生空答案
问题描述
我正在使用以下代码:
import sys, numpy as np
import cvxpy as cvx
if __name__ == '__main__':
sims = np.random.randint(20, 30, size=500)
center = 30
n = [500, 1]
# minimize p'*log(p)
# subject to
# sum(p) = 1
# sum(p'*a) = target1
A = np.mat(np.vstack([np.ones(n[0]), sims]))
b = np.mat([1.0, center]).T
x = cvx.Variable(n)
obj = cvx.Maximize(cvx.sum(cvx.entr(x)))
constraints = [A @ x == b]
prob = cvx.Problem(obj, constraints)
prob.solve()
weights = np.array(x.value)
这里x.value
是空的。我不确定如何修改我的上述设置。我正在尝试将 的平均值重新调整为此处sims
由变量定义的不同值center
。
解决方案
首先以调试方式:尝试使用它来查看问题所在:
prob.solve(verbose=True)
并检查是否找到了解决方案:
print(prob.status)
在您的情况下,问题是不可行的,您试图解决的线性问题 - 并不总是有解决方案。您可以引入一个“eps”变量来定义您的问题所需的准确度,或者使用线性代数库预先测试是否存在某些解决方案。
推荐阅读
- python - 我无法使用 pysimplegui 将图像下方的元素向上移动
- elasticsearch - 在 ElasticSearch 中存储时间相关数据
- jquery - jquery文件上传,1.9MB图片文件太大?
- amazon-web-services - AWS s3 通过 CORS 或接入点提供访问?403禁止错误
- c++ - 指向链表中指针的指针在每次调用主函数后都不能保留指针。为什么?
- mysql - MariaDB:我的存储过程没有返回任何行
- python - 如何设置“/*”路径以捕获 FastAPI 中的所有路由?
- javascript - 在生产中构建 Next.js 静态网站时获取错误
- php - PHP通过数组中的键获取值的总和
- python - django.urls.exceptions.NoReverseMatch:找不到''的反向。'' 不是有效的视图函数或模式名称