[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