scipopt / scip

SCIP - Solving Constraint Integer Programs
Other
406 stars 67 forks source link

Error in presolve related to set constraints #111

Closed chistopher closed 1 month ago

chistopher commented 2 months ago

Scip throws an error on this input. problem.cip (.txt because github forced me)

The model was built programmatically. When I save it as lp or mps, scip solves it just fine, so I guess the issue depends on the order of variables and constraints. I also tried building scip from source with sanitizers and in debug mode but the error does not occur there.

Here is the log when I run scip -f problem.cip.

SCIP version 9.1.1 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: Soplex 7.1.0] [GitHash: 66f11a6724]
Copyright (c) 2002-2024 Zuse Institute Berlin (ZIB)

External libraries: 
  Readline 8.2         GNU library for command line editing (gnu.org/s/readline)
  Soplex 7.1.0         Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 595bfac9]
  CppAD 20180000.0     Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
  ZLIB 1.2.12          General purpose compression library by J. Gailly and M. Adler (zlib.net)
  GMP 6.3.0            GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
  AMPL/MP 690e9e7      AMPL .nl file reader library (github.com/ampl/mp)
  PaPILO 2.3.0         parallel presolve for integer and linear optimization (github.com/scipopt/papilo) (built with TBB)
  Nauty 2.8.8          Computing Graph Automorphism Groups by Brendan D. McKay (users.cecs.anu.edu.au/~bdm/nauty)
  sassy 1.1            Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)
  Ipopt 3.14.16        Interior Point Optimizer developed by A. Waechter et.al. (github.com/coin-or/Ipopt)

user parameter file <scip.set> not found - using default parameters

read problem <problem.cip>
============

original problem has 1091 variables (1091 bin, 0 int, 0 impl, 0 cont) and 99 constraints

solve problem
=============

presolving:
(round 1, fast)       27 del vars, 27 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 71 clqs
   (0.0s) running MILP presolver
   (0.0s) MILP presolver (8 rounds): 0 aggregations, 22 fixings, 0 bound changes
(round 2, medium)     74 del vars, 27 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 71 clqs
(round 3, fast)       80 del vars, 27 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 71 clqs
(round 4, exhaustive) 385 del vars, 32 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 66 clqs
(round 5, fast)       457 del vars, 35 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 63 clqs
(round 6, fast)       459 del vars, 35 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 63 clqs
   (0.0s) running MILP presolver
   (0.0s) MILP presolver (38 rounds): 3 aggregations, 248 fixings, 0 bound changes
(round 7, medium)     715 del vars, 40 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 58 clqs
(round 8, fast)       715 del vars, 41 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 58 clqs
(round 9, exhaustive) 784 del vars, 44 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 52 clqs
(round 10, fast)       814 del vars, 52 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 46 clqs
(round 11, fast)       861 del vars, 55 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 44 clqs
(round 12, fast)       865 del vars, 56 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 43 clqs
   (0.0s) running MILP presolver
   (0.0s) MILP presolver (26 rounds): 6 aggregations, 140 fixings, 0 bound changes
(round 13, medium)     1016 del vars, 69 del conss, 4 add conss, 0 chg bounds, 32 chg sides, 34 chg coeffs, 0 upgd conss, 0 impls, 32 clqs
(round 14, fast)       1017 del vars, 71 del conss, 4 add conss, 0 chg bounds, 32 chg sides, 34 chg coeffs, 0 upgd conss, 0 impls, 31 clqs
(round 15, medium)     1018 del vars, 71 del conss, 4 add conss, 0 chg bounds, 33 chg sides, 35 chg coeffs, 0 upgd conss, 0 impls, 31 clqs
(round 16, exhaustive) 1019 del vars, 73 del conss, 4 add conss, 0 chg bounds, 33 chg sides, 35 chg coeffs, 0 upgd conss, 0 impls, 30 clqs
(round 17, medium)     1020 del vars, 73 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 36 chg coeffs, 0 upgd conss, 0 impls, 30 clqs
(round 18, exhaustive) 1020 del vars, 73 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 36 chg coeffs, 2 upgd conss, 0 impls, 30 clqs
(round 19, exhaustive) 1025 del vars, 73 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 36 chg coeffs, 2 upgd conss, 0 impls, 31 clqs
(round 20, fast)       1026 del vars, 74 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 36 chg coeffs, 2 upgd conss, 0 impls, 30 clqs
   (0.0s) running MILP presolver
   (0.0s) MILP presolver found nothing
   (0.0s) sparsify finished: 3/180 (1.7%) nonzeros canceled - in total 3 canceled nonzeros, 3 changed coefficients, 0 added nonzeros
