<div dir="ltr"><div>Hi, I'm following the TSP example, trying to understand the (somewhat dizzying!) array of different callbacks for the constraint handler. I'm particularly confused by the comment on line 359 of ConshdlrSubtour.cpp (in SCIP version 8.0.0), in ENFOLP, where it says:</div><div><br></div><div>// if a subtour was found, we generate a cut constraint saying that there must be at least two outgoing edges</div><div><br></div><div>immediately after a call to findSubtour. But as far as I can tell, findSubtour only checks for a subtour, without actually adding any cuts. My understanding (and I would love it if someone could confirm or correct me) is that:</div><div><br></div><div> (1) ENFOPS, ENFOLP, and CHECK all <b>need</b> to check for feasibility and return SCIP_FEASIBLE or SCIP_INFEASIBLE appropriately</div><div> (2) ENFOPS and ENFOLP both <b>may</b> also add new constraints/branch/change domains, and then return something else. The difference between these two is that ENFOPS may be given variable assignments that don't obey the current LP, and LP slack variables etc. will not be defined.<br></div><div> (3) SEPASOL and SEPALP both <b>need</b> to add constraints/cuts to separate infeasible solutions. SEPASOL is like ENFOPS in that won't necessarily be given actual LP solutions.</div><div> (4) The only <b>required</b> callbacks for a handler are ENFOLP, ENFOPS, and and CHECK.</div><div><br></div><div>So the behavior of the TSP's ENFOLP example is acceptable, but a more "complete" constraint handler would also add a cut there? The comment was just a bit confusing.</div><div><br></div><div>How important is it, performance-wise, to implement SEPASOL and SEPALP? I assume that if I don't add *any* cuts ever in my constraint handler, solving would be very very slow, so I add cuts in at least one of {enfops, enfolp, sepasol, sepalp}. But, for example, if I add cuts in ENFOPS and ENFOLP only, would I gain anything by also implementing callbacks for SEPASOL and SEPALP? And vice versa -- if I implements SEPASOL and SEPALP, what differences would I observe if I think also added cuts in ENFOPS and ENFOLP?</div><div><br></div><div>Thank you!<br></div><div><br></div><div>Best,<br></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Alexander Meiburg<br></div></div></div></div></div>