ERGO-Code / HiGHS

Linear optimization software
MIT License
940 stars 174 forks source link

src/simplex/HEkkDualRow.cpp:602: void HEkkDualRow::createFreemove(HVector *): Assertion `iCol < ekk_instance_.lp_.num_col_' failed #1105

Closed ambros-gleixner closed 1 year ago

ambros-gleixner commented 1 year ago

The HiGHS LP interface for SCIP is now on accessible on github branch https://github.com/scipopt/scip/tree/lpi-highs. Running this with the latest branch of HiGHS built in debug mode triggers the above assert. This comes up for many instances, but the one attached is representative and fast:

blend2.mps_trans.cip.txt

The full log is below and contains a basic backtrace, but I was not able to understand what was the problem. I also ran with valgrind and found no memory errors.

scip/build/Debug-highs/check/temp$ gdb --args ../../bin/scip -f blend2.mps_trans.cip 
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ../../bin/scip...
(gdb) r
Starting program: /home/bzfgleix/data/research/scip/build/Debug-highs/bin/scip -f blend2.mps_trans.cip
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff0c59700 (LWP 37392)]
[New Thread 0x7fffee458700 (LWP 37393)]
[New Thread 0x7fffedc57700 (LWP 37394)]
[New Thread 0x7fffe9456700 (LWP 37395)]
[New Thread 0x7fffe6c55700 (LWP 37396)]
[New Thread 0x7fffe4454700 (LWP 37397)]
[New Thread 0x7fffe1c53700 (LWP 37398)]
SCIP version 8.0.4 [precision: 8 byte] [memory: block] [mode: debug] [LP solver: HiGHS 1.5.0] [GitHash: 95ca3a288a]
Copyright (C) 2002-2022 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB)

External libraries: 
  Readline 8.0         GNU library for command line editing (gnu.org/s/readline)
  HiGHS 1.5.0          Linear optimization suite written and engineered at the University of Edinburgh [2023-01-14] [GitHash: 068b5cb3f]
  CppAD 20180000.0     Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
  ZLIB 1.2.11          General purpose compression library by J. Gailly and M. Adler (zlib.net)
  GMP 6.2.0            GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
  AMPL/MP 4e2d45c4     AMPL .nl file reader library (github.com/ampl/mp)
  PaPILO 2.2.0.2       parallel presolve for integer and linear optimization (github.com/scipopt/papilo) [GitHash: 64ba713]
  bliss 0.77           Computing Graph Automorphism Groups by T. Junttila and P. Kaski (www.tcs.hut.fi/Software/bliss/)
  Ipopt 3.13.2         Interior Point Optimizer developed by A. Waechter et.al. (github.com/coin-or/Ipopt)
  TinyCThread          Small, portable implementation of the C11 threads API (tinycthread.github.io)

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

read problem <blend2.mps_trans.cip>
============

original problem has 353 variables (245 bin, 19 int, 71 impl, 18 cont) and 213 constraints

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

WARNING: SCIP is compiled with 'DEBUGSOL=true' but no debug solution is given:
WARNING:  *** Please set the parameter 'misc/debugsol' and reload the problem again to use the debugging-mechanism ***

presolving:
(round 1, fast)       46 del vars, 27 del conss, 3 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 128 impls, 26 clqs
(round 2, fast)       46 del vars, 27 del conss, 6 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 128 impls, 26 clqs
(round 3, fast)       46 del vars, 27 del conss, 9 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 128 impls, 26 clqs
(round 4, fast)       46 del vars, 27 del conss, 10 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 128 impls, 26 clqs
   (0.1s) running MILP presolver
   (0.2s) MILP presolver (2 rounds): 0 aggregations, 0 fixings, 0 bound changes
(round 5, exhaustive) 46 del vars, 34 del conss, 10 add conss, 0 chg bounds, 6 chg sides, 0 chg coeffs, 0 upgd conss, 128 impls, 26 clqs
   (0.3s) probing cycle finished: starting next cycle
   (0.4s) symmetry computation started: requiring (bin +, int -, cont +), (fixed: bin -, int +, cont -)
   (0.4s) no symmetry present
   (0.4s) symmetry computation started: requiring (bin +, int +, cont +), (fixed: bin -, int -, cont -)
   (0.4s) no symmetry present
presolving (6 rounds: 6 fast, 2 medium, 2 exhaustive):
 46 deleted vars, 34 deleted constraints, 10 added constraints, 0 tightened bounds, 0 added holes, 6 changed sides, 0 changed coefficients
 931 implications, 404 cliques
presolved problem has 307 variables (213 bin, 19 int, 70 impl, 5 cont) and 189 constraints
     97 constraints of type <varbound>
      1 constraints of type <setppc>
     91 constraints of type <linear>
Presolving Time: 0.35

 time | node  | left  |LP iter|LP it/n|mem/heur|mdpt |vars |cons |rows |cuts |sepa|confs|strbr|  dualbound   | primalbound  |  gap   | compl. 
  0.6s|     1 |     0 |    23 |     - |  5729k |   0 | 307 | 190 | 189 |   0 |  0 |   0 |   0 | 7.043999e+00 |      --      |    Inf | unknown
  0.7s|     1 |     0 |   113 |     - |  5893k |   0 | 307 | 190 | 192 |   3 |  1 |   0 |   0 | 7.047270e+00 |      --      |    Inf | unknown
  0.8s|     1 |     0 |   114 |     - |  5911k |   0 | 307 | 190 | 193 |   4 |  2 |   0 |   0 | 7.064275e+00 |      --      |    Inf | unknown
  0.8s|     1 |     0 |   115 |     - |  5930k |   0 | 307 | 190 | 194 |   5 |  3 |   0 |   0 | 7.064275e+00 |      --      |    Inf | unknown
  0.9s|     1 |     0 |   117 |     - |  5953k |   0 | 307 | 190 | 195 |   6 |  4 |   0 |   0 | 7.065727e+00 |      --      |    Inf | unknown
  1.9s|     1 |     2 |   532 |     - |  6048k |   0 | 307 | 200 | 195 |   6 |  6 |  16 |  17 | 7.115779e+00 |      --      |    Inf | unknown
L 3.7s|    21 |    11 |   868 |  38.0 |    alns|  20 | 307 | 200 | 203 |  21 |  1 |  16 |  86 | 7.184779e+00 | 7.705284e+00 |   7.24%| unknown
  8.7s|   100 |    26 |  1481 |  13.9 |  6574k |  22 | 307 | 291 | 203 |  24 |  5 | 134 | 281 | 7.259564e+00 | 7.705284e+00 |   6.14%|  37.54%
scip: /home/bzfgleix/research/HiGHS/src/simplex/HEkkDualRow.cpp:602: void HEkkDualRow::createFreemove(HVector *): Assertion `iCol < ekk_instance_.lp_.num_col_' failed.

