[SCIP] Cutting off the optimum when using relaxation handler

Stefan Vigerske svigerske at gams.com
Tue Dec 8 05:21:15 CET 2020


Hi,

regarding

 > [src/scip/cons.c:3294] ERROR: enforcing method of constraint handler
 > <cycle-elimination> for relaxation returned an invalid result 1

the problem is that the enforcement method of the cycle-elimination 
constraint handler returned SCIP_DIDNOTRUN as a result, which is not 
valid. The minimal thing enforcement needs to do is to check whether the 
corresponding solution is feasible and thus return SCIP_FEASIBLE or 
SCIP_INFEASIBLE. It can also do something to resolve infeasibility or 
more, which should then result in some more status codes: 
https://www.scipopt.org/doc-7.0.1/html/CONS.php#CONSENFOLP

Since you seem to have a relaxation, maybe the problem is in the 
ENFORELAX implementation of your constraint handler. The least the 
constraint handler has to do is to confirm that your relaxation solution 
is indeed feasible.

Stefan


On 12/7/20 3:51 PM, Renato Melo wrote:
> Hi everyone,
> 
> I am implementing a branch-and-cut model using C++ with SCIP 6.0.1. I am
> using a relaxation handler to find lower bounds for a minimization problem.
> The idea is providing only the lower bound value, not a relaxed solution.
> Therefore, I was only updating the '*lowerbound' pointer on the RELAXEXEC
> callback. However, when my relaxation finds a lower bound value equal to
> the problem's optimal objective value, the branch-and-cut ends with a
> solution greater than the optimal. I have no idea why this is happening.
> 
> - It can be because I am not providing a relaxed solution?
> 
> I tried to provide a relaxed solution that I know is optimal (for a
> restricted case of the problem). To do this, I am setting the values one by
> one with SCIPsetRelaxSolVal() and calling SCIPmarkRelaxSolValid() to inform
> SCIP that the solution is complete and valid. In this case, if I set the
> "includeslp" argument of SCIPmarkRelaxSolValid() as FALSE, nothing changes,
> and SCIP continues cutting off the optimum. When I set the "includeslp"
> argument to TRUE, I get the following error:
> 
> [src/scip/cons.c:3294] ERROR: enforcing method of constraint handler
> <cycle-elimination> for relaxation returned an invalid result 1
> 
> However, I am sure that there are no cycles in the given solution. That is,
> the solution is feasible.
> 
> I followed the Relaxator example (
> https://www.scipopt.org/doc/html/RELAXATOR_MAIN.php) to implement my
> relaxation and add a relaxed solution to SCIP's data structure. The
> priority is -1, and the frequency is 1.
> 
> Have you some suggestions about what I can do?
> 
> Best regards,
> Renato
> 
> 
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
> 



More information about the Scip mailing list