Lineære programmeringsopgaver løst med GLPK

Kontrol af resultater via programpakker er en fordel. Jeg har fundet nogle af mine gamle GLPK kontrolmodeller til eksempler fra "Operations Research: Volume One - Introduction to Mathematical Programming", som blev anvendt i OR-undervisningen på Handelshøjskolen i Århus 2006. En fil med nogle eksempler er vedhæftet.

Kontrolmodel til opgave 335-1:

var x {1..3}>=0;

maximize objekt: -2*x[1] - x[3];

subject to

c1: x[1] + x[2] - x[3] >= 5;
c2: x[1] - 2*x[2] + 4*x[3] >= 8;

Bemærk at "ikke negativitetsbegrænsningerne" angives ved variabeldeklarationen øverst i modellen.

Resultatet viser blandt andet, at den optimale objektfunktionsværdi er -9, x1 = 0, x2 = 14 og x3 = 9. Det er relativt nemt at tilpasse modellerne til andre opgaver i bogen.

Resultat

Problem:    335
Rows:       3
Columns:    3
Non-zeros:  8
Status:     OPTIMAL
Objective:  objekt = -9 (MAXimum)

   No.   Row name   St   Activity     Lower bound   Upper bound    Marginal
------ ------------ -- ------------- ------------- ------------- -------------
     1 objekt       B             -9                             
     2 c1           NL             5             5                          -1
     3 c2           NL             8             8                        -0.5

   No. Column name  St   Activity     Lower bound   Upper bound    Marginal
------ ------------ -- ------------- ------------- ------------- -------------
     1 x[3]         B              9             0               
     2 x[1]         NL             0             0                        -0.5
     3 x[2]         B             14             0               

Karush-Kuhn-Tucker optimality conditions:

KKT.PE: max.abs.err. = 3.55e-015 on row 3
        max.rel.err. = 3.95e-016 on row 3
        High quality

KKT.PB: max.abs.err. = 0.00e+000 on row 0
        max.rel.err. = 0.00e+000 on row 0
        High quality

KKT.DE: max.abs.err. = 2.22e-016 on column 1
        max.rel.err. = 2.22e-016 on column 3
        High quality

KKT.DB: max.abs.err. = 0.00e+000 on row 0
        max.rel.err. = 0.00e+000 on row 0
        High quality

End of output

Attachments