I am implementing a matheuristic with CPLEX in C++, where I start the same MIP multiple times with different partial solution vectors provided.
However, I do not only want to provide a starting solution, I want the variables in the partial solution vector to be seen as fixed during the whole optimization procedure (the reason is, to always explore different parts of the search space in a controlled manner).
Searching through the documentation of CPLEX and here, I can't really find a fitting function call providing the functionality I am looking for and would really appreciate tipps how to approach this problem in a good and efficient way.
There is one solution-approach I can think of, which is fixing the variables through adding constraints such as y == 4 to the model and after solving the resulting sub-MIP, removing the constraint from the model (as described here). However, are there better options to achieve this? And are there possibilities to exploit the preprocessing information gained by solving one MIP with fixed partial solution vector a for afterwards solving the same MIP with a different fixed partial solution vector b? After all, the core model did not change.
Regarding warm-starting CPLEX with a partial solution, I found the Level 3 CPX_MIPSTART_SOLVEMIP effort level with the description:
solves a subMIP. You must specify the value of at least one discrete
variable at this effort level
But am I interpreting this correctly, that this means it tries to construct a starting solution by solving the sub-MIP and then proceed with the whole optimization problem possible changing variables given in the starting solution, whereas I am interested in only solving the subMIP.
Thank you!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…