(round 21, exhaustive) 1026 del vars, 74 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 39 chg coeffs, 2 upgd conss, 0 impls, 30 clqs
(round 22, exhaustive) 1026 del vars, 74 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 39 chg coeffs, 3 upgd conss, 0 impls, 31 clqs
(round 23, fast)       1027 del vars, 74 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 39 chg coeffs, 3 upgd conss, 0 impls, 30 clqs
(round 24, fast)       1027 del vars, 75 del conss, 4 add conss, 0 chg bounds, 34 chg sides, 39 chg coeffs, 3 upgd conss, 0 impls, 30 clqs
[misc.c:3219] ERROR: Error <-15> in function call
[cons_setppc.c:6055] ERROR: Error <-15> in function call
[cons_setppc.c:8485] ERROR: Error <-15> in function call
[cons.c:4091] ERROR: Error <-15> in function call
[scip_solve.c:867] ERROR: Error <-15> in function call
[scip_solve.c:1076] ERROR: Error <-15> in function call
[scip_solve.c:1247] ERROR: Error <-15> in function call
[scip_solve.c:2369] ERROR: Error <-15> in function call
[scip_solve.c:2607] ERROR: Error <-15> in function call
[scipshell.c:110] ERROR: Error <-15> in function call
[scipshell.c:527] ERROR: Error <-15> in function call
[scipshell.c:594] ERROR: Error <-15> in function call
SCIP Error (-15): the given key is already existing in table
ambros-gleixner commented 2 months ago

Can you build and run it in debug mode, and maybe also create a backtrace?

chistopher commented 2 months ago

I also tried building scip from source with sanitizers and in debug mode but the error does not occur there.

Here is the log output from my debug build. The MILP presolver seems to produce different results.

root@ae06e9300a50:/soap# ./scip-build/bin/scip -f problem.cip
SCIP version 9.1.1 [precision: 8 byte] [memory: block] [mode: debug] [LP solver: Soplex 7.1.1] [GitHash: 66f11a6724]
Copyright (c) 2002-2024 Zuse Institute Berlin (ZIB)

External libraries:
  Readline 8.2         GNU library for command line editing (gnu.org/s/readline)
  Soplex 7.1.1         Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 9a11f87c]
  CppAD 20180000.0     Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
  ZLIB 1.3             General purpose compression library by J. Gailly and M. Adler (zlib.net)
  GMP 6.3.0            GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
  ZIMPL 3.6.2          Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de)
  AMPL/MP 690e9e7      AMPL .nl file reader library (github.com/ampl/mp)
  PaPILO 2.3.1         parallel presolve for integer and linear optimization (github.com/scipopt/papilo) (built with TBB) [GitHash: f9a7e29d]
  Nauty 2.8.8          Computing Graph Automorphism Groups by Brendan D. McKay (users.cecs.anu.edu.au/~bdm/nauty)
  sassy 1.1            Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)

user parameter file <scip.set> not found - using default parameters

read problem <problem.cip>
============

original problem has 1091 variables (1091 bin, 0 int, 0 impl, 0 cont) and 99 constraints

solve problem
=============

presolving:
(round 1, fast)       27 del vars, 27 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 71 clqs
   (0.6s) running MILP presolver
   (10.8s) MILP presolver (8 rounds): 0 aggregations, 22 fixings, 0 bound changes
