Nachdem Andrew in seiner Antwort mich in der richtigen Richtung und das Problem für mich genannt, habe ich beschlossen, meine Forschungsergebnisse hier in einer separaten Antwort auszugeben.
Dies ist in der Tat ein Verpackungsproblem, und um genau zu sein, ist es ein Verschachtelungsproblem. Das Problem ist mathematisch NP-schwer und daher sind die derzeit verwendeten Algorithmen heuristische Ansätze. Es scheint keine Lösungen zu geben, die das Problem in linearer Zeit lösen würden, außer für triviale Problemmengen. Die Lösung komplexer Probleme dauert mit der aktuellen Hardware Minuten bis Stunden, wenn Sie eine Lösung mit guter Materialausnutzung erreichen möchten. Es gibt Dutzende kommerzieller Softwarelösungen, die das Verschachteln von Formen anbieten, aber ich konnte keine Open-Source-Lösungen finden, daher gibt es keine realen Beispiele, bei denen man die tatsächlich implementierten Algorithmen sehen könnte.
Eine ausgezeichnete Beschreibung des Nesting- und Strip-Nesting-Problems mit historischen Lösungen findet sich in einem Papier von Benny Kjær Nielsen von der Universität Kopenhagen (Nielsen).
Allgemeiner Ansatz scheint zu sein, mehrere bekannte Algorithmen zu mischen und zu verwenden, um die beste Verschachtelungslösung zu finden. Diese Algorithmen sind (Guided/Iterated) Lokale Suche, Schnell Neighborhood Search, die auf No-Fit Polygon und Drängeln Heuristiken basiert. Ich fand eine großartige Arbeit zu diesem Thema mit Bildern, wie die Algorithmen funktionieren. Es hatte auch Benchmarks der verschiedenen Software-Implementierungen bisher. Dieses Papier wurde auf dem International Symposium on Scheduling 2006 von S. Umetani et al. (Umetani) vorgestellt.
Eine relativ neue und möglicherweise der beste Ansatz bisher basiert auf Hybrid genetischen Algorithmus (HGA), ein Hybrid aus Simulated Annealing bestehend und genetischen Algorithmus, die von beschrieben wurde Wu Qingming und Mitarbeiter der Universität Wuhan (Quanming). Sie haben dies implementiert, indem sie Visual Studio, SQL-Datenbank und Genetic Algorithm Optimization Toolbox (GAOT) in MatLab verwenden.
Das verlinkte Papier von Umetani ist jetzt ein 404. Was war der Titel, so dass Leute googlen können? –
Der Titel befindet sich tatsächlich auf dem Link, wenn Sie darüber schweben. :) Ich habe den defekten Link aktualisiert. – Fuu