[SCIP] SCIPconshdlrGetNCutsFound (number of found cuts vs number of applied cuts)
Jonas Charfreitag
jcharfreitag at uni-bonn.de
Mon Mar 25 11:44:41 CET 2024
Hi Mark,
thanks for your help.
When calling "SCIPaddDelayedPoolCut()" instead of "SCIPaddPoolCut()" the
number of found and number of applied cuts increases as expected.
Somehow I missed the delayed version in the code (and the documentation
for constraint handlers only mentions addPoolCut;
https://scipopt.org/doc/html/CONS.php).
For fine-tuning my code and fully understanding the statistics I have
two follow up questions:
- What is the exact definition of "found cuts" for SCIP, if adding one
to the non delayed cutpool does not increase the counter of found cuts
for the constraint handler?
- I found no documentation on the difference between the delayed cutpool
and non delayed cutpool. From reading the source code I think SCIP has
one of each by default. Does delayed behave like a delayed separation:
If other constraint handlers or separators found cuts (found as in added
cuts to the sepa store directly?), the delayed cutpool is skipped for
the current iteration of the separation loop?
Best,
Jonas
On 3/22/24 19:05, Marc Pfetsch wrote:
>
>
> Hi Jonas,
>
> the function SCIPconshdlrIncNCutsFound() is only called if the cutpool
> is delayed. You can call SCIPaddDelayedPoolCut() and the count should
> be positive.
>
> Best
>
> Marc
>
>
> On 21/03/2024 14:18, Jonas Charfreitag wrote:
>> Hi everyone,
>>
>> one of my constraint handlers has entries in the scip statistics
>> table, I can not make sense of yet. Its row basically looks like this:
>>
>>> Constraints : Number MaxNumber #Separate #Propagate
>>> #EnfoLP #EnfoRelax #EnfoPS #Check #ResProp Cutoffs
>>> DomReds Cuts Applied Conss Children
>>> myHandler : 1 1 35 0 0
>>> 0 0 34 0 0 0
>>> 0 975 0 0
>>
>> It reports zero found cuts, but 975 applied ones. From my
>> understanding #Found should be >= #Applied, or am I misunderstanding
>> the columns?
>>
>> The lp separation method of myHandler adds cuts via
>> "SCIP_CALL(SCIPaddPoolCut(scip, row));" and creates rows via
>> "SCIPcreateEmptyRowConshdlr()".
>> I feel like I might be missing something here, as "SCIP_RETCODE
>> SCIPcutpoolSeparate()" calls "SCIPconshdlrIncNCutsFound(conshdlr);"
>> only if "cutpoolisdelayed". But who (if anyone) is responsible for
>> increasing the counter for non delayed cutpools, is it me, the user?
>>
>> Thanks for any hints in advance!
>> Best,
>> Jonas
>>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
--
M.Sc. Jonas Charfreitag
Uni Bonn - Institut fuer Informatik - Abteilung 1
Friedrich-Hirzebruch-Allee 8 / Room 2.078a
53115 Bonn, Germany
e-mail: jcharfreitag at uni-bonn.de
web: https://ca.cs.uni-bonn.de/doku.php?id=people:charfreitag
More information about the Scip
mailing list