Я пытаюсь решить основную задачу линейного программирования, используя lpSolve в R.
Исходная проблема:
В расширенной форме (то есть с добавленными переменными) это:
Когда я решаю исходную задачу следующим образом:
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
, что неверно. Поэтому я подумал, что это может не понравиться моим коэффициентам целевой функции, и попытался:
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
- тоже неверно.
Решения исходной и дополненной проблемы должны бытьтот же самый. Я не вижу, что я делаю неправильно. Почему я получаю два разных ответа?