<div dir="ltr">Hey Sriram<div><br></div><div>You can add your own constraint handler that, in the check callback, says that the solution is infeasible.</div><div>In the check callback you don't have to separate the solution, so no need to worry about that at this point.</div><div><br></div><div>You probably want your constraint handler to be the last one to be checked, and basically, the last one to do anything. So you'll have to set lower priorities for your conshdlr than all others. To check he different priorities, open a scip shell and type `display cons`, also see the fundamental properties of a constraint handler in <a href="https://scipopt.org/doc/html/CONS.php">https://scipopt.org/doc/html/CONS.php</a> </div><div><br></div><div>Regarding the separation of the "infeasible" solutions, SCIP will ask you to take care of an "infeasible" solution in the enforcement callback.</div><div>Now, unless there is a problem with the LP relaxation, you will only be dealing with enforcing LP solutions (see <a href="https://scipopt.org/doc/html/CONS.php#CONSENFOLP">https://scipopt.org/doc/html/CONS.php#CONSENFOLP</a>).</div><div>Here, you can add bound disjunction constraints (<a href="https://scipopt.org/doc/html/group__CONSHDLRS.php#ga1ef7f5e6f8b325f1b221add96f500ef3" target="_blank">https://scipopt.org/doc/html/group__CONSHDLRS.php#ga1ef7f5e6f8b325f1b221add96f500ef3</a>)</div><div>Note that your suggestion "but instead I would like the branching to continue with y <= 3 and y >=5 as the two branches" can be achieved, but this will cut off any other feasible solution with y = 4.</div><div><br></div><div>However, given that SCIP is asking you to deal with "infeasible" solutions that are also LP solutions, if you use the simplex algorithm, then the "infeasible" solution is going to be a vertex (you can check whether the solution is basic with SCIPisLPSolBasic).</div><div>As such, it should be possible to separate the solution. I guess there should be a simple way of deducing a cut, but I don't know at this moment. An overkill way of building a cut would be to use an intersection cut: a ball of radius 1 centered at your solution will not contain any other integer point in its interior.</div><div><br></div><div>Hope this helps</div><div><br></div><div>Best,</div><div>Felipe</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Aug 23, 2020 at 6:16 PM <<a href="mailto:ssriram1992@icloud.com" target="_blank">ssriram1992@icloud.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 lang="EN-US"><div><p class="MsoNormal">Hi all, <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I am trying to solve a problem whose relaxation can be solved using branch-and-price. The relaxation is a mixed-integer linear program (not binary though). Once I get an integer feasible solution – be it through heuristics or branching – I have a post-processing routine, which can check the feasibility of the solution w.r.t the original problem. There is no possibility that the post-processing routine can generate any separating hyperplane or so, to permanently cut off this infeasible solution. <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">What can I do to ensure that this solution does not show up again, and no primal bound information is collected from this “infeasible” solution? <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">That said, I don’t want the complete node/subtree to be discarded either. For example, let us say that an integer feasible solution (x,y,z) = (3, 4, 5) is obtained, after x and z are fixed, and y turned out to be an integer, just by solving the LP relaxation. Let us say, this solution is deemed infeasible through my post-processing routine. In this I don’t want to discard the subtree, but instead I would like the branching to continue with y <= 3 and y >=5 as the two branches, for example. Can this be achieved?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">There is a long shot of binarizing the integer variables (everything is bounded in my case), and then adding no-good cuts. But is there a smarter thing that we can do?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Best<u></u><u></u></p><p class="MsoNormal">Sriram<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p></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>