Thread 1 "scip" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50  ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff4a2b859 in __GI_abort () at abort.c:79
#2  0x00007ffff4a2b729 in __assert_fail_base (fmt=0x7ffff4bc1588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7ffff7d76c6f "iCol < ekk_instance_.lp_.num_col_", 
    file=0x7ffff7d76aa9 "/home/bzfgleix/research/HiGHS/src/simplex/HEkkDualRow.cpp", line=602, function=<optimized out>) at assert.c:92
#3  0x00007ffff4a3cfd6 in __GI___assert_fail (assertion=0x7ffff7d76c6f "iCol < ekk_instance_.lp_.num_col_", file=0x7ffff7d76aa9 "/home/bzfgleix/research/HiGHS/src/simplex/HEkkDualRow.cpp", line=602, 
    function=0x7ffff7d76c91 "void HEkkDualRow::createFreemove(HVector *)") at assert.c:101
#4  0x00007ffff7c7d928 in HEkkDualRow::createFreemove (this=0x7fffffff7540, row_ep=0x7fffffff7070) at /home/bzfgleix/research/HiGHS/src/simplex/HEkkDualRow.cpp:602
#5  0x00007ffff7c7005d in HEkkDual::chooseColumn (this=0x7fffffff6f88, row_ep=0x7fffffff7070) at /home/bzfgleix/research/HiGHS/src/simplex/HEkkDual.cpp:1569
#6  0x00007ffff7c6e202 in HEkkDual::iterate (this=0x7fffffff6f88) at /home/bzfgleix/research/HiGHS/src/simplex/HEkkDual.cpp:1192
#7  0x00007ffff7c6ccf5 in HEkkDual::solvePhase2 (this=0x7fffffff6f88) at /home/bzfgleix/research/HiGHS/src/simplex/HEkkDual.cpp:899
#8  0x00007ffff7c6aec4 in HEkkDual::solve (this=0x7fffffff6f88, pass_force_phase2=false) at /home/bzfgleix/research/HiGHS/src/simplex/HEkkDual.cpp:254
#9  0x00007ffff7c40af6 in HEkk::solve (this=0x555556bbe408, force_phase2=false) at /home/bzfgleix/research/HiGHS/src/simplex/HEkk.cpp:1111
#10 0x00007ffff7a19fd3 in solveLpSimplex (solver_object=...) at /home/bzfgleix/research/HiGHS/src/simplex/HApp.h:210
#11 0x00007ffff7a18fbb in solveLp (solver_object=..., message="Solving LP without presolve or with basis") at /home/bzfgleix/research/HiGHS/src/lp_data/HighsSolve.cpp:110
#12 0x00007ffff79a7a69 in Highs::callSolveLp (this=0x555556bbd720, lp=..., message="Solving LP without presolve or with basis") at /home/bzfgleix/research/HiGHS/src/lp_data/Highs.cpp:2819
#13 0x00007ffff79a2fbb in Highs::run (this=0x555556bbd720) at /home/bzfgleix/research/HiGHS/src/lp_data/Highs.cpp:976
#14 0x000055555620b587 in lpiSolve (lpi=0x555556bb28f0) at /home/bzfgleix/research/scip/src/lpi/lpi_highs.cpp:465
#15 0x0000555556212536 in SCIPlpiSolveDual (lpi=0x555556bb28f0) at /home/bzfgleix/research/scip/src/lpi/lpi_highs.cpp:1453
#16 0x0000555555d93de3 in runBoundHeuristic (conflict=0x555556a94e90, set=0x555556a85f80, stat=0x555556b95230, origprob=0x555556b9dfb0, transprob=0x555556ba79c0, tree=0x555556ba4980, reopt=0x0, 
    lp=0x555556b856f0, lpi=0x555556bb28f0, blkmem=0x555556a83ea0, proofcoefs=0x555556fc0bd0, prooflhs=0x7fffffffbf40, proofactivity=0x7fffffffbf30, curvarlbs=0x5555574580c0, curvarubs=0x555556f98360, 
    lbchginfoposs=0x555556f96c80, ubchginfoposs=0x5555570f5190, iterations=0x7fffffffc0a8, marklpunsolved=1, dualproofsuccess=0x7fffffffc0a4, valid=0x7fffffffbe94)
    at /home/bzfgleix/research/scip/src/scip/conflict.c:7987
