[Scip] SCIPlpiIgnoreInstability

Gerald Gamrath gamrath at zib.de
Tue Dec 11 11:05:41 MET 2012


Hi Sebastian,

I assume the checkLazyBounds() call is in line 13540 of lp.c? Could you
please verify that?

If it is the case, please add
> if( solstat == SCIP_LPSOLSTAT_OPTIMAL )
above the checkLazyBounds() call, we recently changed that lazy bounds
need only to be valid if the LP is solved to optimality (or
unboundedness), but obviously forgot to change this at that place.

Please keep us informed!

Best,
Gerald


Am 07.12.2012 07:47, schrieb Sebastian Ruther:
>  Hello Gerald,
>
> changing -1 to +1 results in an assert shortly after. It calls
> checkLazyBounds(lp, set); from SCIPlpSolveAndEval.
> In the second assert, i.e.
>   assert(SCIPsetIsInfinity(set, col->lazyub) || SCIPsetIsFeasLE(set,
> col->primsol, col->lazyub));
> col->lazyub = 1.0, so the first test fails. The second fails as well
> because col->primsol = 1.1999999999996342 and so the relative
> difference is more than set->num_feastol.
>
> Regards,
> Sebastian
>
> On 7/12/2012 1:27 AM, Gerald Gamrath wrote:
>> Hi Sebastian,
>>
>> please change the -1 in line 12957 of lp.c to a 1 and check whether the
>> problem still comes up. I think that should already fix your problem,
>> but anyway, you are right, the assert in SCIPlpiIgnoreInstability()
>> should also include CPX_STAT_ABORT_IT_LIM as you suggested. However, the
>> status must not be reset to CPX_STAT_OPTIMAL in this case and also not
>> if the status is unbounded.
>>
>> Please tell us if that fixed your problem. We will change that in the
>> current bugfix version, too.
>>
>> Best,
>> Gerald
>>
>>
>> Am 05.12.2012 02:37, schrieb Sebastian Ruther:
>>>    Hello,
>>>
>>> I have an issue when setting "lp/checkstability" to FALSE. SCIP asserts
>>> in function SCIPlpiIgnoreInstability when the lpi->solstat is
>>> CPX_STAT_ABORT_IT_LIM.
>>>
>>> In some iteration the call to solveNodeInitialLP returned
>>> SCIP_LPSOLSTAT_OBJLIMIT. As is described there, it then solves without
>>> fastmip for 1 iteration.
>>> For this, dual simplex returns CPX_STAT_ABORT_IT_LIM. In lpSolveStable
>>> it calls SCIP_CALL( SCIPlpiIgnoreInstability(lp->lpi,&success) ); and
>>> asserts there. The call stack is below. Note that I am still running
>>> SCIP 2.1.1 (I am finishing the Ph.D in 2 months so would like to avoid
>>> updating)
>>>
>>>
>>> In SCIPlpiIgnoreInstability it says:
>>>
>>>      assert(lpi->solstat == CPX_STAT_UNBOUNDED
>>>         || lpi->solstat == CPX_STAT_NUM_BEST
>>>         || lpi->solstat == CPX_STAT_OPTIMAL_INFEAS);
>>>
>>>      /* replace instable status with optimal status */
>>>      if( lpi->solstat == CPX_STAT_NUM_BEST || lpi->solstat ==
>>> CPX_STAT_OPTIMAL_INFEAS )
>>>         lpi->solstat = CPX_STAT_OPTIMAL;
>>>
>>> can I add  "|| lpi->solstat == CPX_STAT_ABORT_IT_LIM" to the if
>>> statement?
>>> Also, in the assert you check for CPX_STAT_UNBOUNDED. Should that
>>> status
>>> also be reset to CPX_STAT_OPTIMAL?
>>>
>>> Regards,
>>> Sebastian
>>>
>>>
>>>
>>>
>>>        binscip.exe!SCIPlpiIgnoreInstability(SCIP_LPi *
>>> lpi=0x0000000001365ae0, unsigned int * success=0x000000000020e6d4) 
>>> Line
>>> 2986 + 0x44 bytes    C
>>>   >     binscip.exe!lpSolveStable(SCIP_Lp * lp=0x000000000114bad0,
>>> SCIP_Set * set=0x000000000042dd80, SCIP_Stat * stat=0x0000000001d7f3a0,
>>> SCIP_LPAlgo lpalgo=SCIP_LPALGO_DUALSIMPLEX, int itlim=1, int
>>> harditlim=-1, unsigned int resolve=0, int fastmip=1, unsigned int
>>> tightfeastol=0, unsigned int fromscratch=0, unsigned int keepsol=0,
>>> unsigned int * timelimit=0x000000000020e8e4, unsigned int *
>>> lperror=0x000000000020f0e4)  Line 11988 + 0x16 bytes    C
>>>
>>>        binscip.exe!lpSolve(SCIP_Lp * lp=0x000000000114bad0, SCIP_Set *
>>> set=0x000000000042dd80, SCIP_Stat * stat=0x0000000001d7f3a0,
>>> SCIP_LPAlgo
>>> lpalgo=SCIP_LPALGO_DUALSIMPLEX, int resolveitlim=1, int harditlim=-1,
>>> unsigned int needprimalray=0, unsigned int needdualray=0, unsigned int
>>> resolve=1, int fastmip=1, unsigned int tightfeastol=0, unsigned int
>>> fromscratch=0, unsigned int keepsol=0, unsigned int *
>>> lperror=0x000000000020f0e4)  Line 12339 + 0x8c bytes    C
>>>
>>>        binscip.exe!SCIPlpSolveAndEval(SCIP_Lp * lp=0x000000000114bad0,
>>> BMS_BlkMem * blkmem=0x000000000042bce0, SCIP_Set *
>>> set=0x000000000042dd80, SCIP_Stat * stat=0x0000000001d7f3a0,
>>> SCIP_EventQueue * eventqueue=0x0000000000c03e00, SCIP_EventFilter *
>>> eventfilter=0x000000000eccbe00, SCIP_Prob * prob=0x0000000000bb5c80,
>>> int
>>> itlim=-1, unsigned int limitresolveiters=1, unsigned int aging=1,
>>> unsigned int keepsol=0, unsigned int * lperror=0x000000000020f0e4) 
>>> Line
>>> 12957 + 0x84 bytes    C
>>>
>>>        binscip.exe!solveNodeInitialLP(BMS_BlkMem *
>>> blkmem=0x000000000042bce0, SCIP_Set * set=0x000000000042dd80, SCIP_Stat
>>> * stat=0x0000000001d7f3a0, SCIP_Prob * prob=0x0000000000bb5c80,
>>> SCIP_Primal * primal=0x0000000000b9fc20, SCIP_Tree *
>>> tree=0x0000000001dbaf30, SCIP_Lp * lp=0x000000000114bad0,
>>> SCIP_Pricestore * pricestore=0x0000000000c5eeb0, SCIP_SepaStore *
>>> sepastore=0x0000000000d9beb0, SCIP_BranchCand *
>>> branchcand=0x0000000000b9e830, SCIP_EventFilter *
>>> eventfilter=0x000000000eccbe00, SCIP_EventQueue *
>>> eventqueue=0x0000000000c03e00, unsigned int *
>>> cutoff=0x000000000020f3a4,
>>> unsigned int * lperror=0x000000000020f0e4)  Line 1175 + 0x79 bytes    C
>>>
>>>        binscip.exe!solveNodeLP(BMS_BlkMem * blkmem=0x000000000042bce0,
>>> SCIP_Set * set=0x000000000042dd80, SCIP_Stat * stat=0x0000000001d7f3a0,
>>> SCIP_Prob * origprob=0x0000000001e0c360, SCIP_Prob *
>>> transprob=0x0000000000bb5c80, SCIP_Primal * primal=0x0000000000b9fc20,
>>> SCIP_Tree * tree=0x0000000001dbaf30, SCIP_Lp * lp=0x000000000114bad0,
>>> SCIP_Pricestore * pricestore=0x0000000000c5eeb0, SCIP_SepaStore *
>>> sepastore=0x0000000000d9beb0, SCIP_Cutpool *
>>> cutpool=0x000000000135df30,
>>> SCIP_BranchCand * branchcand=0x0000000000b9e830, SCIP_Conflict *
>>> conflict=0x00000000018ac320, SCIP_EventFilter *
>>> eventfilter=0x000000000eccbe00, SCIP_EventQueue *
>>> eventqueue=0x0000000000c03e00, unsigned int initiallpsolved=0, unsigned
>>> int * cutoff=0x000000000020f3a4, unsigned int *
>>> unbounded=0x000000000020f3c4, unsigned int *
>>> lperror=0x000000000020f0e4,
>>> unsigned int * pricingaborted=0x000000000020f0c4)  Line 2370 + 0xa7
>>> bytes    C
>>>
>>>        binscip.exe!propAndSolve(BMS_BlkMem * blkmem=0x000000000042bce0,
>>> SCIP_Set * set=0x000000000042dd80, SCIP_Stat * stat=0x0000000001d7f3a0,
>>> SCIP_Prob * origprob=0x0000000001e0c360, SCIP_Prob *
>>> transprob=0x0000000000bb5c80, SCIP_Primal * primal=0x0000000000b9fc20,
>>> SCIP_Tree * tree=0x0000000001dbaf30, SCIP_Lp * lp=0x000000000114bad0,
>>> SCIP_Relaxation * relaxation=0x0000000000b9f860, SCIP_Pricestore *
>>> pricestore=0x0000000000c5eeb0, SCIP_SepaStore *
>>> sepastore=0x0000000000d9beb0, SCIP_BranchCand *
>>> branchcand=0x0000000000b9e830, SCIP_Cutpool *
>>> cutpool=0x000000000135df30, SCIP_Conflict *
>>> conflict=0x00000000018ac320,
>>> SCIP_EventFilter * eventfilter=0x000000000eccbe00, SCIP_EventQueue *
>>> eventqueue=0x0000000000c03e00, SCIP_Node *
>>> focusnode=0x0000000025cf0520,
>>> int actdepth=16, unsigned int timingmask=1, unsigned int propagate=1,
>>> unsigned int solvelp=1, unsigned int solverelax=1, unsigned int
>>> forcedlpsolve=0, int * nlperrors=0x000000000020efc4, unsigned int *
>>> fullpropagation=0x000000000020f084, unsigned int *
>>> propagateagain=0x000000000020f064, unsigned int *
>>> initiallpsolved=0x000000000020f004, unsigned int *
>>> solvelpagain=0x000000000020f044, unsigned int *
>>> solverelaxagain=0x000000000020f024, unsigned int *
>>> cutoff=0x000000000020f3a4, unsigned int * unbounded=0x000000000020f3c4,
>>> unsigned int * lperror=0x000000000020f0e4, unsigned int *
>>> pricingaborted=0x000000000020f0c4, unsigned int *
>>> forcedenforcement=0x000000000020f104)  Line 3038 + 0x102 bytes    C
>>>
>>>        binscip.exe!solveNode(BMS_BlkMem * blkmem=0x000000000042bce0,
>>> SCIP_Set * set=0x000000000042dd80, SCIP_Stat * stat=0x0000000001d7f3a0,
>>> SCIP_Prob * origprob=0x0000000001e0c360, SCIP_Prob *
>>> transprob=0x0000000000bb5c80, SCIP_Primal * primal=0x0000000000b9fc20,
>>> SCIP_Tree * tree=0x0000000001dbaf30, SCIP_Lp * lp=0x000000000114bad0,
>>> SCIP_Relaxation * relaxation=0x0000000000b9f860, SCIP_Pricestore *
>>> pricestore=0x0000000000c5eeb0, SCIP_SepaStore *
>>> sepastore=0x0000000000d9beb0, SCIP_BranchCand *
>>> branchcand=0x0000000000b9e830, SCIP_Cutpool *
>>> cutpool=0x000000000135df30, SCIP_Conflict *
>>> conflict=0x00000000018ac320,
>>> SCIP_EventFilter * eventfilter=0x000000000eccbe00, SCIP_EventQueue *
>>> eventqueue=0x0000000000c03e00, unsigned int *
>>> cutoff=0x000000000020f3a4,
>>> unsigned int * unbounded=0x000000000020f3c4, unsigned int *
>>> infeasible=0x000000000020f3e4, unsigned int *
>>> restart=0x000000000020f5d4, unsigned int *
>>> afternodeheur=0x000000000020f424)  Line 3273 + 0x1d2 bytes    C
>>>
>>>
>>> _______________________________________________
>>> Scip mailing list
>>> Scip at zib.de
>>> http://listserv.zib.de/mailman/listinfo/scip
>>
>> .
>>
>



More information about the Scip mailing list