2

線形計画問題があります。すべての変数はバイナリであり、考えられるすべてのソリューションを取得したいと考えています。パラメータ num.bin.solns を設定して、複数のソリューションを提供できることを知っています。しかし、すべての可能な解決策を求める簡単な方法はありますか?

たとえば、以下のケースでは、回答の最大数が 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)
4

1 に答える 1

1

これを行う1つの方法を次に示します。lpSove実際には、見つかったnum.bin.solnsが表示され、$ 表記を使用してアクセスできます。

最初に num.bin.solns を大きな数 (1000 など) に設定できます。次にmylp$num.bin.solnsにアクセスして正確な値を取得します。

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

また、個々のソリューションを印刷できます。

> 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
于 2015-02-24T23:26:32.070 に答える