添加松弛变量时获得线性规划问题的不同解决方案

Getting different solution to linear programming problem when slack variables are added

我正在尝试使用 R 中的 lpSolve 解决基本的线性规划问题。

原问题是:

在增强形式中(即添加了松弛变量)它是:

当我这样解决原来的问题时:

M = matrix(c(1, 2, 3, 1), nrow = 2, byrow = TRUE)
lp("max", c(1,1), M, c("<=", "<="), c(100, 75))$solution

我得到了解决方案:10 45,这是正确的。

当我这样解决扩充问题时:

A = matrix(c(1, 2, 1, 3, 1, 1), nrow = 2, byrow = TRUE)
lp("max", c(1,1,0,0), A, c("=", "="), c(100, 75))$solution

我得到 1e+30 0e+00 0e+00 0e+00,这是不正确的。所以我认为它可能不喜欢我的 objective 函数系数,并尝试:

A = matrix(c(1, 2, 1, 3, 1, 1), nrow = 2, byrow = TRUE)
lp("max", c(1,1), A, c("=", "="), c(100, 75))$solution

返回 0.0000000 0.3333333 -- 也不正确。

原始问题和扩充问题的解决方案应该相同。我看不出我做错了什么。为什么我得到两个不同的答案?

这很明显。你的问题有 4 个变量,但你的矩阵有 3 列。

看约束为:

 x1 + 2x2 + s1        = 100
3x1 +  x2      + s2   =  75

(有趣的是,仅仅几个空格就可以改变人们的看法)。