Мы повторяем задачу, исключая ограничения положительности для единственной скалярной переменной x
, как:
maximize 1 * x
such that
0.18 * x <= 20076
0.02 * x <= 8619
0.01 * x <= 145
0.78 * x <= 465527
0.01 * x <= 5205
, поэтому в качестве линейной программы мы получаем следующее оптимальное значение x
:
library(lpSolve)
constr.mat <- c(.18, .02, .01, .78, .01)
RHS <- c(20076, 8619, 145, 465527, 5205)
soln <- lp("max", 1, constr.mat, "<=", RHS)
soln$solution
## [1] 14500
Конечно, как указано в комментариях ниже, вопрос можно решить тривиально без линейного программирования, взяв наименьшую верхнюю границу x
:
min(RHS / constr.mat)
## [1] 14500
Примечание
Если то, что вы на самом деле имели в виду, было не проблемой, изложенной в вопросе, а этой 5-переменной переменной:
max 0.18 * x1 + 0.02 * x2 + 0.01 * x3 + 0.78 * x4 + 0.01 * x5
such that
0.18 * x1 <= 20076
0.02 * x2 <= 8619
0.01 * x3 <= 145
0.78 * x4 <= 465527
0.01 * x5 <= 5205
, тогда мы имеем
soln2 <- lp("max", constr.mat, diag(constr.mat), "<=", RHS)
soln2$solution
## [1] 111533.3 430950.0 14500.0 596829.5 520500.0
Опять же, это тривиально длявычислить без линейного программирования:
RHS / constr.mat
## [1] 111533.3 430950.0 14500.0 596829.5 520500.0