lpsolve java,- [R lpsolve二进制找出所有可能的解决方案

I have a linear programming problem. All variables are binary and I want to get all possible solutions.I know that I can set parameter num.bin.solns to provide multiple solutions. But is there any easy way to ask for all possible solutions?

For example in below case I know that the maximum number of answers is 6. But if I don't know the maximum possible solutions then how can I set the num.bin.solns parameter such that it would return all possible solutions?

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)

解决方案

Here's one way to do it. lpSove actually gives you the num.bin.solns that it finds, and you can access that using the $ notation.

You can initially set the num.bin.solns to be some large number (say 1000). And then access the mylp$num.bin.solns to get the exact value.

mylp

numcols

numsols

solutions

> numsols

[1] 6

And you can print out the individual solutions:

> 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值