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

Preview:

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

Citation preview

Ř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