r - CVXR 忽略非负约束
问题描述
我正在尝试使用 CVXR 运行以下优化程序,该程序在 x 上找到权重,从而最小化平方误差的总和,前提是权重都是非负的并且总和为 1。当我使用下面的示例运行它时,我得到了权重1.004620896 和 -0.004616312 尽管指定权重必须大于或等于 0。我知道 CVX 具有可行性容差,但我相信它远小于 0.004,所以我不确定我为什么要得到这个解决方案?
这是我尝试运行的代码:
df <- data.frame(x_1=c(5000, 400, 19900), x_2=c(100, 380, 2), y=c(4990, 390, 20000))
b <- Variable(2)
objective <- Minimize(sum((df$y - (b[1]*df$x_1 + b[2]*df$x_2))^2))
constraints <- list(b >= 0, b[1] + b[2] == 1)
problem <- Problem(objective, constraints)
soln <- solve(problem)
soln$getValue(b)
谢谢您的帮助!
解决方案
推荐阅读
- android - Cordova Android 版本构建 Ajax 无法正常工作
- html - Lottie 特定循环帧
- angular - 类型'可观察的
' 不可分配给类型 'never' - python - 将搜索路径添加到 VS Code 工作区
- android - Kotlin 伴随对象 - 初始化块 - 类型别名
- python - 尝试/排除“缓存”请求
- javascript - 为什么我的客户端代码在节点后端编译和运行?
- vb.net - ufl dll 文件未在水晶报表设计器中显示,它采用双精度、字符串、整数类型的 dll,但位图、图像、对象不采用它
- git - Git CA 失败但证书有效(gitea)
- html - 如何确保子 html 元素不会脱离引导列