[Scip] hashKeyEqCut: Assertion `row1->lpcolssorted' failed

Gerald Gamrath gamrath at zib.de
Tue Apr 1 12:23:53 CEST 2014


Dear Jana,

if you call SCIPcacheRowExtensions() before adding variables to the row, 
you need to call SCIPflushRowExtensions() after you are done with 
adding. This will really apply the changes and allows to sort the row, 
as is needed later.

Best,
Gerald

Am 01.04.2014 12:01, schrieb Jana Kutscheid:
> Hi SCIP Users!
>
> I have a problem with a failing assertion which I only found when 
> running SCIP in debug mode.  I can run my code without errors in 
> optimized mode.
>
> The program aborts with the following error.
> hsnp: src/scip/cutpool.c:87: hashKeyEqCut: Assertion 
> `row1->lpcolssorted' failed.
>
> The row which is added to the cutpool at the moment the error occurs 
> is generated by the code below.
>
> If I deactivate separation in the corresponding constraint handler I 
> get another error:
> hsnp: src/scip/solve.c:2877: enforceConstraints: Assertion 
> `SCIPsepastoreGetNCuts(sepastore) > 0' failed.
>
> Do you have an idea what causes these problems?
>
> Thanks,
> Jana
>
>
> Code which generates the problem row:
>
>         SCIP_ROW *row;
>         char s[SCIP_MAXSTRLEN];
>
>         (void) SCIPsnprintf(s, SCIP_MAXSTRLEN, 
> "time_sepa$%s#%d#%d%d%d", household->name, intervalEnd,time_a, time_b, 
> time_c);
>
>         SCIP_CALL( SCIPcreateEmptyRowCons(scip, &row, conshdlr, s, 
> 0.0, 1.0, FALSE, FALSE, TRUE) );
>         SCIP_CALL( SCIPcacheRowExtensions(scip, row) );
>
>         if (time_a >= intervalBegin && time_a <= intervalEnd) 
> SCIP_CALL( SCIPaddVarToRow(scip, row, a_var, 1.0) );
>         if (time_b >= intervalBegin && time_b <= intervalEnd) 
> SCIP_CALL( SCIPaddVarToRow(scip, row, b_var, 1.0) );
>         if (time_c >= intervalBegin && time_c <= intervalEnd) 
> SCIP_CALL( SCIPaddVarToRow(scip, row, c_var, 1.0) );
>
>         if (SCIPisCutEfficacious(scip, NULL, row))
>         {
>             SCIP_CALL( SCIPaddCut(scip, NULL, row, TRUE) );
>             SCIP_CALL( SCIPaddPoolCut(scip, row) );
>             *result = SCIP_SEPARATED;
>         }
>         SCIP_CALL( SCIPreleaseRow(scip, &row));
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip



More information about the Scip mailing list