scipopt / papilo

Parallel Presolve for Integer and Linear Optimization
GNU Lesser General Public License v3.0
64 stars 17 forks source link

SCIP Error (-9): method cannot be called with this type of data #64

Closed rinde closed 1 month ago

rinde commented 1 month ago

Scip errors on the input in this file problem2.cip.txt (I added the .txt for GitHub)

The model was built programmatically, when I save it to .mps it doesn't error.

Here is the log when running scip -f problem2.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 <problem2.cip>
============
original problem has 505 variables (505 bin, 0 int, 0 impl, 0 cont) and 92 constraints
solve problem
=============
presolving:
(round 1, fast)       59 del vars, 38 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 53 clqs
(round 2, fast)       60 del vars, 38 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 53 clqs
   (0.0s) running MILP presolver
[var.c:5749] ERROR: cannot multi-aggregate a fixed variable
[scip_var.c:8557] ERROR: Error <-9> in function call
[presol_milp.cpp:842] ERROR: Error <-9> in function call
[presol.c:471] ERROR: Error <-9> in function call
[scip_solve.c:795] ERROR: Error <-9> in function call
[scip_solve.c:1075] ERROR: Error <-9> in function call
[scip_solve.c:1246] ERROR: Error <-9> in function call
[scip_solve.c:2369] ERROR: Error <-9> in function call
[scip_solve.c:2607] ERROR: Error <-9> in function call
[scipshell.c:110] ERROR: Error <-9> in function call
[scipshell.c:527] ERROR: Error <-9> in function call
[scipshell.c:594] ERROR: Error <-9> in function call
SCIP Error (-9): method cannot be called with this type of data
ambros-gleixner commented 1 month ago

@alexhoen

alexhoen commented 1 month ago

We already are aware of this issue but unfortunately we did not have a well conditioned instance where we could reproduce the issue. Since your instance only contains binary variables and integer coefficients this should be way easier to debug. Thank you very much for sharing.

To solve for problem for now you cannot think of disabling multiaggregation in Papilo until we can provide a fix. This should not impact the performance tremendously.

Just set the bool parameters presolving/milp/enablemultiaggr to false.

rinde commented 1 month ago

Glad I could help!

alexhoen commented 1 month ago

So the problem was that PaPILO suggested some substitutions that lead to immediate fixings. PaPILO would eventually detect them but in the meanwhile SCIP complained that PAPILO was trying to manipulate already fixed variables.

An example would be 2x +y = 2 with binary variables x,y. Only x=1 and y= 0 is a feasible assignment.

We fixed this now and PaPILO should find these fixings before applying the substitution. Could you please checkout https://github.com/scipopt/papilo/commit/b4051e3002abdc6a9a3042c985c1e6978437b0e3 and see if the error still persists.

DominikKamp commented 1 month ago

With scip@f72aa6b0 this should also safely pass in optimized mode for previous PaPILO versions.