tutorial studio r optimization binary linear-programming lpsolve

studio - R lpsolve binario encuentra todas las soluciones posibles



lpsolve tutorial (1)

Tengo un problema de programación lineal. Todas las variables son binarias y quiero obtener todas las soluciones posibles. Sé que puedo establecer el parámetro num.bin.solns para proporcionar múltiples soluciones. ¿Pero hay alguna manera fácil de pedir todas las soluciones posibles?

Por ejemplo, en el caso siguiente, sé que el número máximo de respuestas es 6. Pero si no conozco las máximas soluciones posibles, ¿cómo puedo configurar el parámetro num.bin.solns para que devuelva todas las soluciones posibles?

library("lpSolve") A=matrix (c(1,1,1,1), nrow=1, byrow=TRUE) b=(2) signs=''=='' c_=rep(0,4) res = lpSolve::lp(''max'', c_, A, signs, b, all.bin = TRUE, num.bin.solns=6)


Aquí hay una manera de hacerlo. lpSove realidad le proporciona los num.bin.solns que encuentra, y puede acceder a eso usando $ notación.

Inicialmente puede establecer que num.bin.solns sea un número grande (digamos 1000). Y luego acceda a mylp $ num.bin.solns para obtener el valor exacto.

mylp <- lp(''max'', c_, A, signs, b, all.bin = TRUE, num.bin.solns=1000) numcols <- 4 numsols <- mylp$num.bin.solns solutions <- matrix(head(mylp$solution, numcols*numsols), nrow=numsols, byrow=TRUE) > numsols [1] 6

Y puede imprimir las soluciones individuales:

> solutions [,1] [,2] [,3] [,4] [1,] 0 0 1 1 [2,] 0 1 0 1 [3,] 1 0 0 1 [4,] 1 0 1 0 [5,] 1 1 0 0 [6,] 0 1 1 0