<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Thanks Marc and Stefan for your help, and thanks Stefan for the patch.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
In the patch I think there may be a problem with the change to conflict.c since I get the following compilation error.<br>
</div>
<div class="elementToProof">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ContentPasted0">
src/scip/conflict.c: In function ‘detectImpliedBounds’:
<div class="ContentPasted0">src/scip/conflict.c:2444:21: warning: implicit declaration of function ‘SCIPcutoffNode’; did you mean ‘SCIPvisualCutoffNode’? [-Wimplicit-function-declaration]</div>
<div class="ContentPasted0"> 2444 |          SCIP_CALL( SCIPcutoffNode(set->scip, SCIPgetRootNode(set->scip)) );</div>
<div class="ContentPasted0">      |                     ^~~~~~~~~~~~~~</div>
<div class="ContentPasted0">src/scip/def.h:381:44: note: in definition of macro ‘SCIP_CALL’</div>
<div class="ContentPasted0">  381 |                           if( (_restat_ = (x)) != SCIP_OKAY )                                                 \</div>
<div class="ContentPasted0">      |                                            ^</div>
<div class="ContentPasted0">src/scip/conflict.c:2444:47: warning: implicit declaration of function ‘SCIPgetRootNode’; did you mean ‘SCIPtreeGetRootNode’? [-Wimplicit-function-declaration]</div>
<div class="ContentPasted0"> 2444 |          SCIP_CALL( SCIPcutoffNode(set->scip, SCIPgetRootNode(set->scip)) );</div>
<div class="ContentPasted0">      |                                               ^~~~~~~~~~~~~~~</div>
<div class="ContentPasted0">src/scip/def.h:381:44: note: in definition of macro ‘SCIP_CALL’</div>
<div class="ContentPasted0">  381 |                           if( (_restat_ = (x)) != SCIP_OKAY )                                                 \</div>
<div class="ContentPasted0">      |                                            ^</div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ContentPasted0">
It seems that in other places in conflict.c different functions are used to signal global infeasibility.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ContentPasted0">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ContentPasted0">
James<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
James Cussens</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Room MVB 3.26<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Dept of Computer Science, University of Bristol</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Phone: +44 (0)117 455 8723<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<a href="https://jcussens.github.io/">https://jcussens.github.io/</a></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-size:11.5pt">Funded PhDs available in Bristol in the following areas: <a href="http://www.bristol.ac.uk/cdt/compass/" target="_blank" rel="noopener noreferrer"><span>Data Science</span></a>, <a href="http://www.bristol.ac.uk/cdt/interactive-ai/" target="_blank" rel="noopener noreferrer"><span>Interactive
 AI</span></a>, <a href="http://www.bristol.ac.uk/cdt/cyber-security/" target="_blank" rel="noopener noreferrer"><span>Cyber Security</span></a> or <a href="http://www.bristol.ac.uk/cdt/digital-health/" target="_blank" rel="noopener noreferrer"><span>Digital
 Health</span></a>. </span><br>
</div>
</div>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Stefan Vigerske <svigerske@gams.com><br>
<b>Sent:</b> 11 June 2023 12:27<br>
<b>To:</b> James Cussens <james.cussens@bristol.ac.uk>; scip@zib.de <scip@zib.de><br>
<b>Subject:</b> Re: [SCIP] calling <SCIPcutoffNode> in presolving stage</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi,<br>
<br>
looks like a bug to me.<br>
The attached patch should help. It removes the call of SCIPcutoffNode in <br>
cons_logicor, but should still signal infeasibility to the SCIP core.<br>
<br>
Stefan<br>
<br>
On 11/06/2023 11:47, James Cussens wrote:<br>
> Hi all,<br>
> <br>
> I'm getting the following problem when running in debug mode:<br>
> <br>
> [debug.c:2345] ERROR: cannot call method <SCIPcutoffNode> in presolving stage<br>
> [scip_tree.c:430] ERROR: Error <-8> in function call<br>
> [presolve.c:1312] ERROR: Error <-8> in function call<br>
> [cons_logicor.c:3287] ERROR: Error <-8> in function call<br>
> [cons_logicor.c:4689] ERROR: Error <-8> in function call<br>
> [cons.c:4063] ERROR: Error <-8> in function call<br>
> [scip_solve.c:997] ERROR: Error <-8> in function call<br>
> [scip_solve.c:1207] ERROR: Error <-8> in function call<br>
> [scip_solve.c:1207] ERROR: Error <-8> in function call<br>
> [scip_solve.c:1373] ERROR: Error <-8> in function call<br>
> [scip_solve.c:2484] ERROR: Error <-8> in function call<br>
> [scip_solve.c:2722] ERROR: Error <-8> in function call<br>
> [data_bnsl.c:1486] ERROR: Error <-8> in function call<br>
> [data_bnsl.c:2579] ERROR: Error <-8> in function call<br>
> [data_bnsl.c:3952] ERROR: Error <-8> in function call<br>
> [data_bnsl.c:4246] ERROR: Error <-8> in function call<br>
> <br>
> The problem seems to be that when global infeasibility is deduced in presolving, specifically via the function SCIPshrinkDisjunctiveVarSet<br>
> there is a call:<br>
> <br>
>     SCIP_CALL( SCIPcutoffNode(scip, SCIPgetRootNode(scip)) );<br>
> <br>
> but it seems that using SCIPcutoffNode in presolving is not allowed. Is this perhaps a bug? If so, is there a fix?<br>
> <br>
> Best wishes,<br>
> <br>
> James<br>
> <br>
> James Cussens<br>
> Room MVB 3.26<br>
> Dept of Computer Science, University of Bristol<br>
> Phone: +44 (0)117 455 8723<br>
> <a href="https://jcussens.github.io/">https://jcussens.github.io/</a><br>
> Funded PhDs available in Bristol in the following areas: Data Science<<a href="http://www.bristol.ac.uk/cdt/compass/">http://www.bristol.ac.uk/cdt/compass/</a>>, Interactive AI<<a href="http://www.bristol.ac.uk/cdt/interactive-ai/">http://www.bristol.ac.uk/cdt/interactive-ai/</a>>,
 Cyber Security<<a href="http://www.bristol.ac.uk/cdt/cyber-security/">http://www.bristol.ac.uk/cdt/cyber-security/</a>> or Digital Health<<a href="http://www.bristol.ac.uk/cdt/digital-health/">http://www.bristol.ac.uk/cdt/digital-health/</a>>.<br>
> <br>
> <br>
> _______________________________________________<br>
> Scip mailing list<br>
> Scip@zib.de<br>
> <a href="https://listserv.zib.de/mailman/listinfo/scip">https://listserv.zib.de/mailman/listinfo/scip</a><br>
</div>
</span></font></div>
</body>
</html>