我有这些方程式,我想为它们找到一个解决方案
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为二进制变量)
是否有任何算法可以解决这类方程和类似方程
答案 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