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

nikolaj@crt.umontreal.ca nikolaj at crt.umontreal.ca
Fri Sep 3 12:49:12 MEST 2010


On Thu, September 2, 2010 7:14 pm, gamrath at zib.de wrote:
> 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
>
>
Hello Gerald and the others,

Ok, great. I didn't know the SCIP_DECL_...EXITSOL callbacks were
considered to be part of SCIP's solving stage.

Thank you very much. Your comments have helped me a lot.

Have a nice day,

Nikolaj







More information about the Scip mailing list