Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Zapsání modelu úlohy celočíselného programování do jazyka Mosel Deklarace seznamu indexů, polí a jejich naplnění koeficienty modelu, Deklarace rozhodovacích.

Podobné prezentace


Prezentace na téma: "Zapsání modelu úlohy celočíselného programování do jazyka Mosel Deklarace seznamu indexů, polí a jejich naplnění koeficienty modelu, Deklarace rozhodovacích."— Transkript prezentace:

1 Zapsání modelu úlohy celočíselného programování 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. Jen zde se liší zápis od úlohy lineárního programování!

2 Úloha plánování výroby s nedělitelností 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, přičemž lupínky může prodávat pouze v 15 kg baleních a hranolky v 30 kg baleních. 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. 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?

3 Jednotkový zisk z výroby a prodeje jednotlivých produktů...prodává lupínky a hranolky pořadě za ceny 120 a 76 peněžních jednotek za kilogram. 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 brambory a olej za 12 a 40 peněžních jednotek za kilogram. Náklady na 1 kg lupínků 2 kg brambor 0.4 kg oleje 40 Sk za kilogram 12 Sk za kilogram   + == =12  2+40  0.4=40 Zisk z 1 kg: 120-40=80 Zisk z 15 kg balení c 1 =15*80=1200

4 Jednotkový zisk z výroby a prodeje jednotlivých produktů...prodává lupínky a hranolky pořadě za ceny 120 a 76 peněžních jednotek za kilogram. 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 brambory a olej za 12 a 40 peněžních jednotek za kilogram. Náklady na 1 kg hranolků 1.5 kg brambor 0.2 kg oleje 40 Sk za kilogram 12 Sk za kilogram   + == =12  1.5+40  0.2=26 Zisk z 1 kg: 76-26=50 Zisk z 30 kg balení c 2 =30*50=1500

5 Model úlohy plánování výroby s nedělitelností

6

7 Model úlohy plánování výroby s nedělitelností (Pole s koeficienty úlohy) UNITPROF: [1200, 1500] CONSOFPOT: [30, 45] CONSOFOIL: [6, 6]

8 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

9 Inicializace 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 CONSOFPOT:=[ 30, 45 ] CONSOFOIL:=[ 6, 6 ] UNITPROF:=[ 1200, 1500 ] end-model

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

11 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

12 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

13 Deklarace celočíselných proměnných 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 forall (j in PRODUCTS) X(j) is_integer end-model Toto jsou obligatorní podmínky celočíselnosti

14 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

15 Úloha o batohu (Knapsack Problem) Do batohu je možno uložit náklad o hmotnosti 21 kg. Tento náklad je možno složit z předmětů 1, 2, 3, 4, 5 a 6, které mají pořadě hmotnosti 12, 11, 10, 9, 9 a 8 a které není možno dělit. S přepravou jednotlivých předmětů jsou spojeny následující zisky 16, 14, 13, 10, 9 a 6. Úlohou je maximalizovat celkový zisk z přepravy předmětů, když s batohem je možno absolvovat jen jedinou cestu.

16 Úloha o batohu (Knapsack Problem) maximalizujte x 0 = 16 x 1 + 14 x 2 + 13 x 3 + 10 x 4 +9 x 5 + 6 x 6 za podmínek 12 x 1 + 11 x 2 + 10 x 3 + 9 x 4 +9 x 5 + 8 x 6  21 x j  {0, 1} pro j = 1,..., 6.

17 Úloha o batohu-vstupní údaje (Knapsack Problem) maximalizujte x 0 = 16 x 1 + 14 x 2 + 13 x 3 + 10 x 4 +9 x 5 + 6 x 6 za podmínek 12 x 1 + 11 x 2 + 10 x 3 + 9 x 4 +9 x 5 + 8 x 6  21 x j  {0, 1} pro j = 1,..., 6. Koeficienty c j jsou uloženy v textovém souboru KP_c.txt a koeficienty a j v textovém souboru KP_a.txt v následujícím tvaru: N resp. N c 1 a 1 c 2 a 2 : c N a N

18 Úloha o batohu (Knapsack Problem) model "Knapsack Problem" uses "mmxprs" declarations N:integer end-declarations ! Reading from a text file fopen("KP_c.txt", F_INPUT) readln(N) fclose(F_INPUT) end-model Otevření souboru KP_c.txt Uzavření souboru Načtení první položky souboru do N

19 Úloha o batohu (Knapsack Problem) declarations c:array(1..N) of integer a:array(1..N) of integer X:array(1..N) of mpvar end-declarations ! Reading from a text file fopen("KP_c.txt", F_INPUT) readln forall(j in 1..N) readln(c(j)) fclose(F_INPUT) Vynechání první položky souboru Načtení c j v cyklu

