I'm trying to solve a basis pursuit using glpsol. Most of the time it works
fine, but a few cases fail. I've been able to reduce a failure case down to
the short example that follows.
Comments or advice?
Thanks,
Reg
The details:
I'm using GLPSOL: GLPK LP/MIP Solver, v4.44 w/ GMP V 4.3.2 on a Solaris 10 x86
system.
The example attempts to solve for the multiplicative and
additive constants seen here. The input is exact, so I'd expect the error to
be zero. NB the example is constructed from a manual approximation to real data
and reproduces the issue seen w/ real data.
m000_000 = 1.8e9
mc = -2.5e4
1.761766315436816104e-05 * 1.8e9 - 2.5e4 = 6711.79
3.931749670328427322e-05 * 1.8e9 - 2.5e4 = 45771.5
5.452595896563653798e-05 * 1.8e9 - 2.5e4 = 73146.7
6.644022638020372074e-05 * 1.8e9 - 2.5e4 = 94592.4
7.594246564290120299e-05 * 1.8e9 - 2.5e4 = 111696
My input file in CPLEX format is:
minimize
z : + a000 + a001 + a002 + a003 + a004
subject to
mc + 1.761766315436816104e-05 m000_000 + x000 - a000 = 6711.79
mc + 3.931749670328427322e-05 m000_000 + x001 - a001 = 45771.5
mc + 5.452595896563653798e-05 m000_000 + x002 - a002 = 73146.7
mc + 6.644022638020372074e-05 m000_000 + x003 - a003 = 94592.4
mc + 7.594246564290120299e-05 m000_000 + x004 - a004 = 111696
mc + 1.761766315436816104e-05 m000_000 - y000 + a000 = 6711.79
mc + 3.931749670328427322e-05 m000_000 - y001 + a001 = 45771.5
mc + 5.452595896563653798e-05 m000_000 - y002 + a002 = 73146.7
mc + 6.644022638020372074e-05 m000_000 - y003 + a003 = 94592.4
mc + 7.594246564290120299e-05 m000_000 - y004 + a004 = 111696
bounds
0.0<= m000_000
x000>= 0.0
x001>= 0.0
x002>= 0.0
x003>= 0.0
x004>= 0.0
y000>= 0.0
y001>= 0.0
y002>= 0.0
y003>= 0.0
y004>= 0.0
a000>= 0.0
a001>= 0.0
a002>= 0.0
a003>= 0.0
a004>= 0.0
end
I'm running glpsol w/:
glpsol --exact --lp in -o out
Which produces:
Problem:
Rows: 10
Columns: 17
Non-zeros: 40
Status: OPTIMAL
Objective: z = 36634.69154 (MINimum)
No. Row name St Activity Lower bound Upper bound Marginal
------ ------------ -- ------------- ------------- ------------- -------------
1 r.4 NS 6711.79 6711.79 = -1
2 r.6 NS 45771.5 45771.5 = -1
3 r.8 NS 73146.7 73146.7 = -1
4 r.10 NS 94592.4 94592.4 = -0.232702
5 r.12 NS 111696 111696 =< eps
6 r.15 NS 6711.79 6711.79 =< eps
7 r.17 NS 45771.5 45771.5 =< eps
8 r.19 NS 73146.7 73146.7 =< eps
9 r.21 NS 94592.4 94592.4 = 0.767298
10 r.23 NS 111696 111696 = 1
No. Column name St Activity Lower bound Upper bound Marginal
------ ------------ -- ------------- ------------- ------------- -------------
1 a000 B 18370.9 0
2 a001 B 10205.7 0
3 a002 B 4483.1 0
4 a003 B 0 0
5 a004 B 3575.05 0
6 mc NL 0 0 1.4654
7 m000_000 B 1.42372e+09 0
8 x000 NL 0 0 1
9 x001 NL 0 0 1
10 x002 NL 0 0 1
11 x003 NL 0 0 0.232702
12 x004 B 7150.11 0
13 y000 B 36741.7 0
14 y001 B 20411.4 0
15 y002 B 8966.2 0
16 y003 NL 0 0 0.767298
17 y004 NL 0 0 1
Karush-Kuhn-Tucker optimality conditions:
KKT.PE: max.abs.err = 9.85e-06 on row 4
max.rel.err = 5.20e-11 on row 4
High quality
KKT.PB: max.abs.err = 5.39e-06 on row 2
max.rel.err = 1.18e-10 on row 2
High quality
KKT.DE: max.abs.err = 3.31e-15 on column 7
max.rel.err = 3.31e-15 on column 7
High quality
KKT.DB: max.abs.err = 0.00e+00 on row 0
max.rel.err = 0.00e+00 on row 0
High quality
End of output
_______________________________________________
Help-glpk mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/help-glpk