У меня проблема с линейным программированием, которую я пытаюсь решить в R
. Я использовал lpSolve
. lpSolve по умолчанию использует первичный симплекс-алгоритм для получения решения. Что делать, если я хочу изменить алгоритм на двойной симплекс? Результаты широко варьируются между двумя алгоритмами. Существуют ли какие-либо другие пакеты, которые помогли бы решить проблему ниже, используя алгоритм двойного симплекса.линейное программирование с двойным симплексом в R
library("lpSolve")
f.obj <- c(rep(1,12),rep(0,4))
f.cons <- matrix(c(1,-1,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,
0,0,1,-1,0,0,0,0,0,0,0,0,1,0,-1,0,
0,0,0,0,1,-1,0,0,0,0,0,0,1,0,0,-1,
0,0,0,0,0,0,1,-1,0,0,0,0,0,1,-1,0,
0,0,0,0,0,0,0,0,1,-1,0,0,0,1,0,-1,
0,0,0,0,0,0,0,0,0,0,1,-1,0,0,1,-1),nrow=6,byrow=T)
f.dir <- rep("=",6)
f.rhs <- c(-1.0986,1.6094,-1.0986,1.94591,1.3863,-1.7917)
g <- lp ("min", f.obj, f.cons, f.dir, f.rhs,compute.sens=TRUE)
g$solution
Primal Simplex с использованием lpSolve в R
выглядит следующим образом:
0 0 0 0 0 0.91630 0.0 0.76209 0.47 0 0 0 1.60940 2.70800 0 1.79170
Dual Simplex с использованием программного обеспечения Lingo и SAS выглядит следующим образом:
0 0.76214 0 0 1.23214 0 0 0 0.15415 0 0 0 0.8473 1.9459 0 1.7918
Цель функция аналогична для обоих Алгоритмы: 2.14839
Если вы используете 'lpSolveAPI', вы можете управлять симплексным типом, используя, например, 'lp.control (lprec, simplextype =" dual ")' –
@KarstenW. отлично он работал, спасибо. Не могли бы вы поместить свой комментарий в качестве ответа, чтобы я мог его принять? – forecaster