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

Jana Kutscheid jkutscheid at web.de
Tue Apr 1 12:45:57 CEST 2014


Hi Gerald,

of course, thank you so much. I must have lost this line at some point 
but did not notice at all...
Now the row is sorted but I keep getting the other error:

hsnp: src/scip/solve.c:2877: enforceConstraints: Assertion 
`SCIPsepastoreGetNCuts(sepastore) > 0' failed.

Do you have an idea?

As a remark: I mostly add global cuts and have activated the separation 
of the global cut pool.

Thanks,
Jana


Am 01.04.2014 12:23, schrieb Gerald Gamrath:
> 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