#17 0x0000555555d963a7 in conflictAnalyzeLP (conflict=0x555556a94e90, conflictstore=0x555556ba3080, blkmem=0x555556a83ea0, set=0x555556a85f80, stat=0x555556b95230, transprob=0x555556ba79c0, 
    origprob=0x555556b9dfb0, tree=0x555556ba4980, reopt=0x0, lp=0x555556b856f0, branchcand=0x555556ba5120, eventqueue=0x555556b8ed50, cliquetable=0x555556b9e210, diving=0, dualproofsuccess=0x7fffffffc0a4, 
    iterations=0x7fffffffc0a8, nconss=0x7fffffffc0ac, nliterals=0x7fffffffc0b0, nreconvconss=0x7fffffffc0b4, nreconvliterals=0x7fffffffc0b8, marklpunsolved=1)
    at /home/bzfgleix/research/scip/src/scip/conflict.c:8479
#18 0x0000555555d96de0 in conflictAnalyzeBoundexceedingLP (conflict=0x555556a94e90, conflictstore=0x555556ba3080, blkmem=0x555556a83ea0, set=0x555556a85f80, stat=0x555556b95230, transprob=0x555556ba79c0, 
    origprob=0x555556b9dfb0, tree=0x555556ba4980, reopt=0x0, lp=0x555556b856f0, branchcand=0x555556ba5120, eventqueue=0x555556b8ed50, cliquetable=0x555556b9e210, success=0x0)
    at /home/bzfgleix/research/scip/src/scip/conflict.c:8652
