<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body>
<p>Dear Nils,</p>
<p><br>
</p>
<p>Since you use SCIP as a library one thing apart from the
parameters that you can try is to formulate your prolem in
different ways. E.g. use the specialized constaint types like
SOS1, or use a different formulation which relies on more general
constraints. Sometimes performance can be better with more general
linear constraints because it gives SCIP freedom to exploit
different structures which are sometimes more important than the
ones enforced by modelling a certain way.</p>
<p><br>
</p>
<p>Apart from that some tips for tuning SCIP parameters in general:</p>
<p><br>
</p>
<p>- Have a look at the statistics after soving ("display
statistics" on the SCIP shell). You can see which plugins take
what amount of the solving time. Then you can play with disabling
plugins that take a lot of time and/or do not seem to be
successful on your type of problem.</p>
<p><br>
</p>
<p>- SCIP provides emphasis settings "fast", "default",
"aggressive", and "off" for the categories "presolving",
"heuristics", and "separating". E.g. you can set presolving to
aggressive on the SCIP shell with the command set "set presolving
emphasis aggressive". With those emphasis setting you can quickly
explore if some of the implemented techniques work especially well
on your type of problems. It is good to not only look at the
solving time in this case but also use the statistics because the
emphasis setting might enable one technique that is helpful and
another that takes too long.</p>
<p><br>
</p>
<p>- Depending on your type of problem separation can be very good
or taking too much time. You can see a trend with the emphasis
settings. If separation is important for your type of problem
these are some parameters that can have a big impact.<br>
</p>
<p><br>
</p>
<p>Limits for separators and amount of cuts can be too low/high for
some problems. Especially it is worthwhile to look at the limits
in the separators that seem to perform well in the statistics.
Important ones for MIPs are often gomory, zerohalf, strongcg,
aggregation. The separator "aggregation" is the one that actually
finds the cuts listed under the separators cmir and flowcover.
Limits should be adjusted in the former and not the latter
separators, they are only for statistic purposes. They can be
disabled though (e.g. separating/flowcover/freq = -1), then the
aggregation separator will only separate the enabled type of cuts
(cmir or lifted flowcover cuts).<br>
</p>
<p>separating/maxcuts(root)</p>
<p>separating/maxrounds(root)</p>
<p>separating/<separator>/maxrounds(root)</p>
<p>separating/<separator>/maxsepacuts(root)</p>
<p><br>
</p>
<p>This rarely works much better for certain types of problems</p>
<p>separating/efficacynorm = 'd'</p>
<p><br>
</p>
<p>For some problems a value of 1.0 can be much faster, for others
too many cuts are discarded and a much lower value of 0.1 or 0.5
can be better.</p>
<p>separating/minortho(root) <br>
</p>
<p><br>
</p>
<p>A higher value can sometimes help if too many cuts are found</p>
<p>separating/minefficacy(root)</p>
<p><br>
</p>
<p>the cut selection score is a linear combination using weights
that can be tuned by these parameters:</p>
<p>separating/efficacyfac</p>
<p>separating/dircutoffdistfac</p>
<p>separating/intsupportfac</p>
<p>separating/objparalfac</p>
<p><br>
</p>
<p>There are certainly more settings that can have a considerable
impact on performance.</p>
<p>To find them it is important to know what is the bottleneck for a
problem at hand.</p>
<p>Sometimes it is the LP solving, sometimes solutions are not found
fast enough, and sometimes too much or not enough time is spent
with certain techniques.</p>
<p>I hope this gives you a start to find out what settings work good
for your problem type.<br>
</p>
<p><br>
</p>
<p>Best<br>
Leona<br>
</p>
<p><br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 3/16/20 6:58 PM, Speetzen, Nils
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:e542cf3f50674b72a638af245077a41a@rwth-aachen.de">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt;
color:rgb(0,0,0);
font-family:Calibri,Helvetica,sans-serif,"EmojiFont","Apple
Color Emoji","Segoe UI
Emoji",NotoColorEmoji,"Segoe UI
Symbol","Android Emoji",EmojiSymbols">
<p>Dear SCIP team,</p>
<p><br>
</p>
<p>I am currently using SCIP as a branch-and-cut solver for an
integer linear problem. Since the nature of the problem I want
to solve using SCIP always stays the same, I want to optimize
the configuration parameters to achieve better runtimes and
wondered whether You can give me some hints towards which
settings are usually the most impactful, since I found the
number of parameters to be very large. I am guessing that most
likely some of the "branching/" parameters such as
"branching/firstsbchild" are useful in my case, but I am not
sure.</p>
<p><br>
</p>
<p>My problem consists of only binary decision variables and
very systematic constraints. First, equally sized subsets of
the variables have the constraint, that only one of them can
be true, which I implemented as an SOS1 constraint. Secondly,
every binary variable either enables or disables a matrix, all
of the matrices of the enables variables are then summed up
and have to be less than a constraint matrix at every entry.
The constraint matrix roughly allows for each SOS1 group to
activate one matrix such that the sum stays below it (e.g. 621
of 624 SOS1 constraints have an active members in my solutions
so far). The objective is to maximize the sum of the entries
in the summed up matrix.</p>
<p>The problem scales with the number of binary variables and
the size of the matrices, all of which are of the same size.</p>
<p><br>
</p>
<p>I hope it is possible for you to take a look at my problem
and maybe propose some settings.<br>
</p>
<p>Kind regards,</p>
<p><br>
</p>
<p>Nils Speetzen</p>
<p><br>
</p>
<p>p.s.: I am using SCIP as a library for C++, the runtime for a
reference problem is currently about 20 seconds long.<br>
</p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Scip mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a>
<a class="moz-txt-link-freetext" href="https://listserv.zib.de/mailman/listinfo/scip">https://listserv.zib.de/mailman/listinfo/scip</a>
</pre>
</blockquote>
</body>
</html>