Řešení úloh lineárního programování pomocí moselu

27
Ř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í.

Upload: dwayne

Post on 11-Feb-2016

69 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Řešení úloh lineárního programování  pomocí MOSELu

Ř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í.

Page 2: Řešení úloh lineárního programování  pomocí MOSELu

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.

Page 3: Řešení úloh lineárního programování  pomocí MOSELu

Ú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?

Page 4: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 5: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 6: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 7: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 8: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 9: Řešení úloh lineárního programování  pomocí MOSELu

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)

Page 10: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 11: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 12: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 13: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 14: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 15: Řešení úloh lineárního programování  pomocí MOSELu

Dopravní úloha (Prezentace v grafu)

215

110

311

71

82

103

114

Page 16: Řešení úloh lineárního programování  pomocí MOSELu

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.

Page 17: Řešení úloh lineárního programování  pomocí MOSELu

Dopravní úloha (Skladová podmínka)

215

71110

311

82

103

114

11x

12x

13x

14x

10xxxx 14131211

Page 18: Řešení úloh lineárního programování  pomocí MOSELu

Model dopravní úlohy

4,3,2,1j3,2,1ifor0x

11xxx10xxx

8xxx7xxx

11xxxx15xxxx10xxxx

toSubjectx5x7x7x5x8x7x6x6x3x5x5x4

Min

ij

342414

332313

322212

312111

34333231

24232221

14131211

343332312423222114131211

Page 19: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 20: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 21: Řešení úloh lineárního programování  pomocí MOSELu

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!

Page 22: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 23: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 24: Řešení úloh lineárního programování  pomocí MOSELu

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),

Page 25: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 26: Řešení úloh lineárního programování  pomocí MOSELu

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

Page 27: Řešení úloh lineárního programování  pomocí MOSELu

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