Search code examples
c++scip

SCIP: rerun of the problem without changing the model


I think I miss something in usage of SCIP library.

I have a MILP problem and want to compare the performance of the solver without an initial guess and with it in the frame of one executable problem. That is, I create a problem, solve it, then use the obtained solution as an initial guess and run the problem again.

But. The second run of the solver do nothing. I've read that after the first run of the solver, the stage of the problem is changed to SCIP_STAGE_SOLVED.

Then I've tried to find some method of the SCIP environment that changes the stage back, but there is no one (as far, as I understand).

After that, I've tried to introduce a fake variable into the model, but it does not change the stage too. Moreover, the approach leads to an error.

May be I need to create a copy of the problem? The first instance I solve without initial guess, the second one is run with it. The results are compared.

If I'm wrong, please, guide me on the right way. Thank you.


Solution

  • If I am not wrong then you simply need to call SCIPfreeTransform once (which removes everything except the original problem from the current scip instance). Then you can add your solution and solve again.