Problema de empaquetado en contenedores

El problema de empaquetado en contenedores[1][2][3][4]​ es una cuestión de optimización, en la que artículos de diferentes tamaños deben distribuirse en un conjunto de contenedores, cada uno con una capacidad fija, de forma que se minimice el número de contenedores utilizados. Este problema tiene diversas aplicaciones, como el llenado de contenedores, la carga de camiones con restricciones de capacidad de peso, la creación de archivos de copia de seguridad en medios, la división de un prefijo de red en múltiples subredes[5]​ y la asignación de tecnologías en el diseño de matrices de puertas programables en campo (FPGA) en circuitos integrados.

Computacionalmente, el problema es NP-difícil, y el correspondiente problema de decisión, que dilucida si los elementos caben en un número específico de contenedores, es NP-completo. A pesar de su dificultad en el peor de los casos, se pueden producir soluciones óptimas para instancias muy grandes del problema con algoritmos sofisticados. Además, existen muchos algoritmos de aproximación. Por ejemplo, el algoritmo First-Fit proporciona una solución rápida, pero a menudo no óptima, que implica colocar cada elemento en el primer contenedor en el que quepa. Requiere un tiempo Θ(n log n), donde n es el número de elementos a empaquetar. El algoritmo puede hacerse mucho más efectivo ordenando primero la lista de elementos en orden decreciente (a veces conocido como el algoritmo decreciente de primer ajuste), aunque esto todavía no garantiza una solución óptima y para listas más largas puede aumentar el tiempo de ejecución del algoritmo. Sin embargo, se sabe que siempre existe al menos un ordenamiento de elementos que permite que el primer ajuste produzca una solución óptima.[6]

Existen muchas variaciones de este problema, como el empaquetado 2D, el empaquetado lineal, el empaquetado por peso, el empaquetado por costo y otros. El problema del empaquetado en contenedores también puede considerarse un caso especial del problema de corte de valores. Cuando el número de contenedores se limita a uno y cada elemento se caracteriza por un volumen y un valor, el problema de maximizar el valor de los elementos que caben en el contenedor se conoce como problema de la mochila.

Una variante del empaquetado en contenedores que se da en la práctica es cuando los elementos pueden compartir espacio al empaquetarse en un contenedor. Específicamente, un conjunto de elementos podría ocupar menos espacio al empaquetarse juntos que la suma de sus tamaños individuales. Esta variante se conoce como empaquetado de máquinas virtuales (MV),[7]​ ya que cuando se empaquetan máquinas virtuales (MV) en un servidor, su requerimiento de memoria total podría disminuir debido a que hay páginas compartidas por las MV que solo necesitan almacenarse una vez. Si los elementos pueden compartir espacio de forma arbitraria, el problema del empaquetado en contenedores es difícil de aproximar. Sin embargo, si el espacio compartido se jerarquiza, como ocurre con el uso compartido de memoria en máquinas virtuales, el problema del empaquetado en contenedores se puede aproximar eficientemente.

Otra variante del empaquetado en contenedores de interés en la práctica es el llamado empaquetado en contenedores en línea. En este caso, se supone que los artículos de diferente volumen llegan secuencialmente, y quien toma la decisión debe decidir si selecciona y empaqueta el artículo observado actualmente o lo deja pasar. Cada decisión no se puede revertir. Por el contrario, el empaquetado en contenedores fuera de línea permite reorganizar los artículos con la esperanza de lograr un mejor empaquetado cuando lleguen artículos adicionales. Esto, por supuesto, requiere almacenamiento adicional para depositar temporalmente los artículos que se reorganizarán más adelante.

Enunciado formal

En Computers and Intractability: A Guide to the Theory of NP-Completeness,[8]: 226  Garey y Johnson enumeran el problema de empaquetado en contenedores bajo la referencia [SR1]. Definen su variante de decisión de la siguiente manera:

Ejemplo: Conjunto finito de artículos, un tamaño para cada , una capacidad de contenedor entera positiva y un entero positivo .

Pregunta: ¿Existe una partición de en conjuntos disjuntos tal que la suma de los tamaños de los artículos en cada sea o menor?

Cabe destacar que en la literatura se utiliza a menudo una notación equivalente, donde y para cada . Además, la investigación se centra principalmente en la variante de optimización, que busca el valor más pequeño posible de . Una solución es óptima si tiene un mínimo. El valor de para una solución óptima para un conjunto de elementos se denota por o simplemente si el conjunto de elementos se desprende del contexto.

Una posible formulación del problema en programación lineal entera es:

Minimizar
sujeto a que

donde si se utiliza el contenedor y si el elemento se coloca en el contenedor .[9]

Dificultad del empaquetado en contenedores

El problema del empaquetado en contenedores es difícilmente NP-completo. Esto se puede demostrar reduciendo el problema de la 3-partición difícilmente NP-completo al empaquetado en contenedores.[8]

Además, no puede haber ningún algoritmo de aproximación con una razón de aproximación absoluta menor que , a menos que . Esto se puede demostrar mediante una reducción al problema de la partición.[10]​ Dada una instancia de partición en la que la suma de todos los números de entrada es , se construye una instancia de empaquetado en contenedores cuyo tamaño sea T. Si existe una partición equitativa de las entradas, el empaquetado óptimo necesita 2 contenedores; por lo tanto, todo algoritmo con una razón de aproximación menor que 3/2 debe devolver menos de 3 contenedores, lo que debe ser 2 contenedores. Por el contrario, si no existe una partición equitativa de las entradas, el empaquetado óptimo necesita al menos 3 contenedores.