#19 0x0000555555d97691 in SCIPconflictAnalyzeLP (conflict=0x555556a94e90, conflictstore=0x555556ba3080, blkmem=0x555556a83ea0, set=0x555556a85f80, stat=0x555556b95230, transprob=0x555556ba79c0, 
    origprob=0x555556b9dfb0, tree=0x555556ba4980, reopt=0x0, lp=0x555556b856f0, branchcand=0x555556ba5120, eventqueue=0x555556b8ed50, cliquetable=0x555556b9e210, success=0x0)
    at /home/bzfgleix/research/scip/src/scip/conflict.c:8771
#20 0x00005555560951ff in solveProbingLP (scip=0x555556a81090, itlim=11, pricing=0, pretendroot=0, displayinfo=0, maxpricerounds=-1, lperror=0x7fffffffc6a4, cutoff=0x7fffffffc578)
    at /home/bzfgleix/research/scip/src/scip/scip_probing.c:794
#21 0x0000555556095339 in SCIPsolveProbingLP (scip=0x555556a81090, itlim=11, lperror=0x7fffffffc6a4, cutoff=0x7fffffffc578) at /home/bzfgleix/research/scip/src/scip/scip_probing.c:829
#22 0x00005555560d20bd in performStrongbranchWithPropagation (scip=0x555556a81090, var=0x555556c083d8, down=0, firstchild=1, propagate=1, newbound=1, itlim=11, maxproprounds=0, value=0x7fffffffc850, 
    valid=0x7fffffffc584, ndomreductions=0x7fffffffc860, conflict=0x7fffffffc6b4, lperror=0x7fffffffc6a4, vars=0x555556b86c90, nvars=307, newlbs=0x555556e37030, newubs=0x55555711bbe8, foundsol=0x7fffffffc57c, 
    cutoff=0x7fffffffc578) at /home/bzfgleix/research/scip/src/scip/scip_var.c:3188
#23 0x00005555560d32cb in SCIPgetVarStrongbranchWithPropagation (scip=0x555556a81090, var=0x555556c083d8, solval=0.23841725262242786, lpobjval=7.3370557997165129, itlim=11, maxproprounds=0, down=0x7fffffffc848, 
    up=0x7fffffffc850, downvalid=0x7fffffffc69c, upvalid=0x7fffffffc6a0, ndomredsdown=0x7fffffffc858, ndomredsup=0x7fffffffc860, downinf=0x7fffffffc6a8, upinf=0x7fffffffc6ac, downconflict=0x7fffffffc6b0, 
    upconflict=0x7fffffffc6b4, lperror=0x7fffffffc6a4, newlbs=0x555556e37030, newubs=0x55555711bbe8) at /home/bzfgleix/research/scip/src/scip/scip_var.c:3594
#24 0x00005555555d0d74 in execRelpscost (scip=0x555556a81090, branchrule=0x555556ac3ef0, branchcands=0x555556f4e0a0, branchcandssol=0x7fffdf432010, branchcandsfrac=0x555556d068f0, branchorbitidx=0x0, 
    nbranchcands=4, executebranch=1, result=0x7fffffffcf0c) at /home/bzfgleix/research/scip/src/scip/branch_relpscost.c:1400
