[Coin-lpsolver] CLP/CBC assert failure abort

Kish Shen ks15 at icparc.ic.ac.uk
Mon Aug 8 11:21:51 EDT 2005


Hi,

(I hope this is the right mailing list to post to; the problem involves CLP
with CBC, but there is no CBC specific mailing list, and the problem itself
occurs inside CLP)

I have run into an assertion failure when testing CBC with CLP as the LP
solver when solving the MIPLIB 2003 problem, opt1217:

....
Clp0000I Optimal - objective value -12
Coin0506I Presolve 24 (-40) rows, 149 (-620) columns and 261 (-1281) elements
Clp0006I 0  Obj -17.6 Primal inf 6.93246 (5) Dual inf 0.912116 (3)
Clp0006I 6  Obj -16
Clp0001I Primal infeasible - objective value -16
Coin0505I Presolved problem not optimal, resolve after postsolve
Coin0511I After Postsolve, objective -16, infeasibilities - dual 0 (0), primal 0 (0)
Clp0006I 0  Obj 0 Primal inf 12.0208 (11) Dual inf 7.52029e+11 (105)
Clp0029I End of values pass after 2 iterations
Clp0006I 2  Obj 0 Primal inf 12.0208 (11) Dual inf 7.52029e+11 (105)
eclipse.exe: ClpSimplex.cpp:1463: int ClpSimplex::housekeeping(double): Assertion `fabs(theta_)>1.0e-13' failed.
Signal 6
Aborted

Some context: I am trying to test COIN as an interface to MP solvers for
our Constraint Logic Programming system, ECLiPSe. Currently, I am building
the COIN-OR libraries for Linux on a slightly unusual setup:

sheep: uname -a
Linux sheep.icparc.ic.ac.uk 2.2.17-14 #1 Mon Feb 5 18:48:50 EST 2001 i686 unknown

The gcc was updated on this system to gcc 3.4.3, but still linked with
glibc 2.0, to allow the compiled code to run on most of the machines on our
network, which mostly have Red Hat Linux 7.3 or older.

I am using this setup because I was unable to compile CLP with gcc
2.96 (I reported this in another message I posted to this mailing list last
week), and with gcc 2.95.2, I was able to compile most of the COIN-OR
components, but the CBC produced by this (with CLP as the LP sover) seg
faults on the tests. 

In our setup, the COIN-OR components are loaded as callable libraries, and
ECLiPSe reads in the problem and passes it to the OsiSolverInterface object
in a column-wise fashion, and the problem is then solved by the following
code:

    lpd->lp->setHintParam(OsiDoDualInInitial, doDual, OsiHintDo, NULL);
    lpd->lp->setHintParam(OsiDoDualInResolve, doDual, OsiHintDo, NULL);

    lpd->lp->writeMps("aprob", "mps"); 
    switch (lpd->prob_type) {
    case PROBLEM_LP:
	lpd->lp->initialSolve();
	break;
    case PROBLEM_MIP:
	lpd->lp->initialSolve();
	lpd->lp->branchAndBound();
	break;
    }

where lpd->lp is the OsiXxxSolverInterface object.

The writeMps() is there as I have been trying to duplicate the problem
independent of ECLiPSe. This creates an mps file which I then run with the
Cbc testit executable in Cbc/Samples directory. Unfortunately I was unable
to reproduce the problem this way. I compiled the testit executable with
both the driver.cpp and the sample2.cpp drivers, and both did not produce
the problem.

Some questions:

1) What driver is used by CBC in the callable library? I just compiled it with
the default settings, but I could not figure out what driver is being used,
so I couldn't tell if it is the same driver as those used in testit.

2) When CLP writes out a problem with WriteMps(), which is then read back
   into another CLP session, are the column/row ordering perserved? 


Thanks in advance for any help/answers about this problem!

Yours sincerely,

Kish Shen
 



More information about the Clp mailing list