Por otro lado, el empaquetado en contenedores se puede resolver en tiempo pseudopolinómico para cualquier número fijo de contenedores K, y en tiempo polinomial para cualquier capacidad fija de los contenedores B.[8]

Algoritmos de aproximación para el empaquetado en contenedores

Para medir el rendimiento de un algoritmo de aproximación, en la literatura sobre el tema se consideran dos ratios de aproximación. Para una lista dada de elementos , el número denota el número en contenedores utilizados cuando el algoritmo se aplica a la lista , mientras que denota el número óptimo para esta lista. El ratio de rendimiento absoluto en el peor caso para un algoritmo se define como:

Por otro lado, el ratio asintótico en el peor caso se define como:

Equivalentemente, es el número más pequeño tal que existe una constante K, tal que para todas las listas L:[4]

.

Además, se pueden restringir las listas a aquellas cuyos elementos tengan un tamaño máximo de . Para estas listas, los índices de rendimiento de tamaño acotado se denotan como y .

Los algoritmos de aproximación para el empaquetado en contenedores se pueden clasificar en dos categorías:

  1. Heurísticas en línea, que consideran los elementos en un orden determinado y los colocan uno a uno dentro de los contenedores. Estas heurísticas también son aplicables a la versión fuera de línea de este problema.
  2. Heurísticas fuera de línea, que modifican la lista de elementos dada, por ejemplo, ordenándolos por tamaño. Estos algoritmos ya no son aplicables a la variante en línea de este problema. Sin embargo, ofrecen una garantía de aproximación mejorada, manteniendo la ventaja de su baja complejidad temporal. Una subcategoría de las heurísticas fuera de línea son los esquemas de aproximación asintótica. Estos algoritmos tienen una garantía de aproximación de la forma para alguna constante que puede depender de . Para un valor arbitrario de , estos algoritmos se aproximan arbitrariamente a . Sin embargo, esto conlleva una complejidad temporal (drásticamente) mayor en comparación con los enfoques heurísticos.

Heurísticas en línea

En la versión en línea del problema de empaquetado en contenedores, los artículos llegan uno tras otro y la decisión (irreversible) de dónde colocar un artículo debe tomarse antes de conocer el siguiente o incluso si habrá otro. David S. Johnson ha estudiado un conjunto diverso de heurísticas en línea y fuera de línea para el empaquetado en contenedores en su tesis doctoral.[11]

Algoritmos de clase única

Existen muchos algoritmos simples que utilizan el siguiente esquema general:

  • Para cada elemento de la lista de entrada:
    1. Si el elemento cabe en uno de los contenedores abiertos, colóquelo en uno de ellos.
    2. En caso contrario, abra un nuevo contenedor y coloque el nuevo elemento en él

