【发布时间】:2021-05-07 00:03:54
【问题描述】:
我目前正在撰写一篇涉及解决与此类似的问题的论文。
Given 是一组 100 个数字,我想通过将给定数字乘以 0 或 1 来检查您是否可以达到某个值。
看下面的简化问题
A + 2B + 3C + 4D = 10, with A, B, C, D from {0,1}.
我尝试通过使用包 lpSolve 并解决二进制 LP 来解决 R 的这个问题。我选择目标函数作为常数,因为如果一切计算正确,仍然必须满足约束条件。
下面是我的代码:
> library(lpSolve)
> f.obj <- c(1,1,1,1)
> f.con <- c(1,2,3,4)
> f.dir <- c("=")
> f.rhs <- c(10)
> lp("max", f.obj, f.con, f.dir, f.rhs, binary.vec = 1:4, all.bin=TRUE)
因此,我现在期待A=B=C=D=1。但是,我将 R 作为解决方案 A=1, B=1, C=0, D=1。
谁能理解为什么会这样?
也许你们知道更好的算法来解决我的问题。我感谢任何可以帮助我的人
非常感谢!
【问题讨论】:
标签: r optimization linear-programming lpsolve