Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilViktor Pokorný
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í
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 z1jZ+z1jZ+ Š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 z1jZ+z1jZ+ Š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 z1jZ+z1jZ+ Š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 z1jZ+z1jZ+ Š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ů z1jZ+z1jZ+ 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“ z1jZ+z1jZ+ 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“ z1jZ+z1jZ+ 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.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.