[Scip] SCIPlpiIgnoreInstability

Sebastian Ruther Sebastian.Ruther at uon.edu.au
Fri Dec 7 07:47:51 MET 2012


  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