[SCIP] Constraint handlers and CONSEPALP callbacks
Gregor Hendel
hendel at zib.de
Thu Feb 2 11:42:47 CET 2017
Good morning Eleonora,
Am 31.01.2017 um 10:03 schrieb Pippia Eleonora:
> Good morning,
> I’m using SCIP to solve an ILP model MP in order to test a conjecture
> related to graphs of low dimensions. Actually, the conjecture is
> equivalent to state that an integer linear programming model MP is
> unfeasible. I have few questions.
>
> 1) I’ve implemented two constraint handlers with separation callbacks.
> I don’t understand in which order the callbacks CONSSEPALP for the
> different constraints are called. Assume that at a node of the
> branch-and-bound tree, four steps of the separation loop take place.
> It happened that in the first three steps SCIP recalled the SEPALP
> callback from the first constraint handler to add a new violated cut
> so that the SEPALP from the second constraint handler was delayed in
> these steps. At the fourth step, sometimes SCIP called immediately the
> SEPALP from the second constraint handler without calling the callback
> from the first one. Why can this happen?
from your question, I guess you already made yourself familiar with the
priorities to decide the order in which separators are called, and the
delay mechanism.
There are some global parameters to further control the separation process:
maxcuts maximal number of cuts separated per separation round (0: disable local separation) [100]
maxcutsroot maximal number of separated cuts at the root node (0: disable root node separation) [2000]
maxroundsroot maximal number of separation rounds in the root node (-1: unlimited) [-1]
maxstallrounds maximal number of consecutive separation rounds without objective or integrality improvement (-1: no additional restriction) [5]
One reason for calling the delayed separator first might be that the
stalling rounds limit "maxstallrounds" is reached.
If you would like to see a verbose explanation of what happens in SCIP
right before separator is called, you can
recompile SCIP after putting
#define SCIP_DEBUG
at the top of the two files src/scip/{sepa,solve}.c. If this still
doesn't explain the behavior of the separators, please report back to me.
>
> 2) Moreover, I ran the same instance with the same model MP but on two
> different computers. It happened that at the same node of the
> branch-and-bound, on the two computers SCIP found two different
> fractional solutions of the LP. This had a strong impact on the number
> of nodes generated to solve the instance. Is it a normal behavior?
Unfortunately, the answer is yes. This is why we always report our
experimental setups as detailed as possible, including the operating
system, the used compiler and its version, and the processor
architecture plus memory size.
In my experience, matching operating system version and compiler version
are sufficient in order to obtain reproducible results.
Can you give more details on the architectures you are testing on?
>
> 3) Finally, is there any way to use SCIP as an MIP-solver disabling
> all the constraint programming features?
There is no such emphasis setting that comes with SCIP. I assume you
would like to test a pure branch-and-cut approach, but disable restarts,
conflict analysis, and domain propagation. However, I am warning you
that such features are integrated and very essential for the solving
process of all modern MIP solvers. Here is what a custom SCIP settings
file for this purpose might look like:
conflict/enable = FALSE
presolving/maxrestarts = 0
In addition, set the propagation frequencies of all active propagators
and constraint handlers (propagation frequency >=0) to -1 instead:
>> grep -P "(propagating/.*/freq|constraints/.*/propfreq) = [01]" default.set
constraints/nonlinear/propfreq = 1
constraints/quadratic/propfreq = 1
constraints/linear/propfreq = 1
constraints/abspower/propfreq = 1
constraints/and/propfreq = 1
constraints/bivariate/propfreq = 1
constraints/bounddisjunction/propfreq = 1
constraints/cardinality/propfreq = 1
constraints/cumulative/propfreq = 1
constraints/indicator/propfreq = 1
constraints/knapsack/propfreq = 1
constraints/linking/propfreq = 1
constraints/logicor/propfreq = 1
constraints/or/propfreq = 1
constraints/setppc/propfreq = 1
constraints/soc/propfreq = 1
constraints/SOS1/propfreq = 1
constraints/SOS2/propfreq = 1
constraints/superindicator/propfreq = 1
constraints/varbound/propfreq = 1
constraints/xor/propfreq = 1
constraints/components/propfreq = 1
propagating/dualfix/freq = 0
propagating/genvbounds/freq = 1
propagating/obbt/freq = 0
propagating/pseudoobj/freq = 1
propagating/redcost/freq = 1
propagating/rootredcost/freq = 1
propagating/vbounds/freq = 1
Kind regards,
Gregor
>
> Thanks for your time (and thanks for SCIP!!!)
> Best regards,
> Eleonora Pippia
>
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20170202/059f8157/attachment.html>
More information about the Scip
mailing list