20 Úloha o batohu (Knapsack Problem) fopen("KP_a.txt", F_INPUT) readln forall(j in 1..N) readln(a(j)) fclose(F_INPUT) Profit:=sum(j in 1..N) c(j)*X(j) sum(j in 1..N) a(j)*X(j)<=21 forall(j in 1..N) X(j) is_binary maximize(Profit) Definování 0-1 proměnných

21 Úloha o batohu (Knapsack Problem) Profit:=sum(j in 1..N) c(j)*X(j) sum(j in 1..N) a(j)*X(j)<=21 forall(j in 1..N) X(j) is_binary maximize(Profit) writeln("Profit := ", getobjval) forall(j in 1..N) writeln("X( ",j,") := ", getsol(X(j))) end-model

22 Úloha o batohu-výsledky (Knapsack Problem) Profit := 27 X( 1) := 0 X( 2) := 1 X( 3) := 1 X( 4) := 0 X( 5) := 0 X( 6) := 0

23 Přiřazovací úloha V dopravní síti se v místech t 1, t 2, t 3 a t 4 nacházejí taxíky. Dispečer taxislužby obdržel objednávku od čtyř zákazníků, kteří se nacházejí v jiných čtyřech místech z 1, z 2, z 3 a z 4. Vzdálenosti mezi stanovišti taxíků a zákazníky udává {c ij }. Je třeba určit, který taxík má obsloužit kterého zákazníka (být mu přiřazen), aby celková vzdálenost kterou taxíky projedou na prázdno, tj. ze svého stanoviště k zákazníkovi, byla co nejmenší. Je třeba respektovat podmínku, že každý zákazník musí být obsloužen a že jeden taxík nemůže uspokojit více než jednoho z těchto zákazníků.

24 Přiřazovací úloha (Prezentace v grafu) 2 1 1 3 2 3 4 x ij  {0, 1} „Jet či nejet, to je otázka“. 4

25 Přiřazovací úloha

26 Alokační úloha (Allocation Problem) Firma disponuje třemi velkými sklady v své distribuční síti. Z těchto skladů, které mají pořadě kapacity a i = 5000, 7000 a 6000 tun zboží, pokrývají požadavky deseti velkoodběratelů. Jejich požadavky jsou pořadě b j = 2000, 1000, 800, 700, 900, 2200, 1800, 1700, 1100 a 1200 tun. Vzdálenosti skladů od velkoodběratelů jsou dány koeficienty {d ij } Určete který velkoodběratel bude odkud zásobován tak, aby celkové dopravní náklady byly minimální, když víte že náklady na přepravu jedné jednotky zboží z i na místo j jsou lineárně závislé na vzdálenosti těchto míst. Je třeba dodržet podmínku, že každý velkoodběratel musí dostat celý svůj požadavek z jediného skladu.

27 Alokační úloha (Allocation Problem) zákazníci z ij  {0, 1} Sklady j=1, 2, 3 2 3 1 b2b2 b1b1 b3b3 b5b5 b4b4 b6b6 b7b7 b9b9 b 10 b8b8 a2a2 a3a3 a1a1

28 Úloha o rozmístění dopravní flotily Školní správa zabezpečuje svoz dětí do škol od 7:00 do 8:00 po třech trasách j = 1, 2, 3. Zajištění přepravy obdržel jako zakázku za pevnou cenu dopravní podnik. V dané době podnik může na zakázku nasadit autobusy dvou typů i = 1, 2 s různými parametry. Doby jízdy na jednotlivých trasách v min. a náklady na jejich projetí udávají matice koeficientů {t ij } a {c ij }. Aby byli žáci svezeni do škol, je třeba, aby první trasu projely 4 druhou trasu 3 a třetí trasu 5 autobusů. Dopravní podnik v uvedené době může z časového fondu autobusů prvního typu čerpat celkem až 180 min a z časového fondu autobusů druhého typu nejvýše 120 min. Jak má podnik zabezpečit zakázku, aby jeho zisk byl co největší.

29 Úloha o rozmístění dopravní flotily Doby jízdy na jednotlivých trasách v min. a náklady na jejich projetí udávají matice koeficientů {t ij } a {c ij }. Typ_2 120 min z1jZ+z1jZ+ Škola Typ_1 180 min Trasa_3 5  Trasa_2 3  Trasa_1 4  Kolikrát typ 1 bude nasazen na trasu j

