Problem marszrutyzacji: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
drobne redakcyjne
Linia 1:
[[Plik:Vehicle Routing Problem Example.svg|thumb|right|300px|Graficzna prezentacja rozwiązania problemu marszrutyzacji (nieoptymalnego!). Zostały wyznaczone trzy marszruty (linie: ciągła, przerywana i kropkowana), które swój punkt początkowy i końcowy mają w bazie (żółty prostokąt „'''D'''”) oraz przebiegają przez wszystkie punkty pośrednie (klientów - czerwone, zielone i niebieskie punkty).]]
'''Problem marszrutyzacji''' – [[problem decyzyjny]] polegający na wyznaczeniu optymalnych tras przewozowych dla pewnej ściśle określonej liczby środków transportu, której zadaniem jest obsłużenie zbioru klientów znajdujących się w różnych punktach przy zachowaniu ograniczeń. Kryterium optymalizacji jest całkowity koszt transportu (wyrażony odległościowo, cenowo lub czasowo). Istnieją również rozwinięcia problemu uwzględniające więcej, niż jedno kryterium optymalizacji<ref name="MoVRP">{{Cytuj pismo |autor=Jozefowiez Nicolas, Semet Frédéric, Talbi El-Ghazali |tytuł=Multi-objective vehicle routing problems| czasopismo=[[European Journal of Operational Research]]| wydawca=Elseiver| wydanie=189| wolumin=2| strony=293–309| issn=0377-2217| język=en| data=2008| doi=10.1016/j.ejor.2007.05.055}}</ref>. Problem marszrutyzacji należy do podstawowej problematyki zarządzania operacyjnego flotą środków transportu (rzadziej zarządzania na wyższym szczeblu).
 
