Skip to content

[BUG] mps file generated by cuopt_cli gives different objective than original for netlib/lp/e226.mps #324

@tmckayus

Description

@tmckayus

The cuopt_cli has a --user-problem-file option which can be used to dump an MPS representation of the problem received by the solver.

For the netlib/lp/e226.mps file, the generated mps file yields a different objective than the e226.mps file when it is fed back into cuopt_cli as data.

Steps to reproduce

  1. download the e226.mps file from https://www.netlib.org/lp/data/e226
  2. solve the e226..mps file with cuopt_cli and use --user-problem-file to generate a new mps file (which should contain an identical problem)
  3. solve the generated file (optionally generate another new mps file to show that the file does not change at this point)
  4. compare the reported objectives

Expecation:
the objective values should be the same. probably, the mps files should be the same as well, or any differences should be mathematically equivalent

Example:

$ cuopt_cli --user-problem-file cli_e226.mps e226.mps
Setting parameter user_problem_file to cli_e226.mps
Running file e226.mps
Solving a problem with 223 constraints 282 variables (0 integers) and 2578 nonzeros
Objective offset 7.113000 scaling_factor 1.000000
Writing user problem to file: cli_e226.mps
Running concurrent

Iter Primal Obj. Dual Obj. Gap Primal Res. Dual Res. Time
Dual simplex finished in 0.02 seconds
0 +7.11300000e+00 +7.11300000e+00 0.00e+00 2.52e+01 4.12e+01 0.017s
PDLP finished
Concurrent time: 0.019s
Solved with dual simplex
Status: Optimal Objective: -1.16389291e+01 Iterations: 367 Time: 0.019s

$ cuopt_cli --user-problem-file cli_e226_two.mps cli_e226.mps
Setting parameter user_problem_file to cli_e226_two.mps
Running file cli_e226.mps
Solving a problem with 223 constraints 282 variables (0 integers) and 2578 nonzeros
Objective offset 0.000000 scaling_factor 1.000000
Writing user problem to file: cli_e226_two.mps
Running concurrent

Iter Primal Obj. Dual Obj. Gap Primal Res. Dual Res. Time
Dual simplex finished in 0.02 seconds
0 +0.00000000e+00 +0.00000000e+00 0.00e+00 2.52e+01 4.12e+01 0.017s
PDLP finished
Concurrent time: 0.019s
Solved with dual simplex
Status: Optimal Objective: -1.87519291e+01 Iterations: 367 Time: 0.019s

The generated mps files match from the two runs.
They are different from the original e226.mps
$ diff cli_e226_two.mps cli_e226.mps
$ diff -q cli_e226.mps e226.mps
Files cli_e226.mps and e226.mps differ

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions