用lpSolve解约束的R线性规划

用lpSolve解约束的R线性规划,r,optimization,linear-programming,lpsolve,R,Optimization,Linear Programming,Lpsolve,我目前正在写一篇论文,涉及解决一个类似的问题 给定的是一组100个数字,我想通过将给定的数字乘以0或1来检查是否可以达到某个值 请参见下面的简化问题 A+2B+3C+4D=10,其中A、B、C、D来自{0,1}。 我试图通过使用包lpSolve和solving binary LP用R解决这个问题。我选择目标函数作为常数,因为如果所有计算都正确,那么约束条件仍然必须满足 在以下我的代码中: > library(lpSolve) > f.obj <- c(1,1,1,1) >

我目前正在写一篇论文,涉及解决一个类似的问题

给定的是一组100个数字,我想通过将给定的数字乘以0或1来检查是否可以达到某个值

请参见下面的简化问题

A+2B+3C+4D=10,其中A、B、C、D来自{0,1}。

我试图通过使用包lpSolve和solving binary 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)
>库(lpSolve)
>f.obj f.con f.dir f.rhs 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

有人能理解为什么会这样吗

也许你们知道一个更好的算法来解决我的问题。我感谢任何能帮助我的人


多谢各位

尝试转置约束向量:

> library(lpSolve)
> f.obj <- c(1,1,1,1)
> f.con <- t(c(1,2,3,4))
> f.dir <- c("=")
> f.rhs <- c(10)
> result <- lp("max", f.obj, f.con, f.dir, f.rhs, binary.vec = 1:4, all.bin=TRUE)
> result
Success: the objective function is 4 
> result$solution
[1] 1 1 1 1
>库(lpSolve)
>f.obj f.con f.dir f.rhs结果
成功:目标函数为4
>结果$solution
[1] 1 1 1 1

太好了。它工作得很好!你知道我为什么要转置吗?它希望它显式地作为一个矩阵行。您可以使用
result$constraints
查看约束是否正确到达(但是请注意,它将每个约束显示为一列…确实令人困惑)。