(round 2, medium)     74 del vars, 27 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 71 clqs
(round 3, fast)       80 del vars, 27 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 71 clqs
(round 4, exhaustive) 385 del vars, 32 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 66 clqs
(round 5, fast)       457 del vars, 35 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 63 clqs
(round 6, fast)       459 del vars, 35 del conss, 0 add conss, 0 chg bounds, 25 chg sides, 25 chg coeffs, 0 upgd conss, 0 impls, 63 clqs
   (11.2s) running MILP presolver
   (34.7s) MILP presolver (38 rounds): 3 aggregations, 248 fixings, 0 bound changes
(round 7, medium)     715 del vars, 40 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 58 clqs
(round 8, fast)       715 del vars, 41 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 58 clqs
(round 9, exhaustive) 784 del vars, 44 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 52 clqs
(round 10, fast)       814 del vars, 52 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 46 clqs
(round 11, fast)       861 del vars, 55 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 44 clqs
(round 12, fast)       865 del vars, 56 del conss, 1 add conss, 0 chg bounds, 30 chg sides, 30 chg coeffs, 0 upgd conss, 0 impls, 43 clqs
   (34.8s) running MILP presolver
   (39.8s) MILP presolver (28 rounds): 11 aggregations, 227 fixings, 0 bound changes
presolving (13 rounds: 13 fast, 5 medium, 3 exhaustive):
 1103 deleted vars, 100 deleted constraints, 1 added constraints, 0 tightened bounds, 0 added holes, 30 changed sides, 30 changed coefficients
 0 implications, 0 cliques
transformed 1/1 original solutions to the transformed problem space
Presolving Time: 39.40

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 39.81
Solving Nodes      : 0
Primal Bound       : +8.58850000000000e+04 (1 solutions)
Dual Bound         : +8.58850000000000e+04
Gap                : 0.00 %

primal solution (original space):
=================================

objective value:                                85885
x13                                                 1   (obj:0)
x14                                                 1   (obj:0)
x15                                                 1   (obj:0)
x17                                                 1   (obj:0)
x18                                                 1   (obj:0)
x23                                                 1   (obj:0)
x24                                                 1   (obj:0)
x25                                                 1   (obj:-580)
x26                                                 1   (obj:0)
x27                                                 1   (obj:0)
x28                                                 1   (obj:0)
x29                                                 1   (obj:0)
x30                                                 1   (obj:0)
x31                                                 1   (obj:0)
x34                                                 1   (obj:0)
x35                                                 1   (obj:0)
x36                                                 1   (obj:0)
x37                                                 1   (obj:0)
x38                                                 1   (obj:0)
x40                                                 1   (obj:0)
x41                                                 1   (obj:0)
x46                                                 1   (obj:0)
x47                                                 1   (obj:0)
x48                                                 1   (obj:0)
x49                                                 1   (obj:0)
x50                                                 1   (obj:-140)
x113                                                1   (obj:1568)
x147                                                1   (obj:1399)
x198                                                1   (obj:1532)
x229                                                1   (obj:1495)
x246                                                1   (obj:1685)
x274                                                1   (obj:1817)
x287                                                1   (obj:1733)
x340                                                1   (obj:1675)
x403                                                1   (obj:1765)
x508                                                1   (obj:3852)
x540                                                1   (obj:3954)
x567                                                1   (obj:3655)
x573                                                1   (obj:3902)
x593                                                1   (obj:3926)
x736                                                1   (obj:3576)
x752                                                1   (obj:3841)
x787                                                1   (obj:3853)
x868                                                1   (obj:4064)
x899                                                1   (obj:4063)
x1002                                               1   (obj:3544)
x1012                                               1   (obj:5985)
x1051                                               1   (obj:5997)
x1056                                               1   (obj:6198)
x1073                                               1   (obj:6024)
x1084                                               1   (obj:5502)

Statistics
==========

SCIP Status        : problem is solved [optimal solution found]
Total Time         :      40.15
  solving          :      39.86
  presolving       :      39.40 (included in solving)
  reading          :       0.29
  copying          :       0.00 (0 times copied the problem)
