Dopravní úloha
Příklad Stavební firma má 4 cihelny o kapacitě 5, 80, 70 a 85 vagónů cihel denně. Dále má 5 staveb se spotřebou 50, 70, 25, 25 a 70 vagonu cihel denně. Náklady na přepravu 1 vagonu cihel z i-té cihelny na j-tou stavbu udává matice Aij: Úkolem je vymyslet co nejlevnější rozpis přepravy 240 50 70 25 5 9 7 10 2 80 14 11 13 85 8
Matematická formulace X11 až x45 >= 0 x11 + x12 + x13 + x14 + x15 <= 5 x21 + x22 + x23 + x24 + x25 <= 80 x31 + x32 + x33 + x34 + x35 <= 70 x41 + x42 + x43 + x44 + x45 <= 85 x11 + x21 + x31 + x41 >= 50 x12 + x22 + x32 + x42 >= 70 x13 + x23 + x33 + x43 >= 25 x14 + x24 + x34 + x44 >= 25 x15 + x25 + x35 + x45 >= 70 min 9x11 + 7x12 + 10x13 + 2x14 + 2x15 + 14x21 + 11x22 + 11x23 + 7x24 + 5x25 + 14x31 + 13x32+ 14x33 + 7x34 + 11x35 + 11x41 + 14x42 + 14x43 + 8x44 + 5x45
Řešení Optimální rozpis přepravy x12=5, x22=20, x23=25, x25=35, x32=45, x34=25, x41=50, x45=35 Minimální cena: 2190 240 50 70 25 5 9 7 5 10 2 80 14 20 7 5 35 13 45 7 25 11 85 8
Slovní formulace Existuje určitý počet míst (n) nazývaných dodavatelé, kde se nachází nějaký materiál. Dále existuje m míst - spotřebitelů, kam je potřeba tento materiál dopravit. U každého dodavatele a spotřebitele je známa jeho kapacita. Dále jsou známy jednotkové přepravní sazby pro všech n x m cest. Úkolem je najít takový rozpis přepravy, který by respektoval všechny kapacity dodavatelů a odběratelů a který by stál co nejméně peněz.
Předpoklady Homogennost převáženého materiálu (je jedno odkud kam co vozím, záleží jen na přepravních sazbách). Dělitelnost materiálu (převážený materiál lze libovolně dělit na menší části). Lineární závislost ceny přepravy na množství přepravovaného materiálu.
Matematická formulace Hodnoty xij z prostoru Rmxn budou označovat velikosti přeprav po trase od i-tého dodavatele k j-tému odběrateli, di i=1..n kapacity dodavatelů, oj j=1..m kapacity odběratelů a cij i=1..n j=1..m jednotkové přepravní sazby.
Matematická formulace Omezující podmínky: xij >= 0 i=1..n j=1..m x11 + x12 + ... + x1m <= d1 ... xn1 + xn2 + ... + xnm <= dn x11 + x21 + ... + xn1 >= o1 x1m + x2m + ... + xnm >= om Kriteriální funkce: c11x11 + c12 x12 + ... + c1nx1n + c21x21 + ... + cnmxnm ---> min
Vyvážená a nevyvážená úloha Pokud se součet kapacit dodavatelů a odběratelů rovná, hovoříme o vyvážené dopravní úloze. V opačném případě o úloze nevyvážené. Nevyváženou úlohu lze převézt na vyváženou pomocí přidání fiktivního dodavatele, či fiktivního spotřebitele.
Vogelova diferenční metoda řešení U každého řádku či sloupce spočítám diferenci mezi aktuálně nejnižší a druhou nejnižší přepravní sazbou. Vyberu největší takovou diferenci a v jejím řádku (resp. sloupci) nejnižší přepravní sazbu. Pokud existuje vice stejných diferencí rozhodnu se podle absolutně nejnižší přepravní sazby. Takto nalezenou cestu obsadím maximální možnou přepravou z hlediska kapacit příslušného dodavatele a odběratele.
Vogelova metoda Vogelova metoda v obecnosti nezaručuje nalezení optimálního řešení Řešení nalezené touto metodou se ale obvykle od optimálního příliš neliší Metody pro nalezení skutečně optimálního řešení jsou podstatně komplikovanější
Příklad 240 50 70 25 5 9 7 10 2 80 14 11 13 85 8
Spočítám diference 1. a 2. nejlevnější ceny přepravy 240 50 70 25 5 9 7 10 2 80 14 11 13 4 85 8 3 1
Najdu největší diferenci 240 50 70 25 5 9 7 10 2 80 14 11 13 4 85 8 3 1
V jejím sloupci najdu nejmenší přepravní sazbu 240 50 70 25 5 9 7 10 2 80 14 11 13 4 85 8 3 1
Tuto cestu obsadím maximální možnou přepravou z hlediska kapacit příslušného dodavatele a odběratele 240 50 70 25 5 9 7 10 2 5 2 80 14 11 13 4 85 8 3 1
Upravím kapacity dodavatelů a odběratelů 235 50 70 25 25 20 5 0 9 7 10 2 5 2 80 14 11 5 13 4 85 8 3 1
Upravím sloupcové diference – s 1. řádkem již nepočítám Upravím sloupcové diference – s 1. řádkem již nepočítám. Řádkové diference se nemění 235 50 70 25 25 20 5 0 9 7 10 2 5 2 80 14 11 5 13 4 85 8 3
Najdu největší diferenci 235 50 70 25 25 20 5 0 7 10 2 5 9 80 14 11 5 2 13 4 85 8 3
V jejím řádku najdu nejmenší přepravní sazbu 235 50 70 25 25 20 5 0 9 7 10 2 5 2 80 14 11 5 13 4 85 8 3
Tuto cestu obsadím maximální možnou přepravou z hlediska (zbytkových) kapacit příslušného dodavatele a odběratele 235 50 70 25 25 20 5 0 9 7 10 2 5 2 80 14 11 5 13 7 20 4 85 8 3
Upravím kapacity dodavatelů a odběratelů 215 50 70 25 25 20 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 4 85 8 3
Upravím řádkové diference – se 4. sloupcem již nepočítám Upravím řádkové diference – se 4. sloupcem již nepočítám. Sloupcové diference se nemění 215 50 70 25 25 20 0 5 0 9 7 10 2 5 2 80 14 11 5 6 70 50 13 7 20 85 8 3
Najdu největší diferenci 215 50 70 25 25 20 0 5 0 9 7 10 2 5 2 80 14 11 5 6 70 50 13 7 20 85 8 3
Vyšly dvě stejně velké maximální diference Vyšly dvě stejně velké maximální diference. V obou řádcích najdu minimální přepravní sazbu, abych vybral tu menší 215 50 70 25 25 20 0 5 0 9 7 10 2 5 2 80 14 11 5 6 70 50 13 7 20 85 8 3
I tyto minimální sazby vyšly stejně, vyberu tedy (náhodně) jednu z nich a obsadím ji maximální možnou přepravou 215 50 70 25 25 20 0 5 0 9 7 10 2 5 2 80 14 11 5 6 70 50 13 7 20 85 8 5 70 3
Upravím kapacity dodavatelů a odběratelů 145 50 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 6 70 50 13 7 20 85 15 8 5 70 3
Upravím řádkové diference – s 5. sloupcem již nepočítám Upravím řádkové diference – s 5. sloupcem již nepočítám. Sloupcové diference se nemění 145 50 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 8 5 70 3
Najdu největší diferenci 145 50 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 8 5 70 3
Vyšly dokonce tři stejně velké maximální diference Vyšly dokonce tři stejně velké maximální diference. Ve všech případech najdu minimální přepravní sazbu v příslušných řádcích a sloupcích 145 50 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 8 5 70 3
Pro další práci vyberu cestu 4-1, na kterou ukazují dva ukazatelé Pro další práci vyberu cestu 4-1, na kterou ukazují dva ukazatelé. Obsadím ji maximální možnou přepravou 145 50 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 11 15 8 5 70 3
Upravím kapacity dodavatelů a odběratelů 130 50 35 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 0 11 15 8 5 70 3
Upravím sloupcové diference – se 4. řádkem již nepočítám Upravím sloupcové diference – se 4. řádkem již nepočítám. Řádkové diference se nemění 130 50 35 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 0 11 15 8 5 70 3
Najdu největší diferenci 130 50 35 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 0 11 15 8 5 70 3
V jejím sloupci najdu nejmenší přepravní sazbu 130 50 35 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 5 70 50 13 7 20 1 85 15 0 11 15 8 5 70 3
Tuto cestu obsadím maximální možnou přepravou 130 50 35 70 25 25 20 0 70 0 5 0 9 7 10 2 5 2 80 14 11 11 25 5 70 50 13 7 20 1 85 15 0 11 15 8 5 70 3
Upravím kapacity dodavatelů a odběratelů 105 50 35 70 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 14 11 11 25 5 70 50 13 7 20 1 85 15 0 11 15 8 5 70 3
Upravím řádkové diference – se 3. sloupcem již nepočítám Upravím řádkové diference – se 3. sloupcem již nepočítám. Sloupcové diference se nemění 105 50 35 70 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 14 11 11 25 5 3 70 50 13 7 20 1 85 15 0 11 15 8 5 70
Najdu největší diferenci 105 50 35 70 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 14 11 11 25 5 3 70 50 13 7 20 1 85 15 0 11 15 8 5 70
V jejím řádku najdu nejmenší přepravní sazbu 105 50 35 70 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 14 11 11 25 5 3 70 50 13 7 20 1 85 15 0 11 15 8 5 70
Tuto cestu obsadím maximální možnou přepravou 105 50 35 70 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 14 11 55 11 25 5 3 70 50 13 7 20 11 1 85 15 0 11 15 8 5 70
Upravím kapacity dodavatelů a odběratelů 50 50 35 70 15 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 0 14 11 55 11 25 5 3 70 50 13 7 20 11 1 85 15 0 11 15 8 5 70
Zbyl mi poslední řádek s nenulovou zbytkovou kapacitou Zbyl mi poslední řádek s nenulovou zbytkovou kapacitou. Jeho cesty tedy tedy obsadím podle zbytkových kapacit odběratelů 50 50 35 70 15 25 0 25 20 0 70 0 5 0 9 7 10 2 5 2 80 55 0 14 11 55 11 25 5 3 70 50 14 35 13 15 7 20 11 1 85 15 0 11 15 8 5 70
Výsledné řešení má cenu přepravy 2230 240 50 70 25 5 9 7 10 2 5 2 80 14 11 55 11 25 14 35 13 15 7 20 11 85 11 15 8 5 70
Řešení nalezené Vogelovou metodou není optimální, ale od optima se příliš neliší 2190 50 70 25 5 9 7 5 10 2 80 14 20 7 5 35 13 45 7 25 11 85 8 2230 50 70 25 5 9 7 10 2 5 2 80 14 11 55 11 25 14 35 13 15 7 20 11 85 11 15 8 5 70