Have an lp which is originally not a mip. When solving with simplex or network (using c++/IloCplex), it takes about 1 Minute. When adding dummy integer 0..1, then cplex treats it as mip and solves the root-relaxation within a few seconds, and because solving the mip then is trivial, the problem is solved this way very fast. This is almost always the case (Ok, sometimes its 30:60, but mip is always faster).
So my question is: How does mip parametrize the root-relaxation, so that it is so much faster? I use both for mip root-algo and the continous problem the same solver (e.g. network, or simplex), so I would assume the root-relaxation in mip and the solution of the continous case should take the same amount of time.
Or does mip use (some internal) callback of the network/simplex-solver to stop the relaxation, when the solution is "good enough"? From where does it know then what's good enough (know the theoretical best objValue)?
Because of moments of despair, I implemented several callbacks to find out how mip parametrizes the root-relaxation, but copying these parameters and trying to use them with the network/simplex optimizer up to now had no success in terms of reaching the same solving time. On the call-stack seen in my callback, I found, that internally there is used something like. Maybe that would do the trick? Is this routine accessible somehow in C++?