二元变量的线性方程组

时间:2013-12-07 22:31:55

标签: matlab linear-algebra linear-programming

我有这些方程式,我想为它们找到一个解决方案

0<=x1+x2+x3+x4+x5+x6<=3                
0<=x7+x8<=2   
2<=x1+x2+x3+x4<=4   
2<=x3+x4+x5<=3   
2<=x6+x7+x8<=3   

xi的值为0或1(xi为二进制变量)

是否有任何算法可以解决这类方程和类似方程

2 个答案:

答案 0 :(得分:4)

您确定问题不是binary integer programming吗?

如果你只是想用这么少量的变量求解这个方程式,那么强力搜索可能就行了......构造2 ^ 8 8*1个向量,并验证每个向量是否满足你的-equation(你可以用矩阵形式写出你的方程式)。

如果您只想要一个解决方案......您甚至可以手动完成:10101011

但一般的解决方案并不容易。检查此post。要在多项式时间内求解二元整数线性方程,有一个paper可能需要花费一些时间进行挖掘。

编辑:从@Ben Voigt更新

branch-and-bound通常对有效解决(大)整数(包括二进制)和混合整数问题有效。当然这个问题太小而不值得花费 - 穷举搜索已经足够了。

答案 1 :(得分:1)

无论您使用哪种算法,我都会进行一些预处理以降低复杂性。二进制变量的总和始终是> = 0:

x1+x2+x3+x4+x5+x6<=3                
x7+x8<=2   
2<=x1+x2+x3+x4<=4   
2<=x3+x4+x5<=3   
2<=x6+x7+x8<=3  

二进制变量之和总是&lt; = num of variables:

x1+x2+x3+x4+x5+x6<=3                
2<=x1+x2+x3+x4   
2<=x3+x4+x5   
2<=x6+x7+x8