[SCIP] SCIP finding efficacious cuts as non-efficacious
Ambros Gleixner
gleixner at zib.de
Sat Nov 28 19:41:23 CET 2020
Hi Naga,
This is a tricky one: The efficacy is not defined as the violation (in
your case 0.00022... > 1e-4) but as the violation divided by the norm of
the coefficient vector (in your case sqrt(7)). So you get something
below 1e-4, which is the default minimum value for a cut to be
efficacious in SCIP.
But if you would like these cuts to be treated as efficacious, you can
either set
separating/efficacynorm = 'm'
which uses the maximum norm, in your case 1; or adjust the parameters
separating/minefficacy
separating/minefficacyroot
to something smaller than 1e-4.
Hope that helps. Happy scipping,
Ambros
Am 21.11.20 um 14:27 schrieb Naga Venkata Chaitanya Gudapati -
nagavenkata.gudapati at studio.unibo.it:
> Hello folks,
>
> I am trying to add some cuts to my Branch-Cut and Price problem and
> unfortunately SCIP is reporting that a few cuts that I am adding are
> non-efficacious even though, I think they are efficacious. The way I
> have designed my code is that it is impossible to add non-efficacious cuts.
>
> I am using the code from TSP example which I modified very slightly for
> my use case,
>
> if (SCIPisCutEfficacious(scip, sol, row))
> {
> SCIP_Bool infeasible;
> SCIP_CALL(SCIPaddRow(scip, row, true, &infeasible));
> if (infeasible)
> {
> *result = SCIP_CUTOFF;
> std::cout << "Added cut is infeasible" << "\n";
> }
> else
> {
> *result = SCIP_SEPARATED;
> }
> }
> else
> {
> SCIP_CALL(SCIPprintRow(scip, row, nullptr));
> SCIP_CALL(SCIPreleaseRow(scip, &row));
> SCIPprintSol(scip, sol, nullptr, 0);
> std::cout << "The cut is not Efficacious " << \n";
> }
>
> This is one such cut I am trying to add
>
> *sepa_con_1_CUT_IF158:*1 <= +1<t_z[13,4]> +1<t_z[17,4]> +1<t_z[4,36]>
> +1<t_z[4,15]> -1<x[2][1]> -1<x[72][2]> -1<x[107][3]> <= 1e+20
>
> and the result of +1<t_z[13,4]> +1<t_z[17,4]> +1<t_z[4,36]>
> +1<t_z[4,15]> -1<x[2][1]> -1<x[72][2]> -1<x[107][3]> is 0.999777059 and
> I think it is above the SCIP tolerance and should be added. The values
> of the above variables are given here
>
> z[13,4] 0.626832074793241 (obj:65)
> z[17,4] 0.577612369651203 (obj:54)
> z[4,36] 0.239442646530025 (obj:70)
> z[4,15] 0.612387630348795 (obj:69)
> x[2][1] 0.239442646530025 (obj:18)
> x[72][2] 0.577612369651203 (obj:22)
> x[107][3] 0.239442646530025 (obj:29)
>
> I am attaching the output of SCIPprintSol, just in case if someone is
> wondering. I feel like I am missing something very trivial (and I hope
> it is not a calculation error). I am wondering if someone can help me
> debug this.
>
> Regards,
> Naga
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
>
More information about the Scip
mailing list