Opened 10 years ago

Closed 10 years ago

#56 closed defect (fixed)

CBC produce wrong solution and inconsistent solution between CBC 2.2 and CBC trunk

Reported by: cents Owned by: somebody
Priority: major Component: component1
Version: 2.0 Keywords: wrong solution inconsistent objective
Cc: jjforre@…


I tried to use CBC to solve two MIP problems. I downloaded CBC 2.2 and trunk and compiled them on a Ubuntu Linux (latest version Hardy Heron). The CBC trunk is download today (9-09-2008)

For the first problem test1.mps. CBC2.2 appears to produce correct solution. However, CBC trunk produce a different solution and is very likely to be wrong.

For the second problem test2.mps. The solution produced by CBC2.2 appears to have a wrong objective value because the objective value is different from the one calculated from the variable solutions. I am not sure whether this solution is correct or not. CBC trunk produce a different solution and might be wrong as well.

I use the following command to run CBC

cbc mps_file -max -solve -solution solution_file > output_file

I have attached the mps files, the solution files as well as the output for both problems from both version of CBC. The files are compress using tar and bzip to reduce the size to the allowed attachment size for the ticket. Use "tar -xjf test.tjz" to uncompress the files.

Detail description of the files.

test1.mps # mps file for problem 1

test1.solution #CBC2.2 solution for problem 1

test1.output # CBC2.2 output for problem 1

test1_trunk.solution #CBC trunk solution for problem 1

test1_trunk.output #CBC trunk output for problem 1

test2.mps # mps file for problem 2

test2.solution #CBC2.2 solution for problem 2

test2.output # CBC2.2 output for problem 2

test2_trunk.solution #CBC trunk solution for problem 2

test2_trunk.output #CBC trunk output for problem 2

Please advise.


Attachments (1)

test.tjz (234.0 KB) - added by cents 10 years ago.

Download all attachments as: .zip

Change History (2)

Changed 10 years ago by cents

comment:1 Changed 10 years ago by forrest

  • Resolution set to fixed
  • Status changed from new to closed

This seems to be a tolerance issue. There are some small coefficients in matrix so preprocessed model may behave differently from processed model. I think trunk is correct in both cases as I put in stricter tests - you may see some messages in trunk output rejecting solutions.

There are various possibilities - 1) code refuses to cheat by setting integer variables to small values - answer 0.0 2) code thinks preprocessed model has solution of -19.... but when original model is solved with integer variables fixed to those values objective is 0.0

I have modified code to print messages to try and help clarify situation.

Note: See TracTickets for help on using tickets.