Jak działa algorytm optymalizacji załadunku PalletPlan

Zastanawiasz się, czemu planer ustawił tę paletę tam? Oto jak algorytm optymalizacji załadunku PalletPlan wypełnia naczepę, za każdym razem tak samo.

Optymalizator załadunku naczepy ma jedno zadanie: na podstawie listy palet wskazać, gdzie trafia każda z nich, tak aby cały ładunek się zmieścił, był stabilny i schodził w odpowiedniej kolejności na każdym przystanku. Brzmi jak coś do zrobienia ręcznie. Przy dziesięciu paletach może i tak. Przy czterdziestu różnych paletach od pięciu klientów możliwych układów jest więcej niż sekund od początku wszechświata, więc "po prostu sprawdź wszystkie" nigdy nie wchodziło w grę.

Potrzebna jest metoda, która jest szybka, powtarzalna i dobra. Dokładnie tak robi to planer załadunku PalletPlan, od pustej naczepy po gotowy plan. Żadnej czarnej skrzynki.

Problem: zbyt wiele układów, by je zliczyć

Załadunek to problem pakowania, a problemy pakowania są trudne w ścisłym sensie: liczba możliwych układów rośnie lawinowo z każdą kolejną paletą. Nie da się sprawdzić wszystkich, a człowiek na rampie z podkładką tym bardziej. Dyspozytorzy radzą sobie rutyną i zostawiają luki "na wszelki wypadek", i właśnie tam marnuje się przestrzeń i rosną koszty frachtu.

Celem nie jest znalezienie jednego idealnego układu. Chodzi o to, by szybko znaleźć bardzo dobry, i to za każdym razem ten sam, żeby dało się mu naprawdę zaufać. PalletPlan robi to w dwóch warstwach.

Warstwa pierwsza: ustawienie jednej palety

Zacznij od pustej naczepy, mniej więcej 13,6 m długości, 2,45 m szerokości, 2,7 m wysokości. Pierwsza paleta trafia w przedni lewy róg, na podłogę. Gdy tylko staje, otwiera nowe wolne narożniki obok siebie i za sobą. Algorytm prowadzi bieżącą listę tych wolnych narożników (w żargonie: punkty ekstremalne), a każda kolejna paleta ląduje w najlepszym dostępnym.

"Najlepszy" ma ścisłą hierarchię: najpierw jak najniżej, żeby trzymać wszystko na podłodze; potem jak najbliżej przodu naczepy; potem w poprzek szerokości. W praktyce pakujący wypełnia pas w poprzek szerokości, zanim przesunie się głębiej do tyłu.

Próbuje też każdą paletę w obu ustawieniach i zostawia to, które lepiej wypełnia szerokość. W naczepie szerokiej na 2,45 m paleta EUR krótszym bokiem w poprzek (0,8 m) mieści się trzy obok siebie; obrócona dłuższym bokiem (1,2 m) tylko dwie. Ten sam pas podłogi, ale o 50% więcej palet w każdym rzędzie, więc optymalizator obraca je efektywnie, a nikt nawet o tym nie myśli.

Przed każdym ustawieniem działają dwie kontrole: czy paleta w ogóle mieści się w naczepie i czy nachodzi na coś, co już tam stoi? Nakładki są odrzucane od razu, testem kolizji prostopadłościanów. Żadna paleta nigdy nie może przenikać przez inną.

Warstwa druga: próbowanie wielu kolejności

Kolejność ustawiania zmienia wszystko. Włóż najpierw duże, nieporęczne palety, a małe wpłyną w luki wokół nich. Włóż najpierw małe, a duże utkną, bo nie ma już dla nich miejsca. Dlatego pierwszy przebieg zawsze sortuje palety od największej i pakuje je w tej kolejności.

Jeden przebieg rzadko jest jednak najlepszy. Dlatego PalletPlan uruchamia pakujący raz za razem, do 50 razy, za każdym razem nieco mieszając kolejność w obrębie tej tendencji "najpierw największe" i zachowując najlepszy znaleziony wynik. Ta technika nazywa się GRASP (Greedy Randomized Adaptive Search Procedure), długa nazwa na prostą myśl: bądź zachłanny, dodaj kontrolowaną dawkę losowości, zachowaj zwycięzcę. Całe przeszukiwanie kończy się w niecałe trzy sekundy i przerywa wcześnie, gdy wyniki przestają się poprawiać.

Co naprawdę znaczy "najlepszy"

