[SCIP] Primal bound setting / Different presolved problems for the same instance (Using different ways to write the model, Read .lp file VS Build the model)

Ambros Gleixner gleixner at zib.de
Sun May 31 19:37:30 CEST 2020


Dear Jungeun Shin,

For 1: Yes, I guess SCIPsetObjlimit() is your friend:

https://scipopt.org/doc/html/group__GlobalProblemMethods.php#ga7d1acc7a89eb3fa6c066aa0031356298

However, note that explicitly adding a solution with variable 
assignments can be even better, because SCIP's improvement heuristics 
can exploit that knowledge.  Whether this makes a difference depends on 
your problem, of course.

For 2: Your PySCIPOpt seems to lack the PaPILO library.  I am suspecting 
that because the "MILP presolver" line is missing in the output, which 
finds reductions during the solve of the .lp in the shell.

Best,
Ambros




Am 29.05.20 um 08:20 schrieb Shin, Jungeun:
> Hi ,
> 
> I have two questions, which are irrelevant to each other.
> 
> 1)   Can I set the Primal bound before solving Branch and Price algorithm?
> 
> I have an initial set of columns obtained from heuristics which are 
> added to the root node and know a good IP solution using the existing 
> columns.
> 
> I would like to use that IP solution as the primal bound before it 
> starts so that some nodes with RMP LP obj exceeding the primal bound 
> (known IP solution) can be pruned earlier.
> 
> To do this, should I create a solution using SCIPcreatesol or is there a 
> simpler way to apply this ? ( For example, there is a lower bound 
> pointer to store a valid lower bound. Can I do similar setting for the 
> upper bound?)
> 
> 2)   I have built a MILP problem using Python-SCIP interface and wrote 
> it out to a .lp file.
> 
> Then, I found that the prosolved problems are different for the same 
> instance when I solve it with the model code (written in python) VS 
> solve it in a SCIP interactive shell by reading the .lp file.
> 
> This different presolved problem results in performance difference. A 
> model written and solved within the code has taken twice longer time to 
> optimality than the one solved within at SCIP interactive shell.
> 
> They are equivalent instances and I have check that all the parameters 
> equally set to default values in both cases.
> 
> What could make this difference in the presolving part? Is this a 
> problem of using Python interface ?
> 
> Is it possible that a model written in the code has more information 
> that is not included in .lp file so that the presolved problem is 
> different?
> 
> (I don’t think this is the case since reading .lp file and solving it in 
> a SCIP interactive shell was faster)
> 
> I have attached the result log of the initial presolving part below, if 
> it helps to understand my question.
> 
> ====Build a model and solve 
> ======================================================================================================
> 
> presolving:
> 
> (round 1, fast)       9157 del vars, 9157 del conss, 0 add conss, 9157 
> chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 27 clqs
> 
> (round 2, fast)       9157 del vars, 17473 del conss, 0 add conss, 9157 
> chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 27 clqs
> 
> (round 3, exhaustive) 9157 del vars, 17473 del conss, 0 add conss, 9157 
> chg bounds, 0 chg sides, 0 chg coeffs, 6112 upgd conss, 0 impls, 27 clqs
> 
>     (1.0s) probing: 69/14877 (0.5%) - 0 fixings, 0 aggregations, 943 
> implications, 0 bound changes
> 
>     (1.0s) probing aborted: 50/50 successive totally useless probings
> 
>     Deactivated symmetry handling methods, since SCIP was built without 
> symmetry detector (SYM=none).
> 
> presolving (4 rounds: 4 fast, 2 medium, 2 exhaustive):
> 
> 9157 deleted vars, 17473 deleted constraints, 0 added constraints, 9157 
> tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
> 
> 7009 implications, 45 cliques
> 
> presolved problem has 21045 variables (14877 bin, 0 int, 0 impl, 6168 
> cont) and 35953 constraints
> 
>     6084 constraints of type <varbound>
> 
>        1 constraints of type <knapsack>
> 
>       27 constraints of type <setppc>
> 
>    29841 constraints of type <linear>
> 
> Presolving Time: 1.00
> 
> ====Read a model file (.lp) and solve 
> ================================================================================================
> 
> SCIP> read "SCIP_MIP.lp"
> 
> original problem has 15802 variables (502 bin, 0 int, 0 impl, 15300 
> cont) and 39010 constraints
> 
> SCIP> optimize
> 
> presolving:
> 
> (round 1, fast)       9141 del vars, 9141 del conss, 0 add conss, 9141 
> chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 43 clqs
> 
> (round 2, fast)       9141 del vars, 25773 del conss, 0 add conss, 9141 
> chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 43 clqs
> 
>     (0.0s) running MILP presolver
> 
>     (0.0s) MILP presolver (2 rounds): 0 aggregations, 636 fixings, 0 
> bound changes
> 
> (round 3, medium)     9777 del vars, 25773 del conss, 0 add conss, 9141 
> chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 43 clqs
> 
> (round 4, fast)       9777 del vars, 26861 del conss, 0 add conss, 9141 
> chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 43 clqs
> 
> (round 5, exhaustive) 9777 del vars, 26861 del conss, 0 add conss, 9141 
> chg bounds, 0 chg sides, 0 chg coeffs, 7110 upgd conss, 0 impls, 43 clqs
> 
>     (1.0s) probing cycle finished: starting next cycle
> 
>     Deactivated symmetry handling methods, since SCIP was built without 
> symmetry detector (SYM=none).
> 
> presolving (6 rounds: 6 fast, 3 medium, 2 exhaustive):
> 
> 9777 deleted vars, 26861 deleted constraints, 0 added constraints, 9141 
> tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
> 
> 110984 implications, 70 cliques
> 
> presolved problem has 6025 variables (401 bin, 0 int, 0 impl, 5624 cont) 
> and 12149 constraints
> 
>     7066 constraints of type <varbound>
> 
>        1 constraints of type <knapsack>
> 
>       43 constraints of type <setppc>
> 
>     5039 constraints of type <linear>
> 
> transformed objective value is always integral (scale: 1)
> 
> Presolving Time: 1.0
> 
> ===============================================================================================================================
> 
> *Jungeun Shin, PhD candidate*
> 
> Department of Industrial and Enterprise Systems Engineering
> 
> College of Engineering | University of Illinois, Urbana-Champaign
> 
> Jungeun4 at illinois.edu <mailto:Jungeun4 at illinois.edu> | 1-217-200-6772
> 
> 
> _______________________________________________
> 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