<div dir="ltr"><div dir="ltr"><div>Dear Abbas,</div><div><br></div><div>The top-level description of the indicator constraint handler of SCIP should be a good start:<br></div><div><a href="https://www.scipopt.org/doc/html/cons__indicator_8c.php" target="_blank">https://www.scipopt.org/doc/html/cons__indicator_8c.php</a></div><div><br></div><div>There are three ways indicator constraints are handled, separation, preprocessing, and a heuristic. Separation is based on this paper in particular: <a href="https://doi.org/10.1137/050645828" target="_blank">https://doi.org/10.1137/050645828</a></div><div><br></div><div>Performance with a big M approach will typically differ. In my experience, if you have a good bound M, a big M approach won't perform too bad, but may be numerically more unstable.</div><div><br></div><div>SCIP only supports <br></div><div><div style="text-align:center"><span style="color:rgb(35,38,41)"><b><font face="arial, sans-serif">LHS - slack <= RHS</font></b></span></div></div></div><div class="gmail_quote"><div class="gmail_attr">At least for now.</div><div class="gmail_attr"><br></div><div class="gmail_attr">Hope this helps,<br></div>Mathieu<div class="gmail_attr"><br></div><div dir="ltr" class="gmail_attr">On Mon, Aug 21, 2023 at 8:34 AM Abbas Omidi <<a href="mailto:abb.omidi@gmail.com" target="_blank">abb.omidi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><font face="arial, sans-serif">Dear support team,<br></font><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif"><span style="color:rgb(35,38,41)">In the SCIP the indicator constraint can be written as </span><code style="margin:0px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-stretch:inherit;line-height:inherit;font-kerning:inherit;font-feature-settings:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(35,38,41)">indcons(expression, binary_var)</code><span style="color:rgb(35,38,41)">. Then it is interpreted as follows: (based on ".cip" format)</span><br></font></div><div><span style="color:rgb(35,38,41)"><font face="arial, sans-serif"><br></font></span></div><div style="text-align:center"><span style="color:rgb(35,38,41)"><b><font face="arial, sans-serif">LHS - slack (<=/=/>=) RHS</font></b></span></div><div style="text-align:center"><span style="color:rgb(35,38,41)"><b><font face="arial, sans-serif">If: (binary_var = 1) -> (slack = 0)</font></b></span></div><div><span style="color:rgb(35,38,41)"><font face="arial, sans-serif"><br></font></span></div><div><font face="arial, sans-serif"><span style="color:rgb(35,38,41)">As far as I know, CPLEX and maybe Gurobi have used binary variables and whose linking to linearize the logical constraints. I am actually not aware of their internal mechanism. Now, I would like to know how the SCIP can deal with indicator constraint internally, and also the rule of the slack variable in this form, and if </span><span style="color:rgb(35,38,41)">is it necessary to use that instead of using e.g. a <b><i>BigM</i></b> approach. </span></font></div><div><span style="color:rgb(35,38,41)"><font face="arial, sans-serif"><br></font></span></div><div><span style="color:rgb(35,38,41)"><font face="arial, sans-serif"><br></font></span></div><div><span style="color:rgb(35,38,41)"><font face="arial, sans-serif">Best regards</font></span></div><div><span style="color:rgb(35,38,41)"><font face="arial, sans-serif">Abbas</font></span><br></div></div>
_______________________________________________<br>
Scip mailing list<br>
<a href="mailto:Scip@zib.de" target="_blank">Scip@zib.de</a><br>
<a href="https://listserv.zib.de/mailman/listinfo/scip" rel="noreferrer" target="_blank">https://listserv.zib.de/mailman/listinfo/scip</a><br>
</blockquote></div><br clear="all"><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Mathieu Besançon</div></div></div>