#25 0x00005555555d3fc6 in branchExeclpRelpscost (scip=0x555556a81090, branchrule=0x555556ac3ef0, allowaddcons=1, result=0x7fffffffcf0c) at /home/bzfgleix/research/scip/src/scip/branch_relpscost.c:2026
#26 0x0000555555d6c560 in SCIPbranchruleExecLPSol (branchrule=0x555556ac3ef0, set=0x555556a85f80, stat=0x555556b95230, tree=0x555556ba4980, sepastore=0x555556b784b0, cutoffbound=7.7052840000000016, 
    allowaddcons=1, result=0x7fffffffcf0c) at /home/bzfgleix/research/scip/src/scip/branch.c:1590
#27 0x0000555555d6f127 in SCIPbranchExecLP (blkmem=0x555556a83ea0, set=0x555556a85f80, stat=0x555556b95230, transprob=0x555556ba79c0, origprob=0x555556b9dfb0, tree=0x555556ba4980, reopt=0x0, lp=0x555556b856f0, 
    sepastore=0x555556b784b0, branchcand=0x555556ba5120, eventqueue=0x555556b8ed50, cutoffbound=7.7052840000000016, allowaddcons=1, result=0x7fffffffcf0c) at /home/bzfgleix/research/scip/src/scip/branch.c:2569
#28 0x0000555556045538 in SCIPbranchLP (scip=0x555556a81090, result=0x7fffffffcf0c) at /home/bzfgleix/research/scip/src/scip/scip_branch.c:1241
#29 0x000055555567cdf4 in consEnfolpIntegral (scip=0x555556a81090, conshdlr=0x555556aa40f0, conss=0x0, nconss=0, nusefulconss=0, solinfeasible=0, result=0x7fffffffcf0c)
    at /home/bzfgleix/research/scip/src/scip/cons_integral.c:106
#30 0x0000555555dacba6 in SCIPconshdlrEnforceLPSol (conshdlr=0x555556aa40f0, blkmem=0x555556a83ea0, set=0x555556a85f80, stat=0x555556b95230, tree=0x555556ba4980, sepastore=0x555556b784b0, solinfeasible=0, 
--Type <RET> for more, q to quit, c to continue without paging--f 4
    result=0x7fffffffcf0c) at /home/bzfgleix/research/scip/src/scip/cons.c:3456
#31 0x000055555612976f in enforceConstraints (blkmem=0x555556a83ea0, set=0x555556a85f80, messagehdlr=0x555556a81190, stat=0x555556b95230, prob=0x555556ba79c0, primal=0x555556ba70f0, tree=0x555556ba4980, 
    lp=0x555556b856f0, relaxation=0x555556b94aa0, sepastore=0x555556b784b0, branchcand=0x555556ba5120, branched=0x7fffffffd0ec, cutoff=0x7fffffffd38c, infeasible=0x7fffffffd398, propagateagain=0x7fffffffd0e4, 
    solvelpagain=0x7fffffffd0e0, solverelaxagain=0x7fffffffd0dc, forced=0) at /home/bzfgleix/research/scip/src/scip/solve.c:3404
#32 0x000055555612d81f in solveNode (blkmem=0x555556a83ea0, set=0x555556a85f80, messagehdlr=0x555556a81190, stat=0x555556b95230, mem=0x555556a81e30, origprob=0x555556b9dfb0, transprob=0x555556ba79c0, 
    primal=0x555556ba70f0, tree=0x555556ba4980, reopt=0x0, lp=0x555556b856f0, relaxation=0x555556b94aa0, pricestore=0x555556b78450, sepastore=0x555556b784b0, branchcand=0x555556ba5120, cutpool=0x555556df94b0, 
    delayedcutpool=0x555556dfd670, conflict=0x555556a94e90, conflictstore=0x555556ba3080, eventfilter=0x555556aecd70, eventqueue=0x555556b8ed50, cliquetable=0x555556b9e210, cutoff=0x7fffffffd38c, 
    postpone=0x7fffffffd390, unbounded=0x7fffffffd394, infeasible=0x7fffffffd398, restart=0x7fffffffd5c8, afternodeheur=0x7fffffffd3a0, stopped=0x7fffffffd3a4)
    at /home/bzfgleix/research/scip/src/scip/solve.c:4311