30 Úloha o rozmístění dopravní flotily účelová funkce Typ_2 120 min z1jZ+z1jZ+ Škola Typ_1 180 min Trasa_3 5  Trasa_2 3  Trasa_1 4  Kolikrát typ 1 bude nasazen na trasu j

31 Úloha o rozmístění dopravní flotily „náš zákazník, náš pán“ Typ_2 120 min z1jZ+z1jZ+ Škola Typ_1 180 min Trasa_3 5  Trasa_2 3  Trasa_1 4  Kolikrát typ 1 bude nasazen na trasu j

32 Úloha o rozmístění dopravní flotily „kde nic není, ani čert nebere“ Typ_2 120 min z1jZ+z1jZ+ Škola Typ_1 180 min Trasa_3 5  Trasa_2 3  Trasa_1 4  Kolikrát typ 1 bude nasazen na trasu j

33 Úloha o přidělování dopravních prostředků Pro zabezpečení stavby je třeba v průběhu jednoho dne dovézt ze železáren 70 t armovací ocele a z cementárny 135 t cementu. Každý z uvedených podniků se nachází v jiném místě a obě místa jsou od stavby vzdálená tak, že každé vozidlo použité na přepravu je za den schopno zvládnout jen jedinou cestu ze stavby do jednoho z podniků a zpět. K dispozici máme heterogenní park vozidel složený z 7 vozidel o nosnosti 10 t, 8 vozidel o nosnosti 8 t a 5 vozidel o nosnosti 20 t. Vozidla mohou převážet jak cement tak i ocel. Rozhodněte o nejvýhodnějším přidělení vozidel při nákladech {c ij } na jednu cestu tam a zpět do každého z obou podniků (1-železárny, 2-cementárna).

34 Úloha o přidělování dopravních prostředků z1jZ+z1jZ+ Stavba Typ_1: 10 tun 7 kusů Cementárna 150 t Železárna 70 t Kolikrát typ 1 bude nasazen na trasu j Typ_2: 8 tun 8 kusů Typ_3: 20 tun 5 kusů Rozhodněte o nejvýhodnějším přidělení vozidel při nákladech {c ij } na jednu cestu tam a zpět do každého z obou podniků (1-železárny, 2-cementárna).

35 Úloha o přidělování dopravních prostředků „náš zákazník, náš pán“ z1jZ+z1jZ+ Stavba Typ_1: 10 tun 7 kusů Cementárna 150 t Železárna 70 t Kolikrát typ 1 bude nasazen na trasu j Typ_2: 8 tun 8 kusů Typ_3: 20 tun 5 kusů

36 Úloha o přidělování dopravních prostředků „kde nic není, ani čert nebere“ z1jZ+z1jZ+ Stavba Typ_1: 10 tun 7 kusů Cementárna 150 t Železárna 70 t Kolikrát typ 1 bude nasazen na trasu j Typ_2: 8 tun 8 kusů Typ_3: 20 tun 5 kusů

37 Dopravní úloha s kontejnery Je třeba řešit zásobování n odběratelů s požadavky b j z m skladů s kapacitami a i, kde součet požadavků je menší než součet kapacit. K dopravě zboží je ale možno použít jen kontejnery o kapacitě K. Požadavky i kapacity je možno do kontejnerů libovolně dělit, ale náklady na dopravu jsou dány počty kontejnerů, které budou přepraveny mezi jednotlivými dvojicemi sklad-odběratel. Určete nyní nejlevnější přepravní plán pro zásobení odběratelů, když náklady na přepravu jednoho kontejneru z místa i na místo j jsou c ij.

38 Dopravní úloha s kontejnery Podnikatel

39 Dopravní úloha s fixní sazbou Organizace zásobuje čtyři vodárny vodou z tří zdrojů vlastní potrubní sítí. Pro doplnění zásob je třeba do vodáren dopravit pořadě b j = 80, 80, 140 a 80 m 3 vody denně. Kapacity zdrojů jsou pořadě a i = 100, 150 a 200 m 3 denně. Náklady na dopravu jedné jednotky vody ze zdroje i do vodárny j potrubím které je a nebo bude vybudováno, jsou dány maticí koeficientů c ij, i = 1..3 a j = 1..4. Informace, zda ze zdroje i do vodárny j je vybudováno potrubí, je dána 0-1 hodnotou koeficientu q ij, kde q ij = 0 znamená že ze zdroje i k vodárně j není vybudováno potrubí. Jeho vybudování si vyžádá investičními náklady, jejichž denní odpisy představují částku 300 peněžních jednotek. Je třeba určit co nejméně nákladný zásobovací program organizace.

40 Dopravní úloha s fixní sazbou Podnikatel

