首页 > 解决方案 > 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)

谢谢您的帮助!

标签: rcvxcvxr

解决方案


推荐阅读