3D-Ladungsoptimierung in 0,3 Sekunden: MaxRects-Algorithmus mit LIFO und voller Rotation
Ein Django-Webdienst löst das 3D-Ladungsoptimierungsproblem für Flotten von LKWs, Containern und Transportern. Der Algorithmus verarbeitet über 400 SKU-Artikel in 0,19–0,3 Sekunden und berücksichtigt LIFO, 90 % Auflagefläche und Rotation über 6 Achsen. Eine Schnittstelle mit Three.js visualisiert die Ergebnisse in Echtzeit und unterstützt Excel-Uploads und manuelle Eingaben.
Entwicklung vom Telegram-Bot zur vollwertigen Plattform
Das Projekt begann mit Optimierungs-Engines: 0,4 Sekunden für ein Traveling-Salesman-Problem mit 10.000 Punkten, unter 1 Sekunde für die Packung komplexer Formen wie Kleeblätter. Ein Telegram-Bot akzeptierte JSON mit Abmessungen und gab Koordinaten aus, doch der Einzelhandel benötigte eine Web-Oberfläche.
Wichtige Produktanforderungen:
- Zwei-Fenster-Oberfläche für Flotte und Ladung.
- Excel-Parsing mit Validierung.
- Interaktive 3D-Visualisierung mit Three.js.
Tech-Stack: Python/Django, PostgreSQL in Docker, Frontend mit Three.js. Priorität: Geschwindigkeit und Praktikabilität – LIFO ist wichtiger als perfekte Dichte.
3D-MaxRects-Algorithmus: Physik vor Mathematik
Der modifizierte 3D-MaxRects arbeitet mit einer Liste freier Parallelepipede im Laderaum und vermeidet vollständige Koordinatenaufzählung. Vektorisierung liefert eine Leistung von 0,19–0,3 Sekunden für eine Flotte von 8 Fahrzeugen.
Physikalische Machbarkeitsparameter:
- Volle Rotation (6 Projektionen): Lange Artikel (2400 mm) probieren vertikale oder Kantenpositionen, wenn die Abmessungen es erlauben.
- Auflagefläche 90 %: Kartons ruhen auf der unteren Schicht mit mindestens 90 % Fläche, was instabile Lösungen ausschließt.
- LIFO-Reihenfolge: Die Entladeabfolge wird für reale Lager berücksichtigt.
Marktvergleich: Konkurrenten benötigen Minuten oder Stunden und ignorieren oft LIFO und Physik.
Architektur: Django, Docker und Skalierbarkeit
Backend auf Django + PostgreSQL in Docker-Containern. Nginx + Gunicorn (3 Worker) gewährleistet Fehlertoleranz. HTTPS auf Port 443 umgeht Unternehmensfirewalls. Die durchschnittliche Speichernutzung beträgt 29 % auf einem 8-GB-Server mit 400 SKUs.
Autorisierung über Django Auth: Datenisolierung pro Benutzer, Berechnungshistorie im ORM. Jeder Benutzer sieht nur seine eigene Flotte und Ladung.
Oberfläche: Flexible Eingabe und Feinabstimmung
Zwei-Fenster-Layout trennt Flotte (rechts) und Ladung (links). Flotte: Abmessungen, Ladekapazität, Menge. Ladung: Größe, Gewicht, Menge, Parameter (LIFO, StackLimit).
Eingabeoptionen:
- Manuelle Formulare für Anpassungen.
- Stapel-Excel-Upload mit Validierung.
Optimierungs-Checkboxen:
- Kippen: Rotation für empfindliche Ladung erlauben/einschränken.
- Flottenoptimierung: Große Fahrzeuge priorisieren, um Fahrten zu minimieren.
Visualisierung und Export der Ergebnisse
Berechnung in 0,19–0,3 Sekunden gibt eine 3D-Szene mit Three.js aus. Farbkodierung nach SKU, interaktive Rotation, LIFO- und Auflagenprüfungen. Export: PDF-Berichte oder Excel mit X-, Y-, Z-Koordinaten.
Bereitstellung für die Produktion
Gunicorn mit 3 Workern + Nginx-Reverse-Proxy. Docker gewährleistet Autonomie. Tests: 98 % Abdeckung, Stabilität unter Last durch mehrere Benutzer.
Wichtigste Erkenntnisse
- Geschwindigkeit von 0,19–0,3 Sekunden für 400 SKUs und 8 Fahrzeuge.
- Physikalische Einschränkungen: LIFO, 90 % Auflage, 6-Achsen-Rotation.
- Oberfläche für Logistik: Excel, 3D-Visualisierung, Datenisolierung.
- Produktions-Stack: Django, Docker, Nginx/Gunicorn.
- Skalierbarkeit: geringer Ressourcenverbrauch.
— Editorial Team
Noch keine Kommentare.