Failure? on ALLINITC.SIF and when using MPS file
When testing in relation to https://github.com/openjournals/joss-reviews/issues/4882, I tried
sdgal binarybuilder.bb.gfo qpa ALLINITC.SIF
and got the opaque error ERROR return from PRESOLVE (exitc =-21). What does this mean?
I also tried to solve a simple LP using the command
sdgal binarybuilder.bb.gfo lpa ml.SIF
where ml.SIF is an MPS file ml.SIF.txt with renamed extension. I got the message
File successfully decoded Problem: AVGAS SIZE problem dimensions: n = 8, m = 10, a_ne = 30 Stopping with inform%status = -29 Total CPU, clock times = 0.000, 0.000 Problem: AVGAS SIZE objective < ------ time ----- > Method iterations value status setup solve total
LPA 1 -1.0000E+00 -29 0.00 0.00 0.00
Although the file seems to have been read correctly, the optimal objective value is incorrect. Status=-29 is opaque. I am unable to find documentation to explain what this status represents. What does this mean? Can LPA solve LPs defined by MPS files?
The documentation for the presolve package ($GALAHAD/doc/presolve.pdf) says that the a return code of -21 indicates an infeasible problem. ALLINITC is a nonlinear problem, and any of the GALAHAD LP/QP solvers will try to solve a linearized version about the given initial point; this linearized problem is indeed infeasible.
The lpa package relies on the HSL code la04, which has to be obtained separately; it is propitiatory code that is available without cost to academics. If you try instead, lpb, you will find (something like)
Problem: AVGAS SIZE
problem dimensions: n = 8, m = 10, a_ne = 30
Stopping with inform%status = 0
Solution : <------ Bounds ------> # name state value Lower Upper Dual 1 C1 LOWER 1.4331E-10 0.0000E+00 1.0000E+00 4.9422E-01 2 C2 UPPER 1.0000E+00 0.0000E+00 1.0000E+00 -3.3911E-01 3 C3 FREE 7.5000E-01 0.0000E+00 1.0000E+00 -2.5580E-10 4 C4 FREE 2.5000E-01 0.0000E+00 1.0000E+00 2.5580E-10 5 C5 FREE 5.0000E-01 0.0000E+00 1.0000E+00 -1.2790E-10 6 C6 FREE 2.5000E-01 0.0000E+00 1.0000E+00 2.5580E-10 7 C7 FREE 7.5000E-01 0.0000E+00 1.0000E+00 -2.5580E-10 8 C8 LOWER 3.8370E-11 0.0000E+00 1.0000E+00 1.6667E+00
Constraints : <------ Bounds ------> # name state value Lower Upper Multiplier 1 R1 LOWER -1.0000E+00 -1.0000E+00 1.0000E+20 2.9942E+00 2 R2 LOWER -1.0000E+00 -1.0000E+00 1.0000E+20 1.6667E+00 . . ..... .......... .......... .......... .......... 9 R9 LOWER 4.7962E-11 0.0000E+00 1.0000E+20 1.3333E+00 10 R10 FREE 2.5000E-01 0.0000E+00 1.0000E+20 2.5580E-10
Of the 8 variables, 3 are on bounds & 0 are dual degenerate Of the 10 constraints, 0 are equations, & 0 are redundant Of the 10 inequalities, 6 are on bounds, & 0 are degenerate
Final objective function value -7.74999999942445E+00 Maximum dual variable 2.99421979799857E+00 Maximum constraint violation 0.00000000000000E+00 Maximum dual infeasibility 1.27899024704448E-10 Maximum complementary slackness 7.08286038934377E-11
Number of LPB iterations = 14
SSIDS symmetric equation solver used Typically 38, 55 entries in matrix, factors Analyse, factorize & solve CPU times = 0.038 0.009 0.001 Analyse, factorize & solve clock times = 0.038 0.009 0.001
Total CPU, clock times = 0.051, 0.077 number of threads = 1
Problem: AVGAS SIZE
objective < ------ time ----- >
Method iterations value status setup solve total
LPB 14 -7.7500E+00 0 0.00 0.07 0.08
Is that what you would have expected?
Ah, I now see a raft of READMEs and pdf in https://github.com/ralna/GALAHAD/tree/v4.0.0/doc. I did wonder whether I was trying to apply a QP solver to a nonlinear problem.
As for AVGAS - you get the right objective value, but I just get a status = -29 error. I guess that I didn't install lpb