Řešení úloh lineárního programování pomocí moselu
DESCRIPTION
Řešení úloh lineárního programování pomocí MOSELu. Spuštění Xpress-IVE, (Start >>Programs>>Xpress-MP>>Xpress-IVE ) Vytvoření a uložení Mosel-ovského souboru , ( File>>New, OpenDialogue) Přepsání modelu do jazyka Mosel , Oprava chyb a odladění modelu , ( Build>>Run ) - PowerPoint PPT PresentationTRANSCRIPT
Řešení úloh lineárního programování pomocí MOSELu
Spuštění Xpress-IVE, (Start>>Programs>>Xpress-MP>>Xpress-IVE)
Vytvoření a uložení Mosel-ovského souboru,(File>>New, OpenDialogue)
Přepsání modelu do jazyka Mosel, Oprava chyb a odladění modelu,
(Build>>Run) Řešení úlohy,
(Build>>Run) Ověření řešení.
Přepsání modelu do jazyka Mosel Deklarace seznamu indexů, polí a jejich
naplnění koeficienty modelu, Deklarace rozhodovacích proměnných, Definice účelové funkce, Zápis strukturálních podmínek, Zápis obligatorních podmínek, Příkaz optimalizace, Určení formy výstupu.
Úloha plánování výroby(Production Problem)
Drobný podnikatel vyrábí a prodává bramborové lupínky a hranolky pořadě za ceny 120 a 76 peněžních jednotek za kilogram produktu. Na výrobu 1 kg lupínků je zapotřebí 2 kg brambor a 0.4 kg oleje, na výrobu 1 kg hranolků je třeba 1.5 kg brambor a 0.2 kg oleje. Podnikatel nakoupil před zahájením výroby 100 kg brambor a 16 kg oleje za regulované ceny 12 a 40 peněžních jednotek za kilogram příslušné suroviny. Jaká množství jednotlivých produktů má podnikatel vyrábět a prodávat, aby maximalizoval svůj zisk při respektování omezených množství obou surovin, které má k dispozici?
Model úlohy plánování výroby
Účelová funkce Strukturální podmínky Obligatorní podmínky
2,1jfor0x16x2.0x4.0100x5.1x2toSubject
x50x80Max
j
21
21
21
Model úlohy plánování výroby(Pole s koeficienty úlohy)
UNITPROF: [80, 50] CONSOFPOT: [2, 1.5] CONSOFOIL: [0.4, 0.2]
210162040
1005125080
21
21
21
,jforxx.x.
x.xtoSubjectxxMax
j
Struktura modelu v jazyku MOSELmodel "Chips and Frenchfries Production" uses "mmxprs" declarations …
end-declarations …end-model
Úvodní klíčové slovo
Koncové klíčové slovo
Specifikace solveru
Deklarace množiny indexů a polí v jazyku MOSEL
model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 CONSOFPOT:array(PRODUCTS) of real CONSOFOIL:array(PRODUCTS) of real UNITPROF:array(PRODUCTS) of real end-declarations
…end-model
Úvodní klíčové slovo deklarace
Koncové klíčové slovo deklarace
Inicializace polí v jazyku MOSELmodel "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 CONSOFPOT:array(PRODUCTS) of real CONSOFOIL:array(PRODUCTS) of real UNITPROF:array(PRODUCTS) of real end-declarations
CONSOFPOT:=[2, 1.5] CONSOFOIL:=[0.4, 0.2] UNITPROF:=[80, 50]end-model
Úvodní klíčové slovo deklarace
Koncové klíčové slovo deklarace
Deklarace rozhodovacích proměnných v jazyku MOSEL
model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 CONSOFPOT:array(PRODUCTS) of real CONSOFOIL:array(PRODUCTS) of real UNITPROF:array(PRODUCTS) of real X:array(PRODUCTS) of mpvar end-declarations
***end-model
Deklarace proměnných X(1), X(2)
Zápis účelové funkce v jazyku MOSEL
model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 *** X:array(PRODUCTS) of mpvar end-declarations
*** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) ***end-model Proměnná, která představuje zisk
21 5080 xx
Zápis strukturálních podmínek v jazyku MOSEL
model "Chips and Frenchfries Production" uses "mmxprs" declarations *** end-declarations *** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) sum(j in PRODUCTS)CONSOFPOT(j)*X(j) <=100 sum(j in PRODUCTS)CONSOFOIL(j)*X(j) <=16
end-model
Příkaz optimalizace v jazyku MOSEL
model "Chips and Frenchfries Production" uses "mmxprs" declarations *** end-declarations *** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) sum(j in PRODUCTS)CONSOFPOT(j)*X(j) <=100 sum(j in PRODUCTS)CONSOFOIL(j)*X(j) <=16 maximize(Profit)end-model
Psaní výstupní sestavy v jazyku MOSEL
model "Chips and Frenchfries Production" uses "mmxprs" declarations *** X:array(PRODUCTS) of mpvar end-declarations *** maximize(Profit) writeln("Total Profit: ", getobjval) forall(j in PRODUCTS) writeln("X(",j,")= ", getsol(X(j)))
end-model
Dopravní úloha (Transportation Problem)
Je třeba co nejlevněji uspokojit požadavky spotřebitelů j = 1, 2, 3, 4 na dovezení bj tun cementu, kde hodnoty bj jsou postupně 7, 8, 10 a 11. Požadavky spotřebitelů je možno uspokojit ze skladů i = 1, 2, 3, které disponují zásobami ai tun cementu, kde hodnoty ai jsou pro i = 1, 2, 3 postupně 10, 15, 11. Jednotkové dopravní náklady cij na přepravu jedné tuny cementu ze skladu i k spotřebiteli j jsou v tabulce.
cij 1 2 3 41 4 5 5 32 6 6 7 83 5 7 7 5
Dopravní úloha (Prezentace v grafu)
215
110
311
71
82
103
114
Dopravní úloha (Prezentace v grafu)
215
71110
311
82
103
114
11x
12x
13x
14x
xij rozhodnutí o tom, kolik se poveze cementu z i do j.
Dopravní úloha (Skladová podmínka)
215
71110
311
82
103
114
11x
12x
13x
14x
10xxxx 14131211
Model dopravní úlohy
4,3,2,1j3,2,1ifor0x
11xxx10xxx
8xxx7xxx
11xxxx15xxxx10xxxx
toSubjectx5x7x7x5x8x7x6x6x3x5x5x4
Min
ij
342414
332313
322212
312111
34333231
24232221
14131211
343332312423222114131211
Model dopravní úlohy
43213210
31
41
3
1
4
1
3
1
4
1
,,,j,,iforx
..jforbx
..iforaxSt
xcMin
ij
ji
ij
ij
ij
i jijij
Dopravní úloha (Transportation Problem)
a : [10, 15, 11] b : [7, 8, 10 ,11]
c 1 2 3 41 4 5 5 32 6 6 7 83 5 7 7 5
43213210
31
41
3
1
4
1
3
1
4
1
,,,j,,iforx
..jforbx
..iforaxSt
xcMin
ij
ji
ij
ij
ij
i jijij
Textový soubor se vstupními údaji v jazyku MOSEL
! poznamka “Transportation_Problem" a:[10, 15, 11] b:[7, 8, 10 ,11] c:[4, 5, 5, 3, 6, 6, 7, 8, 5, 7, 7, 5]
Matice je tu zapsaná po řádcích!
Deklarace množiny indexů a polí v jazyku MOSEL
model “Transportation Problem" uses "mmxprs" declarations STORES=1..3 CUSTOMERS =1..4 a:array(STORES) of real b:array(CUSTOMERS) of real c:array(STORES, CUSTOMERS ) of real end-declarations
…end-model
Inicializace polí v jazyku MOSEL
model " Transportation Problem " uses "mmxprs" declarations ***
end-declarations
initializations from “Transportation_Problem.dat” a, b, c end-initializations
end-model
Úvodní klíčové slovo inicializace
Koncové klíčové slovo inicializace
Deklarace rozhodovacích proměnných v jazyku MOSEL
model " Transportation Problem " uses "mmxprs" declarations STORES=1..3 CUSTOMERS =1..4 a:array(STORES) of real b:array() of real c:array(STORES, CUSTOMERS ) of real X:array(STORES, CUSTOMERS) of mpvar end-declarations
***end-model
Deklarace proměnných X(i, j),
Zápis účelové funkce v jazyku MOSEL
model " Transportation Problem " uses "mmxprs" declarations *** X:array(STORES, CUSTOMERS) of mpvar
end-declarations *** Cost:=sum(i in STORES, j in CUSTOMERS) c(i,j)*X(i,j) ***
end-model Proměnná, která představuje n8klady
3
1
4
1i jijij xc
Zápis strukturálních podmínek v jazyku MOSEL
model " Transportation Problem " uses "mmxprs" declarations *** end-declarations *** Cost:=sum(i in STORES, j in CUSTOMERS) c(i,j)*X(i,j) forall(i in STORES) sum(j in CUSTOMERS) X(i,j) =a(i) forall(j in CUSTOMERS) sum(i in STORES) X(i,j) =b(j)end-model
Příkaz optimalizace v jazyku MOSEL
model " Transportation Problem " uses "mmxprs" declarations *** end-declarations *** Cost:=sum(i in STORES, j in CUSTOMERS) c(i,j)*X(i,j) forall(i in STORES) sum(j in CUSTOMERS) X(i,j) =a(i) forall(j in CUSTOMERS) sum(i in STORES) X(i,j) =b(j)
minimize(Cost)end-model