41 Lokační úloha Uncapacitated Facility Location Problem Je zadaná dopravní síť se zákazníky v uzlech j  J a s místy i  I v nichž je možno umístit servisní střediska poskytující služby. I jedno středisko umístěné kdekoliv v uzlu z množiny I je schopno obsloužit všechny zákazníky. Úloha spočívá v minimalizaci celkových nákladů, které zahrnují investiční náklady f i spojené s umístěním střediska v místě i a dále provozní náklady c ij spojené s obsluhou zákazníka j z místa i. Podmínkou je, že každý zákazník musí být obsloužen, nebo-li musí být přiřazen některému vybudovanému středisku.

42 Lokační úloha Uncapacitated Facility Location Problem Podnikatel

43 Úloha obchodního cestujícího (Travelling Salesman Problem) V úplné dopravní síti ( tj. síť, kde je každý uzel spojen úsekem s každým jiným uzlem ) o n uzlech a s nezáporným ohodnocením neorientovaných úseků c ij se v uzlu 1 nachází obchodní cestující. Je třeba pro něho nalézt trasu s co nejmenším celkovým ohodnocením použitých úseků tak, aby navštívil každý uzel právě jednou a aby se vrátil zpět do výchozího uzlu. ( Tato úloha je známa také pod názvem úloha nejlevnější hamiltonovské kružnice na úplném grafu.)

44 Úloha obchodního cestujícího (Travelling Salesman Problem) Podnikatel

45 Úloha okružních jízd (Vehicle Routing Problem-VRP) V úplné dopravní síti s uzly 1,..., n se vzdálenostmi c ij mezi nimi je v uzlu 1 umístěn zdroj a v uzlech 2,..., n odběratelé s požadavky b j. Ve zdroji jsou k dispozici vozidla o kapacitě K, kde b j  K pro j = 2,..., n. Určete trasy vozidel tak, aby jejich celková délka byla co nejmenší, aby všichni odběratelé byli obslouženi a to každý jen jednou návštěvou některého vozidla.

46 Úloha okružních jízd (Vehicle Routing Problem-VRP) Podnikatel

47 Úloha rozkladu množiny (Set Partitioning Problem) Bylo navrženo 7 různých tras, jimiž je možno obsloužit ze střediska 1 zákazníky 2, 3, 4 a 5 jsou to trasy 1-2-3-1 s náklady 7 1-4-5-3-1s náklady 12 1-4-3-1s náklady 8 1-4-1s náklady 5 1-5-1 s náklady 4 1-4-5-2-1s náklady 13 1-4-2-5-3-1s náklady 20 Určete nejlevnější sestavu tras, které obslouží všechny zákazníky tak, že každý zákazník bude ležet jen na jedné trase.

48 Podmínky "buď a nebo" Nechť z ostatních podmínek úlohy plánování výroby, které zde neuvádíme, vyplývá že výrobků typu 1 může být nejvýše 50 a výrobků typu 2 nejvýše 100. Je třeba zabezpečit, aby výroba buď nespotřebovala více pracovních hodin než 500 a nebo, aby nespotřebovala více než 600 tun materiálu. Přitom na výrobu jednoho výrobku typu 1 je třeba 20 hod a 27 tun, na výrobek typu 2 je třeba 18 hod a 30 tun.

49 Podmínky "buď a nebo" Podmínky, z nichž alespoň jedna má platit, jsou vzhledem k výrobnímu programu tyto: 20 x 1 + 18 x 2  500 27 x 1 + 30 x 2  600.

50 Podmínky "buď a nebo" Z maximálního počtu výrobků víme, že spotřeba prac. hodin nepřekročí 2800 hod a spotřeba ocele 4350 tun. Zavedeme bivalentní proměnnou y, hodnota 1 znamená, že řešení má vyhovovat podmínce 20 x 1 + 18 x 2  500 a platnost druhé podmínky nemusí být požadovaná. Hodnota 0 bude znamená druhý případ. 20 x 1 + 18 x 2  500 + 2300 (1- y) 27 x 1 + 30 x 2  600 + 3750 y. Proměnná y může nabývat pouze jedné ze dvou hodnot 1 a 0, bude-li y = 1, druhá z podmínek přejde v něco, co je v každém případě splněno a první bude vyžadována v původním tvaru. Pro y = 0 tomu bude právě naopak.


Stáhnout ppt "Zapsání modelu úlohy celočíselného programování do jazyka Mosel Deklarace seznamu indexů, polí a jejich naplnění koeficienty modelu, Deklarace rozhodovacích."

Podobné prezentace


Reklamy Google