[Scip] hashKeyEqCut: Assertion `row1->lpcolssorted' failed
Gerald Gamrath
gamrath at zib.de
Tue Apr 1 13:01:57 CEST 2014
Hi Jana,
this is because of the result pointer you are setting in your separation
callback. You should only set it to SCIP_SEPARATED, if you added cuts to
the separation storage.
In general, if you find cuts which separate the current LP solution, you
should add them to the separation storage (or the delayed cutpool). Just
adding them to the cutpool means that these cuts will not be separated
in the current separation round, but only tried later. Therefore, I
would suggest to add new cuts both to the separation storage as well as
the cutpool (if they are globally valid).
Best,
Gerald
Am 01.04.2014 12:45, schrieb Jana Kutscheid:
> 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
>>
>>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip
More information about the Scip
mailing list