Problem ten jest rozwinięciem takich problemów jak:
* [[problem komiwojażera]] ({{w języku|en|traveling salesman problem}}),
* [[problem chińskiego listonosza]] ({{w języku|en|Chinese postman problem}}),
oraz zaliczany jest do problemów [[Problem NP-trudny|NP-trudnych]]. Z tego względu zazwyczaj jest rozwiązywany przy pomocy metod [[heurystyka (informatyka)|heurystycznych]]. Algorytmy dokładne mogą być wykorzystywane tylko dla problemów o stosunkowo niewielkiej liczbie klientów (do 135)<ref name="Laporte">{{cytuj stronę|url=http://www.transportation.put.poznan.pl/index.php?option=com_content&task=view&id=104&Itemid=1|tytuł=Fifty Years of Vehicle Routing|nazwisko=Laporte|imię=Gilbert|data=2009-04-23|praca=Prezentacja wygłoszona podczas Międzynarodowego Seminarium Transportowego|opublikowany=transportation.put.poznan.pl|język=en|data dostępu=2009-05-10}}</ref>.
 
oraz zaliczany jest do problemów [[Problem NP-trudny|NP-trudnych]]. Z tego względu zazwyczaj jest rozwiązywany przy pomocy metod [[heurystyka (informatyka)|heurystycznych]]. Algorytmy dokładne mogą być wykorzystywane tylko dla problemów o stosunkowo niewielkiej liczbie klientów (do 135)<ref name="Laporte">{{cytuj stronę| url=http://www.transportation.put.poznan.pl/index.php?option=com_content&task=view&id=104&Itemid=1| tytuł=Fifty Years of Vehicle Routing| nazwisko=Laporte| imię=Gilbert| data=2009-04-23| praca=Prezentacja wygłoszona podczas Międzynarodowego Seminarium Transportowego| opublikowany=transportation.put.poznan.pl| język=en| data dostępu=2009-05-10}}</ref>.
Problem został po raz pierwszy zaprezentowany przez [[George Dantzig|G.B. Dantziga]] oraz R.H. Ramsera w [[1959]] roku w pracy {{k|en|The Truck Dispatching Problem}} opublikowanej na łamach czasopisma ''[[Management Science]]''<ref>{{lang|en}}([[PDF]])[http://www.ams.org/notices/200703/fea-cottle.pdf Biografia G.B. Dantziga autorstwa Richarda Cottle, Ellisa Johnsona, and Rogera Wetsa]</ref>.
 
Problem został po raz pierwszy zaprezentowany przez [[George Dantzig|G.B. Dantziga]] oraz R.H. Ramsera w [[1959]] roku w pracy {{k|en|The Truck Dispatching Problem}} opublikowanej na łamach czasopisma ''[[Management Science]]''<ref>{{lang|en}}([[Portable Document Format|PDF]])[http://www.ams.org/notices/200703/fea-cottle.pdf Biografia G.B. Dantziga autorstwa Richarda Cottle, Ellisa Johnsona, and Rogera Wetsa].</ref>.
 
== Klasyczne ujęcie problemu ==
W klasycznym ujęciu problem sformułowany jest w postaci [[grafGraf nieskierowany(matematyka)|grafu nieskierowanego]] <math>\Gamma = (\Psi, \epsilon),</math>, gdzie <math>\Psi</math> oznacza zbiór wierzchołków, do których przypisane jest zapotrzebowanie, natomiast <math>\epsilon</math> zbiór krawędzi, do których przypisane są koszty przewozu ewentualnie czas lub długość trasy.
 
Minimalizowana jest funkcja
:: <math>\min minCC = \sum_{r \in R} \sum_{f \in \Psi} \sum_{g \in \Psi} c_{fg} x_{fgr} ,</math>
 
: gdzie:
<math> minC = \sum_{r \in R} \sum_{f \in \Psi} \sum_{g \in \Psi} c_{fg} x_{fgr} </math>
: ''<math>r''</math> – pojazd należący do zbioru jednorodnych (identycznych) pojazdów ''<math>R'',</math>
 
: ''<math>f'',</math> ''<math>g''</math> – wierzchołki pomiędzy, którymi odbywa się przewóz,
: gdzie:
: <math>c_{fg}</math> – koszt przewozu pomiędzy wierzchołkami ''<math>f''</math> i ''<math>g'',</math>
: ''r'' – pojazd należący do zbioru jednorodnych (identycznych) pojazdów ''R''
: <math>x_{fgr}</math> – zmienna binarna określająca, czy pomiędzy wierzchołkami ''<math>f''</math> i ''<math>g''</math> pojazd ''<math>r''</math> wykonuje przewóz.
: ''f'', ''g'' – wierzchołki pomiędzy, którymi odbywa się przewóz
: <math>c_{fg}</math> – koszt przewozu pomiędzy wierzchołkami ''f'' i ''g''
: <math>x_{fgr}</math> – zmienna binarna określająca, czy pomiędzy wierzchołkami ''f'' i ''g'' pojazd ''r'' wykonuje przewóz.
 
[[Warunek ograniczający decyzję|Warunkami ograniczającymi]] są: <!-- W całym akapicie jest coś nie tak z indeksami. Raz zmienne należą do zbioru wierzchołków, a raz do krawędzi. Należy to albo wyjaśnić/sprecyzować, albo poprawić. -->
* Występowanie tylko jednej bazy początkowej i końcowej (miejsca, z którego pojazdy rozpoczynają/kończą przewóz), z której/do której wyjeżdża dokładnie jeden pojazd ''<math>r''.</math> W przypadku wierzchołków pośrednich liczba pojazdów wjeżdżających jest równa liczbie pojazdów wyjeżdżających.:
*: <math>\forall_{r \in R} \sum_{g \in \epsilon} x_{0,g,r} = 1</math> – dla bazy początkowej,
*: <math>\forall_{r \in R} \sum_{f \in \epsilon} x_{f,n+1,r} = 1</math> – dla bazy końcowej,
*: <math>\forall_{r \in R} \land \forall_{f \in \Psi} \sum_{f \in \epsilon} x_{f,z,r} - \sum_{g \in \epsilon} x_{z,g,r} = 0</math> – dla wierzchołków pośrednich.
*:: W przypadku, gdy istnieje połączenie pomiędzy punktami ''<math>0''</math> oraz ''<math>n+1'',</math> to dopuszczalne są ''puste drogi''.
* Przypisanie każdemu klientowi dokładnie jednego pojazdu, który zaspokaja jego zapotrzebowanie (dostawy są niedzielone).:
*: <math>\forall_{f \in \Psi} \sum_{g \in \epsilon} \sum_{r \in R} x_{fgr} = 1</math> – warunek przypisania dokładnie jednego pojazdu,
*: <math>\forall_{f \in \epsilon} \land \forall_{g \in \epsilon} \land \forall_{r \in R} ~ x_{fgr} \in \{ 0,1 \}</math> – warunek niedzielonych dostaw.
 
=== Przykładowe rozwinięcia problemu ===
W rozwinięciach klasycznego problemu marszrutyzacji występować mogą dodatkowe ograniczenia. Przykładowo:
* Warunek nieprzekroczenia pojemności poszczególnych środków transportu (problem CVRP).
*: <math>\forall_{r \in R} \sum_{f \in \Psi} d_f \sum_{g \in \Psi} x_{fgr} \leleqslant m_r,</math>
*:: gdzie:
*:: <math>d_f</math> – popyt przypisany do danego klienta,
*:: <math>m_r</math> – pojemność pojazdów.
* Ograniczenia czasowe w problemach z oknami czasowymi (pojazd nie przybędzie do określonego wierzchołka przed wykonaniem poprzednich zadań w węzłach poprzedzających)
*: <math>\forall_{r \in R} \land \forall_{f \in \Psi} \land \forall_{g \in \Psi} ~ x_{fgr} (t_{fr} + t_{fg} - t_{gr}) \leleqslant 0,</math>
*:: gdzie:
*:: <math>t_{fr}</math> – czas rozpoczęcia obsługi klienta ''<math>f'',</math>
*:: <math>t_{fg}</math> – czas przejazdu pomiędzy ''<math>f''</math> a ''<math>g'',</math>
*:: <math>t_{gr}</math> – czas rozpoczęcia obsługi klienta ''<math>g''.</math>
 
== Rozwinięcia problemu ==
W literaturze występują również rozwinięcia klasycznego problemu marszrutyzacji. Należą do nich m.in.:
* Problemyproblemy uwzględniające niesymetryczność kosztów przewozu pomiędzy wierzchołkami,
* Problemyproblemy uwzględniające niehomogeniczność taboru,
* Problemyproblemy uwzględniające przejazdy drobnicowe (Less Than Truckload),
* Problemyproblemy uwzględniające ograniczenie maksymalnej długości trasy,
* Problemyproblemy umożliwiające ustalenie baz (jednej lub kilku), w których pojazdy zaczynają i kończą podróż (Multiple Depot VRP),
* Problemyproblemy umożliwiające dodanie baz pomocniczych (VRP with Satellite Facilities),
* Problemyproblemy umożliwiające ustalenie częstotliwości odbioru/dostawy ładunku,
* Problemyproblemy umożliwiające uwzględnienie okien czasowych (VRP with Time Windows) odbioru/wysłania towaru.,
* Problemyproblemy wiążące problem marszrutyzacji z problemem kontroli zapasów u klientów,
* Problemyproblemy uwzględniające możliwość obsługi jednego klienta przez kilka pojazdów (Split Delivery VRP),
* Problemyproblemy w których kosztowa funkcja celu zastąpiona została innymi parametrami (np. czas wykonania zleceń, długość tras, ilość przewiezionego ładunku),
* Problemyproblemy umożliwiające zdefiniowanie kolejności odwiedzania poszczególnych miejsc oraz opcjonalnego odwiedzania niektórych punktów.,
* Problemyproblemy uwzględniające możliwości zwrotów i wysyłki towarów przez klientów (VRP with Backhauls oraz VRP with Pick-Up and Delivery – problem rozwózkowo-zwózkowy),
* Problemyproblemy, w których warunki zostały ujęte stochastycznie (Stochastic VRP).
 
== Problem marszrutyzacji a problemy "capacitated„capacitated arc routing"routing” ==
W problemie marszrutyzacji klienci stwarzający popyt na transport są zlokalizowani w wierzchołkach grafu. W rzeczywistości problem ten ma zastosowanie np. w tradycyjnych firmach przewozowych. Problemy, w których popyt jest zlokalizowany na krawędziach grafu należą do grupy problemów [[arc routing]], a odpowiednikiem problemu marszrutyzacji jest problem [[Capacitated Arc Routing Problem|CARP]]. W rzeczywistości sytuacje takie występują przykładowo podczas opracowywania marszrut dla [[zamiatarka|zamiatarek drogowych]], [[śmieciarka|śmieciarek]], czy też [[pługopiaskarka|pługopiaskarek]]<ref name="arcrouting">{{Cytuj pismo| nazwisko=Muyldermans| imię=Luc| tytuł=Routing, districting and location for arc traversal problems| czasopismo=4OR: A Quarterly Journal of Operations Research| wydawca=Springer-Verlag| wolumin=2| strony=169–172| język=en| data=czerwiec 2003| doi=10.1007/s10288-003-0015-5}}</ref>.
 
== Przypisy ==
Linia 70:
 
== Bibliografia ==
* {{Cytuj | autor = Jacek Żak | tytuł = Wielokryterialne wspomaganie decyzji w transporcie drogowym | data = 2005 | isbn = 83-7143-591-6 | miejsce = Poznań | wydawca = Wydawnictwo Politechniki Poznańskiej | oclc = 69491746}}
 
== Linki zewnętrzne ==