添加松弛变量时获得线性规划问题的不同解决方案
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
(有趣的是,仅仅几个空格就可以改变人们的看法)。
我正在尝试使用 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
(有趣的是,仅仅几个空格就可以改变人们的看法)。