[SCIP] Running primal heuristics for partial models

Rolf van der Hulst r.p.vanderhulst at utwente.nl
Wed Jun 15 16:50:08 CEST 2022


Dear SCIP community,

I am looking to implement an algorithm which uses both column generation 
and row generation. In particular, there would be an inner loop which is 
a branch-price-and-cut algorithm. Upon solving that subproblem, an outer 
loop which adds model constraints would add one or more rows, and then I 
would resolve the model-again using branch-price-and-cut. Any cutting 
planes and primal solutions derived for the 'partial' problems are 
likely helpful in solving the complete model.

Is it possible to ensure that SCIP runs its Primal Heuristics to 
generate primal solutions for the problem where not all model rows have 
yet been added? (Or does SCIP do so?) The main issue is that when adding 
new model rows to the problem, the computed primal bound may become 
worse and the solutions could become invalid. I could not find any 
methods which reset the Primal bound, or which clear the solutions known 
to SCIP. I looked into partial solutions, but it seems to me that they 
have a different purpose. Is there a way to identify to SCIP's 
heuristics that they should look for and report solutions to the 
'partial' model, which may be infeasible for the complete model? Perhaps 
the restart or reoptimization features of SCIP can be helpful here?

Ofcourse, I could just run a new SCIP instance every time I add a model 
constraint.  However, since I essentially only need to invalidate/change 
the Primal bound and make the primal solutions in SCIPs internal cache 
invalid, I was wondering if there was a better way to do this, which 
does not involve copying all of the other problem data.

Best,

Rolf



More information about the Scip mailing list