-->

线性规划,使用R(Linear Programs using R)

2019-10-19 12:43发布

我们怎样才能解决使用R A线性规划? 我要解决下面的例子:

min -a -2b +4c

Constraints
a + b + s1 = 5
a + 3c -s2 = 10
2b - 3c = 20

a >= 0, b >= 0, c >= 0, s1 >= 0, s2 >= 0

该公式可能没有总感觉。 我只需要知道写入R.这些方程的语法我可能会写这样的事情对于上述方程

require(lpSolve)

R.obj <- c(-1,-2,4)

R.con <- matrix(c(1,1,1,1,3,-1,2,-3),nrow=3,byrow=TRUE)

R.dir <- c("=","=","=")

R.rhs <- c(5,10,20)

lp("min",R.obj,R.con,R.dir,R.rhs)

这是否是正确的? 在文档中,矩阵总是M*M ,如果矩阵就是M*N ,其中N != M

Answer 1:

您的约束矩阵有3行5列,但构建约束矩阵,当你只提供了8非零值。 此外,你有5个变量,所以R.obj需要5个值:

require(lpSolve)
R.obj <- c(-1, -2, 4, 0, 0)
R.con <- matrix(c(1, 1, 0, 1, 0, 2, 0, 3, -3, 1, 0, 0, 0, -1, 0), nrow=3)
R.dir <- c("=", "=", "=")
R.rhs <- c(5, 10, 20)
lp("min", R.obj, R.con, R.dir, R.rhs)
# Error: no feasible solution found

数学的位表明该LP确实是不可行的。 这LP相当于-a - b >= -5a + 3c >= 10b = 10 + 1.5c 。 可以替代最后一个方程到第一,得到-a - 1.5c >= 5a + 3c >= 10 ,和添加产量c >= 10 。 通过您的第三方程, b >= 25 ,这意味着第一个方程不能容纳由于非负as1



文章来源: Linear Programs using R