[Scip] SCIPlpiIgnoreInstability

Gerald Gamrath gamrath at zib.de
Thu Dec 6 15:27:31 MET 2012


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