#33 0x0000555556130e43 in SCIPsolveCIP (blkmem=0x555556a83ea0, set=0x555556a85f80, messagehdlr=0x555556a81190, stat=0x555556b95230, mem=0x555556a81e30, origprob=0x555556b9dfb0, transprob=0x555556ba79c0, 
    primal=0x555556ba70f0, tree=0x555556ba4980, reopt=0x0, lp=0x555556b856f0, relaxation=0x555556b94aa0, pricestore=0x555556b78450, sepastore=0x555556b784b0, cutpool=0x555556df94b0, 
    delayedcutpool=0x555556dfd670, branchcand=0x555556ba5120, conflict=0x555556a94e90, conflictstore=0x555556ba3080, eventfilter=0x555556aecd70, eventqueue=0x555556b8ed50, cliquetable=0x555556b9e210, 
    restart=0x7fffffffd5c8) at /home/bzfgleix/research/scip/src/scip/solve.c:4993
#34 0x00005555560b2cf8 in SCIPsolve (scip=0x555556a81090) at /home/bzfgleix/research/scip/src/scip/scip_solve.c:2782
#35 0x00005555560ee900 in fromCommandLine (scip=0x555556a81090, filename=0x7fffffffe140 "blend2.mps_trans.cip") at /home/bzfgleix/research/scip/src/scip/scipshell.c:110
#36 0x00005555560eff44 in SCIPprocessShellArguments (scip=0x555556a81090, argc=3, argv=0x7fffffffdd88, defaultsetname=0x55555625a004 "scip.set") at /home/bzfgleix/research/scip/src/scip/scipshell.c:494
#37 0x00005555560f01e1 in SCIPrunShell (argc=3, argv=0x7fffffffdd88, defaultsetname=0x55555625a004 "scip.set") at /home/bzfgleix/research/scip/src/scip/scipshell.c:559
#38 0x0000555555591e9c in main (argc=3, argv=0x7fffffffdd88) at /home/bzfgleix/research/scip/src/main.c:71
(gdb) f 4
#4  0x00007ffff7c7d928 in HEkkDualRow::createFreemove (this=0x7fffffff7540, row_ep=0x7fffffff7070) at /home/bzfgleix/research/HiGHS/src/simplex/HEkkDualRow.cpp:602
602       assert(iCol < ekk_instance_.lp_.num_col_);
(gdb) la
Usage: layout prev | next | LAYOUT-NAME
(gdb) l
597                                                         : 1e-6;
598     HighsInt move_out = workDelta < 0 ? -1 : 1;
599     set<HighsInt>::iterator sit;
600     for (sit = freeList.begin(); sit != freeList.end(); sit++) {
601       HighsInt iCol = *sit;
602       assert(iCol < ekk_instance_.lp_.num_col_);
603       double alpha = ekk_instance_.lp_.a_matrix_.computeDot(*row_ep, iCol);
604       if (fabs(alpha) > Ta) {
605         if (alpha * move_out > 0)
606           ekk_instance_.basis_.nonbasicMove_[iCol] = 1;
(gdb) p iCol
$1 = 509
(gdb) p ekk_instance_.lp_.num_col_
$2 = 307
(gdb) p sit
$3 = 509
(gdb) p freeList 
$4 = std::set with 1 element = {[0] = 509}
ambros-gleixner commented 1 year ago

To add a bit more insight and analysis: This happens after SCIP relaxes a couple of variable bounds and "removes" rows ax <= rhs by setting rhs to infinity. This can be seen from the attached log with more debug output activated.

blend2.lp.txt

ambros-gleixner commented 1 year ago

@jajhall After studying the code I simply believe the assert is too hard. The indices stored in freelist can be row indices, all the data structures where they are used are set up to work with indicies up to number of rows plus columns.

The PR #1121 would fix that. Can you confirm?

ambros-gleixner commented 1 year ago

The instance reported here runs fine with this change.

jajhall commented 1 year ago

Sure, Qi never envisaged anyone calling the simplex solver with free rows, but there's nothing strictly wrong in having them.

I'll incorporate the necessary change in another PR I need to do today

jajhall commented 1 year ago

Fixed by #1122

ambros-gleixner commented 1 year ago

Thanks!