I'm using GLPK to solve an LP.
I use it through its standalone solver, that I call with the glpsol
command, and I get the solution detail written in a file using the -o
/--output
option.
I have no problem parsing the file to recover the actual solution, but I'm wondering what is the meaning of the "marginal" column.
Here is what the output file looks like:
Problem:
Rows: 60
Columns: 9821
Non-zeros: 405355
Status: OPTIMAL
Objective: obj = 1.355170551 (MINimum)
No. Row name St Activity Lower bound Upper bound Marginal
------ ------------ -- ------------- ------------- ------------- -------------
1 r.9825 B 1.07478 1
2 r.17470 NL 1 1 0.0287012
3 r.24250 B 1.23575 1
4 r.31488 NL 1 1 < eps
5 r.38796 B 1.0038 1
6 r.44423 B 1.03857 1
7 r.50832 NL 1 1 0.0109038
8 r.57288 NL 1 1 0.0233011
// some more rows ......
No. Column name St Activity Lower bound Upper bound Marginal
------ ------------ -- ------------- ------------- ------------- -------------
1 Z1 NL 0 0 0.233221
2 Z2 NL 0 0 0.174953
3 Z3 NL 0 0 0.157688
4 Z4 NL 0 0 0.164336
5 Z5 NL 0 0 0.20934
6 Z6 NL 0 0 0.124799
[ .... ]
237 Z237 NL 0 0 0.0686442
238 Z238 NL 0 0 0.159257
239 Z239 B 0.0424075 0
240 Z240 NL 0 0 0.0370097
241 Z241 NL 0 0 0.324198
[ .... ]
The actual values I'm looking for are actually referred to as "activity" (my decision variables being the Zn
).
But what does marginal
represent? And, while I'm here, why are the solution values called activity
(there must be a historical/theoretical reason, and I'm interested)?