Re: GMPL/GLPK display objective function value

2020-08-28 Thread Andrew Makhorin
> 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. 

BTW, glpsol warns about that:

[...]
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
[...]



Re: GMPL/GLPK display objective function value

2020-08-28 Thread Andrew Makhorin
> 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.

Please see
http://en.wikibooks.org/wiki/GLPK/Troubleshooting#Objective_shift_term_ignored_when_exported





GMPL/GLPK display objective function value

2020-08-28 Thread Domingo Alvarez Duarte

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 !