If I just solve with the standard cplex algorithm, there is a giant difference in solve time with presolve on/off. With Presolve on, I see this information printed (using Matlab API).
Tried aggregator 1 time. MIP Presolve eliminated 394 rows and 101 columns. MIP Presolve modified 59535 coefficients. Reduced MIP has 67028 rows, 55287 columns, and 389241 nonzeros. Reduced MIP has 255 binaries, 0 generals, 0 SOSs, and 0 indicators. Probing time = 0.05 sec. Tried aggregator 1 time. Reduced MIP has 67028 rows, 55287 columns, and 389241 nonzeros. Reduced MIP has 255 binaries, 0 generals, 0 SOSs, and 0 indicators. Presolve time = 0.55 sec. Found feasible solution after 0.64 sec. Objective = -1.8148e+010
My question: Is there anything in this information that points to the likely cause of the performance gap? Is it scaling? Something else that presolve might be doing (I am assuming that removing 400 rows and 100 columns has little impact on the solution time, given the size of the problem)? Is there any way that I can make cplex presolve agree with column generation? (I tried setting presolve.reduce = 0. It no longer removed the rows or columns, but also got rid of the message "MIP Presolve modified 59535 coefficients", which I am assuming is the part that is greatly improving performance.).
Any advice would be greatly appreciated. Hopefully that can save me from having to do trial and error on my own. Thanks.