[SCIP] A couple of questions about heuristics and management of the B&B tree...
Stefan Vigerske
stefan at math.hu-berlin.de
Mon Jan 7 05:38:33 CET 2019
Hi,
On 12/20/18 1:46 PM, Emiliano Traversi wrote:
> Hi,
>
> I am using SCIP to solve a (quite complex apparently) MINLP, it's a
> knapsack problem with a really complex objective function (an example is
> attached, just in case). For this reason I would like to use SCIP mainly as
> heuristic.
>
> I looked at the documentation and here :
>
> https://scip.zib.de/doc/html/PARAMETERS.php
>
> and I tried to fix some of them but I admit I felt a little bit overwhelmed
> by all the parameters :-).
>
> For this reason, I would like to ask you the following questions:
>
> 1 - Is it possible to set the frequency of all the heuristics as much
> aggressive as possible, do you have a single parameters to do so? If not,
> which heuristic do you recommend for my problem?
There is a command to set primal heuristic parameters to "aggressive",
which means, among other things, to increase the frequency of most
heuristics and enable previously disabled heuristics.
In the SCIP interactive shell, you do this by calling "set heuristics
emphasis aggressive". This will also output all parameters that has been
changed, so you can copy this into your settings files. There is also a
call in the C API to call out to emphasis settings.
I presume that the difficulty in your problem is the continuous
nonlinear part. Thus, you might want to manually adjust parameters of
heuristics that work on this part. These heuristics are multistart,
mpec, subnlp, and undercover (mainly useful if there are products).
Try parameters like heuristics/multistart/onlynlps = FALSE,
heuristics/subnlp/runalways = TRUE, heuristics/undercover/fixingalts =
'nli', and setting the freq for all of them to a small number.
Large-neighborhood-search heuristics in SCIP (those whose
single-letter-abbreviation is a capital letter) other than undercover
also work for MINLPs, but mainly focus on restricting the search space
for the binary variables.
> 1bis: Can you explain how exactly the parameters
> priority - freq - freqofs
> work/interact?
Priority decides the order in which a set of heuristics is called at a
point when heuristics are called.
freq, freqofs, and a hardcoded timing decides about which heuristics to
include into such a set at a specific point in SCIP. In short, a primal
heuristic is called in nodes at depth freqofs+x*freq, x a natural
number. See https://scip.zib.de/doc-6.0.0/html/HEUR.php for a detailed
documentation.
> 2 - is it possible to limit the size of the B&B tree? I saw
> limits/memory
> but if this limit is exceeded, the process is terminated. Do you have just
> a limit on all the open nodes. Probably this can indirectly achieved by
> imposing to use a diving at some point but what king of diving? And how
> exactly?
There is a memory saving mode. When SCIP's internal count on memory
usage reaches 80% of limits/memory, then it changes the node selection
strategy to DFS. The 80% can be changed via memory/savefac. The node
selection strategy to be chosen by nodeselection/*/memsavepriority.
We have some code in development that does better in handling these
y*log(y) terms. It still needs some tweaking to also do better on
(y+0.003)*log(y+0.003), though, but with default settings, after half an
hour, I'm at 34% gap and a primal bound close to 4.
Best,
Stefan
> I hope the questions are clear. Thanks in any case for the great job you
> did!
>
> Best regards,
>
> Emiliano Traversi
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
>
More information about the Scip
mailing list