scipopt / papilo

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

presolve returns error "unknown bound type INDICATORS" #30

Closed dviladrich95 closed 1 year ago

dviladrich95 commented 1 year ago

While trying to presolve instances from the MIPLIB collection and found that instance supportcase21i https://miplib.zib.de/instance_details_supportcase21i.html with command papilo presolve -f supportcase21i.mps

returns the error unknown bound type INDICATORS

From these references it seems that this is not part of the standard mps format and I don't need the exact structure of the problem instance, so ignoring the INDICATORS section in the mps file would work for me, but I was wondering if Papilo has a better way of handling this.

https://www-eio.upc.es/lceio/manuals/cplex-11/html/reffileformatscplex/reffileformatscplex15.html https://documentation.aimms.com/platform/solvers/cplex.html#cplex-indicator-constraints

Thanks in advance!

Full output:

PaPILO version 2.1.2 [mode: optimized][Solvers: SCIP,SoPlex][GitHash: 2fe2543]
Copyright (C) 2020-2022 Zuse Institute Berlin (ZIB)

External libraries: 
  Boost    1.76.0        (https://www.boost.org/)
  TBB                    Thread building block https://github.com/oneapi-src/oneTBB developed by Intel
  GMP      6.2.0         GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
  SCIP     8.0.3         Mixed Integer Programming Solver developed at Zuse Institute Berlin (scip.zib.de) [GitHash: 62fab8a2e3]
  SoPlex   6.0.3         Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: f900e3d0]

unknown bound type INDICATORS
alexhoen commented 1 year ago

PaPILO currently does not support the INDICATORS. This particular instance only contains two indicator constraints:

INDICATORS
 IF gen0      B15(0)    0
 IF gen1      B15(0)    1

Instead of ignoring the indicators I would rather I would recommend creating two instances one without B15(0) and gen0 and the other one without B15(0) and gen1. It might be the case that adding both constraints gen1 and gen0 might lead to infeasibility. Generating two instances (in your case maybe just use one) would preserve more of the original structure.

Unfortunately, in PaPILO we can not skip the INDICATORS since in this case we want to the user decide how to proceed.

Btw: we are changing the error message to a (little bit) more descriptive explanation