El programa lineal de configuración ( configuration-LP ) es una técnica de programación lineal utilizada para resolver problemas de optimización combinatoria . Fue introducido en el contexto del problema de corte de stock . [1] [2] Posteriormente, se ha aplicado al empaquetado de contenedores [3] [4] y a los problemas de programación de trabajos . [5] [6] En el programa lineal de configuración, hay una variable para cada configuración posible - cada posible multiconjunto de elementos que pueden caber en un solo contenedor (estas configuraciones también se conocen como patrones ). Por lo general, el número de configuraciones es exponencial en el tamaño del problema, pero en algunos casos es posible obtener soluciones aproximadas utilizando solo un número polinomial de configuraciones.
En el problema de empaquetado de contenedores , hay n artículos con diferentes tamaños. El objetivo es empaquetar los artículos en un número mínimo de contenedores, donde cada contenedor puede contener como máximo B. Una configuración factible es un conjunto de tamaños con una suma de como máximo B.
Denotemos por S el conjunto de tamaños diferentes (y su número). Denotemos por C el conjunto de configuraciones diferentes (y su número). Para cada tamaño s en S y configuración c en C , denotemos:
Entonces, la configuración LP del bin-packing es:
para todos los s en S (- todos los n s artículos de tamaño s están empaquetados).
para todos los c en C (- hay como máximo n contenedores en total, por lo tanto, como máximo n de cada configuración individual).
El LP de configuración es un programa lineal entero , por lo que en general es NP-hard. Además, incluso el problema en sí es generalmente muy grande: tiene C variables y S restricciones. Si el tamaño de elemento más pequeño es eB (para alguna fracción e en (0,1)), entonces puede haber hasta 1/ e elementos en cada contenedor, por lo que el número de configuraciones C ~ S 1/ e , que puede ser muy grande si e es pequeño (si e se considera una constante, entonces el LP entero se puede resolver mediante una búsqueda exhaustiva: hay como máximo S 1/e configuraciones, y para cada configuración hay como máximo n valores posibles, por lo que hay como máximo combinaciones para verificar. Para cada combinación, tenemos que verificar S restricciones, por lo que el tiempo de ejecución es , que es polinomial en n cuando S, e son constantes). [7]
Sin embargo, este ILP sirve como base para varios algoritmos de aproximación. La idea principal de estos algoritmos es reducir la instancia original a una nueva instancia en la que S es pequeña y e es grande, por lo que C es relativamente pequeña. Luego, el ILP se puede resolver ya sea mediante una búsqueda completa (si S , C son suficientemente pequeños), o relajándolo en un LP fraccionario .
La configuración fraccionaria LP de bin-packing es la relajación de programación lineal del ILP anterior. Reemplaza la última restricción con la restricción . En otras palabras, cada configuración se puede utilizar un número fraccionario de veces. La relajación fue presentada por primera vez por Gilmore y Gomory, [2] y a menudo se la denomina programa lineal de Gilmore-Gomory . [8]
En resumen, el LP fraccionario se puede escribir de la siguiente manera:
Donde 1 es el vector (1,...,1) de tamaño C , A es una matriz S por C en la que cada columna representa una única configuración, y n es el vector ( n 1 ,..., n S ).
Un programa lineal sin restricciones de integralidad se puede resolver en tiempo polinomial en el número de variables y restricciones. El problema es que el número de variables en la configuración fraccionaria LP es igual al número de configuraciones posibles, que puede ser enorme. Karmarkar y Karp [9] presentan un algoritmo que supera este problema.
Primero, construyen el programa lineal dual del PL fraccionario:
.
Tiene S variables y 1 ,..., y S , y C restricciones: para cada configuración c , hay una restricción , donde es la columna de A que representa la configuración c . 3Tiene la siguiente interpretación económica. [9] Para cada tamaño s , debemos determinar un precio no negativo y s . Nuestra ganancia es el precio total de todos los artículos. Queremos maximizar la ganancia n y sujeta a las restricciones de que el precio total de los artículos en cada configuración es como máximo 1.
En segundo lugar, aplican una variante del método del elipsoide , que no necesita enumerar todas las restricciones, solo necesita un oráculo de separación . Un oráculo de separación es un algoritmo que, dado un vector y , afirma que es factible o encuentra una restricción que viola. El oráculo de separación para el LP dual se puede implementar resolviendo el problema de la mochila con tamaños s y valores y : si la solución óptima del problema de la mochila tiene un valor total como máximo 1, entonces y es factible; si es mayor que 1, entonces y no es factible, y la solución óptima del problema de la mochila identifica una configuración para la cual se viola la restricción.
En tercer lugar, muestran que, con una solución aproximada al problema de la mochila, se puede obtener una solución aproximada al LP dual y, a partir de esto, una solución aproximada al LP primario; véase Algoritmos de empaquetamiento de contenedores de Karmarkar-Karp .
En resumen, para cualquier factor de tolerancia h , encuentra una solución factible básica de costo como máximo LOPT(I) + h , y se ejecuta en el tiempo:
,
donde S es el número de tamaños diferentes, n es el número de elementos diferentes y el tamaño del elemento más pequeño es eB . En particular, si e ≥ 1/ n y h = 1, el algoritmo encuentra una solución con como máximo LOPT+1 bins en el tiempo: . Una variante aleatoria de este algoritmo se ejecuta en el tiempo esperado:
.
Karmarkar y Karp desarrollaron además una forma de redondear el LP fraccionario en una solución aproximada al LP integral; consulte los algoritmos de empaquetamiento de bins de Karmarkar-Karp . Su prueba muestra que la brecha de integralidad aditiva de este LP está en O(log 2 ( n )). Más tarde, Hoberg y Rothvoss [10] mejoraron su resultado y demostraron que la brecha de integralidad está en O(log( n )). El límite inferior más conocido en la brecha de integralidad es una constante Ω(1). Encontrar la brecha de integralidad exacta es un problema abierto.
En el problema de cubrimiento de contenedores , hay n elementos con diferentes tamaños. El objetivo es empacar los elementos en un número máximo de contenedores, donde cada contenedor debe contener al menos B. Una configuración natural de LP para este problema podría ser:
donde A representa todas las configuraciones de elementos con suma al menos B (solo se pueden tomar las configuraciones mínimas de inclusión). El problema con este LP es que, en el problema de cobertura de contenedores, el manejo de elementos pequeños es problemático, ya que los elementos pequeños pueden ser esenciales para la solución óptima. Con elementos pequeños permitidos, el número de configuraciones puede ser demasiado grande incluso para la técnica de Karmarkar y Karp. Csirik, Johnson y Kenyon [11] presentan un LP alternativo. Primero, definen un conjunto de elementos que se denominan pequeños . Sea T el tamaño total de todos los elementos pequeños. Luego, construyen una matriz A que representa todas las configuraciones con suma < 2. Luego, consideran el LP anterior con una restricción adicional: La restricción adicional garantiza que el "espacio vacante" en los contenedores se puede llenar con los elementos pequeños. El dual de este LP es más complejo y no se puede resolver con un simple oráculo de separación del problema de la mochila. Csirik, Johnson y Kenyon [11] presentan un método diferente para resolverlo aproximadamente en tiempo exponencial en 1/epsilon. Jansen y Solis-Oba [12] presentan un método mejorado para resolverlo aproximadamente en tiempo exponencial en 1/epsilon.
En el problema de la programación de máquinas no relacionadas , hay algunas m máquinas diferentes que deberían procesar algunos n trabajos diferentes. Cuando la máquina i procesa el trabajo j , lleva tiempo pi , j . El objetivo es dividir los trabajos entre las máquinas de modo que el tiempo máximo de finalización de una máquina sea lo más pequeño posible. La versión de decisión de este problema es: dado el tiempo T , ¿existe una partición en la que el tiempo de finalización de todas las máquinas sea como máximo T ?
Para cada máquina i , hay un número finito de subconjuntos de trabajos que la máquina i puede procesar en un tiempo máximo T. Cada uno de estos subconjuntos se denomina configuración para la máquina i . Denotemos por C i ( T ) el conjunto de todas las configuraciones para la máquina i , dado el tiempo T. Para cada máquina i y configuración c en C i ( T ), definamos una variable que sea igual a 1 si y solo si la configuración real utilizada en la máquina i es c , y 0 en caso contrario. Entonces, las restricciones de PL son:
La brecha de integralidad de la configuración-LP para la programación de máquinas no relacionadas es 2. [5]