Después de Andrew en su respuesta me señaló la dirección correcta y nombró el problema para mí, decidí volcar los resultados de mi investigación aquí en una respuesta por separado.
Esto es realmente un problema de embalaje, y para ser más precisos, es un problema de anidamiento. El problema matemáticamente es NP-hard, y por lo tanto los algoritmos que se usan actualmente son enfoques heurísticos. No parece haber soluciones que resuelvan el problema en tiempo lineal, excepto por conjuntos de problemas triviales. La solución de problemas complejos lleva de minutos a horas con el hardware actual, si desea lograr una solución con una buena utilización del material. Existen decenas de soluciones de software comerciales que ofrecen formas anidadas, pero no pude encontrar ninguna solución de código abierto, por lo que no hay ejemplos reales en los que se puedan ver los algoritmos realmente implementados.
Puede encontrar una excelente descripción del problema de anidamiento y anidamiento de tiras con soluciones históricas en un documento escrito por Benny Kjær Nielsen de la Universidad de Copenhague (Nielsen).
El enfoque general parece ser mezclar y usar múltiples algoritmos conocidos para encontrar la mejor solución de anidamiento. Estos algoritmos incluyen (Guided/Iterado) Búsqueda local, rápida Barrio búsqueda que se basa en n-Fit Polígono, y empujones Heurística. Encontré un excelente artículo sobre este tema con imágenes de cómo funcionan los algoritmos. También tenía puntos de referencia de las diferentes implementaciones de software hasta ahora. Este documento fue presentado en el Simposio Internacional de Programación 2006 por S. Umetani et al (Umetani).
A relativamente nuevo y, posiblemente, el mejor enfoque hasta la fecha se basa en híbrido Algoritmo Genético (HGA), un híbrido que consiste en recocido simulado y algoritmo genético que ha sido descrito por Wu Qingming y col. De la Universidad de Wuhan (Quanming). Lo han implementado utilizando Visual Studio, base de datos SQL y la herramienta de optimización de algoritmos genéticos (GAOT) en MatLab.
El documento vinculado de Umetani es ahora un 404. ¿Cuál era el título, para que la gente pueda buscarlo en Google? –
El título está realmente en el enlace, si coloca el cursor sobre él. :) Actualicé el enlace roto. – Fuu