Original Problem   :
  Problem name     : mip
  Variables        : 1091 (1091 binary, 0 integer, 0 implicit integer, 0 continuous)
  Constraints      : 99 initial, 99 maximal
  Objective        : maximize, 1067 non-zeros (abs.min = 100, abs.max = 8232)
Presolved Problem  :
  Problem name     : t_mip
  Variables        : 0 (0 binary, 0 integer, 0 implicit integer, 0 continuous)
  Constraints      : 0 initial, 0 maximal
  Objective        : minimize, 0 non-zeros (abs.min = 1e+20, abs.max = -1e+20)
  Nonzeros         : 0 constraint, 0 clique table
Presolvers         :   ExecTime  SetupTime  Calls  FixedVars   AggrVars   ChgTypes  ChgBounds   AddHoles    DelCons    AddCons   ChgSides   ChgCoefs
  boundshift       :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  convertinttobin  :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  domcol           :       0.00       0.00      1          0          0          0          0          0          0          0          0          0
  dualagg          :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  dualcomp         :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  dualinfer        :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  dualsparsify     :       0.00       0.00      1          0          0          0          0          0          0          0          0          0
  gateextraction   :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  implics          :       0.00       0.00      5          0          0          0          0          0          0          0          0          0
  inttobinary      :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  milp             :      38.87       0.00      3        497         14          0          0          0         44          0          0          0
  qpkktref         :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  redvub           :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  sparsify         :       0.00       0.00      1          0          0          0          0          0          0          0          0          0
  stuffing         :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  trivial          :       0.00       0.00     13         12          0          0          0          0          0          0          0          0
  tworowbnd        :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  dualfix          :       0.00       0.00     13          6          0          0          0          0          0          0          0          0
  genvbounds       :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  probing          :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  pseudoobj        :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  symmetry         :       0.00       0.00      1          0          0          0          0          0          0          0          0          0
  vbounds          :       0.04       0.00      1          0          0          0          0          0          0          0          0          0
  setppc           :       0.36       0.00     19        524         38          0          0          0         55          1         30         30
  linear           :       0.00       0.00      1          0          0          0          0          0          1          0          0          0
  benders          :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  components       :       0.00       0.00      0          0          0          0          0          0          0          0          0          0
  root node        :          -          -      -          0          -          -          0          -          -          -          -          -
Constraints        :     Number  MaxNumber  #Separate #Propagate    #EnfoLP    #EnfoRelax  #EnfoPS    #Check   #ResProp    Cutoffs    DomReds       Cuts    Applied      Conss   Children
  benderslp        :          0          0          0          0          0          0          0          6          0          0          0          0          0          0          0
  integral         :          0          0          0          0          0          0          0          6          0          0          0          0          0          0          0
  benders          :          0          0          0          0          0          0          0          3          0          0          0          0          0          0          0
  fixedvar         :          0          0          0          0          0          0          0          3          0          0          0          0          0          0          0
  countsols        :          0          0          0          0          0          0          0          3          0          0          0          0          0          0          0
  components       :          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0
Constraint Timings :  TotalTime  SetupTime   Separate  Propagate     EnfoLP     EnfoPS     EnfoRelax   Check    ResProp    SB-Prop
  benderslp        :       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00
  integral         :       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00
  benders          :       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00
  fixedvar         :       0.03       0.00       0.00       0.00       0.00       0.00       0.00       0.03       0.00       0.00
  countsols        :       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00
  components       :       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00       0.00
Propagators        : #Propagate   #ResProp    Cutoffs    DomReds
  dualfix          :          0          0          0          0
  genvbounds       :          0          0          0          0
  nlobbt           :          0          0          0          0
  obbt             :          0          0          0          0
  probing          :          0          0          0          0
  pseudoobj        :          0          0          0          0
  redcost          :          0          0          0          0
  rootredcost      :          0          0          0          0
  symmetry         :          0          0          0          0
  vbounds          :          0          0          0          0
