I have an LP problem (linear objective with eq and ineq constraints) in binary variables.
Except for the objective, all the coefficients are integer, mostly in {-1,0,1}. Maybe the objective coeff could be discretized.
I heard that for certain matrices there are approaches that can beat the standard MI solver, and I wonder if some can be relevant to my problem. Some related buzz words:
- symplectic matrix
- unimodular matrix
- Smith/Hermite normal form
- diophantine equations
It's something in the spirit of if my problem is a diophantine system, then a solution can be found by constructing the Smith normal form, which might be faster than that standard MI.
I'm trying to look into it, and I thought perhaps someone has tips on the subject. For example:
- Don't expect much, the algorithm for constructing the Smith normal form is usually slower than the standard MI solver. Some MI solvers (e.g. gurobi/mosek) already leverage this.
- You can test your system matrix for these certain conditions. If they apply, then you are in luck.
- This reference may interest you.
One tip from David from gurobi:
If your matrix is totally unimodular you should be able to relax integrality restrictions (binary variables are just continuous between 0 and 1) and still have an integer solution.
https://support.gurobi.com/hc/en-us/community/posts/8084931991185-Methods-for-solving-binary-LP
Duplicate questions:
https://or.stackexchange.com/questions/8822/methods-for-binary-linear-programming
https://scicomp.stackexchange.com/questions/41747/methods-for-binary-linear-programming
Erwin in the comments below suggests to look at the SAT-based solver in OR-TOOLS, which requires int cost coeff.
Using a graph
Is there an effective algorithm to solve this binary integer linear programming?