Python Forum

Full Version: Solve a system of linear equations with binary variables
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm having trouble defining an algorithm that can solve a system of linear equations with binary variables.
Example given the following system of linear equations:

x_12 + x_18 + x_28 = 0
x_12 - x_18 - x_28 = 0
x_12 + x_13 + x_28 - x_38 = 0
-x_13 + x_14 - x_38 - x_48 = - 2
-x_14 + x_15 - x_48 - x_58 = -2
x_15 + x_16 + x_58 - x_68 = 0

Knowing that the values of x_12 = 0, x_18 = 0 and x_28 = 0, it is possible to create an algorithm that solves this system with the other variables assuming only values of 0 or 1.
First two equations could be dropped out, since you already know values of corresponding variables.
If I understand you correctly, you have (x_13, x_38, x_14, x_15, x_48, x_58, x_16, x_68).
You have 8 variables and their allowed values are 0 or 1. 2 ** 8 possible combinations.
So, you can use brute-force algorithm to solve these equations. If we ever consider all variables (11),
there are not too much combinations (2**11) for modern computers to check.
i'm using sympy, what i needed is a way to determine a binary domain for the variables to assume only the value of 0 or 1

variables = x_12,x_13,x_14,x_15,x_16,x_18,x_28,x_38,x_48,x_58,x_68
equations = (x_12 + x_18 + x_28, 
             x_12 - x_18 - x_28, 
             x_12 + x_13 + x_28 - x_38, 
             -x_13 + x_14 - x_38 - x_48 + 2,
             -x_14 + x_15 - x_48 - x_58 + 2,
             x_15 + x_16 + x_58 - x_68)



solve((equations),variables)
I didn't use SymPy for a while, maybe something FiniteSet (and solveset) will be helpful...