Propagator Timings :  TotalTime  SetupTime   Presolve  Propagate    ResProp    SB-Prop
  dualfix          :       0.00       0.00       0.00       0.00       0.00       0.00
  genvbounds       :       0.00       0.00       0.00       0.00       0.00       0.00
  nlobbt           :       0.00       0.00       0.00       0.00       0.00       0.00
  obbt             :       0.00       0.00       0.00       0.00       0.00       0.00
  probing          :       0.00       0.00       0.00       0.00       0.00       0.00
  pseudoobj        :       0.00       0.00       0.00       0.00       0.00       0.00
  redcost          :       0.00       0.00       0.00       0.00       0.00       0.00
  rootredcost      :       0.00       0.00       0.00       0.00       0.00       0.00
  symmetry         :       0.00       0.00       0.00       0.00       0.00       0.00
  vbounds          :       0.04       0.00       0.04       0.00       0.00       0.00
Symmetry           :
  orbitopal red.   :          0 reductions applied,          0 cutoffs
  orbital reduction:          0 reductions applied,          0 cutoffs
  lexicographic red:          0 reductions applied,          0 cutoffs
  shadow tree time :       0.00 s
Conflict Analysis  :       Time      Calls    Success    DomReds  Conflicts   Literals    Reconvs ReconvLits   Dualrays   Nonzeros   LP Iters   (pool size: [--,--])
  propagation      :       0.00          0          0          -          0        0.0          0        0.0          -          -          -
  infeasible LP    :       0.00          0          0          -          0        0.0          0        0.0          0        0.0          0
  bound exceed. LP :       0.00          0          0          -          0        0.0          0        0.0          0        0.0          0
  strong branching :       0.00          0          0          -          0        0.0          0        0.0          -          -          0
  pseudo solution  :       0.00          0          0          -          0        0.0          0        0.0          -          -          -
  applied globally :       0.00          -          -          0          0        0.0          -          -          0          -          -
  applied locally  :          -          -          -          0          0        0.0          -          -          0          -          -
Separators         :   ExecTime  SetupTime      Calls  RootCalls    Cutoffs    DomReds  FoundCuts ViaPoolAdd  DirectAdd    Applied ViaPoolApp  DirectApp      Conss
  cut pool         :       0.00          -          0          0          -          -          0          0          -          -          -          -          -    (maximal pool size:          0)
  aggregation      :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  > cmir           :          -          -          -          -          -          -          -          0          0          0          0          0          -
  > flowcover      :          -          -          -          -          -          -          -          0          0          0          0          0          -
  > knapsackcover  :          -          -          -          -          -          -          -          0          0          0          0          0          -
  cgmip            :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  clique           :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  closecuts        :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  convexproj       :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  disjunctive      :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  eccuts           :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  gauge            :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  gomory           :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  > gomorymi       :          -          -          -          -          -          -          -          0          0          0          0          0          -
  > strongcg       :          -          -          -          -          -          -          -          0          0          0          0          0          -
  impliedbounds    :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  interminor       :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  intobj           :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  lagromory        :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  mcf              :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  minor            :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  mixing           :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  oddcycle         :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  rapidlearning    :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  rlt              :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
  zerohalf         :       0.00       0.00          0          0          0          0          0          0          0          0          0          0          0
Cutselectors       :   ExecTime  SetupTime      Calls  RootCalls   Selected     Forced   Filtered  RootSelec   RootForc   RootFilt
  hybrid           :       0.00       0.00          0          0          0          0          0          0          0          0
  ensemble         :       0.00       0.00          0          0          0          0          0          0          0          0
  dynamic          :       0.00       0.00          0          0          0          0          0          0          0          0
Pricers            :   ExecTime  SetupTime      Calls       Vars
  problem variables:       0.00          -          0          0
