Я использую пакет R "lpSolve", загруженный по ссылке Cran И вроде странные ответы дает. Я хотел убедиться, что это не я все испортил (что, вероятно, так и есть).
Например, проблема, которую я пытаюсь решить,
maximize -3x-2y
s.t 5x -y <= 1
-2x-2y <= -1
-3x-2y <= 0
Настройки, которые у меня есть в R:
> obj
-3 -2
> cond
5 -1
-2 -2
-3 -2
> dir
"<=" "<=" "<="
> rhs
1 -1 0
С этим применяется к функции lp в lp.solve
> lp(direction="max", objective.in=obj, const.mat=cond, const.dir=dir, const.rhs=rhs)$objval
Это возвращает -1, однако я знаю, что решение равно 0 вместо -1.
Я также попытался вместо этого установить цель как «мин», и я получаю:
> lp(direction = "max", objective.in = obj, const.mat = cond, const.dir = dir, const.rhs = rhs)$objval
[1] -1
> lp(direction = "min", objective.in = obj, const.mat = cond, const.dir = dir, const.rhs = rhs)$objval
[1] 0
Как это возможно, что я получаю большее значение, когда пытаюсь минимизировать цель? Это как-то связано с отрицательным коэффициентом при x? Я просмотрел руководство по пакету и не увидел никаких связанных требований к целевой функции.