Zapsn modelu lohy celoselnho programovn do jazyka Mosel

  • Slides: 36
Download presentation
Zapsání modelu úlohy celočíselného programování do jazyka Mosel n n n n Deklarace seznamu

Zapsání modelu úlohy celočíselného programování do jazyka Mosel n n n n 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, Jen zde se liší zápis od úlohy Zápis obligatorních podmínek, lineárního Příkaz optimalizace, programování! Určení formy výstupu.

Úloha plánování výroby s nedělitelností Podnikatel vyrábí a prodává bramborové lupínky a hranolky pořadě

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

Jednotkový zisk z výroby a prodeje jednotlivých produktů n . . . prodává lupínky

Jednotkový zisk z výroby a prodeje jednotlivých produktů n . . . 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 12 Sk za = 1 kg kilogram lupínků =12 2+40 0. 4=40 40 Sk za 0. 4 kg 2 kg + kilogram oleje = brambor Zisk z 1 kg: 120 -40=80 Zisk z 15 kg balení c 1=15*80=1200

Jednotkový zisk z výroby a prodeje jednotlivých produktů n . . . prodává lupínky

Jednotkový zisk z výroby a prodeje jednotlivých produktů n . . . 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 12 Sk za 40 Sk za 0. 2 kg 1. 5 kg + = kilogram 1 kg kilogram oleje = brambor hranolků Zisk z 1 kg: 76 -26=50 =12 1. 5+40 0. 2=26 Zisk z 30 kg balení c 2=30*50=1500

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

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

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

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

Model úlohy plánování výroby s nedělitelností (Pole s koeficienty úlohy) n n n UNITPROF:

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

Deklarace množiny indexů a polí v jazyku MOSEL model "Chips and Frenchfries Production" uses

Deklarace množiny indexů a polí v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" Úvodní klíčové declarations slovo deklarace PRODUCTS=1. . 2 CONSOFPOT: array(PRODUCTS) of real CONSOFOIL: array(PRODUCTS) of real UNITPROF: array(PRODUCTS) of real end-declarations … Koncové klíčové end-model slovo deklarace

Inicializace polí v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1.

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

Deklarace rozhodovacích proměnných v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" declarations

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 *** Deklarace proměnných X(1), X(2) end-model

Zápis účelové funkce v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" declarations

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) *** Proměnná, která představuje zisk end-model

Zápis strukturálních podmínek v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" declarations

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

Deklarace celočíselných proměnných v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" Toto

Deklarace celočíselných proměnných v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" Toto jsou obligatorní podmínky declarations celočíselnosti *** 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

Příkaz optimalizace v jazyku MOSEL model "Chips and Frenchfries Production" uses "mmxprs" declarations ***

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

Úloha o batohu (Knapsack Problem) Do batohu je možno uložit náklad o hmotnosti 21

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

Úloha o batohu (Knapsack Problem) maximalizujte x 0 = 16 x 1+ 14 x

Ú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 xj {0, 1} pro j = 1, . . . , 6.

Úloha o batohu-vstupní údaje (Knapsack Problem) maximalizujte x 0 = 16 x 1+ 14

Ú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 xj {0, 1} pro j = 1, . . . , 6. Koeficienty cj jsou uloženy v textovém souboru KP_c. txt a koeficienty aj 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

Úloha o batohu (Knapsack Problem) model "Knapsack Problem" uses "mmxprs" Otevření souboru KP_c. txt

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

Úloha o batohu (Knapsack Problem) declarations c: array(1. . N) of integer a: array(1.

Ú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 Vynechání první položky souboru ! Reading from a text file fopen("KP_c. txt", F_INPUT) readln forall(j in 1. . N) readln(c(j)) fclose(F_INPUT) Načtení cj v cyklu

Úloha o batohu (Knapsack Problem) fopen("KP_a. txt", F_INPUT) readln forall(j in 1. . N)

Ú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

Úloha o batohu (Knapsack Problem) Profit: =sum(j in 1. . N) c(j)*X(j) sum(j in

Ú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

Úloha o batohu-výsledky (Knapsack Problem) Profit : = 27 X( 1) : = 0

Ú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

Přiřazovací úloha V dopravní síti se v místech t 1, t 2, t 3

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á {cij}. 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ů.

Přiřazovací úloha (Prezentace v grafu) 1 1 2 2 3 3 4 4 xij

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

Přiřazovací úloha

Přiřazovací úloha

Alokační úloha (Allocation Problem) Firma disponuje třemi velkými sklady v své distribuční síti. Z

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 ai = 5000, 7000 a 6000 tun zboží, pokrývají požadavky deseti velkoodběratelů. Jejich požadavky jsou pořadě bj = 2000, 1000, 800, 700, 900, 2200, 1800, 1700, 1100 a 1200 tun. Vzdálenosti skladů od velkoodběratelů jsou dány koeficienty {dij} 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.

Alokační úloha (Allocation Problem) b 1 a 2 1 b 6 b 3 b

Alokační úloha (Allocation Problem) b 1 a 2 1 b 6 b 3 b 2 b 7 2 b 4 a 3 b 8 3 b 5 Sklady j=1, 2, 3 b 9 b 10 zij {0, 1}zákazníci

Úloha o rozmístění dopravní flotily Školní správa zabezpečuje svoz dětí do škol od 7:

Ú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ů {tij } a {cij }. 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ší.

Úloha o rozmístění dopravní flotily Doby jízdy na jednotlivých trasách v min. a náklady

Ú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ů {tij } a {cij }. Trasa_1 4 z 1 j Z+ Typ_1 180 min Trasa_2 3 Škola Kolikrát typ 1 bude nasazen na trasu j Typ_2 120 min Trasa_3 5

Úloha o rozmístění dopravní flotily účelová funkce Trasa_1 4 z 1 j Z+ Typ_1

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

Úloha o rozmístění dopravní flotily „náš zákazník, náš pán“ Trasa_1 4 z 1 j

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

Úloha o rozmístění dopravní flotily „kde nic není, ani čert nebere“ Trasa_1 4 z

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

Úloha o přidělování dopravních prostředků Pro zabezpečení stavby je třeba v průběhu jednoho dne

Ú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 {cij } na jednu cestu tam a zpět do každého z obou podniků (1 -železárny, 2 -cementárna).

Úloha o přidělování dopravních prostředků Rozhodněte o nejvýhodnějším přidělení vozidel při nákladech {cij }

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

Úloha o přidělování dopravních prostředků „náš zákazník, náš pán“ Železárna 70 t z 1

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

Úloha o přidělování dopravních prostředků „kde nic není, ani čert nebere“ Železárna 70 t

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