Branching Rules    :   ExecTime  SetupTime   BranchLP  BranchExt   BranchPS    Cutoffs    DomReds       Cuts      Conss   Children
  allfullstrong    :       0.00       0.00          0          0          0          0          0          0          0          0
  cloud            :       0.00       0.00          0          0          0          0          0          0          0          0
  distribution     :       0.00       0.00          0          0          0          0          0          0          0          0
  fullstrong       :       0.00       0.00          0          0          0          0          0          0          0          0
  gomory           :       0.00       0.00          0          0          0          0          0          0          0          0
  inference        :       0.00       0.00          0          0          0          0          0          0          0          0
  leastinf         :       0.00       0.00          0          0          0          0          0          0          0          0
  lookahead        :       0.00       0.00          0          0          0          0          0          0          0          0
  mostinf          :       0.00       0.00          0          0          0          0          0          0          0          0
  multaggr         :       0.00       0.00          0          0          0          0          0          0          0          0
  nodereopt        :       0.00       0.00          0          0          0          0          0          0          0          0
  pscost           :       0.00       0.00          0          0          0          0          0          0          0          0
  random           :       0.00       0.00          0          0          0          0          0          0          0          0
  relpscost        :       0.00       0.00          0          0          0          0          0          0          0          0
  vanillafullstrong:       0.00       0.00          0          0          0          0          0          0          0          0
Primal Heuristics  :   ExecTime  SetupTime      Calls      Found       Best
  LP solutions     :       0.00          -          -          0          0
  relax solutions  :       0.00          -          -          0          0
  pseudo solutions :       0.00          -          -          0          0
  strong branching :       0.00          -          -          0          0
  actconsdiving    :       0.00       0.00          0          0          0
  adaptivediving   :       0.00       0.00          0          0          0
  alns             :       0.00       0.00          0          0          0
  bound            :       0.00       0.00          0          0          0
  clique           :       0.00       0.00          0          0          0
  coefdiving       :       0.00       0.00          0          0          0
  completesol      :       0.00       0.00          0          0          0
  conflictdiving   :       0.00       0.00          0          0          0
  crossover        :       0.00       0.00          0          0          0
  dins             :       0.00       0.00          0          0          0
  distributiondivin:       0.00       0.00          0          0          0
  dps              :       0.00       0.00          0          0          0
  dualval          :       0.00       0.00          0          0          0
  farkasdiving     :       0.00       0.00          0          0          0
  feaspump         :       0.00       0.00          0          0          0
  fixandinfer      :       0.00       0.00          0          0          0
  fracdiving       :       0.00       0.00          0          0          0
  gins             :       0.00       0.00          0          0          0
  guideddiving     :       0.00       0.00          0          0          0
  indicator        :       0.00       0.00          0          0          0
  indicatordiving  :       0.00       0.00          0          0          0
  intdiving        :       0.00       0.00          0          0          0
  intshifting      :       0.00       0.00          0          0          0
  linesearchdiving :       0.00       0.00          0          0          0
  localbranching   :       0.00       0.00          0          0          0
  locks            :       0.00       0.00          0          0          0
  lpface           :       0.00       0.00          0          0          0
  mpec             :       0.00       0.00          0          0          0
  multistart       :       0.00       0.00          0          0          0
  mutation         :       0.00       0.00          0          0          0
  nlpdiving        :       0.00       0.00          0          0          0
  objpscostdiving  :       0.00       0.00          0          0          0
  octane           :       0.00       0.00          0          0          0
  ofins            :       0.00       0.00          0          0          0
  oneopt           :       0.00       0.00          0          0          0
  padm             :       0.00       0.00          0          0          0
  proximity        :       0.00       0.00          0          0          0
  pscostdiving     :       0.00       0.00          0          0          0
  randrounding     :       0.00       0.00          0          0          0
  rens             :       0.00       0.00          0          0          0
  reoptsols        :       0.00       0.00          0          0          0
  repair           :       0.00       0.00          0          0          0
  rins             :       0.00       0.00          0          0          0
  rootsoldiving    :       0.00       0.00          0          0          0
  rounding         :       0.00       0.00          0          0          0
  scheduler        :       0.00       0.00          0          0          0
  shiftandpropagate:       0.00       0.00          0          0          0
  shifting         :       0.00       0.00          0          0          0
  simplerounding   :       0.00       0.00          0          0          0
  subnlp           :       0.00       0.00          0          0          0
  trivial          :       0.04       0.00          1          0          0
  trivialnegation  :       0.00       0.00          0          0          0
  trustregion      :       0.00       0.00          0          0          0
  trysol           :       0.00       0.00          0          0          0
  twoopt           :       0.00       0.00          0          0          0
  undercover       :       0.00       0.00          0          0          0
  vbounds          :       0.00       0.00          0          0          0
  veclendiving     :       0.00       0.00          0          0          0
  zeroobj          :       0.00       0.00          0          0          0
  zirounding       :       0.00       0.00          0          0          0
  other solutions  :          -          -          -          0          -