Każdy gotowy układ dostaje ocenę i tu widać priorytety optymalizatora. Pierwsza zasada jest bezwzględna: zmieść więcej palet. Plan, który ładuje 38 z 40 palet, zawsze bije ten, który ładuje 37, niezależnie od tego, jak schludnie wygląda ten mniejszy. Dopiero gdy dwa plany mieszczą tyle samo, w grę wchodzi cokolwiek innego.

Potem o zwycięzcy decydują cztery rzeczy, w tej kolejności wagi:

  • Grupowanie klientów (najwyższa waga, 0,40). Trzymanie towaru każdego klienta w jednym bloku, żeby kierowca zabrał całe zamówienie naraz, zamiast przekopywać się przez naczepę.
  • Wykorzystanie przestrzeni (0,30). Ile objętości naczepy faktycznie się wykorzystuje.
  • Zachowanie powierzchni EUR (0,15). Pozostawianie czystych, wielkości palety EUR miejsc na podłodze na towar last-minute i zwroty.
  • Efektywność piętrzenia (najniższa waga, 0,10). Niewielka nagroda za wykorzystaną przestrzeń pionową, celowo trzymana nisko, żeby optymalizator nigdy nie piętrzył tylko po to, by podbić własną ocenę.

Ta kolejność to świadomy wybór. Na trasie wieloprzystankowej kierowca szukający palet jednego klienta kosztuje więcej realnego czasu niż kilka procent wypełnienia kiedykolwiek, więc grupowanie stoi wyżej niż samo wykorzystanie przestrzeni.

Rzeczy, które liczą się na rampie

Garść zachowań istnieje tylko dlatego, że prawdziwe ładunki są nieuporządkowane:

  • Piętrzenie w obrębie klienta. Gdy jedna paleta może bezpiecznie stanąć na innej tego samego klienta, optymalizator buduje tę kolumnę, zamiast rozrzucać klienta po podłodze. Możesz też twardo zablokować piętrzenie między klientami, gdy towar musi pozostać rozdzielony.
  • Kolejność dostaw. Ustaw kolejność przystanków, a pakujący wprowadza ostatni przystanek najpierw, żeby trafił głęboko w naczepę, a przystanek nr 1 ostatni, najbliżej drzwi. To załadunek LIFO, na którym polegają kierowcy, załatwiony za ciebie.
  • Zablokowane palety. Jeśli część naczepy jest już załadowana, zablokuj te pozycje, a optymalizator potraktuje je jako stałe przeszkody i zaplanuje tylko wokół reszty. Nigdy nie dostaniesz planu, który każe kierowcy rozładować towar już znajdujący się na pokładzie.
  • Domykanie luk. Ostatni przebieg dosuwa palety na podłodze do siebie, żeby nie został zmarnowany korytarz biegnący przez środek ładunku.

Czego celowo nie rusza, na razie: równoważenia nacisków na osie, reguł dla towarów wrażliwych i dzielenia ładunku na kilka naczep. To realne sprawy i zwłaszcza rozkład masy zasługuje na uwagę, ale zostają w rękach dyspozytora, zamiast być udawane przez narzędzie.

Te same dane, ten sam plan, za każdym razem

Jeden szczegół robi dla zaufania więcej niż cała reszta: optymalizator jest deterministyczny. Cała jego "losowość" przechodzi przez stałe ziarno (seed), więc ta sama lista palet daje dokładnie ten sam plan przy każdym uruchomieniu i na każdej maszynie. Naciśnij optymalizuj dwa razy, a dostaniesz identyczny układ.

To ważne, bo plan, którego nie da się odtworzyć, to plan, na którym nie można polegać. Uruchamiasz PalletPlan, czytasz wynik, zmieniasz jedną rzecz i uruchamiasz ponownie, traktując go jak narzędzie, którym sterujesz, a nie jak automat do gry. Zdejmuje z ciebie kombinatoryczną ciężką robotę i zostawia decyzje wymagające osądu osobie, która zna trasę.

Zobacz to na własnych paletach

Najszybszy sposób, by zrozumieć algorytm, to dać mu prawdziwy ładunek. Wprowadź swoją listę palet (wymiary, klienci, przystanki dostawy i co się na czym piętrzy) i patrz, jak w kilka sekund buduje plan. Przeczytaj metodę krok po kroku, którą automatyzuje, albo po prostu otwórz planer i rzuć mu jedną ze swoich trudniejszych tras.

Wypróbuj PalletPlan za darmo · Jak to działa · Cennik


Więcej do przeczytania: Jak efektywnie załadować naczepę | Jak sprytne planowanie załadunku obniża koszty frachtu | Rozkład masy w naczepie i limity osi