Zum Inhalt springen
Startseite » Blog » AI Warehouse

AI Warehouse

Zu den interessantesten Projekten zählen häufig solche, die am Ende dann doch nicht realisiert werden. Während meiner Trascon-Zeit hatte ich die Gelegenheit, selbst nach Aufträgen Ausschau zu halten. Und, soviel kann ich jedenfalls sagen, es gibt mehr als genug interessante Ideen da draußen.

Ich bleibe ein bisschen im Abstrakten, was die inhaltliche Beschreibung angeht, denn ich möchte die betreffende Firma nicht nennen. Das ermöglicht mir aber gleichzeitig, mich auf das Wesentliche zu konzentrieren.

Jedenfalls besaß man ein Auslieferungslager, und da es dem Unternehmen gut ging, waren die Produktionszahlen kontinuierlich gestiegen. So kam es, dass jenes Lager zu klein wurde. Und die räumlichen Verhältnisse ließen keine Erweiterung zu.

Nun sollte man sich nicht vorstellen, dass da eine große Halle ist, die voll ist und in die nichts mehr hinein passt. Das Problem ist komplizierter, und vor allem ist es dynamisch.

Nehmen wir mal an, dass das, was da hergestellt wird, immer irgendwie gleich aussieht, die gleiche Form hat und so weiter, und auch leicht irgendwo zu lagern ist. Das Lager hat eine begrenzte Fläche, und die Produkte müssen gestapelt werden.

Nun gibt es von dem Produkt aber ein paar hundert verschiedene Varianten. Und von diesen Varianten werden, je nach Auftragslage und nach den Gegebenheiten in der Produktion, mal zwanzig Stück von der einen Sorte produziert, dann zehn von der anderen, und morgen wieder 50 von der dritten.

Die Sachen werden dann im Lager abgelegt. An der anderen Seite werden die Produkte an die Kunden abtransportiert. Man kennt dabei zwar die ungefähre Planung, wer was wann abholen möchte, aber die Verkehrssituation, Änderungen in den Bestellungen und was auch immer machen auch diesen Plan etwas volatiler als man es eigentlich gerne hätte.

Das Problem ist klar: die Sachen sollen schnell rein ins Lager und sie sollen schnell wieder raus. Wenn der Füllgrad nun sehr niedrig ist, wenig gestapelt werden muss und kaum unterschiedliche Varianten des Produktes existieren, ist das ganz einfach. Pack die Sachen irgendwo hin und hol sie später wieder ab.

Haben wir es aber mit vielen Produktvarianten zu tun und mit einem gut gefüllten Lager, dann gibt es irgendwo einen kritischen Punkt, ab dem sich das Problem ganz anders darstellt: die gesuchte Variante liegt womöglich irgendwo ganz unten in einem Stapel. Und ich hätte erwähnen sollen, dass man nichts “unten herausziehen” kann, sondern die Stapel von oben her wieder abgeräumt werden müssen – alles funktioniert mit einem Kran.

Ab diesem kritischen Füllgrad des Lagers ist jener Kran dann mehr damit beschäftigt, umzusortieren als ein- und auszulagern. Und dieser Punkt tritt lange ein, bevor das Lager wirklich voll ist.

Nun finde man also die optimale Strategie für den Kran, wie er die Dinge ablegt, damit er möglichst wenig Zusatzarbeit für das Umlagern hat und die Kapazität des Lagers so weit wie möglich ausgenutzt werden kann. Die Flexibilität der Ein- und Ausgangspläne ist dabei natürlich zu berücksichtigen.

Spannend genug? Gut.

In so einem Fall versuche ich das Problem zunächst möglichst vollständig zu verstehen. Ich begab mich also vor Ort und lies mir alles zeigen. Wie funktioniert das hier wirklich? Aha – zwei Kräne! Und nehmen die immer nur ein Teil auf oder mehrere? Was geht dabei und was nicht? Kann man beliebig schmale Stapel machen oder gibt es Regeln, wie man die Sachen neben- und übereinander legt, damit nichts umkippt? Und was passiert eigentlich, wenn etwas kaputt geht – sei es in der Produktion oder bei einem der Kräne?

Das nächste Thema – wie macht man das denn im Moment? Wie sich nämlich immer wieder herausstellt, sollte man die Intuition eines erfahrenen Angestellten auf keinen Fall unterschätzen. Was er “aus dem Bauch heraus” tut, ist häufig gar nicht so weit von einem mathematischen Optimum entfernt.

Also sollte man versuchen, diese Intuition ein wenig zu verstehen. Schlussendlich aber hat alles Bauchgefühl auch seine Grenzen: es mag eben womöglich doch um einiges besser gehen, wenn man wirklich rechnet.

Als nächstes versuchte ich die Komplexität des Problems abzuschätzen. Die pure Größe des Zustandsraumes ließ deterministische Rechnungen nicht zu. Meine Überlegungen gingen in Richtung unüberwachtes Lernen, allerdings auch nicht in seiner einfachsten Form, da wie gesagt die Randbedingungen sich stetig änderten und eine einmal gefundene Strategie jeden Moment wieder modifiziert werden müsste. Das mag aber gehen, wenn man erstmal ein geeignetes Grundmodell hat.

Mit diesen Gedanken im Hinterkopf programmierte ich eine kleine Demoanwendung, die das Problem zwar nicht löste, aber dem Kunden zeigen sollte, wie ich vorgehen wollte. Eine kleine python-Anwendung, die Oberfläche aus dem Qt-Designer, ein paar Java-Komponenten. Man konnte auf dem Bildschirm sehen, wie das Programm lernt, ein winziges Lager voller farbiger Quadrate effizient umzusortieren und nach einem vorgegebenen Plan abzuräumen.

Und das war es dann. Plötzlich und unerwartet hatte der Kunde das mir zuvor als definitiv unmöglich Beschriebene möglich gemacht und doch noch Platz für eine räumliche Erweiterung seines Lagers geschaffen.

Ja gut. So geht es natürlich auch.