LNS (Scheduler)    :      Calls  SetupTime  SolveTime SolveNodes       Sols       Best       Exp3    Exp3-IX  EpsGreedy        UCB TgtFixRate  Opt  Inf Node Stal  Sol  Usr Othr Actv
  rens             :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  rins             :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  mutation         :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  localbranching   :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  crossover        :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  proximity        :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  zeroobjective    :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  dins             :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
  trustregion      :          0       0.00       0.00          0          0          0    0.00000    0.00000   -1.00000    1.00000      0.900    0    0    0    0    0    0    0    0
LP                 :       Time      Calls Iterations  Iter/call   Iter/sec  Time-0-It Calls-0-It    ItLimit
  primal LP        :       0.00          0          0       0.00          -       0.00          0
  dual LP          :       0.00          0          0       0.00          -       0.00          0
  lex dual LP      :       0.00          0          0       0.00          -
  barrier LP       :       0.00          0          0       0.00          -       0.00          0
  resolve instable :       0.00          0          0       0.00          -
  diving/probing LP:       0.00          0          0       0.00          -
  strong branching :       0.00          0          0       0.00          -          -          -          0
    (at root node) :          -          0          0       0.00          -
  conflict analysis:       0.00          0          0       0.00          -
B&B Tree           :
  number of runs   :          1
  nodes            :          0 (0 internal, 0 leaves)
  feasible leaves  :          0
  infeas. leaves   :          0
  objective leaves :          0
  nodes (total)    :          0 (0 internal, 0 leaves)
  nodes left       :          0
  max depth        :         -1
  max depth (total):         -1
  backtracks       :          0 (0.0%)
  early backtracks :          0 (0.0%)
  nodes exc. ref.  :          0 (0.0%)
  delayed cutoffs  :          0
  repropagations   :          0 (0 domain reductions, 0 cutoffs)
  avg switch length:       0.00
  switching time   :       0.00
Root Node          :
  First LP value   :          -
  First LP Iters   :          0
  First LP Time    :       0.00
  Final Dual Bound :          -
  Final Root Iters :          0
  Root LP Estimate :                     -
Solution           :
  Solutions found  :          1 (1 improvements)
  First Solution   : +8.58850000000000e+04   (in run 1, after 0 nodes, 39.76 seconds, depth 0, found by <relaxation>)
  Gap First Sol.   :   infinite
  Gap Last Sol.    :   infinite
  Primal Bound     : +8.58850000000000e+04   (in run 1, after 0 nodes, 39.76 seconds, depth 0, found by <relaxation>)
  Dual Bound       : +8.58850000000000e+04
  Gap              :       0.00 %
Integrals          :      Total       Avg%
  primal-dual      :    3986.48     100.00
  primal-ref       :          -          - (not evaluated)
  dual-ref         :          -          - (not evaluated)
ambros-gleixner commented 2 months ago

Can you try the following patch:

diff --git a/src/scip/cons_setppc.c b/src/scip/cons_setppc.c
index 96a087bc20..629ef50fb4 100644
--- a/src/scip/cons_setppc.c
+++ b/src/scip/cons_setppc.c
@@ -6052,7 +6052,7 @@ SCIP_RETCODE removeDoubleAndSingletonsAndPerformDualpresolve(
                if( !SCIPhashmapExists(vartoindex, (void*) negvar) )
                {
                   ++nhashmapentries;
-                  SCIP_CALL( SCIPhashmapInsertInt(vartoindex, (void*) var, nhashmapentries) );
+                  SCIP_CALL( SCIPhashmapInsertInt(vartoindex, (void*) negvar, nhashmapentries) );

                   considxs[nhashmapentries - 1] = c;
                   posincons[nhashmapentries - 1] = v;

?

chistopher commented 2 months ago

I originally encountered the crash with the homebrew package which contains scip 9.1.1. As stated above, compiling scipoptsuite-9.1.1 avoids the error, because the broken branch is never reached. The reason they behave differently is probably due to different dependency versions.

However, I managed to reproduce the problem by compiling scipoptsuite-9.0.0 in a fresh ubuntu container. The patch does indeed fix the crash but compiling in debug mode still triggers this assert.

scip: /soap/scipoptsuite-9.0.0/scip/src/scip/cons_setppc.c:6047: removeDoubleAndSingletonsAndPerformDualpresolve: Assertion `!SCIPhashmapExists(vartoindex, (void*) var)' failed.
ambros-gleixner commented 2 months ago

I read deeper into the code, please remove the patch from above again, it is incorrect.

Instead can you add some more output in optimized mode, where the original error appeared?

  1. Add #define SCIP_DEBUG to the very top of the file cons_setppc.c.
  2. Add
    @@ -6051,6 +6053,17 @@ SCIP_RETCODE removeDoubleAndSingletonsAndPerformDualpresolve(
                /* if we found a new variable add it to the data */
                if( !SCIPhashmapExists(vartoindex, (void*) negvar) )
                {
    +                  if( SCIPhashmapExists(vartoindex, (void*) var) )
    +                  {
    +                     image = SCIPhashmapGetImageInt(vartoindex, (void*) var);
    +                     consindex = considxs[image - 1];
    +                     SCIPdebugMsg(scip, "Variable <%s> found in hashmap for constraint <%s> (deleted=%u, consindex=%d, c=%d)\n",
    +                        SCIPvarGetName(var), SCIPconsGetName(usefulconss[consindex]), SCIPconsIsDeleted(usefulconss[consindex]),
    +                        consindex, c);
    +                  }
    +
                   ++nhashmapentries;
                   SCIP_CALL( SCIPhashmapInsertInt(vartoindex, (void*) var, nhashmapentries) );

    and then post the log. (May be a bit longer now.)

chistopher commented 2 months ago

log.txt

ambros-gleixner commented 2 months ago

Thanks, that confirms my suspicion. Can you try with this patch:

diff --git a/src/scip/cons_setppc.c b/src/scip/cons_setppc.c
index c170719a5d..9f9437aaa9 100644
--- a/src/scip/cons_setppc.c
+++ b/src/scip/cons_setppc.c
@@ -6044,6 +6044,22 @@ SCIP_RETCODE removeDoubleAndSingletonsAndPerformDualpresolve(
                int consindex;
                int varindex;

+               /* this can only happen if the variable was added for a constraint that was subsequently deleted; we
+                * clean this up here before we continue */
+               if( SCIPhashmapExists(vartoindex, (void*) var) )
+               {
+                  image = SCIPhashmapGetImageInt(vartoindex, (void*) var);
+                  assert(image > 0 && image <= nhashmapentries);
+
+                  consindex = considxs[image - 1];
+                  assert(0 <= consindex && consindex < c);
+                  assert(SCIPconsIsDeleted(usefulconss[consindex]));
+
+                  considxs[image - 1] = -1;
+                  posincons[image - 1] = -1;
+                  SCIP_CALL( SCIPhashmapRemove(vartoindex, (void*) var) );
+               }
+
                assert(!SCIPhashmapExists(vartoindex, (void*) var));

                negvar = SCIPvarGetNegatedVar(var);

?

chistopher commented 2 months ago

This seems to fix it. log.txt

ambros-gleixner commented 2 months ago

Nice, I will let you know once this is available.

DominikKamp commented 1 month ago

An alternative fix is available with f56365291834c487edba45abce4b0038d5ebe137.