[Scip] 70% of solving time is spent in checkLazyColArray

Stefan Heinz heinz at zib.de
Sun Aug 12 21:11:50 MEST 2012


Hi Sebastian,

I checked the code for the checkLazyColArray() method. This method 
should only be called if SCIP is compiled in debug mode.

#ifndef NDEBUG
/** method checks if all columns in the lazycols array have at least one 
lazy bound and also have a counter part in the
  *  cols array; furthermore, it is checked if columns in the cols array 
which have a lazy bound have a counter part in
  *  the lazycols array
  */
static
void checkLazyColArray(
    SCIP_LP*              lp,                 /**< LP data */
    SCIP_SET*             set                 /**< global SCIP settings */
    )
{
    SCIP_Bool contained;
    int c;
    int i;
...
}
#else
#define checkLazyColArray(lp, set) /**/
#endif

If I remember right you are compiling SCIP yourself under Windows. 
Please use "-DNDEBUG" as compiler option to make sure that *all* debug 
checks (not only that one) are turned off. That will give you a speed up 
;-) and might solve your "old" problem. You also should add 
"-DNPARASCIP" as compiler options as well.

Best Stefan


"
On 08/10/2012 08:14 AM, Sebastian Ruther wrote:
>    Hello,
>
> I noticed that a large amount of time is spent in checkLazyColArray. Of
> a time limit of 4h about 10k seconds (i.e. 70%) are spend in this
> function. Btw, this time is not accounted for in the output generated by
> SCIPprintStatistics.
>
> The function has 2 double loops over nlazycols and ncols. When this
> function is called the first time, both are close to 40k. At that point
> the function takes 12 seconds to run. The function is called frequently
> when switching to a different node but not every time.
>
> I assume that usually a larger number of columns can be handled by SCIP
> which would suggest that this function should not be called often as it
> is very expensive. So the question is: what can I do to avoid calling it?
> Why does it shrink columns? Not sure if it has anything to do with it
> but I don't have colagelimit or cleanupcols(root) activated.
>
> The call stack is
> checkLazyColArray
> SCIPlpShrinkCols
> SCIPtreeLoadLP
> SCIPconstructCurrentLP
> solveNodeInitialLP
> solveNodeLP
> propAndSolve
> solveNode
> SCIPsolveCIP
> SCIPsolve
> runSCIP
>
> FYI I'm still running SCIP 2.1.1
>
> Thank you for your help,
> Sebastian
>
>
>
>
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip



More information about the Scip mailing list