Hello everyone,
I'm solving a large placement problem with gurobi 7.0 using the python interface.
The problem essentially solves for two large permutation matrices (there are a few other continuous variables but the binaries form the lions share).
To solve the problem, I am using an ADMM approach: I split it into zones, and solve the zones separately.
There are a handful of variables that are present in two different zones.
I iterate over the problems, each time updating the objective (and objective only!) to try and force convergence on these boundary variables.
In the objective update I introduce quadratic terms, basically sum( (x_i - mean(x_i))**2 ) where x_i are the boundary terms mentioned above,
and mean(x_i) is a parameter calculated at the end of each iteration, which is the average of each boundary variable over it's iterations
( so if x_i shows up in two zones it will be mean(x_i) = (x_i,zone1 + x_i,zone2)/2).
The first iteration obtains a feasible solution for each of the zones.
However, in subsequent iterations, some of the larger zones (roughly 2*(300^2) binary variables) take over an hour just on the root simplex.
I realize this is a very large problem, but note that I already have a feasible solution for the model from the first iteration.
For my particular application, I am not actually that interested in the optimum.
I would like the boundary variables to converge, but beyond that I mainly care about feasibility. The objective is there to mainly push the solution in a particular direction.
For that reason, I would like to forcefully employ time limits to stop the optimization given there is a feasible solution.
However, I am running into a situation where some of these larger zones are returning 0 solutions, at which point when I query the variables everything breaks.
my questions are:
1) How can a model that has a feasible solution, where only the objective was changed suddenly have no feasible solution?
2) Since I am only interested in improving the incumbent and not so much in optimality, is there a way to tell Gurobi to quit working on finding a lower bound in the root simplex and simply start branching? The MIP gap is basically immaterial.
Many thanks,
Eran