[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