[SCIP] separating while counting feasible solutions

Ambros Gleixner gleixner at zib.de
Thu May 17 10:46:24 CEST 2018


Hi James and Pierre,

Just a short add-on: Using separation while counting should be fine. 
There are currently no separation routines in SCIP that cut off feasible 
solutions.  (The only ones might be the separation routines in 
polyhedral symmetry handling, but symmetry handling is turned off 
independently.)

This line of code is from about 2011, so we don't remember everything, 
but we guess that the decision to turn of separation in counting was 
based on performance arguments, Pierre's point 1).  But SCIP has changed 
significantly since then, and your example shows that it can be beneficial.

We will discuss internally whether to change this behavior in the 
future, but for now your solution looks good.

Best,
Ambros


Am 17.05.2018 um 03:39 schrieb Pierre Le Bodic:
> Hi James,
> 
> My understanding as a scip user is that when switching to counting & 
> collecting, you're explicitly enumerating all solutions. Therefore, 
> separation is turned off probably because 1) it would probably slow down 
> the enumeration without altering the output, and 2) if needed, a 
> provably optimal solution will be available once the explicit 
> enumeration is complete.
> 
> Since what you would like to achieve is different than enumeration, it 
> may pay off to play with some of the parameters in limits/, in 
> particular limits/objective, whether in solve or count mode. I hope this 
> helps!
> 
> Kind regards,
> Pierre
> 
> On 15 May 2018 at 18:34, James Cussens <james.cussens at york.ac.uk 
> <mailto:james.cussens at york.ac.uk>> wrote:
> 
>     I have noticed that when SCIP is counting (and possibly collecting)
>     feasible solutions, separation is turned off.
> 
>     What is the rationale for this?
> 
>     In my own SCIP project having no separation led to very poor
>     performance when collecting feasible solutions with objective value
>     better than a given value. (I just want reasonably 'good' feasible
>     solutions.)
> 
>     I fixed the problem as follows:
> 
>     SCIP_CALL( SCIPsetParamsCountsols(scip) );
>               /* put separating back on! */
>               SCIP_CALL( SCIPparamsetSetSeparating(scip->set->paramset,
>     scip->set, scip->messagehdlr, SCIP_PARAMSETTING_DEFAULT, TRUE) );
> 
>     but perhaps keeping separation leads to some other problem I don't
>     realise.
> 
>     Any advice on this issue gratefully received.
> 
>     James
> 
>     -- 
>     James Cussens
>     Dept of Computer Science &
>     York Centre for Complex Systems Analysis
>     Room 326, The Hub, Deramore Lane            Tel    +44 (0)1904 325371
>     University of York                                        Fax  +44
>     (0)1904 500159
>     York YO10 5GE, UK http://www.cs.york.ac.uk/~jc
>     http://www.york.ac.uk/docs/disclaimer/email.htm
>     <http://www.york.ac.uk/docs/disclaimer/email.htm>
> 
>     _______________________________________________
>     Scip mailing list
>     Scip at zib.de <mailto:Scip at zib.de>
>     https://listserv.zib.de/mailman/listinfo/scip
>     <https://listserv.zib.de/mailman/listinfo/scip>
> 
> 
> 
> 
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
> 

-- 
Ambros Gleixner, Research Group Mathematical Optimization Methods at 
Zuse Institute Berlin, http://www.zib.de/gleixner


More information about the Scip mailing list