Dichte Packungen von Kreisen in ein Rechteck
Wie packt man möglichst viele Garnrollen platzsparend auf eine Palette? Für dieses Problem der Firma Autefa Automation Gmbh galt es ein Steuerprogramm für einen Roboterarm zu entwickeln, der diese Garnrollen dann entprechend auf Paletten stellt.
/fileadmin/website_uni_ulm/iui.inst.190/Forschung/Projekte/Packing/spule.jpg
Die seitherige Vorgehensweise war, dass die Garnrollen gemäß einer Gitterstruktur gleichmäßig auf die Paletten gestellt wurden. Die Paletten sind Rechtecke mit den Seitenlängen 1 m und 1,2 m. Die Garnrollen haben alle die gleiche Höhe, und verschiedene Durchmesser im Bereich von 9 bis 29 cm. Je nach Durchmesser der Garnrollen konnte es dann passieren, dass an den Rändern viel Platz frei blieb. Dadurch waren dann die Platzkapazitäten nicht optimal ausgenutzt, was erhöhte Kosten zur Folge hat. Wir haben im Auftrag von Autefa einen Algorithmus zur Platzierung der Garnrollen entwickelt, der in solchen Fällen deutlich mehr Rollen auf eine Palette bringt.
Ein Beispiel
- Haben die Garnrollen einen Durchmesser von 20 cm, so passen gemäß der Gitterstruktur gerade 5 mal 6 = 30 Garnrollen auf eine Palette und dies ist auch die optimale Packung.
- Haben die Garnrollen einen Durchmesser von 21 cm, so passen gemäß der Gitterstruktur nur 4 mal 5 = 20 Garnrollen auf eine Palette und es bleibt ein Randstreifen von 16 bzw. 15 cm Breite. Die Palettenfläche ist dann nur zu knapp 58% abgedeckt.
- Das von uns entwickelte Verfahren platziert in einer unregelmäßigen Anordung 26 Garnrollen mit einem Durchmesser von 21 cm auf einer Palette, also 6 mehr als bei der Gitterstruktur. Die Palettenfläche ist dann zu ca. 75% abgedeckt.
Dies bedeutet also eine Steigerung der Platzauslastung um fast 30%. Die Paletten werden mit Lastwagen ausgefahren. In der Folge sinken also die LKW-Transporte entprechend um 30%.
Eine abstrakte Formulierung der Problemstellung
Eine einfache mathematische Beschreibung des Problems erhält man, wenn man eine Palette als Rechteck und die Garnrollen als Kreise auffasst. Die Aufgabenstellung lautet dann folgendermaßen:
- Gegeben sind ein Rechteck einer festen Größe und Kreise von verschiedenen Durchmessern.
- Gesucht ist eine nicht-überlappende Anordnung von einigen dieser Kreise innerhalb des Rechtecks, so dass die abgedeckte Fläche maximal ist.
Historie und Referenzen
Ein Spezialfall des Problems wird bereits seit einigen Jahren von Mathematikern studiert: packe möglichst viele Kreise mit gleichem Durchmesser in ein Quadrat. Die besten Lösungen bis zu 25 Kreisen findet man übersichtlich in Erich's Packing Center. Lösungen bis zu 100 Kreisen findet man auf der home page von Peter Gabor Szabo. Ein individuelles Berechnungsformular wird auf der Packomania Seite von Eckard Specht bereitgestellt. Ein guter Algorithmus ist in einer Arbeit von David W. Boll, Jerry Donovan , Ronald L. Graham and Boris D. Lubachevsky im Electronic Journal of Combinatorics 7(1), 2000 veröffentlicht (ps | pdf). Uwe Schöning hat die Problemstellung in eine Aufgabe beim Bundeswettbewerb Informatik gepackt.
Die Grundidee des Algorithmus
Wir starten (virtuell) mit einem Rechteck, das um einiges größer ist als die Palette, so dass die zu packenden Kreise regelmäßig und in gewissen Abständen zueinander in dieses Rechteck platziert werden können.
Dann startet gewissermaßen ein Schüttelvorgang: die Kreise werden in eine zufällig gewählte Richtung verschoben, wobei die Richtung zum Rechteckszentrum bevorzugt wird. Falls es nach einer solchen Schüttelbewegung am Rand etwas Platz gibt, wird das virtuelle Rechteck entsprechend verkleinert. Dieser Vorgang wird dann sehr oft wiederholt. Die Stärke der Schüttelbewegung nimmt dabei ständig ab, je enger die Kreise bereits liegen.
Im erfolgreichen Fall ist das virtuelle Rechteck nach einiger Zeit auf die Größe der Palette geschrumpft und alle Kreise sind gepackt. Ansonsten konstatiert der Algorithmus, dass diese Kreise nicht auf die Palette passen, und man wiederholt das ganze mit weniger Kreisen.
Eine ausführlichere Beschreibung findet man in einem Auszug aus dem Bericht zum Projekt (ps | pdf).
Warum funktioniert das so gut? Vermutlich haben die Meisten dieses Verfahren in anderen Zusammenhängen schon angewendet: füllt man eine Dose beispielsweise mit Kaffeebohnen voll und schüttelt die Dose dann etwas, so sinken die Bohnen ein wenig in sich zusammen. Der Schüttelvorgang, gewissermaßen ein Zufallsprozess, führt zu einer dichteren Lagerung der Bohnen.
Intuitiv kann man sich vorstellen, dass eine Bohne durch das Schütteln zunächst angehoben wird und dann durch die Schwerkraft wieder nach unten fällt. Dabei kann sie dann in Lücken fallen, die vorher durch andere Bohnen versperrt waren. Die Schwerkraft wird in unserem Algorithmus simuliert durch eine gewichtete Wahrscheinlichkeitsverteilung der Bewegungsrichtung der Kreise, die mit höherer Wahrscheinlichkeit zum Rechteckszentrum führt.
Auszeichnung
Das Projekt wurde mit dem
Kooperationspreis Wissenschaft-Wirtschaft 2001/2002
der Universität Ulm ausgezeichnet.