Piotr Gołębiowski 1 Politechnika Warszawska, Wydział Transportu Założenia do aplikacji komputerowej BEERJ wspomagającej konstrukcję rozkładu jazdy pociągów 1. WPROWADZENIE Rozkład jazdy pociągów [2] to podstawowy element organizacji przewozów kolejowych stanowiący plan pracy kolei, według którego odbywa się ruch wszystkich pociągów po sieci kolejowej lub jej części. Dokument ten pozwala na realizację przewozu w sposób zorganizowany, płynny, terminowy oraz z zachowaniem najwyższego stopnia bezpieczeństwa. Rozkład jazdy jest zatem wyrazem wprowadzenia prawidłowej organizacji ruchu kolejowego. Proces opracowywania prawidłowej organizacji ruchu kolejowego na wybranym fragmencie sieci kolejowej nazywa się konstrukcją rozkładu jazdy pociągów. Można go zdefiniować jako proces polegający na przyporządkowaniu konkretnych godzin odjazdów i przyjazdów do konkretnych posterunków ruchu i punktów ekspedycyjnych na sieci kolejowej w taki sposób, aby ruch prowadzony był w sposób płynny i bezpieczny oraz aby zostały zaspokojone potrzeby wszystkich uczestników procesu przemieszczania. Zatem prawidłowo ułożony rozkład jazdy pociągów z jednej strony powinien uwzględniać elementarne czasy jazdy i następstwa potrzebne do płynnego i bezpiecznego prowadzenia ruchu na poszczególnych posterunkach ruchu, a z drugiej strony oczekiwania użytkowników zarówno pasażerów i klientów przesyłających ładunki koleją jak i przewoźników i zarządców infrastruktury. W wyniku procesu konstrukcji rozkładu jazdy pociągów otrzymuje się wykres ruchu pociągów (rozkład jazdy pociągów w postaci graficznej). Następnie w zależności od odbiorcy może być on przekształcony np. na formę tabelaryczną lub plakatową. Opracowanie racjonalnego rozkładu jazdy pociągów przeprowadzane jest w dwóch etapach [6], [8], [9]: kształtowania oferty przewozowej, konstrukcji wykresu ruchu pociągów. Problemem kształtowania oferty przewozowej w transporcie kolejowym jest [6], [8], [9]: wyznaczenie racjonalnych przebiegów linii komunikacyjnych, przydzielenie odpowiedniej wielkości potoku ruchu do przewiezienia po poszczególnych liniach komunikacyjnych, przydział danego typu składu pociągu do obsługi poszczególnych linii komunikacyjnych, przydział częstotliwości kursowania do poszczególnych linii komunikacyjnych. Powyższe problemy wyznacza się dla poszczególnych okresów doby (odcinków czasu, na które została podzielona doba), kategorii pociągów (segmentów rynku potrzeb przewozowych) oraz przewoźników (biorących udział w procesie przemieszczania) Dzięki takiemu rozpatrzeniu problemu zagwarantowane jest dokładne spełnienie potrzeb przewozowych zarówno w transporcie pasażerskim jak i towarowym. Przy rozpatrywaniu problemu kształtowania oferty przewozowej należy uwzględnić szereg czynników kształtujących wielkość potrzeby przemieszczania oraz czynniki techniczno-ekonomiczne [9]. Problemem zagadnienia konstrukcji wykresu ruchu jest wyznaczenie tras pociągów na kanwie wykresu ruchu [6], [8], [9]. Trasa pociągu przedstawia konkretne jego położenie w czasie i przestrzeni na danej linii kolejowej. Usytuowanie pociągu w czasie i przestrzeni może być wykonane z wykorzystaniem metody obliczeń uproszczonych (opartej na prawach kinematyki ruchu pociągu) lub z wykorzystaniem metody opartej na prawach dynamiki ruchu pociągu (metoda dokładna) [16]. Prowadząc prace nad konstrukcją rozkładu jazdy pociągów w pierwszej fazie poszukuje się wzorcowych tras pociągów tras pociągów, które zostały utworzone bez zachowania zasad ruchu kolejowego prowadzonego na sieci kolejowej. Następnie 1 pgolebiowski@interia.pl Logistyka 4/2015 281
wyznacza się trasy rzeczywiste (takie trasy, dla których zachowane są zasady prowadzenia ruchu na sieci kolejowej). Praca na tym etapie głównie polega na likwidacji kolizji ruchowych między poszczególnymi pociągami. Trasowanie można przeprowadzić na podstawie wyników uzyskanych na etapie kształtowania oferty przewozowej albo według nowych danych, które zostaną dostarczone. Trasując pociągi należy uwzględnić priorytety umieszczania tras na wykresie ruchu [15] oraz szereg czynników techniczno eksploatacyjnych [9] i zasady ruchu kolejowego [13]. Konstrukcja rozkładu jazdy w Polsce realizowana jest przy minimalnym wsparciu komputerowym. Kształtowanie oferty przewozowej odbywa się z wykorzystaniem podstawowych narzędzi komputerowych jak edytor tekstu Microsoft Word czy arkusz kalkulacyjny Microsoft Excel. Konstruowanie wykresu ruchu u największego zarządcy infrastruktury kolejowej w Polsce (PKP Polskie Linie Kolejowe) realizowane jest z wykorzystaniem wspomagania komputerowego, które jest cały czas rozwijane. Należy zatem poszukiwać metod, które ułatwią prace konstruktorów rozkładu jazdy pociągów zarówno na etapie kształtowania oferty przewozowej jak i konstrukcji wykresu ruchu pociągów. W artykule zaprezentowano założenia dotyczące autorskiej aplikacji komputerowej BEERJ, która ma wspomagać przewoźników w zakresie przygotowywania oferty przewozowej wraz z jej prezentacją na wykresie ruchu pociągów. Program bazował będzie na modelach matematycznych, które zostały zaprezentowane w pracach [8] i [9]. Do rozwiązania problemu wykorzystana zostanie metoda optymalizacji wieloetapowej, w której zasadniczą rolę będą odgrywać algorytm A* [5] do poszukiwania najkrótszych dróg w grafie, algorytm pszczeli [5], który zostanie wykorzystany do ukształtowania oferty przewozowej oraz do naniesienia tras pociągów na wykres ruchu i algorytm Axis - Aligned Bounding Box, który zostanie wykorzystany do likwidacji kolizji tras pociągów na wykresie ruchu. W artykule omówiono mechanizm działania programu oraz założenia do poszczególnych modułów aplikacji komputerowej. 2. WSPOMAGANIE KOMPUTEROWE KONSTRUKCJI ROZKŁADU JAZDY W POLSCE Jak już wspomniano powyżej proces opracowywania rozkładu jazdy pociągów nazywa się jego konstrukcją. Jest bardzo skomplikowanym i złożonym procesem ze względu na konieczność uwzględnienia wielu warunków brzegowych. Mnogość czynników może wystąpić błędy, które mogą mieć mniej poważne skutki (np. to, że pociąg do ważnego ośrodka sieci osadniczej przybędzie kilka minut po godzinie rozpoczęcia pracy w ważnych zakładach) bądź bardziej poważne skutki (jak np. zderzenie pociągów z przeciwnych kierunków na szlaku linii jednotorowej do czego dyżurni ruchu by nie dopuścili tylko opóźnili któryś pociąg). Pierwszy etap konstrukcji rozkładu jazdy pociągów to kształtowanie oferty przewozowej. Oferta jest przygotowywana przez przewoźników kolejowych na podstawie wskazówek, analiz oraz doświadczenia osoby przygotowującej. W wyniku procesu przygotowywania oferty przewoźnicy prezentują dane o której chcieliby uruchomić pociągi na konkretnych liniach kolejowych, w jakiej relacji oraz w jakich dniach. Przygotowują także dane dotyczące proponowanego składu pociągu oraz zgłaszają inne potrzeby związane z organizacją ruchu kolejowego. Opracowywanie kolejowej oferty przewozowej odbywa się przy minimalnym wsparciu komputerowym. Do realizacji codziennych prac wykorzystuje się edytor tekstu Microsoft Word oraz arkusz kalkulacyjny Microsoft Excel. Nie wykorzystuje się dedykowanych narzędzi komputerowych, które wsparłyby prace konstruktorów. Wykorzystuje się narzędzia, które pozwalają w małym stopniu zaadaptować do analizowanego zagadnienia teorię optymalizacji. Jedyną stosowaną metodą optymalizacyjną jest doświadczenie przygotowującego ofertę. Niestety organizm ludzki bywa zawodny i może to przynieść nieoczekiwane efekty. Wykorzystanie teorii optymalizacji pozwoliłoby na zmniejszenie nakładu pracy związanej z kształtowaniem oferty oraz na otrzymanie lepszego wyniku niż uzyskany przez człowieka. Przewoźnik, po zakończeniu prac na etapie kształtowania oferty przewozowej, aby móc uruchomić konkretny pociąg, musi uzyskać od zarządcy infrastruktury rozkład jazdy pociągu. Rozkład ten jest opracowywany przez konstruktorów z wykorzystaniem wykresów ruchu pociągów na złożony przez przewoźnika wniosek. Ten etap konstrukcji rozkładu jazdy pociągów poruszających się po sieci największego w Polsce zarządcy infrastruktury PKP Polskie Linie Kolejowe jest wspierany przez dwie 282 Logistyka 4/2015
aplikacje opracowane na własne potrzeby Internetowy System Zamawiania Tras Pociągów (ISZTP) oraz System Konstrukcji Rozkładu Jazdy (SKRJ). Internetowy System Zamawiania Tras Pociągów to aplikacja, która umożliwia przewoźnikom kolejowym złożenie wniosku o przydzielenie trasy pociągu na sieci kolejowej, której zarządcą jest firma PKP Polskie Linie Kolejowe S.A. We wniosku przewoźnik określa podstawowe parametry dotyczące zamawianej trasy pociągu m.in. [15]: dane o pociągu w tym godzinę wiodącą, dane techniczne pociągu, ograniczenia, konkretne punkty na sieci przez które dany pociąg ma przejechać i gdzie ma nastąpić postój. Prawidłowo wypełniony wniosek z wykorzystaniem sieci Internet przesyłany jest do aplikacji SKRJ System Konstrukcji Rozkładu Jazdy. Internetowy System Zamawiania Tras Pociągów pozwala na [14]: złożenie wniosku o przydzielenie trasy pociągu w ramach rocznego rozkładu jazdy pociągów (rozkładu jazdy, który będzie obowiązywał przez rok i który będzie stanowił podstawę do opracowywania pozostałych rodzajów rozkładów jazdy pociągów; rozkład ten jest opracowywany w konkretnych terminach określonych regulaminem [15]), złożenie wniosku o przydzielenie trasy pociągu w ramach indywidualnego rozkładu jazdy pociągów (rozkładu jazdy, który jest składany poza terminem wniosków o przydzielanie tras pociągów w ramach rocznego rozkładu jazdy pociągów (kursowanie pociągu nie zostało przewidziane w ramach rocznego rozkładu jazdy pociągów) i jest opracowywany w ramach istnienia wolnej zdolności przepustowej poszczególnych linii kolejowych na konkretny dzień lub okres), sprzedaż Tras Katalogowych (gotowych tras pociągów (rozkładów jazdy) opracowanych przez zarządcę infrastruktury na podstawie przyjętych przez niego parametrów jeśli odpowiadają danemu przewoźnikowi to zamawia trasę katalogową i jedzie), złożenie wniosku o wyznaczenie trasy pociągu w ramach studium rozkładu jazdy wyznaczona zostaje wzorcowa trasa pociągu dla określonych parametrów składu pociągu i dla określonego horyzontu czasowego na podstawie której przewoźnikowi jest łatwiej przygotować ofertę przewozową), zmianę parametrów danego pociągu (np. w zakresie lokomotywy o zmniejszonej prędkości maksymalnej itp.), podgląd zamówień i wykresów ruchu, na których znajdują się pociągi danego przewoźnika organizację skomunikowań pociągów w trakcie przygotowywania rozkładu jazdy pociągów, wprowadzenie danych handlowych o pociągach np. rodzaj handlowy pociągu, szczegółowe zestawienie składu, numeracja i rodzaj wagonów itp.; rezygnację z zamówionej trasy pociągu. Złożony w Internetowym Systemie Zamawiania Tras Pociągów wniosek o przydzielenie trasy pociągu na sieci zarządzanej przez zarządcę infrastruktury z wykorzystaniem systemów informatycznych przesyłany jest do systemu SKRJ Systemu Konstrukcji Rozkładu Jazdy pociągów. W systemie tym konstruktorzy zarządcy infrastruktury odbierają wniosek i na podstawie założonych w nim parametrów trasują pociąg na wykresie ruchu. Po wytrasowaniu opracowany rozkład jazdy przekazywany jest przewoźnikowi do akceptacji. Dzięki zastosowaniu jednakowej aplikacji na całym zarządzanym obszarze można w sposób kompleksowy opracować rozkład jazdy dla całej sieci kolejowej. Komputerowy System Konstrukcji Rozkładu Jazdy (SKRJ) pozwala na [14]: opracowanie tras pociągów dla wszystkich rodzajów rozkładów jazdy (indywidualnego, rocznego, zastępczego (zamknięciowego) i studium) na podstawie wniosków złożonych przez przewoźników kolejowych lub samodzielnie przez konstruktora z wykorzystaniem wykresów ruchu pociągów na podstawie kompleksowo sparametryzowanej sieci, kompleksowo sparametryzowanych pojazdów trakcyjnych oraz parametrów składu dostarczonych przez przewoźnika, opracowanie zajętości torów i krawędzi peronowych na stacjach, co jest niezwykle istotne w przypadku konstrukcji rozkładów jazdy pociągów, by zapewnić płynność ruchu na posterunkach (nie przekroczyć ich zdolności przepustowej (przetwórczej) oraz aby mieć miejsce na zagospodarowanie składu pociągu, który skończył bieg), obsługę pociągów skomunikowanych, by mieć na nie szczególną uwagę w momencie zmian rozkładu jazdy, Logistyka 4/2015 283
wprowadzanie danych handlowych o pociągu, które mogą mieć wpływ na trasowanie konkretnych pociągów oraz informacji o przełączaniu wagonów (w przypadku gdy dany pociąg prowadzi wagony z jednego lub wielu miejsc początkowych do jednego lub wielu miejsc docelowych ze względu na aspekt ekonomiczny gdy nie zachodzi konieczność uruchomienia dwóch pociągów a możliwości techniczne w przypadku jednego składu nie są przekroczone), realizację wniosków w ramach Tras Katalogowych zamówienie z wykorzystaniem Internetowego Systemu Zamawiania Tras Pociągów trasy katalogowej przez przewoźnika realizowane jest bez udziału konstruktora rozkładu jazdy zamówiona trasa, która uprzednio została skonstruowana zgodnie z zasadami techniki ruchu kolejowego, jest automatycznie przewoźnikowi przydzielana, realizację zmian parametrów pociągów zgłoszonych przez przewoźników kolejowych z wykorzystaniem Internetowego Systemu Zamawiania Tras Pociągów zarówno automatycznie jak i z udziałem konstruktora, wygenerowanie złożonego przez przewoźnika wniosku, wygenerowanie opracowanej trasy pociągu w postaci szczegółowego rozkładu jazdy zawierającego parametry pociągu, podgląd schematów posterunków ruchu oraz mapy sieci kolejowej. Konstruowanie wykresu ruchu w Polsce realizowane jest z wykorzystaniem wspomagania komputerowego od wielu lat. Zanim system SKRJ stał się jednym obowiązującym na sieci największego zarządcy infrastruktury kolejowej w Polsce wykorzystywany był system KWR Konstruowanie Wykresów Ruchu opracowany przez PKP Informatyka [11]. Stosowane aplikacje (KWR, SKRJ i ISZTP) pozwalają jedynie na wprowadzenie na wykres ruchu pojedynczego pociągu bez zastosowania metod optymalizacyjnych chociażby do wykrywania i rozwiązywania kolizji na wykresie ruchu. Na chwilę obecną są one wykrywane i rozwiązywane manualnie przez konstruktora. Niestety może to powodować błędy. Należy zaznaczyć, że aplikacje komputerowe do konstrukcji rozkładu jazdy stosowane na kolejach polskich są systematycznie rozwijane i doskonalone. Ich pierwowzorem są aplikacje niemieckie. 3. CHARAKTERYSTYKA APLIKACJI KOMPUTEROWEJ BEERJ Etap konstrukcji wykresu ruchu pociągów wspierany jest przez dwie aplikacje, które wykorzystywane są do wprowadzania prawidłowej organizacji ruchu kolejowego na sieci kolejowej. Jednak na chwilę obecną do kształtowania oferty przewozowej wykorzystuje się tylko popularne edytory tekstu oraz arkusze kalkulacyjne. Należy dążyć do tego, by opracować narzędzie wspierające pracę przewoźników na etapie kształtowania oferty przewozowej. W ramach prowadzenia badań nad problemem konstrukcji rozkładu jazdy pociągów Autorzy niniejszego artykułu zaproponowali opracowanie aplikacji BEERJ, która ma za zadanie wspierać konstruktorów oferty przewozowej. Dzięki wykorzystaniu tej aplikacji przedstawiciele przewoźnika po wprowadzeniu szeregu danych wejściowych będą mogli ukształtować ofertę przewozową oraz zobrazować ją z wykorzystaniem wykresu ruchu pociągów. Zdaniem autorów zobrazowanie oferty przewozowej w postaci graficznej pozwoli na dokładniejsze jej opracowanie oraz na eliminację potencjalnych błędów. Kompleksowe przygotowanie oferty przewozowej przez przewoźnika ułatwi także prace konstruktorów wykresu ruchu, którzy dostaną produkt o wiele bardziej szlachetny. Aplikacja BEERJ będzie składała się z trzech modułów. Pierwszy moduł (M1) to moduł kształtowania oferty przewozowej. Będzie on pozwalał na opracowanie oferty oraz jej edycję. Moduł drugi (M2) będzie odpowiedzialny na konstrukcję wykresu ruchu pociągów oraz jego edycję. Trzeci moduł (M3) pozwalał będzie na ukształtowanie oferty przewozowej oraz na jej podstawie na skonstruowanie wykresu ruchu pociągów. Schemat działania programu BEERJ przedstawiono na rys. 1. Praca z modułem pierwszym aplikacji (M1) możliwa będzie dopiero po wprowadzeniu szeregu danych wejściowych. Niezbędne do wprowadzenia dane zostały scharakteryzowane w punkcie 4.1. niniejszego artykułu. Będą one możliwe do zaimplementowania za pomocą odpowiedniego przycisku w menu. Kolejnym elementem modułu będzie możliwość przygotowania oferty przewozowej. Koniecznym będzie wybranie zbioru danych wejściowych uprzednio wprowadzonych do bazy. Następnym elementem modułu 284 Logistyka 4/2015
PROGRAM BEERJ MODUŁ KSZTAŁTOWANIA OFERTY PRZEWOZOWEJ (M1) MODUŁ KONSTRUKCJI WYKRESU RUCHU (M2) MODUŁ KSZTAŁTOWANIA OFERTY I WYKRESU (M3) WPROWADZANIE DANYCH WPROWADZANIE DANYCH WPROWADZANIE DANYCH PRZYGOTOWANIE OFERTY DLA DANYCH KONSTRUKCJA WYKRESU DLA DANYCH PRZYGOTOWANIE OFERTY I WYKRESU RUCHU WPROWADZANIE DANYCH I UŁOŻENIE OFERTY WPROWADZANIE DANYCH I KONSTRUKCJA WYKRESU KOREKTA OFERTY I OPRACOWANIE WYKRESU PRZEGLĄDANIE OFERTY PRZEGLĄDANIE WYKRESU KOREKTA WYKRESU RUCHU DLA OFERTY KOREKTA OFERTY KOREKTA WYKRESU OPRACOWANIE WYKRESU DLA OFERTY UMIESZCZANIE POCIĄGU NA WYKRESIE RUCHU Rys. 1. Schemat działania programu BEERJ Źródło: opracowanie własne pierwszego będzie możliwość ułożenia oferty na podstawie wprowadzonych w danym momencie danych. Przygotowana oferta zostanie zapisana w bazie danych i będzie możliwość jej przeglądania oraz edycji. Jeśli użytkownik wykorzysta możliwość edytowania oferta przewozowa zostanie przygotowana na nowo (może różnić się od ukształtowanej poprzednio). Praca z modułem drugim aplikacji (M2) możliwa będzie także dopiero po wprowadzeniu szeregu danych wejściowych. Niezbędne do wprowadzenia dane zostały scharakteryzowane w punkcie 4.1. niniejszego artykułu. Będą one możliwe do zaimplementowania za pomocą odpowiedniego przycisku w menu. Następnym elementem modułu będzie możliwość skonstruowania wykresu ruchu pociągów. Koniecznym będzie wybranie zbioru danych wejściowych uprzednio wprowadzonych do bazy. Istniała będzie możliwość przygotowania wykresu zarówno dla jednego pociągu jak i kilku za jednym kliknięciem. Kolejnym elementem modułu drugiego będzie możliwość opracowania wykresu na podstawie wprowadzonych w danym momencie danych. Przygotowany wykres zostanie zapisany w bazie danych i będzie możliwość jego przeglądania oraz edycji. Możliwa będzie edycja tylko poszczególnych pociągów na wykresie ruchu nie będzie możliwości edytowania kilku pociągów na raz. Dodatkowo będzie możliwość umieszczenia nowego pociągu na wykresie ruchu na podstawie uprzednio wprowadzonych danych. Moduł trzeci aplikacji (M3) pozwalał będzie na ukształtowanie oferty przewozowej i opracowanie dla niej wykresu ruchu pociągów. Pierwszym elementem aplikacji będzie interfejs do wprowadzania danych. Użytkownik będzie musiał wprowadzić szereg danych niezbędnych zarówno do ukształtowania oferty przewozowej jak i do konstrukcji wykresu ruchu pociągów (patrz punkt 4.1). Drugą opcją w tym module będzie możliwość ukształtowania oferty i wykresu na podstawie uprzednio wprowadzonych do programu danych. Będzie możliwość przeprowadzenia korekty oferty i przygotowania dla niej nowego wykresu ruchu pociągów oraz możliwość skorygowania wykresu ruchu dla danej oferty (gdy np. zajdzie konieczność uruchomienia konkretnego pociągu 10 minut wcześniej lub później. Będzie także istniała możliwość ułożenia wykresu ruchu dla określonej oferty przewozowej, skonstruowanej z wykorzystaniem modułu pierwszego (M1). Nie będzie możliwe odtworzenie oferty przewozowej dla skonstruowanego w ramach modułu drugiego (M2) wykresu ruchu pociągu. Logistyka 4/2015 285
4. ZAŁOŻENIA DO POSZCZEGÓLNYCH ELEMENTÓW APLIKACJI KOMPUTEROWEJ BEERJ 4.1. Identyfikacja danych wejściowych Identyfikacja danych wejściowych do modułu kształtowania oferty przewozowej Wszystkie moduły programu BEERJ mogą pracować dopiero po tym, jak wprowadzi się do nich szereg danych wejściowych. Dane te dla modułu pierwszego oraz trzeciego można podzielić na cztery grupy. Pierwsza grupa danych wejściowych związana jest z określeniem wielkości potoku ruchu, która ma być przemieszczana w systemie. Aby kolejowa oferta przewozowa została przygotowana kompleksowo należy zdefiniować okresy na które została podzielona doba. Pozwoli to na dostosowanie rozkładu jazdy do potrzeb wszystkich interesariuszy. Podział ten powinien być zależny od rodzaju dnia tygodnia (inny podział dla dnia roboczego i inny podział dla dnia świątecznego). Następnie należy zdefiniować przewoźników, którzy będą realizować przewozy na analizowanym fragmencie sieci kolejowej. Dla każdego przewoźnika trzeba przypisać kategorie pociągów, które będzie uruchamiał. Ponadto należy rozważyć, która kategoria pociągu może poruszać się w określonej części doby. Dla każdej kategorii pociągu należy także rozważyć czy składy będą mogły obsługiwać pasażerów chcących odbyć podróż tylko w klasie drugiej czy także i w pierwszej. Zgodnie z powyższymi założeniami należy przygotować macierze wielkości potoku ruchu przemieszczanego między poszczególnymi źródłami i poszczególnymi ujściami w systemie dla każdego okresu doby, dla każdej kategorii pociągów, dla każdego przewoźnika i dla każdej klasy pociągu. Jeśli pojawi się problem i nie będziemy znali wielkości potoku ruchu do przewiezienia w poszczególnych okresach i w poszczególnych klasach należy przyjąć szereg założeń. Druga grupa danych wiąże się ze scharakteryzowaniem sieci kolejowej. Prace należy rozpocząć od opracowania macierzy incydencji punktów eksploatacyjnych czyli określenia istnienia połączeń pomiędzy poszczególnymi elementami systemu. Drugim etapem prac jest opracowanie charakterystyk poszczególnych połączeń. Jedną z charakterystyk łuków jest czas jazdy danego pociągu po danym odcinku. Aby uzyskać tę charakterystykę należy wyznaczyć macierz odległości między poszczególnymi węzłami, oszacować średnią prędkość pociągu na odcinku dla poszczególnych kategorii pociągów (poprzez średnią prędkość wyrażać się będzie średnia ważona z prędkości obowiązujących na poszczególnych odcinkach wagą będzie długość odcinka). Na podstawie tych danych obliczony zostanie przybliżony czas jazdy. Następnie należy określić, które wierzchołki mogą pełnić funkcję końcowych i początkowych dla biegu pociągów. Kolejnym etapem prac jest opracowanie macierzy z czasami postojów pociągów poszczególnych kategorii w poszczególnych punktach w określonych okresach doby. Niezbędnym jest także określenie wektora zawierającego maksymalne długości składów pociągów, które mogą zatrzymać się na danym punkcie eksploatacyjnym. Należy także ustalić zdolność przewozową linii kolejowej, która jest istotnym warunkiem ograniczającym przewiezienie konkretnej liczby pasażerów czy konkretnej wielkości potoku ładunków. Trzecia grupa danych związana jest z charakterystyką taboru. Prace należy rozpocząć od identyfikacji wszystkich możliwych typów składów pociągów, które mogą poruszać się po analizowanym fragmencie sieci. Typy te powinny być przypisane do poszczególnych: okresów doby, kategorii pociągów, przewoźników i klas pociągów. Należy także wskazać, czy dany typ składu pociągu może poruszać się po określonym fragmencie sieci kolejowej czy nie (np. ze względu na elektryfikację). Trzeba także określić liczebność danego typu taboru, która jest w posiadaniu danego przewoźnika. Każdemu typowi składu pociągu należy przypisać jego pojemność i długość. Trzeba także określić czy dany typ składu pociągu może być obsługiwany na konkretnej stacji docelowej/początkowej. Niezbędnym jest także zidentyfikowanie pożądanych częstotliwości kursowania dla każdego okresu doby, dla każdej kategorii pociągów, dla każdego przewoźnika i dla każdej klasy pociągów. Można także określić konkretne stacje macierzyste dla każdego składu pociągu. Czwarta grupa danych to wielkość kosztów operacyjnych związanych z realizacją zadań przewozowych. Autorzy przyjęli, że będzie to koszt za przejazd jednego pociągokilometra. W związku z tym zachodzi konieczność określenia go dla każdej kategorii pociągu, dla każdego przewoźnika oraz dla każdego typu składu pociągu. 286 Logistyka 4/2015
Identyfikacja danych wejściowych do modułu konstrukcji wykresu ruchu pociągów Dane wejściowe dla modułu drugiego oraz trzeciego można podzielić na cztery grupy. Pierwsza grupa związana jest z elementami sieci kolejowej. Prace należy rozpocząć od identyfikacji punktów eksploatacyjnych znajdujących się na analizowanym obszarze sieci kolejowej. Następnie trzeba określić incydencję poszczególnych punktów (zidentyfikować punkty sąsiadujące). Każde połączenie (odcinek) pomiędzy poszczególnymi punktami należy scharakteryzować od kątem: odległości (między osiami stacji), prędkości maksymalnych, pochyleń terenu, miejsc lokalizacji łuków i ich promieni, miejsc lokalizacji tuneli oraz ich długości. Poszczególne odcinki powinny być połączone w szlaki. Dla każdego szlaku niezbędnym jest identyfikacja szlakowych czasów następstwa pociągów. Ponadto dla każdego zidentyfikowanego punktu na sieci kolejowej należy zidentyfikować czasy następstwa oraz czasy skomunikowań między dwoma kolejnymi pociągami. Druga grupa danych związana jest z danymi o składach pociągów. Jeżeli uprzednio konstruowaliśmy ofertę przewozową dane te będą pochodziły z tego modułu (M1). Jeżeli dodajemy tylko jeden pociąg musimy skonfigurować skład. Do tego potrzebne będą dane o pojazdach trakcyjnych i wagonach, takie jak: masa, prędkość maksymalna, liczba osi, współczynnik mas wirujących, przyspieszenie, rodzaje łożysk, liczba pojazdów danego typu itp. Trzecia grupa danych wejściowych to dane pochodzące z etapu kształtowania oferty przewozowej (jeśli uprzednio nie była ona konstruowana to należy te dane wprowadzić na etapie konstrukcji wykresu ruchu). Są to liczba i trasy linii komunikacyjnych, które mają zostać uruchomione, liczba i trasy pociągów do uruchomienia, godziny wiodące dla poszczególnych pociągów oraz czasy postojów pociągów w poszczególnych punktach eksploatacyjnych. Ostatnią grupę danych stanowią dane dotyczące kanwy wykresu ruchu. Kanwa zostanie przedstawiona jako graf, gdzie wierzchołkami będą wszystkie możliwe godziny w dobie. Godziny te będą przedstawione dla każdego punktu eksploatacyjnego. Łuki symbolizować będą przemieszczenie składu pociągu między poszczególnymi pociągami. Ich istnienie będzie zależne od czasu przejazdu poszczególnych pociągów. Dane wejściowe niezbędne do pracy modułu trzeciego (M3), w którym dla ukształtowanej oferty przewozowej konstruowany jest wykres ruchu pociągów to kombinacja danych z modułu kształtowania oferty przewozowej (M1) i modułu konstrukcji wykresu ruchu (M2). 4.2. Identyfikacja wielkości poszukiwanych Problemem kształtowania oferty przewozowej w transporcie kolejowym jest [6], [8], [9]: 1. wyznaczenie racjonalnych przebiegów linii komunikacyjnych proponowanych tras pociągów między poszczególnymi źródłami i ujściami, dla których wielkość potoku w macierzy jest większa od zera dla każdego okresu doby, dla każdej kategorii pociągów, dla każdego przewoźnika (wykorzystany zostanie do tego algorytm A* [5]), 2. przydzielenie odpowiedniej wielkości potoku ruchu do przewiezienia po poszczególnych liniach komunikacyjnych wyznaczonych w punkcie 1 (wykorzystany zostanie do tego algorytm pszczeli [5]), 3. ograniczenie liczby linii komunikacyjnych do takiej, która będzie zawierała w sobie tylko takie linie, których początek i koniec w będzie w punktach eksploatacyjnych, gdzie pociąg może rozpocząć/zakończyć bieg dla każdego okresu doby, dla każdej kategorii pociągów, dla każdego przewoźnika (wykorzystany zostanie do tego m.in. algorytm A* [5]), 4. przypisanie wielkości potoku ruchu, która ma zostać przewieziona po liniach komunikacyjnych wyznaczonych w punkcie trzecim niniejszej procedury (wykorzystany zostanie do tego m.in. algorytm pszczeli [5]), 5. przypisanie odpowiedniego typu składu pociągu do obsługi danej linii komunikacyjnej wyznaczonej w punkcie trzecim (wykorzystany zostanie do tego algorytm pszczeli [5]), 6. przypisanie odpowiedniej częstotliwości kursowania do danej linii komunikacyjnej wyznaczonej w punkcie trzecim (wykorzystany zostanie do tego algorytm pszczeli [5]), 7. wyznaczenie godzin wiodących kursowania poszczególnych pociągów. Problemem konstrukcji wykresu ruchu w transporcie kolejowym jest [6], [8], [9]: Logistyka 4/2015 287
1. utworzenie wykresów ruchu dla poszczególnych tras wykresu ruchu jeśli rozpoczynamy prace w ramach modułu M2 trzeba je zdefiniować samodzielnie, jeśli pracujemy w ramach modułu M3 trasami wykresów ruchu będą uruchomione linie komunikacyjne, 2. wyszukanie informacji na ilu wykresach ruchu powinna zostać umieszczona trasa pociągu, która jest aktualnie analizowana niezbędnym jest zdefiniowanie dla pociągu wykresów, na których umieszczona zostanie jego trasa, 3. naniesienie na wykres(y) ruchu wzorcowej trasy pociągu (wzorcowa trasa pociągu uwzględnia godzinę wiodącą, ale mogą nie być dla niej zachowane zasady prowadzenia ruchu kolejowego) (wykorzystany zostanie do tego algorytm A* [5]); jeżeli konstruowany wykres ruchu jest do uprzednio przygotowanej oferty przewozowej (moduł M3) należy wytrasować wszystkie uruchomione w module M1 pociągi na wykres trzeba nanosić pociągi kolejno dla poszczególnych okresów doby, w każdym okresie trzeba uwzględnić priorytety trasowania pociągów na wykresie ruchu, 4. każdy pociąg naniesiony na wykresy ruchu musi zostać sprawdzony pod kątem istnienia kolizji (wykorzystany zostanie do tego algorytm Axis-Aligned Bounding Box pozwoli on odpowiedzieć na pytanie czy trasa analizowanego pociągu jest w kolizji z trasą innego pociągu); następnie z wykorzystaniem algorytmu pszczelego [5] przeprowadzone zostanie rzeczywiste trasowanie pociągu pozwoli to na znalezienie nowego położenia trasy pociągu, która jest w kolizji z inną (po minimalnym przesunięciu trasa będzie znowu sprawdzana algorytmem Axis-Aligned Bounding Box pod kątem występowania kolizji); w trasowaniu rzeczywistym należy przestrzegać priorytetów trasowania pociągów na wykresie ruchu przesuwać można tylko trasę pociągu niższego priorytetu. 4.3. Identyfikacja ograniczeń Identyfikacja ograniczeń zastosowanych do modułu kształtowania oferty przewozowej Na pierwszym etapie prac związanych z kształtowaniem oferty przewozowej, czyli przydziale odpowiedniej wielkości potoku ruchu do przewiezienia po poszczególnych liniach komunikacyjnych, zastosowane zostaną następujące ograniczenia: dla każdej pary źródło ujście potok ruchu, który miał być przewieziony, musi zostać przydzielony do konkretnej linii komunikacyjnej, potok ruchu, który ma być przewieziony poszczególnymi liniami komunikacyjnymi, powinien być równy potokowi do przewiezienia w konkretnej relacji, potok ruchu, który zostanie przydzielony do przewiezienia po konkretnej linii komunikacyjnej, nie powinien być ujemny, potok ruchu, który jest przewożony po konkretnej linii komunikacyjnej, powinien być wyrażony w tych samych jednostkach aby zapewnić jego addytywność, potok ruchu, który wpłynie do danego węzła w sieci, musi z niego wypłynąć, zdolność przewozowa danej linii kolejowej nie może być przekroczona. Na drugim etapie prac związanych z kształtowaniem oferty przewozowej, czyli przydziale typu składu pociągu i częstotliwości do danej linii komunikacyjnej, zastosowano następujące ograniczenia: podaż miejsc na danej linii komunikacyjnej musi być większa bądź równa potokowi do przewiezienia daną linią, wielkość potoku przewieziona w relacjach bezpośrednich powinna być mniejsza bądź równa podaży miejsc, wielkość potoku przewieziona w relacjach bezpośrednich powinna być mniejsza bądź równa zapotrzebowaniu na przewóz w danej relacji, dla każdej linii komunikacyjnej musi zostać przypisany typ składu pociągu do obsłużenia oraz częstotliwość kursowania, liczba składów przypisana do poszczególnych linii komunikacyjnych nie powinna być większa od liczby składów będącej w dyspozycji przewoźnika, 288 Logistyka 4/2015
prędkość maksymalna przydzielonego składu pociągu do obsługi danej linii komunikacyjnej powinna być zbliżona do prędkości maksymalnej obowiązującej na poszczególnych odcinkach danej linii komunikacyjnej, długość składu pociągu przydzielonego składu pociągu do obsługi danej linii komunikacyjnej nie powinna być dłuższa od dopuszczalnej dla poszczególnych odcinków danej linii komunikacyjnej, dany typ składu pociągu nie powinien zostać przypisany do linii komunikacyjnej, po której odcinkach nie może kursować, dany typ składu pociągu powinien rozpocząć i zakończyć bieg w swojej stacji macierzystej. Identyfikacja ograniczeń zastosowanych do modułu konstrukcji wykresu ruchu pociągów Konstruując wykres ruchu pociągów należy uwzględnić dwie grupy ograniczeń: ograniczenia wynikające z uwarunkowań technicznych: 1. wierzchołek początkowy na wykresie ruchu opracowanym dla danej trasy wykresu ruchu (linii komunikacyjnej) dla każdego pociągu, który jest trasowany, może mieć tylko jeden wierzchołek następujący, 2. dla wierzchołka pośredniego na wykresie ruchu opracowanym dla danej trasy wykresu ruchu (linii komunikacyjnej) dla każdego pociągu, który jest trasowany, liczba wierzchołków poprzedzających musi być równa liczbie wierzchołków następujących, 3. wierzchołek końcowy na wykresie ruchu opracowanym dla danej trasy wykresu ruchu (linii komunikacyjnej) dla każdego pociągu, który jest trasowany, może mieć tylko jeden wierzchołek poprzedzający, ograniczenia wynikające z zasad ruchu kolejowego: 1. dla każdego wierzchołka na wykresie ruchu różnica między chwilą przyjazdu pociągu następnego i chwilą odjazdu pociągu trasowanego musi być większa bądź równa od długości stacyjnego odstępu czasu następstwa, 2. dla każdego wierzchołka na wykresie ruchu chwila odjazdu pociągu następnego musi być większa bądź równa od chwili odjazdu pociągu trasowanego powiększonej o długość szlakowego odstępu czasu następstwa, 3. dla każdego wierzchołka na wykresie ruchu będącego miejscem, gdzie pociągi mogą kończyć i rozpoczynać bieg, różnica między chwilą odjazdu pociągu w innym kierunku i chwilą przyjazdu pociągu trasowanego powinna być większa bądź równa od wielkości czasu skomunikowania dla danego węzła. 4.4. Identyfikacja wskaźników oceny jakości rozwiązania W problemie kształtowania oferty przewozowej przyjęto trzy wskaźniki oceny jakości rozwiązania: maksymalizację wielkości potoku ruchu przewiezionego w relacjach bezpośrednich, minimalizację kosztów operacyjnych rozumianych jako koszt przejechania określonej liczby kilometrów przez poszczególne pociągi, minimalizację liczby składów pociągów różnych typów potrzebnych do obsługi systemu. W problemie konstrukcji wykresu ruchu pociągów przyjęto dwa wskaźniki oceny jakości rozwiązania: minimalizację różnic czasowych związanych z wytrasowaniem poszczególnych pociągów po określonych łukach odpowiednio dla trasowania rzeczywistego i trasowania wzorcowego, minimalizację sumarycznej wielkości czasów postoju pociągów w poszczególnych punktach eksploatacyjnych. 5. PODSUMOWANIE I WNIOSKI Jak wynika z rozważań przedstawionych w artykule organizacja ruchu kolejowego jest to bardzo istotny problem i do tego wieloaspektowy. Należy w nim uwzględnić m.in.: planowanie linii komunikacyjnych (konstrukcję oferty przewozowej), Logistyka 4/2015 289
fizyczną konstrukcję rozkładu jazdy pociągów (konstrukcję wykresów ruchu pociągów), przydział krawędzi peronowych na posterunkach dla pociągów, planowanie obiegów taboru, planowanie pracy zespołów obsługujących pojazdy (drużyny konduktorskie i trakcyjne). Z punktu widzenia organizacji ruchu kolejowego problematyka konstrukcji rozkładu jazdy pociągów jest bardzo ważna. Dobrze skonstruowany rozkład jazdy pozwala na to, aby ruch prowadzony był w sposób płynny i bezpieczny oraz aby zostały zaspokojone potrzeby wszystkich uczestników procesu przemieszczania. Zatem prawidłowo ułożony rozkład jazdy pociągów z jednej strony powinien uwzględniać elementarne czasy jazdy (i je minimalizować m.in. poprzez eliminację długich postojów) i następstwa potrzebne do płynnego i bezpiecznego prowadzenia ruchu na poszczególnych posterunkach ruchu, a z drugiej strony oczekiwania użytkowników zarówno pasażerów i klientów nadających ładunki koleją jak i przewoźników i zarządców infrastruktury. Powinny być także zapewnione dobre skomunikowania. Problem konstrukcji rozkładu jazdy jest procesem skomplikowanym. Ze względu na konieczności uwzględnienia szeregu czynników mogą wystąpić błędy, które mogą mieć mniej bądź bardziej poważne skutki. Należy zatem dążyć do tego, by opracowywać i rozwijać aplikacje wspomagające prace konstruktorów rozkładu jazdy. Opracowywanie kolejowej oferty przewozowej w Polsce odbywa się przy minimalnym wsparciu komputerowym. Do realizacji codziennych prac wykorzystuje się edytor tekstu Microsoft Word czy arkusz kalkulacyjny Microsoft Excel. Z kolei konstrukcja wykresu ruchu pociągów poruszających się po sieci największego w Polsce zarządcy infrastruktury PKP Polskie Linie Kolejowe jest wspierana przez dwie aplikacje opracowane na własne potrzeby Internetowy System Zamawiania Tras Pociągów (ISZTP) oraz System Konstrukcji Rozkładu Jazdy (SKRJ). Należy zaznaczyć, że aplikacje te są systematycznie rozwijane i doskonalone. W artykule zaprezentowano założenia dotyczące autorskiej aplikacji komputerowej BEERJ, która ma wspomagać przewoźników w zakresie przygotowywania oferty przewozowej wraz z prezentacją jej na wykresie ruchu pociągów. Program bazował będzie na modelach matematycznych, które zostały zaprezentowane w pracach [8] i [9]. Do rozwiązania problemu wykorzystana zostanie metoda optymalizacji wieloetapowej, w której zasadniczą rolę będą odgrywać algorytm A* do poszukiwania najkrótszych dróg w grafie, algorytm pszczeli, który zostanie wykorzystany do ukształtowania oferty przewozowej oraz do naniesienia tras pociągów na wykres ruchu i algorytm Axis - Aligned Bounding Box, który zostanie wykorzystany do likwidacji kolizji tras pociągów na wykresie ruchu. W artykule omówiono mechanizm działania programu oraz założenia do poszczególnych modułów aplikacji komputerowej. Scharakteryzowano niezbędny zakres danych wejściowych, wartości poszukiwane, ograniczenia oraz wskaźniki oceny jakości rozwiązania. Opracowana aplikacja skierowana będzie głównie do przewoźników kolejowych, którzy są odpowiedzialni za opracowanie oferty przewozowej. Pozwoli im ona na przydzielenie posiadanych środków przewozowych do zadań przewozowych oraz na ustalenie odpowiedniej częstotliwości kursowania. Zaletą aplikacji będzie także to, że utworzone zostaną linie komunikacyjne odpowiadające pożądanym przez nabywców usług transportowych relacjom. Opracowana aplikacja będzie miała tę korzyść, że przygotowana oferta zostanie zobrazowana na wykresie ruchu. Graficzna forma oferty pozwoli na spojrzenie całościowe i ewentualną korektę planu w miejscach generujących problemy. Przygotowanie oferty przewozowej dla poszczególnych części doby pozwoli na dokładniejszą realizację potrzeb przewozowych. Praca finansowana jest ze środków na pracę statutową Politechniki Warszawskiej i granty dla młodych naukowców i uczestników studiów doktoranckich. 290 Logistyka 4/2015
Streszczenie Z punktu widzenia organizacji ruchu kolejowego problematyka konstrukcji rozkładu jazdy pociągów jest bardzo ważna. Dobrze skonstruowany rozkład jazdy pozwala na to, aby ruch prowadzony był w sposób płynny i bezpieczny oraz aby zostały zaspokojone potrzeby wszystkich uczestników procesu przemieszczania. Należy dążyć do tego, by opracowywać i rozwijać aplikacje wspomagające prace konstruktorów rozkładu jazdy. Opracowywanie kolejowej oferty przewozowej odbywa się przy minimalnym wsparciu komputerowym w postaci edytorów tekstu i arkusza kalkulacyjnego. Z kolei konstrukcja wykresu ruchu pociągów Polsce jest wspierana przez dwie aplikacje opracowane na własne potrzeby zarządcy infrastruktury. W artykule zaprezentowano założenia dotyczące autorskiej aplikacji komputerowej BEERJ, która ma wspomagać przewoźników w zakresie przygotowywania oferty przewozowej wraz z prezentacją jej na wykresie ruchu pociągów. Omówiono mechanizm działania programu oraz założenia do poszczególnych modułów aplikacji komputerowej. Scharakteryzowano niezbędny zakres danych wejściowych, wartości poszukiwane, ograniczenia oraz wskaźniki oceny jakości rozwiązania. Słowa kluczowe: kształtowanie oferty przewozowej, konstrukcja wykresu ruchu pociągów, aplikacja komputerowa. Assumptions for computer application BEERJ supporting the construction of the train timetable Abstract From the point of view of railway traffic organization train timetable construction problems is very important. A well-constructed timetable allows for smoothly and safely move and for met the needs of all participants of the movement process. The aim is to develop the applications which will support the work of the timetable constructors. The development of rail transport offer takes place with minimal support of computer in the form of word processing and spreadsheet. On the other hand construction of the graphic train timetable in Poland is supported by two applications developed for its own needs by infrastructure manager. The article presents the assumptions about author's computer application BEERJ, which is supposed to assist railway undertakings in preparing the transport offer, together with the presentation of its into graphic timetable. We discussed the mechanism of action of the program and the assumptions for the various modules of computer application. We characterized the necessary range of input data, sought value, limitations and indicators of quality solutions assessment. Key words: development of rail transport offer, construction of the graphic train timetable, computer application. LITERATURA [1] Albrecht, T.: Automated timetable design for demand-oriented service on suburban railways. Public Transport, 2009, nr 1(1), str. 5-20. [2] Bałuch, H.; Starczewska, M.: Leksykon terminów kolejowych. Warszawa, 2011. [3] Caprara, A.; Kroon, L.; Monaci, M.; Peeters, M.; Toth, P.: Passenger Railway Optimization. W: Barnhart C., Laporte G.: Handbooks in Operations Research and Management Science Vol. 14: Transportation. Elsevier, 2007, str. 129-188. [4] Carey, M.; Lockwood, D.: A model, algorithms and strategy for train pathing. Journal of the Operational Research Society, 1995, cz. 46, str. 988 1005. [5] Gołębiowski, P.: Zastosowanie algorytmu pszczelego do rozwiązania problemu konstruowania rozkładu jazdy pociągów. Logistyka, 2014, nr 4, str. 1857-1866. [6] Gołębiowski, P.; Jacyna, M.: Wybrane problemy planowania ruchu kolejowego. Prace Naukowe Politechniki Warszawskiej. Transport, 2013, z. 97, str. 123-133. [7] Jacyna M.: Modelowanie i ocena systemów transportowych. Warszawa, 2009. [8] Jacyna, M., Gołębiowski, P.: An approach to optimizing the train timetable on a railway network. In: Urban Transport XXI. Southampton, Boston: WIT Press, 2015, str. 699 710. ISBN 978-1-84564-898-5. [9] Jacyna, M., Gołębiowski, P.: Konstrukcja wykresu ruchu pociągów z zastosowaniem wieloetapowej optymalizacji. Pojazdy Szynowe, 2014, nr 2, str. 1-14. [10] Jovanovic, D.; Harker, P.T.: Tactical scheduling of rail operations: The SCAN I system. Transportation Science, 1991, nr 25, str. 46 64. [11] Karoń, G., Skrzypek, M.: Aktualna metoda konstrukcji rozkładów jazdy pociągów. Zeszyty Naukowe Politechniki Śląskiej. Transport, 2006, z. 62, str. 247-256. [12] Nowosielski, L.: Organizacja przewozów kolejowych. Warszawa, 1999. [13] PKP Polskie Linie Kolejowe S.A.: Instrukcja o prowadzeniu ruchu pociągów Ir-1 (R-1). Warszawa, 2008 (z późniejszymi zmianami). Dostępny on-line: www.plk-sa.pl. [14] PKP Polskie Linie Kolejowe S.A.: Instrukcja o rozkładzie jazdy Ir-11. Warszawa, 2015. Dostępny on-line: www.speedcre.webd.pl/gs/ Logistyka 4/2015 291
[15] PKP Polskie Linie Kolejowe S.A.: Regulamin przydzielania tras pociągów i korzystania z przydzielonych tras pociągów przez licencjonowanych przewoźników kolejowych w ramach rozkładu jazdy 2014/2015. Warszawa, 2014. Dostępny on-line: www.plk-sa.pl/. [16] Poznański J., Żebrak D.: Zastosowanie metody obliczeń uproszczonych do wyznaczania czasu jazdy pociągu na szlaku. Prace Naukowe Politechniki Warszawskiej. Transport, 2012, z. 87, str. 69-83. [17] Serafini, P.; Ukovich, W.: A mathematical model for periodic event scheduling problems. SIAM Journal on Discrete Mathematics, 1989, nr 2, str. 550 581. [18] Szpigel, B.: Optimal train scheduling on a single track railway. W: Ross M.: Operation Research 72. Amsterdam, 1973, str. 343 351. [19] Woch, J.: Podstawy inżynierii ruchu kolejowego. Warszawa, 1983. [20] Wolfenburg A.: Optymalne kierowanie ruchem pociągów w obszarze sieci kolejowej. Gorzów Wlkp., 2011. 292 Logistyka 4/2015