У меня проблема с линейным программированием. Все переменные являются двоичными, и я хочу получить все возможные решения. Я знаю, что могу установить параметр num.bin.solns для предоставления нескольких решений. Но есть ли простой способ попросить все возможные решения?R lpsolve binary Найти все возможные решения
Например, в нижнем случае я знаю, что максимальное количество ответов равно 6. Но если я не знаю максимально возможных решений, то как я могу установить параметр num.bin.solns таким образом, чтобы он возвращал все возможные решения?
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)
спасибо, дайте мне попробовать. QQ: любая идея, что решение mylp $ имеет 1 элемент больше, чем мы ожидаем? т. е. если мы поместим num.bin.solns = 1000, тогда длина вектора решения будет равна 4001 ... оно должно быть 4000 ... что указывает 4001-й элемент? – user2543622
Хороший вопрос. Я попытался найти его, но не знаю, откуда этот -1. Документация мне не помогла. Поэтому вы видите, что я делаю голову(), чтобы вырезать это. –
Я попробовал ваш ответ, и это имеет смысл. Единственная проблема заключается в том, что если проблема огромна, то она замедляет обработку и иногда возвращает ошибку. Вместо указания num.bin.solns = 1000, есть ли способ сказать, что вернуть все возможные решения? – user2543622