Los algoritmos difieren en el criterio con el que eligen el contenedor abierto para el nuevo elemento en el paso 1 (consúltense las páginas enlazadas para obtener más información):

  • Next Fit (NF) siempre mantiene un único contenedor abierto. Cuando el nuevo elemento no cabe en él, cierra el contenedor actual y abre uno nuevo. Su ventaja es que es un algoritmo de espacio acotado, ya que solo necesita mantener un único contenedor abierto en memoria. Su desventaja es que su razón de aproximación asintótica es 2. En particular, , y para cada existe una lista L tal que y .[11]​ Su razón de aproximación asintótica se puede mejorar ligeramente según los tamaños de los elementos: para todos los y para todos los . Para cada algoritmo (A que sea un algoritmo AnyFit, se cumple .
  • Next-k-Fit (NkF) es una variante de Next-Fit, pero en lugar de mantener solo un intervalo abierto, el algoritmo mantiene abiertos los últimos k intervalos y elige el primero en el que encaja el elemento. Por lo tanto, se denomina algoritmo de espacio k-acotado.[12]​ Para , el método NkF ofrece resultados mejorados en comparación con los resultados del método NF. Sin embargo, aumentar k a valores constantes mayores que 2 no mejora aún más el algoritmo en su peor caso. Si el algoritmo A es un algoritmo AlmostAnyFit (de "CasiCualquierAjuste) y , entonces .[11]
  • First-Fit (FF) mantiene todos los contenedores abiertos, en el orden en que se abrieron. Intenta colocar cada elemento nuevo en el primer contenedor en el que encaja. Su razón de aproximación es , y existe una familia de listas de entrada L para las cuales coincide con este límite.[13]
  • Best-Fit (BF) también mantiene todos los contenedores abiertos, en el orden en que se abrieron. Pero intenta colocar cada nuevo elemento en el contenedor en el que encaje que esté más cargado. Su razón de aproximación es , y existe una familia de listas de entrada L para las cuales coincide con este límite.[14]
  • Worst-Fit (WF) (peor llenado) intenta colocar cada nuevo elemento en el contenedor menos lleno. Puede comportarse tan mal como el Next-Fit, y lo hará en la lista de peores casos para . Además, cumple que . Dado que el WF es un algoritmo AnyFit, existe un algoritmo AnyFit tal que .[11]
  • Almost Worst-Fit (AWF) (casi peor llenado) intenta colocar cada elemento nuevo dentro del segundo contenedor abierto más vacío (o el contenedor más vacío si hay dos). Si no encaja, prueba con el más vacío. Su razón asintótica de peor caso es .[11]

Para generalizar estos resultados, Johnson introdujo dos clases de heurísticas en línea denominadas algoritmos de ajuste aleatorio y algoritmos de ajuste casi aleatorio:[4]: 470 

  • En un algoritmo AnyFit (AF), si los contenedores actuales no vacíos son B1,..., Bj, el elemento actual no se empaquetará en Bj+1 a menos que no encaje en ninguno de los siguientes B1,..., Bj. Los algoritmos FF, WF, BF y AWF satisfacen esta condición. Johnson demostró que, para cualquier algoritmo A AnyFit y cualquier :
    .

En un algoritmo "AlmostAnyFit (AAF)", si los contenedores no vacíos actuales son "B"1,..., "Bj", y de estos contenedores, "Bk" es el único con la carga más pequeña, el elemento actual no se empaquetará en "Bk", a menos que no quepa en ninguno de los contenedores a su izquierda. Los algoritmos FF, BF y AWF cumplen esta condición, pero WF no. Johnson demostró que, para cualquier algoritmo A AAF y cualquier α:

  • En particular: .

Algoritmos refinados

Se pueden obtener mejores ratios de aproximación con heurísticas que no sean AnyFit. Estas heurísticas suelen mantener varias clases de contenedores abiertos, dedicados a elementos de diferentes rangos de tamaño (consulte las páginas enlazadas para obtener más información):

  • Refined-first-fit bin packing (RFF) divide los tamaños de los elementos en cuatro rangos: , , y . De igual forma, los contenedores se categorizan en cuatro clases. El siguiente elemento, , se asigna primero a su clase correspondiente. Dentro de esa clase, se asigna a un contenedor mediante first-fit. Cabe destacar que este algoritmo no es un algoritmo de ajuste aleatorio, ya que puede abrir un nuevo contenedor aunque el elemento actual encaje dentro de uno abierto. Este algoritmo fue presentado inicialmente por Andrew Chi-Chih Yao,[15]​ quien demostró que tiene una garantía de aproximación de y presentó una familia de listas con para .
  • Harmonic-k divide el intervalo de tamaños basándose en una progresión armónica (matemática) en fragmentos para y tales que . Este algoritmo fue descrito por primera vez por Lee y Lee.[16]​ Tiene una complejidad temporal de y en cada paso, hay como máximo k contenedores abiertos que pueden usarse potencialmente para colocar elementos; es decir, es un algoritmo de espacio acotado por k. Para , su razón de aproximación satisface y es asintóticamente ajustado.
  • Refined-harmonic combina ideas de Harmonic-k con ideas de Refined-First-Fit. Para ello, coloca los elementos mayores que de forma similar a como se hace en el ajuste refinado, mientras que los menores se colocan utilizando Harmonic-k. La intuición de esta estrategia es reducir el gran desperdicio de contenedores que contienen piezas apenas mayores que . Este algoritmo fue descrito por primera vez por Lee y Lee,[16]​ quienes emostraron que para se cumple .

Límites inferiores generales para algoritmos en línea

Yao[15]​ demostró en 1980 que no puede existir ningún algoritmo en línea con una razón competitiva asintótica menor que . Brown[17]​ y Liang[18]​ mejoraron este límite a . Posteriormente, Vliet lo mejoró a .[19]​ En 2012, Békési y Galambos[20]​ volvieron a mejorar este límite inferior a.

Tabla comparativa

Algoritmo Garantía de aproximación Lista de peores casos Complejidad temporal
Next Fit (NF) [11] [11]
First-fit (FF) [13] [13] [11]
Best-fit (BF) [14] [14] [11]
Worst-Fit (WF) [11] [11] [11]
Almost-Worst-Fit (AWF) [11] [11] [11]
Refined-First-Fit (RFF) [15] (para )[15] [15]
Harmonic-k (Hk) para [16] [16] [16]
Refined Harmonic (RH) [16] [16]
Modified Harmonic (MH) [21]
Modified Harmonic 2 (MH2) [21]
Harmonic + 1 (H+1) [22]
Harmonic ++ (H++) [22] [22]

Algoritmos fuera de línea

En la versión fuera de línea del empaquetado en contenedores, el algoritmo puede ver todos los elementos antes de comenzar a colocarlos en contenedores. Esto permite obtener mejores razones de aproximación.

Aproximación multiplicativa

La técnica más simple utilizada por los esquemas de aproximación fuera de línea es la siguiente:

  • Ordenar la lista de entrada por tamaño descendente;
  • Ejecutar un algoritmo en línea sobre la lista ordenada.

Johnson[11]​ demostró que cualquier esquema A del tipo AnyFit que se ejecuta en una lista ordenada por tamaño descendente tiene una razón de aproximación asintótica de

.

Algunos métodos de esta familia son (consúltense las páginas enlazadas para obtener más información):

  • First-fit-decreasing (FFD) ordena los elementos por tamaño descendente y luego utiliza el procedimiento First-Fit. Su razón de aproximación es , lo cual es ajustado.[23]
  • Next-fit-decreasing (NFD) ordena los elementos por tamaño descendente y luego utiliza Next-Fit. Su razón aproximada es ligeramente inferior a 1,7 en el peor de los casos.[24]​ También se ha analizado probabilísticamente.[25]​ Next-Fit empaqueta una lista y su inverso en el mismo número de contenedores. Por lo tanto, Next-Fit-Increasing tiene el mismo rendimiento que Next-Fit-Decreasing.[26]
  • Modified first-fit-decreasing (MFFD),[27]​ mejora el procedimiento FFD para elementos mayores de medio contenedor al clasificarlos por tamaño en cuatro clases: grande, mediano, pequeño y diminuto, correspondientes a elementos con tamaño > 1/2 contenedor, > 1/3 contenedor, > 1/6 contenedor y elementos más pequeños, respectivamente. Su garantía de aproximación es .[28]

Fernández de la Vega y Lueker[29]​ presentaron un PTAS para el empaquetado en contenedores. Para cada , su algoritmo encuentra una solución con un tamaño máximo de y se ejecuta en tiempo , donde denota una función que solo depende de . Para este algoritmo, inventaron el método de "redondeo de entrada adaptativo": los números de entrada se agrupan y se redondean al valor máximo en cada grupo. Esto produce una instancia con un pequeño número de tamaños diferentes, que se puede resolver exactamente utilizando programación lineal de configuración.[30]

Aproximación aditiva

El algoritmo de empaquetado en contenedores de Karmarkar-Karp encuentra una solución con un tamaño máximo de y un tiempo de ejecución polinómico en n (el polinomio tiene un grado alto, al menos 8).

Rothvoss[31]​ presentó un algoritmo que genera una solución con un máximo de intervalos.

Hoberg y Rothvoss[32]​ mejoraron este algoritmo para generar una solución con un máximo de intervalos. El algoritmo es aleatorio y su tiempo de ejecución es polinómico en n.

Tabla comparativa

Algoritmo Garantía aproximada Peor caso posible
First-fit-decreasing (FFD) [23] [23]
Modified-first-fit-decreasing (MFFD) [28] [27]
Karmarkar y Karp [33]
Rothvoss [31]
Hoberg y Rothvoss [32]

Algoritmos exactos

Martello y Toth[34]​ desarrollaron un algoritmo exacto para el problema de empaquetado en contenedores unidimensional, llamado MTP. Una alternativa más rápida es el algoritmo de completamiento en contenedores propuesto por Richard E. Korf en 2002.[35]​ y posteriormente mejorado).[36]

Schreiber y Korf presentaron una mejora adicional en 2013. El nuevo algoritmo[37]​ de Completamiento en contenedores Mejorado ha demostrado ser hasta cinco órdenes de magnitud más rápido que el Completamiento en contenedores en problemas no triviales con 100 elementos, y supera al algoritmo BCP (ramificación, corte y precio) de Belov y Scheithauer en problemas con menos de 20 contenedores como solución óptima. El mejor rendimiento del algoritmo depende de propiedades del problema, como el número de elementos, el número óptimo en contenedores, el espacio no utilizado en la solución óptima y la precisión del valor.

Pequeño número de tamaños diferentes

Un caso especial de empaquetado en contenedores se da cuando hay un pequeño número d de elementos de diferentes tamaños. Puede haber muchos elementos diferentes de cada tamaño. Este caso también se denomina empaquetado en contenedores de alta multiplicidad y admite algoritmos más eficientes que el problema general.

Empaquetado en contenedores con fragmentación

El empaquetado en contenedores con fragmentación o empaquetado en contenedores de objetos fragmentables es una variante del problema de empaquetado en contenedores que permite fragmentar elementos en partes y colocar cada parte por separado en un contenedor diferente. Dividir elementos en partes puede mejorar el rendimiento general, por ejemplo, minimizando el número total de contenedores. Además, el problema computacional de encontrar una programación óptima puede resultar más sencillo, ya que algunas de las variables de optimización se vuelven continuas. Por otro lado, separar elementos puede ser costoso. El problema fue introducido por primera vez por Mandal, Chakrabary y Ghose.[38]

Variantes

El problema tiene dos variantes principales.

  1. En la primera variante, denominada empaquetado en contenedores con fragmentación creciente de tamaño (BP-SIF), cada elemento puede fragmentarse, y se añaden unidades adicionales al tamaño de cada fragmento resultante. En la segunda variante, denominada empaquetado en contenedores con fragmentación que preserva el tamaño (BP-SPF), cada elemento tiene un tamaño y un coste; fragmentar un elemento aumenta su coste, pero no modifica su tamaño.

Complejidad computacional

Mandal, Chakrabary y Ghose[38]​ demostraron que BP-SPF es NP-difícil.

Menakerman y Rom[39]​ demostraron que BP-SIF y BP-SPF son ambos totalmente NP-completos. A pesar de su complejidad, presentaron varios algoritmos e investigan su rendimiento. Sus programas utilizan algoritmos clásicos de empaquetado en contenedores, como next-fit y first-fit decreasing como base.

Bertazzi, Golden y Wang[40]​ introdujeron una variante de BP-SIF con la regla de división : un elemento solo puede dividirse de una manera según su tamaño. Esto es útil para problemas de enrutamiento de vehículos, por ejemplo. En su artículo, proporcionan el límite de rendimiento en el peor caso posible de la variante.

Shachnai, Tamir y Yehezkeli[41]​ desarrollaron esquemas de aproximación para BP-SIF y BP-SPF: un método PTAS dual (un PTAS para la versión dual del problema), un PTAS asintótico llamado APTAS y un FPTAS asintótico dual llamado AFPTAS para ambas versiones.

Ekici[42]​ introdujo una variante de BP-SPF en la que algunos elementos entran en conflicto y se prohíbe agrupar fragmentos de elementos en conflicto en la misma bandeja. Demostraron que esta variante también es NP-difícil.

Cassazza y Ceselli[43]​ introdujeron una variante sin costo ni sobrecarga, con un número fijo de bandejas. Sin embargo, se debe minimizar el número de fragmentaciones. Presentan algoritmos de programación matemática para soluciones exactas y aproximadas.

Problemas relacionados

El problema de la mochila fraccionario con penalizaciones fue introducido por Malaguti, Monaci, Paronuzzi y Pferschy.[44]​ Desarrollaron un FPTAS y un sistema de programación dinámica para abordar el problema, y presentaron un extenso estudio computacional que compara el rendimiento de sus modelos. Véase también: programación de trabajos fraccionables.

Rendimiento con tamaños de elementos divisibles

Un caso especial importante de empaquetado en contenedores es que los tamaños de los elementos forman una secuencia divisible (también llamada factorizada). Un caso especial de tamaños de elementos divisibles se da en la asignación de memoria en sistemas informáticos, donde los tamaños de los elementos son todos potencias de 2. Si los tamaños de los elementos son divisibles, algunos de los algoritmos heurísticos para el empaquetado en contenedores encuentran una solución óptima.[45]

Restricciones de cardinalidad en los contenedores

Existe una variante del empaquetado en contenedores en la que existen restricciones de cardinalidad en los contenedores: cada contenedor puede contener como máximo k elementos, para un entero fijo k.

  • Krause, Shen y Schwetman ([46]​) presentaron este problema como una variante de programación óptima de trabajos: una computadora tiene k procesadores. Hay n trabajos que toman la unidad de tiempo (1), pero tienen diferentes requisitos de memoria. Cada unidad de tiempo se considera un único contenedor. El objetivo es utilizar el menor número posible de contenedores (=unidades de tiempo), garantizando al mismo tiempo que en cada contenedor se ejecuten como máximo k trabajos. Presentan varios algoritmos heurísticos que encuentran una solución con un máximo de contenedores.
  • Kellerer y Pferschy ([47]​ presentan un algoritmo con tiempo de ejecución , que encuentra una solución con un máximo de contenedores. Su algoritmo realiza un búsqueda binaria para OPT. Para cada valor buscado m, intenta agrupar los elementos en 3m/2 contenedores.

Funciones no aditivas

Existen varias maneras de extender el modelo de empaquetado de contenedores a funciones de costo y carga más generales:

  • Anily, Bramel y Simchi-Levi ([48]​) estudian un contexto donde el coste de un contenedor es una función cóncava del número de artículos en el contenedor. El objetivo es minimizar el coste total, no el número de contenedores. Demuestran que el procedimiento next-fit-increasing alcanza una razón de aproximación absoluta en el peor de los casos de como máximo 7/4, y una razón asintótica en el peor de los casos de 1,691 para cualquier función de coste cóncava y monótona.
  • Cohen, Keller, Mirrokni y Zadimoghaddam ([49]​) estudiaron un entorno donde el tamaño de los elementos no se conoce de antemano, pero es un variable aleatoria. Esto es particularmente común en entornos computación en la nube. Si bien existe un límite superior para la cantidad de recursos que necesita un usuario, la mayoría de los usuarios utilizan mucho menos que la capacidad. Por lo tanto, el administrador de la nube puede obtener una gran ventaja con un sobrecompromiso de memoria ligero. Esto induce una variante del empaquetado en contenedores con restricciones de azar: la probabilidad de que la suma de los tamaños en cada contenedor sea como máximo B debería ser al menos p, donde p es una constante fija (el empaquetado en contenedores estándar corresponde a p = 1). Demuestran que, bajo supuestos moderados, este problema es equivalente a un problema de empaquetado en contenedores submodular, en el que la carga en cada contenedor no es igual a la suma de los artículos, sino a una determinada función submodular de esta.

Problemas relacionados

En el problema de empaquetado en contenedores, el tamaño de los contenedores es fijo y su número puede aumentarse (pero debe ser lo más pequeño posible).

En cambio, en el problema de partición de números multidireccional, el número de contenedores es fijo, pero su tamaño puede aumentarse. El objetivo es encontrar una partición en la que los tamaños de los contenedores sean lo más iguales posible (en la variante denominada problema de programación de multiprocesadores o problema de hacer vano mínimo, el objetivo es minimizar el tamaño del contenedor más grande).

En el problema de empaquetado inverso de contenedores,[50]​ tanto el número de contenedores como sus tamaños son fijos, pero el tamaño de los elementos puede modificarse. El objetivo es minimizar la perturbación del vector de tamaño de los elementos para que todos los elementos puedan empaquetarse en el número de contenedores prescrito.

En el problema de máximo empaquetado en contenedores de recursos,[51]​ el objetivo es maximizar el número de contenedores utilizados, de modo que, para cierta ordenación de los contenedores, ningún elemento de un contenedor posterior quepa en uno anterior. En un problema dual, el número de contenedores es fijo y el objetivo es minimizar el número total o el tamaño total de los elementos colocados en los contenedores, de modo que ningún elemento restante quepa en un contenedor vacío.

En el problema de reparto en contenedores, el tamaño del contenedor está acotado desde abajo: el objetivo es maximizar el número de contenedores utilizados de modo que la ocupación total de cada contenedor alcance al menos un umbral determinado.

En el problema de asignación justa e indivisible de tareas (una variante de asignación justa de artículos), los elementos representan tareas, y hay diferentes personas, cada una de las cuales atribuye un valor de dificultad diferente a cada tarea. El objetivo es asignar a cada persona un conjunto de tareas con un límite superior en su valor total de dificultad (por lo tanto, cada persona corresponde a un contenedor). En este problema también se utilizan muchas técnicas del empaquetado en contenedores.[52]

En el problema corte con guillotina, tanto los artículos como los contenedores son rectángulos bidimensionales en lugar de números unidimensionales, y los artículos deben cortarse del contenedor mediante cortes de extremo a extremo para obtener piezas de tamaños determinados.

En el problema del empaquetado egoísta en contenedores, cada artículo es un jugador que busca minimizar su costo.[53]

También existe una variante del empaquetado de contenedores en la que el costo que debe minimizarse no es el número de contenedores, sino una cierta función cóncava del número de artículos alojados en cada contenedor.[48]

Otras variantes son el empaquetado en contenedores bidimensional,[54]​ el empaquetado en contenedores tridimensional,[55]​ o el empaquetado en contenedores con entrega.[56]

Referencias

  1. Martello, Silvano; Toth, Paolo (1990), «Bin-packing problem», Knapsack Problems: Algorithms and Computer Implementations, Chichester, UK: John Wiley and Sons, ISBN 0471924202 .
  2. Korte, Bernhard; Vygen, Jens (2006). «Bin-Packing». Combinatorial Optimization: Theory and Algorithms. Algorithms and Combinatorics 21. Springer. pp. 426-441. ISBN 978-3-540-25684-7. doi:10.1007/3-540-29297-7_18. 
  3. Barrington, David Mix (2006). «Bin Packing». Archivado desde el original el 16 de febrero de 2019. Consultado el 27 de febrero de 2016. 
  4. a b c Coffman Jr., Edward G.; Csirik, János; Galambos, Gábor; Martello, Silvano; Vigo, Daniele (2013), «Bin Packing Approximation Algorithms: Survey and Classification», en Pardalos, Panos M.; Du, Ding-Zhu; Graham, Ronald L., eds., Handbook of Combinatorial Optimization (en inglés) (New York, NY: Springer): 455-531, ISBN 978-1-4419-7997-1, doi:10.1007/978-1-4419-7997-1_35, consultado el 8 de agosto de 2021 .
  5. «DHCPv6-PD - First steps». Consultado el 12 de junio de 2024. 
  6. Lewis, R. (2009), «A General-Purpose Hill-Climbing Method for Order Independent Minimum Grouping Problems: A Case Study in Graph Colouring and Bin Packing», Computers and Operations Research 36 (7): 2295-2310, S2CID 1577334, doi:10.1016/j.cor.2008.09.004 .
  7. Sindelar, Michael; Sitaraman, Ramesh; Shenoy, Prashant (2011), «Sharing-Aware Algorithms for Virtual Machine Colocation», Proceedings of 23rd ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), San Jose, CA, June 2011: 367-378 .
  8. a b c Garey, M. R.; Johnson, D. S. (1979). Victor Klee, ed. Computers and Intractability: A Guide to the Theory of NP-Completeness. A Series of Books in the Mathematical Sciences. San Francisco, Calif.: W. H. Freeman and Co. pp. x+338. ISBN 0-7167-1045-5. MR 519066. 
  9. Martello y Toth, 1990, p. 221
  10. Vazirani, Vijay V. (14 de marzo de 2013). Approximation Algorithms. Springer Berlin Heidelberg. p. 74. ISBN 978-3662045657. 
  11. a b c d e f g h i j k l m n ñ o Johnson, David S (1973). «Near-optimal bin packing algorithms». Massachusetts Institute of Technology. 
  12. Gonzalez, Teofilo F. (23 de mayo de 2018). Handbook of approximation algorithms and metaheuristics. Volume 2 Contemporary and emerging applications. Taylor & Francis Incorporated. ISBN 9781498770156. 
  13. a b c Dósa, György; Sgall, Jiri (2013). «First Fit bin packing: A tight analysis». 30th International Symposium on Theoretical Aspects of Computer Science (STACS 2013) (Schloss Dagstuhl–Leibniz-Zentrum für Informatik) 20: 538-549. doi:10.4230/LIPIcs.STACS.2013.538. 
  14. a b c György, Dósa; Sgall, Jirí (2014). Optimal Analysis of Best Fit Bin Packing. «Automata, Languages, and Programming». {Automata, Languages, and Programming – 41st International Colloquium (ICALP)}. Lecture Notes in Computer Science 8572. pp. 429-441. ISBN 978-3-662-43947-0. doi:10.1007/978-3-662-43948-7_36. 
  15. a b c d e Yao, Andrew Chi-Chih (mes de abril de 1980). «New Algorithms for Bin Packing». Journal of the ACM 27 (2): 207-227. S2CID 7903339. doi:10.1145/322186.322187. 
  16. a b c d e f g Lee, C. C.; Lee, D. T. (mes de julio de 1985). «A simple online bin-packing algorithm». Journal of the ACM 32 (3): 562-572. S2CID 15441740. doi:10.1145/3828.3833. 
  17. Donna J, Brown (1979). «A Lower Bound for On-Line One-Dimensional Bin Packing Algorithms.». Technical Rept. Archivado desde el original el 17 de marzo de 2022. 
  18. Liang, Frank M. (1980). «A lower bound for on-line bin packing». Information Processing Letters 10 (2): 76-79. doi:10.1016/S0020-0190(80)90077-0. 
  19. van Vliet, André (1992). «An improved lower bound for on-line bin packing algorithms». Information Processing Letters 43 (5): 277-284. doi:10.1016/0020-0190(92)90223-I. 
  20. Balogh, János; Békési, József; Galambos, Gábor (mes de julio de 2012). «New lower bounds for certain classes of bin packing algorithms». Theoretical Computer Science. 440–441: 1-13. doi:10.1016/j.tcs.2012.04.017. 
  21. a b Ramanan, Prakash; Brown, Donna J; Lee, C.C; Lee, D.T (mes de septiembre de 1989). «On-line bin packing in linear time». Journal of Algorithms 10 (3): 305-326. doi:10.1016/0196-6774(89)90031-X. hdl:2142/74206. 
  22. a b c Seiden, Steven S. (2002). «On the online bin packing problem». Journal of the ACM 49 (5): 640-671. S2CID 14164016. doi:10.1145/585265.585269. 
  23. a b c Dósa, György (2007). «The Tight Bound of First Fit Decreasing Bin-Packing Algorithm Is FFD(I) ≤ 11/9\mathrm{OPT}(I) + 6/9». Combinatorics, Algorithms, Probabilistic and Experimental Methodologies. ESCAPE. doi:10.1007/978-3-540-74450-4_1. 
  24. Baker, B. S.; Coffman, Jr., E. G. (1 de junio de 1981). «A Tight Asymptotic Bound for Next-Fit-Decreasing Bin-Packing». SIAM Journal on Algebraic and Discrete Methods 2 (2): 147-152. ISSN 0196-5212. doi:10.1137/0602019. 
  25. Csirik, J.; Galambos, G.; Frenk, J.B.G.; Frieze, A.M.; Rinnooy Kan, A.H.G. (1 de noviembre de 1986). «A probabilistic analysis of the next fit decreasing bin packing heuristic». Operations Research Letters (en inglés) 5 (5): 233-236. ISSN 0167-6377. S2CID 50663185. doi:10.1016/0167-6377(86)90013-1. hdl:1765/11645. 
  26. Fisher, David C. (1 de diciembre de 1988). «Next-fit packs a list and its reverse into the same number of bins». Operations Research Letters (en inglés) 7 (6): 291-293. ISSN 0167-6377. doi:10.1016/0167-6377(88)90060-0. 
  27. a b Johnson, David S; Garey, Michael R (mes de octubre de 1985). «A 7160 theorem for bin packing». Journal of Complexity 1 (1): 65-106. doi:10.1016/0885-064X(85)90022-6. 
  28. a b Yue, Minyi; Zhang, Lei (mes de julio de 1995). «A simple proof of the inequality MFFD(L) ≤ 71/60 OPT(L) + 1,L for the MFFD bin-packing algorithm». Acta Mathematicae Applicatae Sinica 11 (3): 318-330. S2CID 118263129. doi:10.1007/BF02011198. 
  29. Fernandez de la Vega, W.; Lueker, G. S. (1981). «Bin packing can be solved within 1 + ε in linear time». Combinatorica (en inglés) 1 (4): 349-355. ISSN 1439-6912. S2CID 10519631. doi:10.1007/BF02579456. 
  30. Claire Mathieu. «Approximation Algorithms Part I, Week 3: bin packing». Coursera. Archivado desde el original el 15 de julio de 2021. 
  31. a b Rothvoß, T. (1 de octubre de 2013). «Approximating Bin Packing within O(log OPT · Log Log OPT) Bins». 2013 IEEE 54th Annual Symposium on Foundations of Computer Science. pp. 20-29. ISBN 978-0-7695-5135-7. S2CID 15905063. arXiv:1301.4010. doi:10.1109/FOCS.2013.11. 
  32. a b Hoberg, Rebecca; Rothvoss, Thomas (1 de enero de 2017), «A Logarithmic Additive Integrality Gap for Bin Packing», Proceedings of the 2017 Annual ACM-SIAM Symposium on Discrete Algorithms, Proceedings (Society for Industrial and Applied Mathematics): 2616-2625, ISBN 978-1-61197-478-2, S2CID 1647463, arXiv:1503.08796, doi:10.1137/1.9781611974782.172 .
  33. Karmarkar, Narendra; Karp, Richard M. (mes de noviembre de 1982). «An efficient approximation scheme for the one-dimensional bin-packing problem». 23rd Annual Symposium on Foundations of Computer Science (SFCS 1982): 312-320. S2CID 18583908. doi:10.1109/SFCS.1982.61. 
  34. Martello y Toth, 1990, pp. 237–240.
  35. Korf, Richard E. (2002). A new algorithm for optimal bin packing.. AAAI-02. 
  36. Richard E. Korf (2003), An improved algorithm for optimal bin packing. Proceedings of the International Joint Conference on Artificial Intelligence, (pp. 1252–1258)
  37. Schreiber, Ethan L.; Korf, Richard E. (2013), «Improved Bin Completion for Optimal Bin Packing and Number Partitioning», Proceedings of the Twenty-Third International Joint Conference on Artificial Intelligence, IJCAI '13, Beijing, China: AAAI Press, pp. 651-658, ISBN 978-1-57735-633-2 .
  38. a b Mandal, C. A.; Chakrabarti, P. P.; Ghose, S. (1 de junio de 1998). «Complexity of fragmentable object bin packing and an application». Computers & Mathematics with Applications (en inglés) 35 (11): 91-97. ISSN 0898-1221. doi:10.1016/S0898-1221(98)00087-X. 
  39. Nir Menakerman and Raphael Rom "Bin Packing with Item Fragmentation". Algorithms and Data Structures, 7th International Workshop, WADS 2001, Providence, RI, USA, August 8-10, 2001, Proceedings.
  40. Bertazzi, Luca; Golden, Bruce; Wang, Xingyin (31 de mayo de 2019). «The Bin Packing Problem with Item Fragmentation:A worst-case analysis». Discrete Applied Mathematics. GO X Meeting, Rigi Kaltbad (CH), July 10--14, 2016 (en inglés) 261: 63-77. ISSN 0166-218X. S2CID 125361557. doi:10.1016/j.dam.2018.08.023. 
  41. Shachnai, Hadas; Tamir, Tami; Yehezkely, Omer (2006). «Approximation Schemes for Packing with Item Fragmentation». En Erlebach, Thomas; Persinao, Giuseppe, eds. Approximation and Online Algorithms. Lecture Notes in Computer Science (en inglés) 3879. Berlin, Heidelberg: Springer. pp. 334-347. ISBN 978-3-540-32208-5. doi:10.1007/11671411_26. 
  42. Ekici, Ali (1 de febrero de 2021). «Bin Packing Problem with Conflicts and Item Fragmentation». Computers & Operations Research (en inglés) 126: 105113. ISSN 0305-0548. S2CID 225002556. doi:10.1016/j.cor.2020.105113. 
  43. Casazza, Marco; Ceselli, Alberto (1 de junio de 2014). «Mathematical programming algorithms for bin packing problems with item fragmentation». Computers & Operations Research (en inglés) 46: 1-11. ISSN 0305-0548. doi:10.1016/j.cor.2013.12.008. 
  44. Malaguti, Enrico; Monaci, Michele; Paronuzzi, Paolo; Pferschy, Ulrich (16 de marzo de 2019). «Integer optimization with penalized fractional values: The Knapsack case». European Journal of Operational Research (en inglés) 273 (3): 874-888. ISSN 0377-2217. S2CID 31722681. doi:10.1016/j.ejor.2018.09.020. hdl:11585/657029. 
  45. Coffman, E. G; Garey, M. R; Johnson, D. S (1 de diciembre de 1987). «Bin packing with divisible item sizes». Journal of Complexity 3 (4): 406-428. ISSN 0885-064X. doi:10.1016/0885-064X(87)90009-4. 
  46. Krause, K. L.; Shen, V. Y.; Schwetman, H. D. (1 de octubre de 1975). «Analysis of Several Task-Scheduling Algorithms for a Model of Multiprogramming Computer Systems». Journal of the ACM 22 (4): 522-550. ISSN 0004-5411. S2CID 10214857. doi:10.1145/321906.321917. 
  47. Kellerer, H.; Pferschy, U. (1 de enero de 1999). «Cardinality constrained bin-packing problems». Annals of Operations Research (en inglés) 92: 335-348. ISSN 1572-9338. S2CID 28963291. doi:10.1023/A:1018947117526. 
  48. a b Anily, Shoshana; Bramel, Julien; Simchi-Levi, David (1 de abril de 1994). «Worst-Case Analysis of Heuristics for the Bin Packing Problem with General Cost Structures». Operations Research 42 (2): 287-298. ISSN 0030-364X. doi:10.1287/opre.42.2.287. 
  49. Cohen, Maxime C.; Keller, Philipp W.; Mirrokni, Vahab; Zadimoghaddam, Morteza (1 de julio de 2019). «Overcommitment in Cloud Services: Bin Packing with Chance Constraints». Management Science 65 (7): 3255-3271. ISSN 0025-1909. S2CID 159270392. arXiv:1705.09335. doi:10.1287/mnsc.2018.3091. 
  50. Chung, Yerim; Park, Myoung-Ju (1 de enero de 2015). «Notes on inverse bin-packing problems». Information Processing Letters (en inglés) 115 (1): 60-68. ISSN 0020-0190. doi:10.1016/j.ipl.2014.09.005. 
  51. Boyar, Joan; Epstein, Leah; Favrholdt, Lene M.; Kohrt, Jens S.; Larsen, Kim S.; Pedersen, Morten M.; Wøhlk, Sanne (11 de octubre de 2006). «The maximum resource bin packing problem». Theoretical Computer Science (en inglés) 362 (1): 127-139. ISSN 0304-3975. doi:10.1016/j.tcs.2006.06.001. 
  52. Huang, Xin; Lu, Pinyan (10 de noviembre de 2020). «An Algorithmic Framework for Approximating Maximin Share Allocation of Chores». . 
  53. Ma, Ruixin; Dósa, György; Han, Xin; Ting, Hing-Fung; Ye, Deshi; Zhang, Yong (1 de agosto de 2013). «A note on a selfish bin packing problem». Journal of Global Optimization 56 (4): 1457-1462. ISSN 0925-5001. S2CID 3082040. doi:10.1007/s10898-012-9856-9. 
  54. Lodi A., Martello S., Monaci, M., Vigo, D. (2010) "Two-Dimensional Bin Packing Problems". In V.Th. Paschos (Ed.), Paradigms of Combinatorial Optimization, Wiley/ISTE, pp. 107–129
  55. Optimizing Three-Dimensional Bin Packing Through Simulation
  56. Benkő A., Dósa G., Tuza Z. (2010) "Bin Packing/Covering with Delivery, Solved with the Evolution of Algorithms," Proceedings 2010 IEEE 5th International Conference on Bio-Inspired Computing: Theories and Applications, BIC-TA 2010, art. no. 5645312, pp. 298–302.

Recursos

  • BPPLIB - una biblioteca de encuestas, códigos, benchmarks, generadores, solucionadores y bibliografía.