[Scip] How to update separators in a branch-price-and-cut?

gamrath@zib.de gamrath at zib.de
Fri Sep 3 01:14:34 CEST 2010


Hi Nikolaj,

> Here is my question. If I understand well, SCIP manages the cuts by itself
> and maybe I shouldn't try to do the following : I would like to "follow"
> some cuts and keep the pointer SCIP_ROW * to access them from time to
> time. If I'm not wrong, when I release the cut with SCIPreleaseRow, it
> seems the pointer becomes invalid. If I don't release the SCIP_ROW *, I
> can have access to the cut but SCIP crashes at the end because I didn't
> release the pointer. And this can not be done after the solving stage. So,
> I guess, there is another way of keeping track of a SCIP_ROW *. What's the
> proper way to do this?

the way you do it is the correct way. If you release the pointer to the
row, the pointer is set to NULL and you must not use it anymore. Besides,
even if you would copy the pointer before, it might happen that it becomes
invalid during the solving process as SCIP would possibly delete the row
when it does not need it anymore. In this case, you would have a corrupt
pointer. Thus, you should do as you supposed and keep the row captured, so
that SCIP knows that you still use it.
Nevertheless, you should release the row after the solving process is
finished, but still in SCIP's solving stage. The best place to do this is
the SCIP_DECL_...EXITSOL callback that most plugins have.

Best regards,
Gerald


More information about the Scip mailing list