El problema de anidamiento es un problema de optimización NP-completo , esencialmente reducible a un problema de mochila . El problema es un problema de programación lineal entera . El problema surge en muchas áreas de la industria. Imagine que trabaja en una fábrica de pulpa y papel y tiene una cantidad de rollos de papel de ancho fijo, pero diferentes clientes necesitan diferentes cantidades de rollos de diferentes anchos. ¿Cómo cortar papel para minimizar el desperdicio?
Según la Confederación de Fabricantes Europeos de Papel [1] , en 2012, 1.331 máquinas de papel en la región generaron un desperdicio promedio de 56 millones de euros (aproximadamente 73 millones de dólares estadounidenses) cada una. Ahorrar incluso el 1% será muy significativo.
La formulación estándar del problema de anidamiento (pero no el único) asume una lista de m pedidos, cada pedido requiere piezas. Formamos todas las combinaciones de anidamiento posibles ("mapas de corte") y asociamos con cada mapa una variable entera positiva , que indica cuántas veces se usó el mapa. Escribamos el problema de programación lineal:
, enterodonde - cuántas veces aparece el pedido en la tarjeta y - el precio (a menudo perdido) de la tarjeta . La naturaleza precisa de las restricciones puede conducir a características matemáticas ligeramente diferentes. Los límites dados son límites mínimos ( al menos se debe producir una cantidad determinada, pero no se excluye que se produzca más). Si , se requiere minimizar el número de piezas cortadas del material de origen. Si las restricciones de las desigualdades se reemplazan por igualdades, el problema se denomina contenedorización . En una formulación más general, las restricciones tienen dos caras (y en este caso, la solución de minimización de pérdidas puede diferir de la solución con el número mínimo de piezas de material de origen):
Esta formulación del problema es aplicable no sólo al caso unidimensional. Son posibles muchas variaciones, por ejemplo, el objetivo no es minimizar el desperdicio, sino maximizar la cantidad total de bienes producidos.
En general, el número de cartas posibles crece exponencialmente con m , el número de pedidos. A medida que aumenta el número de pedidos, puede que no sea práctico enumerar posibles patrones de anidamiento.
Alternativamente, se puede usar la generación posterior . Este método resuelve el problema de anidamiento comenzando con algunas tarjetas. El método genera nuevos mapas, si es necesario, durante el proceso de solución. En el caso unidimensional, aparecen nuevos mapas al resolver un problema de optimización adicional, el problema de la mochila , que utiliza información sobre las variables duales de un problema de programación lineal . El problema de la mochila tiene métodos bien conocidos para resolverlo, como el método de ramificación y límite y la programación dinámica . La generación de columnas diferidas puede ser mucho más eficiente que el enfoque original, especialmente a medida que crece el tamaño de la tarea. Gilmour y Gomory utilizaron por primera vez la generación de columna retardada aplicada al problema de anidamiento en una serie de artículos publicados en la década de 1960 [2] [3] . Demostraron que este enfoque está garantizado para conducir a una solución óptima (fraccional) sin tener que enumerar todos los mapas posibles de antemano.
El método original de Gilmour y Gomory no era un número entero, por lo que la solución podía contener componentes fraccionarios, por ejemplo, un determinado mapa tenía que usarse 3,67 veces. El redondeo al entero más cercano a menudo no funciona, en el sentido de que da como resultado una solución subóptima y una subproducción o sobreproducción para algunos pedidos (y una posible violación de la restricción si es de dos lados). Esta deficiencia se supera en nuevos algoritmos que permiten encontrar soluciones óptimas (en el sentido de encontrar una solución con el mínimo desperdicio) de problemas muy grandes (generalmente más grandes de lo que se necesita en la práctica [4] [5] ).
El problema del anidamiento es a menudo extremadamente degenerado, ya que es posible un gran número de soluciones con la misma cantidad de pérdidas. Esta degeneración surge de la capacidad de reorganizar partes, creando nuevos patrones de anidamiento, pero sin cambiar las pérdidas resultantes. Esto da una colección completa de tareas relacionadas que satisfacen las mismas restricciones, tales como:
La máquina de papel puede producir un número ilimitado de rollos (espacios en blanco), cada uno de 5600 mm de ancho. Necesitas obtener los siguientes 13 rollos finales:
Ancho | rollos |
---|---|
1380 | 22 |
1520 | 25 |
1560 | 12 |
1710 | catorce |
1820 | Dieciocho |
1880 | Dieciocho |
1930 | veinte |
2000 | diez |
2050 | 12 |
2100 | catorce |
2140 | dieciséis |
2150 | Dieciocho |
2200 | veinte |
Hay 308 posibles patrones de anidamiento para esta pequeña tarea. La solución óptima requiere 73 rollos originales y tiene un 0,401 % de desperdicio. Se puede demostrar que el número mínimo de nidos para esta cantidad de residuos es 10. También se puede calcular que existen 19 soluciones diferentes, cada una con 10 nidos y 0,401% de residuos. Una de esas soluciones se muestra a continuación y en la figura:
Número de tarjetas | cortes |
---|---|
2 | 1820 + 1820 + 1820 |
3 | 1380 + 2150 + 1930 |
12 | 1380 + 2150 + 2050 |
7 | 1380 + 2100 + 2100 |
12 | 2200 + 1820 + 1560 |
ocho | 2200 + 1520 + 1880 |
una | 1520 + 1930 + 2150 |
dieciséis | 1520 + 1930 + 2140 |
diez | 1710 + 2000 + 1880 |
2 | 1710 + 1710 + 2150 |
73 |
Las tareas de anidamiento se pueden clasificar de varias formas [9] . Una forma es anidar dimensiones: el ejemplo anterior ilustra el anidamiento unidimensional (1D). Otros usos industriales del anidamiento 1D son el corte de tuberías, cables y barras de acero. Los problemas bidimensionales se utilizan en la producción de muebles, ropa y vidrio. No hay muchas aplicaciones de anidamiento en 3D, pero los problemas relacionados con el empaque en 3D tienen muchas aplicaciones industriales, en particular, la distribución de objetos en contenedores de envío ( ver, por ejemplo , la hipótesis de Kepler) .
Una aplicación industrial del problema de anidamiento para plantas de producción en masa ocurre cuando el material base se produce en rollos grandes y luego se corta en piezas más pequeñas (ver corte longitudinal ). Esto ocurre, por ejemplo, en la producción de películas de papel y polímeros, así como en la fabricación de láminas planas de metal (hierro o bronce). Hay muchas variaciones y restricciones adicionales debido a restricciones de fabricación o de proceso, requisitos del cliente y problemas de calidad. Algunos ejemplos:
El software de anidamiento para la industria papelera es suministrado por ABB Group , Greycon , Honeywell y Tieto .
El algoritmo de anidamiento para la industria del acero fue formulado por Robert Gongorra en 1998 y SONS (Steel Optimization Nesting Software) desarrolló un software para mejorar la utilización de la placa de acero y reducir el desperdicio.
La tarea de corte con guillotina es la tarea de cortar láminas de vidrio en rectángulos de dimensiones específicas, utilizando solo cortes que se extienden a lo largo de toda la longitud (o ancho) de la lámina.
El problema relacionado de determinar (para el caso unidimensional) el mejor tamaño del rollo original que satisfaga los requisitos; conocido como el problema del surtido [10] .
El problema del corte fue formulado por primera vez por Kantorovich en 1939 [11] . En 1951, incluso antes de que las computadoras estuvieran ampliamente disponibles, L. V. Kantorovich y V. A. Zalgaller propusieron [12] un método para resolver el problema del uso económico del material durante el corte usando programación lineal. La técnica propuesta más tarde se denominó Método de Generación de Columnas .
Nombre | Licencia | Breve descripción |
---|---|---|
Solucionador de vicepresidente | GPL | Software gratuito "Vector Packing Solver" ( VPSolver ) que se puede utilizar para optimizar el anidamiento 1D. El método de solución se basa en la formulación del flujo en el gráfico. |