3D balení nákladu za 0,3 sekundy: algoritmus MaxRects s LIFO a plnou rotací
Webová služba na Django řeší úlohu 3D balení nákladu pro flotilu eurokamionů, kontejnerů a lehkých užitkových vozidel. Algoritmus zpracuje 400+ položek SKU za 0,19–0,3 sekundy, zohledňuje LIFO, 90% opěrné plochy a rotaci kolem 6 os. Rozhraní s Three.js vizualizuje výsledek v reálném čase a podporuje nahrávání z Excelu a ruční zadávání.
Vývoj od Telegram bota k plnohodnotné platformě
Projekt začal optimalizačními jádry: 0,4 sekundy na problém obchodního cestujícího pro 10 000 bodů, méně než 1 sekunda na balení složitých tvarů jako trojlístky. Telegram bot přijímal JSON s rozměry a vracel souřadnice, ale pro maloobchod bylo potřeba webové rozhraní.
Klíčové požadavky na produkt:
- Dvoupanelové rozhraní pro flotilu a náklad.
- Parsování Excelu s validací.
- Interaktivní 3D vizualizace na Three.js.
Technologický stack: Python/Django, PostgreSQL v Dockeru, frontend Three.js. Priorita – rychlost a praktičnost: LIFO je důležitější než ideální hustota.
Algoritmus 3D MaxRects: fyzika místo matematiky
Modifikovaný 3D MaxRects pracuje se seznamem volných rovnoběžnostěnů v nákladovém prostoru, vyhýbá se úplnému prohledávání souřadnic. Vektorizace zajišťuje výkon 0,19–0,3 sekundy pro flotilu 8 vozidel.
Parametry fyzické realizovatelnosti:
- Plná rotace (6 projekcí): Dlouhé náklady (2400 mm) zkoušejí vertikální nebo hranové postavení, pokud to rozměry umožňují.
- Opěrná plocha 90%: Krabice se opírají o spodní vrstvu minimálně na 90% plochy, vylučují se visící řešení.
- LIFO pořadí: Zohledňuje se pořadí vykládky pro reálné sklady.
Srovnání s trhem: konkurenti tráví minuty nebo hodiny, často ignorují LIFO a fyziku.
Architektura: Django, Docker a škálovatelnost
Backend na Django + PostgreSQL v Docker kontejnerech. Nginx + Gunicorn (3 workeři) zajišťuje odolnost proti selhání. HTTPS na portu 443 obchází firemní firewally. Průměrná spotřeba paměti – 29% na serveru s 8 GB při 400 SKU.
Autorizace přes Django Auth: izolace dat podle uživatelů, historie výpočtů v ORM. Každý vidí pouze svou flotilu a náklad.
Rozhraní: flexibilní zadávání a jemné nastavení
Dvoupanelové rozvržení odděluje flotilu (vpravo) a náklad (vlevo). Flotila: rozměry, nosnost, množství. Náklad: rozměry, hmotnost, množství, parametry (LIFO, StackLimit).
Možnosti zadávání:
- Ruční formuláře pro korekce.
- Hromadné nahrávání z Excelu s validací.
Zaškrtávací políčka optimalizace:
- Náklon (Tilt): Povolení/zákaz rotace pro křehký náklad.
- Optimalizace flotily: Priorita plnění velkých vozidel pro minimalizaci jízd.
Vizualizace a export výsledků
Výpočet za 0,19–0,3 sekundy poskytuje 3D scénu na Three.js. Barevné kódování podle SKU, interaktivní otáčení, kontrola LIFO a opěr. Export: PDF reporty nebo Excel se souřadnicemi X, Y, Z.
Nasazení pro produkci
Gunicorn se 3 workery + Nginx reverzní proxy. Docker zajišťuje autonomii. Testování: 98% pokrytí, stabilita pod zátěží několika uživatelů.
Co je důležité
- Rychlost 0,19–0,3 sekundy na 400 SKU a 8 vozidel.
- Fyzická omezení: LIFO, 90% opěra, 6 os rotace.
- Rozhraní pro logistiky: Excel, 3D vizualizace, izolace dat.
- Produkční stack: Django, Docker, Nginx/Gunicorn.
- Škálovatelnost: nízká spotřeba zdrojů.
— Editorial Team
Zatím žádné komentáře.