Distribučí úlohy DISTRIBUČNÍ ÚLOHY KONTEJNEROVÝ DOPRAVNÍ PROBLÉM, ROZŠÍŘENÁ ÚLOHA BATOHU (BIN PACKING PROBLEM), ÚLOHA OPTIMÁLNÍHO ROZMÍSTĚNÍ ZAŘÍZENÍ, ÚLOHA O POKRYTÍ. POKRÝVACÍ A DĚLÍCÍ PROBLÉM (SET COVERING A SET PARTITIONING PROBLÉM) Cíle je optiálí pokrytí či děleí ějaké ožiy. Měje apříklad úkoly U = {U 1,U 2 U }, M = {1,2 }. Dále ěje firy F 1, F 2 F. Každá fira zajišťuje určitou podožiu ze všech úkolů, a to za ceu c j (tz. každý úkol zajišťuje fira za stejou ceu). V atici A áe iforace o to, zda je fira j schopa zajistit úkol i: a ij = 1 tehdy, pokud je fira j schopa úkol i zajistit, jiak 0. Cíle pokrývacího probléu je vybrat firy tak, aby byly co ejlevěji pokryty všechy úkoly. z = j=1 c j x j i, Miializujee celkové áklady a zajištěí úkolů. Často se iializuje pouze sua xj, tedy počet použitých fire. j=1 a ij x j 1, i = 1, 2,,, aij = 1 tehdy, pokud je fira j schopá zajistit úkol i. Podíka říká, že každý úkol usí zajišťovat alespoň jeda fira., a sčítáe vlastě je přes ty firy, které jsou schopy i-tý projekt zajistit, protože jiak je aij rovo 0. Případě při rozdělováí pracovíků a sěy (tz. úkoly jsou sěy) apod. eusí být apravo utě 1, ěkdy si přejee, aby a sěě byli iiálě dva pracovíci apod. x j {0, 1}, j = 1, 2,,. xj = 1 tehdy, pokud je vybráa fira j Jedou z aplikací je apříklad výstavba staic rychlé pooci v růzých lokalitách (aalogie fire), které ají obsluhovat určité obvody (aalogie úkolů). V atici A je prvek a ij rove 1 tehdy, pokud je staice v j-té lokalitě ve staoveé dojezdové vzdáleosti od i-tého obvodu. c ij pak začí apříklad áklady a provoz staice v j-té lokalitě. z = j=1 c j x j i, Miializujee celkové áklady a provoz staic. j=1 a ij x j 1, i = 1, 2,,, aij = 1 tehdy, pokud j-tá staice v požadovaé dojezdové vzdáleosti. Každý obvod usí obsluhovat alespoň jeda staice. x j {0, 1}, j = 1, 2,,. xj = 1 pokud bude v lokalitě j postavea staice Cíle dělícího probléu je vybrat firy tak, aby byly projekty rozděley ezi ě tak, aby každý projekt zajišťovala právě jeda fira a áklady přito byly iiálí. z = j=1 c j x j i, Miializujee celkové áklady a zajištěí projektů. Často se iializuje pouze sua xj, tedy počet použitých fire. j=1 a ij x j = 1, i = 1, 2,,, aij = 1 tehdy, pokud je fira j schopá zajistit projekt i. Každý projekt usí zajišťovat právě jeda fira. Případě při rozdělováí pracovíků a sěy apod. eusí být apravo utě jedička, ěkdy si přejee, aby a sěě byli právě dva pracovíci apod. x j {0, 1}, j = 1, 2,,. xj = 1 tehdy, pokud je vybráa fira j Leka Fiřtová (2014)
Distribučí úlohy!v čajově pracuje celke 8 čajeů a vrchí čaje přeýšlí, kteří z ich by ěli teto týde přijít do práce. Každý večer od podělí do pátku usí být v čajově alespoň dva z ich. Každý z ich sdělil vrchíu čajeovi, který večer by ohl dorazit. Jedička ozačuje, že čaje ůže přijít, ula že přijít eůže. C1 C2 C3 C4 C5 C6 C7 C8 po 0 0 0 1 1 0 1 1 út 1 0 1 1 1 1 0 0 st 1 1 0 0 0 1 0 1 čt 0 1 0 1 1 0 1 1 pá 1 0 1 1 0 1 1 1 Cíle je iializovat počet čajeů, kteří budou teto týde v práci.; odel: sets: caje/1..8/:x; de/po,ut,st,ct,pa/; prirazei(de,caje): a; edsets data: a = 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1; eddata i = @su(caje(j): x(j)); @for(de(i): @su(caje(j): a(i,j)*x(j)) >=2);!pokrývací problé: aspoň 2 čajei ta usí být každý večer;!@for(de(i): @su(caje(j): a(i,j)*x(j)) >=2);!dělící problé: právě 2 čajei; @for(caje: @bi(x)); ed Výsledek pokrývacího probléu: teto týde by ěli přijít čajei číslo 1, 4 a 8. Úloha á alterativí optiálí řešeí. C1 C2 C3 C4 C5 C6 C7 C8 po 0 0 0 1 1 0 1 1 út 1 0 1 1 1 1 0 0 st 1 1 0 0 0 1 0 1 čt 0 1 0 1 1 0 1 1 pá 1 0 1 1 0 1 1 1 x j 1 0 0 1 0 0 0 1 Leka Fiřtová (2014)
Distribučí úlohy ÚLOHA O POKRYTÍ Typický příklade úlohy o pokrytí je situace, kdy áe obvodů O 1, O 2 O, v ichž chcee postavit celke K obslužých staic, které všech těchto obvodů obsluhovat, přičež > K. Navíc je třeba určit, které obvody budou obsluhováy kterou staicí. K dispozici áe iforace o čase/dojezdové vzdáleosti ze staice postaveé v obvodu O i do obvodu O j a průěrou frekveci zásahů v každé obvodu. Cíle je rozhodout, ve kterých obvodech postavit obslužé staice a které obvody ji přiřadit tak, aby doba zásahu byla iiálí. Na rozdíl od přiřazovacího probléu eplatí, že jede prvek ožiy usí být přiřaze právě jedou jiéu prvku, aopak jede prvek ožiy (jeda staice) by ěla obsluhovat více prvků. Na rozdíl od pokrývacího probléu títo odele určíe přesé přiřazeí. U pokrývacího probléu jse pouze zjistili, které firy vybrat, aby byly všechy úkoly splěy, ale ikoli která fira by ěla dělat který úkol. Všechy úkoly zajišťovala daá fira s týiž áklady. Tady se však áklady staic a obsluhu jedotlivých obvodů (v podobě dojezdových vzdáleostí) liší. Modele zjistíe i jedozačé přiřazeí obvodů jedotlivý staicí v závislosti a těchto ákladech. Zavádí se dvě biárí proěé: y i, která je rova 1, pokud je v lokalitě O i zřízea staice, jiak 0 x ij, která se rová 1, pokud staice v obvodu O i obsluhuje staici v obvodě O j Náklady (čas či vzdáleost) a dojezd ze staice v i-té obvodě do j-tého obvodu ozačíe c ij. Frekveci zásahů v j-té obvodě ozače f j. z = i=1 j=1 c ij x ij f j i Miializujee dojezdový čas/vzdáleost ásobeou frekvecí zásahů. j=1 x ij y i i = 1, 2,, (1) Když bude v obvodě i staice, bude obsluhovat ejvýše obvodů, jiak 0. i=1 x ij = 1 j = 1, 2,, (2) Každý obvod usí být obsluhová právě jedou staicí. i=1 y i = K (3) Celke usí být zřízeo K staic. x ij {0, 1}, i = 1,2, j = 1, 2,, (4) Je obvod j obsluhová staicí i? y i {0, 1}, i = 1, 2,, (5) Je v obvodě i postavea staice? Možé (e utě optiálí) řešeí by ohlo vypadat takto: xij O1 O2 O3 O4 O5 yi O1 4 3 7 8 3 1 O2 6 4 5 4 8 0 O3 8 9 7 2 9 0 O4 7 6 3 4 6 1 O5 6 6 7 6 7 0 fj 10 8 5 12 9 Leka Fiřtová (2014)
Distribučí úlohy ÚLOHA OPTIMÁLNÍHO ROZMÍSTĚNÍ ZAŘÍZENÍ (PLANT LOCATION PROBLEM) Máe k dispozici M = {1,2, } íst a v ěkterých z ich chcee zřídit sklad. Každý sklad á kapacitu a i a fixí áklady a jeho provoz jsou f i. Dále áe N zákazíků = {1,2, } a každý z ich á určité požadavky b j. Záe jedotkové přepraví áklady c ij z i-tého skladu k j-téu zákazíkovi. Naší cíle je určit optiálí rozístěí skladů tak, aby byly splěy požadavky zákazíků, a to s iiálíi áklady. Zavádí se jeda biárí proěá: x i, která je rova 1, pokud je v ístě Mi zříze sklad, jiak 0 Dále se zavádí proěá y ij y ij, představuje ožství zboží přepravovaého z i-tého skladu k j-téu zákazíkovi z = i=1 j=1 c ij y ij + i=1 f i x i i Miializujee dojezdový čas/vzdáleost ásobeou frekvecí zásahů. j=1 y ij a i x i i = 1,2 (1) Když bude v i-té ístě zříze sklad, usí být součet přepraveého zboží do všech j íst eší ež jeho kapacita. i=1 y ij = b j j = 1, 2,, (2) Musí být uspokojey požadavky všech zákazíků. y ij 0 i = 1,2, j = 1, 2,, (3) Kolik zboží přepravuje i-tý sklad k j-téu zákazíkovi? x i {0, 1}, i = 1, 2,, (4) Je v ístě i zříze sklad? Jedodušší příklad:!mae k dispozici 6 ist, kde bycho ohli zridit sklad, a fixi aklady by byly: 25, 15, 35, 30, 20 a 25 tisíc Kč. Každý sklad á určitou kapacitu: 60, 50, 30, 35, 25 a 30 tisíc kusů. Zároveň áe 5 zákazíků, kteří chtějí odebírat zboží z těchto skladů. Jejich požadavky jsou 12, 18, 23, 17 a 30 tisíc ks zboží. Matice jedotkových přepravích ákladů je uvedea íže. Ve kterých ístech áe postavit sklad a jak rozvrhout rozvoz zboží?; cij O1 O2 O3 O4 O5 fi ai S1 2 3 2 4 5 25 60 S2 3 4 5 6 5 15 50 S3 1 1 7 8 2 35 30 S4 5 6 3 4 2 30 35 S5 5 6 4 3 2 20 25 S6 4 3 2 6 6 25 30 bj 12 18 23 17 30 odel: sets: sklady/1..6/:f,x,kapacity;!f = fixi aklady, x = zrize sklad?; odberatele/1..5/:pozadavky; preprava(sklady,odberatele): y,c;!c = prepravi aklady, y = obje prepravy; edsets i = @su(preprava(i,j): y(i,j)*c(i,j)) + @su(sklady(i): x(i)*f(i)); @for(odberatele(j): @su(sklady(i): y(i,j)) = pozadavky(j)); @for(sklady: @bi(x)); @for(sklady(i): @su(odberatele(j): y(i,j)) <= kapacity(i)*x(i));!pokud bude v iste i zrize sklad, pak esi preprava prekrocit pozadavky; Leka Fiřtová (2014)
Distribučí úlohy data: kapacity = 60 50 30 35 25 30; pozadavky = 12 18 23 17 30; f = 25 15 35 30 20 25; c = 2 3 2 4 5 3 4 5 6 5 1 1 7 8 2 5 6 3 4 2 5 6 4 3 2 4 3 2 6 6; eddata Řešeí: cij O1 O2 O3 O4 O5 Σ kap xi S1 5 0 23 17 0 45 60 1 S2 0 0 0 0 0 0 50 0 S3 7 18 0 0 5 30 30 1 S4 0 0 0 0 0 0 35 0 S5 0 0 0 0 25 20 25 1 S6 0 0 0 0 0 0 30 0 Σ 12 18 23 17 30 poz 12 18 23 17 30 Leka Fiřtová (2014)
Distribučí úlohy Trošku složitější příklad: Popis situace: Společost PHARMA objevila v Tiché oceáu tři ostrovy sopečého původu (O1, O2, O3), a ichž se vyskytuje zvláští horia, která by podle ich ohla být používaá pro lékařské účely. Proto se rozhodla zřídit a ich výzkué staice. Problée je, že kroě této horiy a ostrovech eí ic jiého, proto usí PHARMA staice zásobovat z peviy. Vzhlede k tou, že pevia je veli daleko, došla PHARMA a základě ákladové aalýzy k závěru, že z í eá sysl dovážet do staic vodu. Tu lze totiž a rozdíl od ostatích potřeb pro jejich provoz odebírat i ze čtyř eobydleých ostrovů poblíž (D1, D2, D3, D4). Vodu je ožé dopravovat v barelech, a to buď a alých lodích, ebo letecky. Barely ají kapacitu 1000 litrů vody a jsou přepravováy vždy plé. Do jedé lodi se vejde 60 barelů, letadlo ůže přepravit 40 barelů. Lodě ai letadla společost kupovat eusí, jelikož jich vlastí dostatek. Náklady a přepravu jedoho letadla, respektive jedé lodě z ostrovů s vodou a ostrovy se staicei v tisících Kč jsou uvedey v tabulce: LOĎ O1 O2 O3 LETADLO O1 O2 O3 D1 9 12 15 D1 12 16 20 D2 18 15 6 D2 24 20 8 D3 18 18 12 D3 24 24 16 D4 15 21 15 D4 20 28 20 Na prví ostrově (O1) je potřeba ěsíčě 180 tisíc litrů vody, a druhé 120 tisíc litrů a a třetí 200 tisíc litrů. Bylo zjištěo, že vzhlede k relativě aléu průtoku vodích toků a dodavatelských ostrovech je ožé z prvího ostrova (D1) ěsíčě poskytout 150 tisíc litrů vody, z druhého 100 tisíc litrů, z třetího 250 tisíc litrů a ze čtvrtého 200 tisíc litrů. Aby bylo ožé realizovat přepravu, je však uté a dodavatelských ostrovech postavit buď alý přístav, ebo příletovou plochu (azvěe trochu adeseě letiště ). Měsíčí obsluha přístavu stojí 35 tisíc Kč, ěsíčí obsluha příletové plochy pak je 18 tisíc Kč, a druhou strau přeprava letadle je dražší ež přeprava lodí. Náklady a saoté zřízeí přístavů a letišť jsou srovatelé, a eí tedy třeba je při optializaci uvažovat, protože vzhlede ke kapacitá dodavatelů je zřejé, že budou postavey celke tři objekty (společost by zřizovací áklady zahrula do výpočtu v případě, že by výsledke optializace byla stavba čtyř objektů, a zřizovací áklady by tudíž také hrály roli). Protože á PHARMA obavu, že projekt bude stát velké ožství peěz, iforovala se u Evropské uie ohledě gratů. Zjistila, že EU je ochotá výzku fiačě podporovat, ale pouze ve výši 600 eur, tz. 15 tisíc Kč ěsíčě, a avíc je za předpokladu, že se při výše zíěé přepravě vody budou používat výhradě lodě, protože je to ekologičtější a evziká tolik eisí CO 2, proti který EU bojuje. 1. Problé: 2. Na kterých ostrovech s vodou se á zřídit přístav a a kterých letiště? 3. Z kterého ostrova a který je ejvýhodější přepravovat vodu a jaký dopraví prostředke? 4. V jaké ožství á být voda přepravováa, tz. kolika loďi či letadly? 5. Vyplatí se využít podpory EU? Leka Fiřtová (2014)
Distribučí úlohy Model 1:! Proěé: x = počet barelů s vodou, které jsou přepravovaé od D(i) k O(j) y = počet lodí přepravovaých od D(i) k O(j) w = počet letadel přepravovaých od D(i) k O(j) P = přístav (biárí proěá, kdy P(i)=1, je-li a ostrově D(i) zříze přístav, P=0 jiak) L = letiště (biárí proěá, kdy L(i)=1, je-li a ostrově D(i) zřízeo letiště, P=0 jiak) Paraetry: c = ěsíčí áklady a provoz přístavu d = ěsíčí áklady a provoz letiště aklod = áklady a přepravu jedé lodi od D(i) k O(j) aklet = áklady a přepravu jedoho letadla od D(i) k O(j) pozadavky = ěsíčí potřeba vody u jedotlivých odběratelů (uvedea v počtu barelů) kapacity = ožství, které je ožo ěsíčě dodat z jedotlivých ostrovů s vodou (uvedeo v počtu barelů) kaplod = kapacita lodi; kaplet = kapacita letadla; odel: sets: odberatele/1..3/:pozadavky; dodavatele/1..4/:kapacity,p,l; preprava(dodavatele,odberatele): aklod,aklet,x,y,w; edsets data: aklod= 9 12 15 18 15 6 18 18 12 15 21 15; aklet= 12 16 20 24 20 8 24 24 16 20 28 20; pozadavky = 180 120 200; kapacity = 150 100 250 200; kaplod=60; kaplet=40; c=35; d=18; eddata i = @su(preprava: aklod*y)+@su(preprava: aklet*w)+@su(dodavatele: c*p)+@su(dodavatele:d*l); @for(dodavatele: @bi(p)); @for(dodavatele: @bi(l)); @for(odberatele(j): @su(dodavatele(i): x(i,j))=pozadavky(j)); @for(dodavatele(i): @su(odberatele(j): x(i,j))<=kapacity(i)*(p(i)+l(i))); @for(dodavatele(i): P(i)+L(i)<=1);!a ostrove uze byt je jede pristav ci letiste @for(preprava(i,j): x(i,j)<=kaplod*y(i,j)+kaplet*w(i,j)); @for(preprava: @gi(y)); @for(preprava: @gi(w)); @for(dodavatele(i): @su(odberatele(j): w(i,j))<= 100*L(i)); @for(dodavatele(i): @su(odberatele(j): y(i,j))<= 100*P(i));!tyto dve podíky zajistuji, ze pokud ebude a i-té ostrove letiste, ebudou z ej letat zada letadla, totez v pripade lodi ed Leka Fiřtová (2014)
Distribučí úlohy Výsledky 1: Účelová fukce: 209 tisíc Kč Matice X O1 O2 O3 Celke Přístav Letiště D1 0 0 0 0 0 0 D2 0 0 80 80 0 1 D3 0 120 120 240 1 0 D4 180 0 0 180 1 0 Celke 180 120 200 Letadla O1 O2 O3 Lodě O1 O2 O3 D1 0 0 0 D1 0 0 0 D2 0 0 2 D2 0 0 0 D3 0 0 0 D3 0 2 2 D4 0 0 0 D4 3 0 0 Model 2 Přidáe podíku: @for(dodavatele(i): L(i) = 0); Výsledky 2: Účelová fukce: 222 tisíc Kč Matice X O1 O2 O3 Celke Přístav Letiště D1 0 120 0 120 1 0 D2 0 0 0 0 0 0 D3 0 0 200 200 1 0 D4 180 0 0 180 1 0 Celke 180 120 200 Letadla O1 O2 O3 Lodě O1 O2 O3 D1 0 0 0 D1 0 2 0 D2 0 0 0 D2 0 0 0 D3 0 0 0 D3 0 0 4 D4 0 0 0 D4 3 0 0 Iterpretace Pokud by se společost rozhodla evyužít grat EU, pak by pro i bylo ejvýhodější zřídit a druhé ostrově letiště a a třetí a čtvrté ostrově přístav. Z druhého dodavatelského ostrova poletí dvě letadla a třetí odběratelský ostrov, z třetího dodavatelského ostrova poplují dvě lodě a druhý a dvě a třetí odběratelský ostrov, ze čtvrtého dodavatelského ostrova poplují tři lodě a prví odběratelský ostrov. Požadavky odběratelských ostrovů by byly splěy, kapacity dodavatelů by ebyly vyčerpáy. Lodě i letadla by jely zcela plé a společost by celke zaplatila 209 tisíc Kč. Pokud by se společost rozhodla využít gratu EU, pak by esěla vůbec stavět letiště. Proto by a prví, třetí a čtvrté dodavatelské ostrově zřídila přístavy. Z prvího dodavatelského ostrova by pluly dvě lodě a druhý odběratelský ostrov, ze třetího dodavatelského ostrova čtyři lodě a třetí odběratelský ostrov a ze čtvrtého dodavatelského ostrova tři lodě a prví odběratelský. Kapacity dodavatelských ostrovů by rověž ebyly překročey. Čtvrtá loď plující z dodavatelského ostrova by ebyla zcela plá, ale vzhlede k ejistotě doby trváí celého projektu společost euvažuje při výpočtech využití této kapacity k vytvářeí zásoby a další ěsíce. V případě zřízeí tří přístavů by společost ěsíčě zaplatila 222 tisíc Kč. Jelikož od částky 222 tisíc Kč je ožé odečíst 15 tisíc Kč, které společost dostae od EU, celkové áklady při druhé alterativě budou je 207 tisíc Kč, a proto se právě pro tuto alterativu společost rozhode. Leka Fiřtová (2014)
Distribučí úlohy ROZŠÍŘENÁ ÚLOHA BATOHU (BIN PACKING PROBLEM) Uvažuje typů výrobků, které ozače V 1, V 2,, V. U každého typu výrobku je dá jeho počet r j, hotost a j a obje b j. K dispozici áe kotejerů o hotosti K a objeu L. Chtěli bycho uístit všechy tyto výrobky do kotejerů tak, aby ebyla překročea jejich hotost ai obje, a aby byl zároveň počet použitých kotejerů co eješí. Zavádí se jeda biárí proěá: x i, která je rova 1, pokud je i-tý kotejer obsaze, jiak 0. Dále se zavádí ezáporá celá proěá y ij y ij, představuje ožství j-tého výrobku v i-té kotejeru z = i=1 x i i Miializujee počet použitých kotejerů. i=1 y ij = r j j = 1,2 (1) Pro každý výrobek typu j usí platit, že do všech kotejerů dohroady usíe uístit všech rj výrobků. j=1 a j y ij Kx i i = 1,2 (2) Pro každý kotejer i usí platit, že jeho kapacita eí překročea (hotost). j=1 b j y ij Lx i i = 1,2 (3) Pro každý kotejer i usí platit, že jeho kapacita eí překročea (obje). y ij 0, celé i = 1,2, j = 1, 2,, (4) Kolik výrobku j je v kotejeru i? x i {0, 1}, i = 1, 2,, (5) Je i-tý kotejer obsaze?!fira á ožost si proajout 10 idetických kotejerů o kapacitě 5000 kg, s jejichž poocí á přepravit 3 druhy výrobků v ásledující ožství: 65 ks, 68 ks a 150 ks. Hotost výrobků je 50 kg, 86 kg a 63 kg. Cíle je iializovat áklady spojeé s proáje kotejerů, tedy vlastě počet použitých kotejerů.; odel: sets: vyrobek/1..3/:pozadavek,hotost; kotejer/1..10/:x; preprava(kotejer,vyrobek): y; edsets data: hotost = 40 86 63; pozadavek = 65 68 150; kapacita = 5000; eddata i = @su(kotejer: x); @for(vyrobek(j): @su(kotejer(i): y(i,j)) = pozadavek(j)); @for(kotejer: @bi(x)); @for(kotejer(i): @su(vyrobek(j): y(i,j)*hotost(j)) <=x(i)*kapacita); ed!řešeí jsou 4 použité kotejery.; Zdroj: Ig. Ja Fábry, Ph.D.: 4EK314 Diskrétí odely Leka Fiřtová (2014)
Distribučí úlohy KONTEJNEROVÝ DOPRAVNÍ PROBLÉM Kotejerový dopraví problé je odifikací klasického dopravího probléu. V ě je cíle rozvézt zboží od dodavatelů D 1,D 2 D k odběratelů O 1,O 2...O tak, aby ebyla překročea kapacita dodavatelů a i, byly uspokojey požadavky odběratelů a celkové áklady a přepravu byly iiálí. z = i=1 j=1 c ij x ij i Miializujee áklady a přepravu, kde c ij jsou jjedotkové áklady a přepravu od dodavatele i k odběrateli ija xij je obje přepravy. j=1 x ij a i i = 1,2 (1) Pro každého dodavatele usí platit, že sua zboží přepraveá od ěj k odběratelů epřekročí jeho kapacitu. i=1 x ij = b j j = 1,2 (2) Pro každého odběratele usí platit, že sua zboží přepraveá k ěu od dodavatelů se bude rovat jeho požadavků. x ij 0 i = 1,2, j = 1, 2,, (3) Kolik výrobků je přepravováo z i do j? Na rozdíl od dopravího probléu se u kotejerového dopravího probléu přeprava realizuje poocí kotejerů o kapacitě K. Uvažuje dodavatele D 1,D 2 D s kapacitou a i a odběratele O 1,O 2...O s požadavky b j. Záe přepraví áklady a jede kotejer od i-tého dodavatele k j-téu odběrateli. Naší cíle je iializovat celkové přepraví áklady tak, abycho epřekročili kapacitu kotejeru ai kapacitu jedotlivých dodavatelů a zároveň uspokojili požadavky odběratelů. Zavádí se dvě proěé: x ij, představuje obje přepravy od dodavatele i k odběrateli j y ij, představuje počet kotejerů přepraveých od dodavatele i k odběrateli j (celočíselá) z = i=1 j=1 c ij y ij i Miializujee áklady a přepravu kotejerů. x ij Ky ij i = 1,2, j = 1,2 (1) Pokud bude přepravová kotejer z i do j, pak v ě usí být přepravováo ejvýše tolik zboží, kolik čií jeho kapacita. j=1 x ij a i i = 1,2 (2) Pro každého dodavatele usí platit, že sua zboží přepraveá od ěj k odběratelů epřekročí jeho kapacitu. i=1 x ij = b j j = 1,2 (3) Pro každého odběratele usí platit, že sua zboží přepraveá k ěu od dodavatelů se bude rovat jeho požadavků. y ij 0, celé i = 1,2, j = 1, 2,, (4) Kolik kotejerů je přepravováo z i do j? x ij 0 i = 1,2, j = 1, 2,, (5) Kolik výrobků je přepravováo z i do j? Leka Fiřtová (2014)
Distribučí úlohy!máe 4 dodavatele s kapacitai 30, 25, 21 a 35 tu a 5 odběratelů s požadavky 15,17, 22, 12 a 33 tu. Přeprava probíhá v kotejerech o kapacitě 10 tu. Náklady spojeé s přepravou 1 kotejeru od jedotlivých dodavatelů k odběratelů jsou dáy aticí C. Úkole je split požadavky odběratelů a iializovat celkové přepraví áklady C = 6 2 6 7 9 4 9 5 3 6 8 8 1 5 3 7 4 5 8 5 ; odel: sets: dodavatele/1..4/:kapacity; odberatele/1..5/:pozadavky; preprava(dodavatele,odberatele):x,y,c; edsets data: kapacity = 30 25 21 35; pozadavky = 15 17 22 12 33; C = 6 2 6 7 9 4 9 5 3 6 8 8 1 5 3 7 4 5 8 5; KAP = 10; eddata i = @su(preprava: y*c); @for(odberatele(j): @su(dodavatele(i): x(i,j)) = pozadavky(j)); @for(dodavatele(i): @su(odberatele(j): x(i,j)) <=kapacity(i)); @for(preprava: x<=kap*y); @for(preprava:@gi(y)); ed Zdroj: Ig. Ja Fábry, Ph.D.: 4EK314 Diskrétí odely ZDROJE: Ig. J. Fábry, Ph.D.: předášky 4EK314 Diskrétí odely, 2011. Leka Fiřtová (2014)