I am trying to solve a large MIP scheduling problem. Since it will take a long time to solve the problem, I want to run the same model with fewer event point and find its n-th solution. Use that solution as an initial solution/seed for a bigger(more event points) model to find its n-th solution and use this to cascade up till the desired number of event points.
Using the solution from the small problem, I use its binary values in the mip start and let the newly added event point un touched. I save these values in a dictionary name seed_sol where the key is the binary variable(obtain when creating the varible) and the value is 0/1 from the previous solve.
m.add_mip_start(SolveSolution(m, seed_sol))
Using the above code, I warm start my larger runs. However, when I look at the output log I realised that the solution rarely improves and the gap is very low(I know for a fact that the actual optimal solution is much much higher). I suspect that the 'add_mip_start' function forces the solution values to my initial seed solution and tries to improve the solution by only adjusting the newly added binary variables.
How do i fix this to get the desired outcome?
Using:
- Python 3.6.8
- cplex 12.10.0.0
- docplex 2.19.202