Меня интересует решение следующей задачи линейного программирования.
В этом примере с игрушкой второе ограничение говорит мне, что x1 <= -1
, то есть x1
должно быть отрицательным, поэтому минимальное значение x1
должно быть отрицательным. Используя lpSolveAPI
, я закодировал этот игрушечный пример.
library(lpSolveAPI)
my.lp <- make.lp(nrow = 2, ncol = 2)
set.column(my.lp, 1, c(1, 2))
set.column(my.lp, 2, c(3, 0))
set.objfn(my.lp, c(1, 0))
set.constr.type(my.lp, rep("<=", 2))
set.rhs(my.lp, c(-4, -2))
set.bounds(my.lp, lower = c(-Inf, -Inf), upper = c(Inf, Inf))
> my.lp
Model name:
C1 C2
Minimize 1 0
R1 1 3 <= -4
R2 2 0 <= -2
Kind Std Std
Type Real Real
Upper Inf Inf
Lower -Inf -Inf
Однако решение этой задачи линейного программирования в R дает мне
> solve(my.lp)
[1] 3
> get.variables(my.lp)
[1] 3.694738e-57 -2.681562e+154
> get.objective(my.lp)
[1] 1e+30
get.objective(my.lp)
возвращает значение 1e+30
для x1
, что явно не удовлетворяет второму ограничению. Я специально использовал set.bounds
, чтобы x1, x2
мог принимать любое значение в реальной строке, но я все равно не получил отрицательного числа. Где что-то пошло не так?
x1
может быть бесконечно отрицательным. Таким образом, вы, вероятно, видите нежелательные результаты усилий решателя. Я не уверен, как вы проверяете статус решателя вr
, но это должно дать некоторую информацию. - person AirSquid   schedule 30.01.2021-Inf
? Я открыт для использования другого пакета / функции, кромеlpSolveAPI
. Спасибо. - person Adrian   schedule 30.01.2021solve
говорит вам, что он неограничен. См. Коды?solve.lpExtPrtr
. - person G. Grothendieck   schedule 30.01.2021