Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fails to read neos-5044663-wairoa #42

Open
mlubin opened this issue May 5, 2021 · 2 comments
Open

Fails to read neos-5044663-wairoa #42

mlubin opened this issue May 5, 2021 · 2 comments
Labels
good first issue Good for newcomers

Comments

@mlubin
Copy link
Contributor

mlubin commented May 5, 2021

The neos-5044663-wairoa instance from MIPLIB 2017 fails to read.

julia> QPSReader.readqps(GZip.gzopen("neos-5044663-wairoa.mps.gz"), mpsformat=:fixed)
[ Info: Using 'neos-5044663-wairoa' as NAME (l. 8)
[ Info: Using 'R0000000' as objective (l. 10)
┌ Error: Ignoring marker  at line 230060
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 301671
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 301674
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 301707
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 301712
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 302575
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 302578
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 302793
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 302796
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 303257
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 303260
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 303353
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 303358
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304105
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304108
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304155
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304158
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304469
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304472
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304565
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304568
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304601
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304606
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304699
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304704
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304797
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304800
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304881
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 304888
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 305027
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 305030
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 305485
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 305490
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 306351
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 306354
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 306593
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 306596
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 307447
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 307450
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 307635
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 307638
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 308283
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 308286
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 309055
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 309058
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 309275
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 309280
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 310407
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 310410
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 310543
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 310546
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 310731
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 310736
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 311137
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 311140
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 311315
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 311318
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 311365
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 311368
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 312335
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 312338
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 312523
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 312526
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 312849
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 312852
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 313155
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 313158
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 313481
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 313486
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 314337
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 314340
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 314479
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 314482
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 314979
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 314982
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 315477
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 315480
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 315619
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 315764
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
┌ Error: Ignoring marker  at line 319405
└ @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:852
ERROR: ArgumentError: cannot parse "lumn" as Float64
Stacktrace:
 [1] _parse_failure(T::Type, s::String, startpos::Int64, endpos::Int64) (repeats 2 times)
   @ Base ./parse.jl:373
 [2] #tryparse_internal#403
   @ ./parse.jl:369 [inlined]
 [3] tryparse_internal
   @ ./parse.jl:367 [inlined]
 [4] #parse#404
   @ ./parse.jl:379 [inlined]
 [5] parse
   @ ./parse.jl:379 [inlined]
 [6] read_columns_line!(qps::QPSReader.QPSData, card::QPSReader.MPSCard{QPSReader.FixedMPS}; integer_section::Bool)
   @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:487
 [7] readqps(qps::GZip.GZipStream; mpsformat::Symbol)
   @ QPSReader ~/.julia/packages/QPSReader/panNr/src/readqps.jl:856
 [8] top-level scope
   @ REPL[5]:1

The problematic line in the file is likely:

    C0063540  LB_full              0   $ empty column

I had never seen "$" in an MPS file before, but apparently it's valid comment in fixed format. IBM docs say:

If the first character in Field 3 or 5 is a dollar sign ($), the remaining characters in the record are treated as a comment. Another method for inserting comments is to place an asterisk (*) in column 1. Everything on such a line is treated as a comment.

@dpo
Copy link
Member

dpo commented May 5, 2021

Thanks, we’ll have to fix that. I’ve seen the $ sign in SIF files, which extend the MPS format (e.g., https://bitbucket.org/optrove/sif/src/5c8160a862979517e3dd28ae39d71b865a56e90c/10FOLDTR.SIF#lines-25).

@mtanneau
Copy link
Collaborator

mtanneau commented May 5, 2021

For pointers, here are the 2 lines that would need changing, for handling lines that start with a $

if l == 0 || ln[1] == '*' || ln[1] == '&'

if l == 0 || ln[1] == '*' || ln[1] == '&'

It just needs adding || ln[1] == '$'.

For in-line comments we would have to explicitly check the first character of fields 3 & 5 (following the IBM docs) and discard everything after that.

@dpo dpo added the good first issue Good for newcomers label Jul 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

3 participants