<font size=2 face="sans-serif">A little background: About two years ago
I reported a problem in which Cbc would segfault on a particular problem,
but only when multithreading was enabled. It was hard to debug, because
Cbc would run for many hours, for many millions of nodes, before it hit
the problem and died -- so it was quite a sticky model to begin with!</font>
<br>
<br><font size=2 face="sans-serif">In the course of investigating (and
eventually fixing) this bug, Dr. Forrest remarked that a new feature he
was working on would allow Cbc to find the solution to this problem in
minutes, not hours. This is the -extraVariables feature, which we have
been using happily ever since. As I understand it, this feature looks for
sets of (integer?) variables which all have the same cost. When it finds
such a set, it introduces a new variable constrained to equal the sum of
that set, and then (I think) reformulates the objective function with the
aggregate variable instead of that sum. My foggy understanding is that
this permits Cbc to branch on the new variable. The value of -extraVariables
tells Cbc how many such aggregate variables it is permitted to create.</font>
<br>
<br><font size=2 face="sans-serif">Now, two years later, I have a model
which solves more slowly with -extrav than without it. I am attaching this
model as an .mps file. For me,</font>
<br>
<br><font size=2 face="sans-serif">cbc -import speed-test.mps -solve -quit</font>
<br>
<br><font size=2 face="sans-serif">uses about 9.5 CPU seconds, while</font>
<br>
<br><font size=2 face="sans-serif">cbc -import speed-test.mps -extrav 2
-solve -quit</font>
<br>
<br><font size=2 face="sans-serif">uses about 35 CPU seconds. I would appreciate
any insight anyone may offer, especially any way to guess in advance whether
-extraVariables is going to help or hurt.</font>
<br>
<br><font size=2 face="sans-serif">Allan C. Wechsler</font>
<br><font size=2 face="sans-serif">Ascent Technology, Inc.</font>