Strona głównaArtykułyTeoria kolejek

Teoria kolejek: Formuła Erlanga-C i dlaczego rho bliskie 1 to klif

Jak poissonowskie przybywania i wykładnicze czasy usługi tworzą M/M/c, dlaczego utilizacja bliska 100% jest pułapką oraz co zasada Littlea dostarcza bezpłatnie.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Kolejka, której przewidywanie może jedynie teoria

Obserwując kolej, wydaje się ona nieprzewidywalna -- czasami jest pusta, czasami nagle długotrwała, nawet gdy średnia prędkość przybywania ludzi i średnia prędkość obsługi pozostają stałe. Teoria kolejek wyjaśnia to wydaje się przypadkowe zachowanie dwoma założeniami, które okazują się modelować ogromny zakres rzeczywistych systemów: przybywania są procesem Poissona (niezależne, bez pamięci, o jakiejś średniej prędkości lambda) a czasy obsługi są rozłożone wykładniczo (średnia prędkość mu na każdym otwartym serwerze). System oparty na tych dwóch założeniach z c równoległymi serwerami nazywany jest w notacji Kendall'a M/M/c kolejką -- dwie M'y oznaczają 'Markowian', skrótem dla bez pamięci.

Bez pamięci to nieoczekiwane, podstawowe założenie: czas obsługi wykładniczy nie ma pojęcia o 'przebiegającym się' – prawdopodobieństwo zakończenia zadania w kolejnych 30 sekund jest takie samo, czyli od chwili rozpoczęcia zadania 10 sekund temu lub 10 minut temu. Ta jedna właściwość sprawia, że cała system jest ciągiem Markowa z prosto obliczalną formułą zamkniętą, a nie system, dla którego musi być śledzone jego przeszłe historie.

demo na żywo · powiązana symulacja● LIVE

Użycie i mur dla ρ = 1

Definiujemy intensywność ruchu ρ = λ / (c · μ) – ułamka całkowitego zasobu usługi rzeczywistego użytkowania. Dopóki ρ pozostaje poniżej 1, kolejka osiąga stabilny równowagowy stan, w którym średnia długość i czekanie fluctuuje wokół pewnej wartości ograniczonej. Gdy ρ zbliża się do 1 z przeciwnego kierunku, długość kolejki i czas oczekiwania obie wybuchają, nie liniowo, ale około jak 1 / (1 - ρ): kolejka przy użyciu 80% jest w żadnym razie dwukrotnie gorsza niż ta przy użyciu 40%, jest dramatycznie gorsza, a kolejka przy użyciu 95% jest znacznie gorsza jeszcze bardziej. To niewspółliniowe klif powoduje, że centra telefoniczne, kliniki i routerzy sieci są zawsze celowo prowadzone poniżej pełnej pojemności – 100% użycie wygląda na efektywne na papierze, ale w praktyce jest katastrofą kolejkowania.

rho = lambda / (c · mu)              traffic intensity (utilisation), must stay < 1
Lq  ~ rho / (1 - rho)   for a single-server queue -- diverges as rho -> 1

Erlang-C: dokładna forma założona pod kątem personelu centrum dzwonkowego

Dla c serwerów, dokładna prawdopodobieństwo, że przybywający klient znajdzie wszystkie serwery zajęte i będzie musiał czekać — zamiast powyższego przybliżenia dla jednego serwera — jest podane przez formułę Erlanga-C, opublikowaną w 1917 roku przez Agnera Krarupa Erlanga do oceny wymaganych rozmiarów przystrojów telefonicznych w Danii i nadal stanowiącą podstawę oprogramowania personelu centrum dzwonkowego. Ze względu na to prawdopodobieństwo czekania, standardowe relacje (wspólnie z Zakonem Little’a, L = λ · W) przekształcają się prosto w średnią liczbę klientów czekających Lq oraz średni czas czekania Wq.

Zasada Little'a: jedna formuła nie wymagająca żadnych założeń

Niezależnie od przybywania zgodnego z rozkładem Poisona, wyjazdu eksponencjalnego lub jakiegokolwiek innego rozkładu, Zasada Little'a stawia na tym, że długoterminowy średni liczebny stan systemu L równa się średniej prędkości przybywania lambdy pomnożonej przez średni czas przebywania przedmiotu w systemie W: L = lambda · W. Ta zasada jest prawdziwa dla kasjerów w sklepie, oddziałów szpitalnych lub pakietów w buforze routera, a jej moc polega na tym, że nie wymaga modelowania mechanicznych szczegółów wewnętrznego działania systemu – wystarczy liczyć, ile wejdzie i jak długo pozostanie.

Dlaczego więcej, mniejszych kolejek jest gorsze niż jedna wspólna kolejka

Klasyczny i przeciwny do intuicji wynik: dla tej samej całościowej zdolności usługi, jedna wspólna kolejka dostarczająca c serwerów (jak w większości współczesnych centrów telefonicznych i linii bezpieczeństwa w lotniskach) zawsze daje krótszy średni czas oczekiwania niż c oddzielnych jednoserverowych kolejek (jak stare systemy kasjerowe w sklepach). To jest dokładnie powód, dla którego banki, pocztówki i lotniska przeniosły się od wielu równoległych linii do jednej serpentinowej kolejki dostarczającej kasjera, który wolny będzie nastąpić następnym.

Często zadawane pytania

Czym dokładnie jest M/M/c?

To oznaczenie notacji Kendall'a dla kolejki z przybywaniem poissonowskim (markowskim), usługi wykładniczą (markowską) i c serwerów równoległych. Oboje M odnoszą się do niezależności w czasie wykładniczej, która sprawia, że zachowanie kolejki można rozwiązać w postaci zamkniętej.

Dlaczego kolejka o wykorzystaniu 90% wydaje się znacznie gorsza niż ta o wykorzystaniu 70%?

Bo średnia długość kolejki i czas czekania wzrastają prawie jak rho / (1 - rho), a nie liniowo z wykorzystaniem rho. Przechodzenie od 70% do 90% wykorzystania powiększa druzgę mianownika znacznie, więc czas czekania rośnie znacznie szybciej niż by się spodziewano na podstawie różnicy w wykorzystaniu o 20 punktów.

Czy jest lepiej mieć jedną wspólną koleję czy kilka oddzielnych dla tej samej liczby serwerów?

Jedna wspólna kolej do wszystkich serwerów dowodowo jest lepsza na średnim poziomie: usuwa sytuację, w której jeden serwer stoi pusty, podczas gdy klient czeka za wolnym transakcji w innej kolejce. To powoduje, że banki i lotniska przeniosły się do jednego serpentine'a zamiast wielu kolejek dla każdego punktu obsługi.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Queueing Theory i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Queueing Theory

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)