Hello !
While trying to implement multi solve statements I found that in GMPL
the display of an objective function after solving do not show the
optimal value.
GLPSOL warnings:
knapsack-3.glpsol:38: warning: unexpected end of file; missing end
statement inserted
But it shows conflicting values in the output solution:
...
Objective: Reduced_Cost = -0.47 (MINimum)
...
1 Reduced_Cost B -1.46667
...
GMPL displays:
...
Reduced_Cost.val = -1.47
...
AMPL:
=
#
# KNAPSACK SUBPROBLEM FOR CUTTING STOCK
#
param roll_width > 0; # width of raw rolls
set WIDTHS; # set of widths to be cut
param price {WIDTHS} default 0.0;
var Use {WIDTHS} /*integer*/ >= 0;
minimize Reduced_Cost:
1 - sum {i in WIDTHS} price[i] * Use[i];
subject to Width_Limit:
sum {i in WIDTHS} i * Use[i] <= roll_width;
data;
param roll_width := 110 ;
set WIDTHS :=
20
45
50
55
75;
param price :=
[20] 0.2
[45] 0.5
[50] 0.5
[55] 0.5
[75] 1
;
solve;
display Reduced_Cost;
=
AMPL output:
=
myampl-ng knapsack-3.ampl
MINOS 5.51: optimal solution found.
1 iterations, objective -0.47
Reduced_Cost = -0.47
=
GLPSOL
=
#
# KNAPSACK SUBPROBLEM FOR CUTTING STOCK
#
param roll_width > 0; # width of raw rolls
set WIDTHS; # set of widths to be cut
param price {WIDTHS} default 0.0;
var Use {WIDTHS} /*integer*/ >= 0;
minimize Reduced_Cost:
1 - sum {i in WIDTHS} price[i] * Use[i];
subject to Width_Limit:
sum {i in WIDTHS} i * Use[i] <= roll_width;
solve;
display Reduced_Cost;
data;
param roll_width := 110 ;
set WIDTHS :=
20
45
50
55
75;
param price :=
[20] 0.2
[45] 0.5
[50] 0.5
[55] 0.5
[75] 1
;
=
GLPSOL output:
=
myglpsol -m knapsack-3.glpsol -o knapsack-3.sol
GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
-m knapsack-3.glpsol -o knapsack-3.sol
Reading model section from knapsack-3.glpsol...
Reading data section from knapsack-3.glpsol...
knapsack-3.glpsol:38: warning: unexpected end of file; missing end
statement inserted
38 lines were read
Generating Reduced_Cost...
Generating Width_Limit...
Model has been successfully generated
glp_mpl_build_prob: row Reduced_Cost; constant term 1 ignored
GLPK Simplex Optimizer, v4.65
2 rows, 5 columns, 10 non-zeros
Preprocessing...
1 row, 5 columns, 5 non-zeros
Scaling...
A: min|aij| = 2.000e+01 max|aij| = 7.500e+01 ratio = 3.750e+00
GM: min|aij| = 1.000e+00 max|aij| = 1.000e+00 ratio = 1.000e+00
EQ: min|aij| = 1.000e+00 max|aij| = 1.000e+00 ratio = 1.000e+00
Constructing initial basis...
Size of triangular part is 1
* 0: obj = 1.0e+00 inf = 0.000e+00 (5)
* 1: obj = -4.7e-01 inf = 0.000e+00 (0)
OPTIMAL LP SOLUTION FOUND
Time used: 0.0 secs
Memory used: 0.1 Mb (110318 bytes)
Display statement at line 20
Reduced_Cost.val = -1.47
Model has been successfully processed
Writing basic solution to 'knapsack-3.sol'...
=
knapsack-3.sol
=
Problem: knapsack
Rows: 2
Columns: 5
Non-zeros: 10
Status: OPTIMAL
Objective: Reduced_Cost = -0.47 (MINimum)
No. Row name St Activity Lower bound Upper bound Marginal
-- -- - - -
-
1 Reduced_Cost B -1.46667
2 Width_Limit NU 110 110 -0.013
No. Column name St Activity Lower bound Upper bound Marginal
-- -- - - -
-
1 Use[20] NL 0 0 0.067
2 Use[45] NL 0 0 0.1
3 Use[50] NL 0 0 0.17
4 Use[55] NL 0 0 0.23
5 Use[75] B 1.46667 0
Karush-Kuhn-Tucker optimality conditions:
KKT.PE: max.abs.err = 1.42e-14 on row 2
max.rel.err = 6.43e-17 on row 2
High quality
KKT.PB: max.abs.err = 0.00e+00 on row 0
max.rel.err = 0.00e+00 on row 0
High quality
KKT.DE: max.abs.err = 0.00e+00 on column 0
max.rel.err = 0.00e+00 on column 0
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
=
Cheers !