Problema de la mochila (Knaspack problem)

Resumen

El problema de la mochila (Knaspack problem) es un problema clásico en los problemas denominados COP (por sus siglas en inglés Combinatorial Optimization Problem – Problemas de Optimización Combinatoria) de Inteligencia Artificial. Este problema es considerado NP (Non Probabilistic Problem) ya que existe una combinación exponencial de instancias que, en su totalidad, no pueden ser resueltas. Existen variantes relacionadas con este problema: problema con cantidad de productos limitada, problema con cantidad de productos ilimitada, elección múltiple, elección de un producto de diferentes categorías, como un problema relacionado con el peso de los productos, como un problema relacionado con el monto económico, entre otros. El presente trabajo tiene como objetivo dar un panorama general de este problema y su aplicación en la vida real.


Palabras clave: problema np, problema de la mochila, inteligencia artificial

Abstract

The knapsack problem is a COP problem (Combinatorial Optimization Problem) derived of Artificial Intelligence fields. This problem can be seen as NP (Non Probabilistic Problem) because there is an exponential combination of instances where the entirety set can’t be solved by any technique or method. There are variations relating to this problem: problem with limited number of products, problems with unlimited number of products, multiple choice problems, choosing a different product from some categories, weight’s products problem, economical amount problem, among others. This paper aims to give an overview of this problem and its application in real life


Keywords: np problem, knapsack problem (kp), artificial intelligence


1 INTRODUCCIÓN

Actualmente, se pueden emplear diferentes técnicas de Inteligencia Artificial para dar solución a problemas cuya solución no se puede calcular en un tiempo determinístico aún con el hardware  y software con que contamos actualmente. Los tópicos de Problemas de Optimización Combinatoria, tienen como objetivo identificar la mejor solución a partir de variables cuya combinación es exponencial, dando lugar a la estimación de una solución cercana a la mejor, que es considerada solución óptima, porque hace uso de los recursos de manera óptima y dando solución a la problemática detectada.

2 KNAPSACK PROBLEM

Uno de los problemas más estudiados es el problema de la Mochila que es conocido como un Problema de Optimización Combinatoria de tipo NP-hard. Este problema es una generalización de los problemas donde se tiene un contenedor (mochila) con o sin restricciones, y donde la solución base es mediante la programación entera dicotómica.

2.1 DEFINICIÓN

El problema de la mochila (KP) puede ser definido con un conjunto de n artículos donde cada artículo es identificado por nx, con un valor entero px, y un peso wx. El problema consiste en elegir un subconjunto de n artículos maximizando el beneficio obtenido considerando el peso total de los artículos seleccionados, sin exceder la capacidad c de la mochila [2].

Dorta et al. [15], definen el Problema de la mochila de la siguiente manera: Se dispone de una mochila de capacidad C y de un conjunto de N objetos, donde los objetos son indivisibles. Describen a un objeto k que tiene un beneficio bk y un peso pk, para k = 1,2,…, N. Para los autores, el problema consiste en averiguar qué objetos se pueden insertar en la mochila sin exceder la capacidad total de la misma, obteniendo el máximo beneficio.

Velasco [22] se basa en la definición formal del problema: “Se tiene una determinada instancia de KP con un conjunto de objetos N, que consiste de n objetos j con ganancia pj y peso wj, y una capacidad c. (Usualmente, los valores toman números enteros positivos). El objetivo es seleccionar un subconjunto de N tal que la ganancia total de esos objetos seleccionados es maximizado y el total de los pesos no excede a c”.

2.2 ALGORITMO BASE

El algoritmo base, como se presenta en la descripción, está orientado hacia un conjunto finito de artículos que tienen un peso específico y que deberán guardados en un contenedor (mochila) con una capacidad limitada, teniendo como función objetivo, el minimizar el espacio utilizado.

Las formulas 1 – 3 presentan el algoritmo básico del problema de la mochila (KP) [3]:

 

 

Where:

xj -> Variables de decisión

wj -> Peso w del item j

c -> Capacidad total del contenedor (mochila)

n -> número de items

La fórmula 1 hace referencia a maximizar los resultados del proyecto a partir de la integración de múltiples variables que pertenecen al proyecto actual identificado por el subíndice j. La fórmula 2 indica que es necesario estimar el peso total de los artículos que serán guardados en un contenedor cuya capacidad es determinada por la variable c. La fórmula 3 indica que las variables de decisión pertenecen al proyecto identificado por el valor j, es decir, forman parte del proyecto (valor 1) o no forman parte de dicho proyecto (valor 0).

2.3 VARIANTES DEL PROBLEMA

La variante donde se tiene un número límite de artículos mj por ítem del tipo j, el problema KP puede ser presentado de la siguiente manera (fórmulas 1.1, 2.1 y 3.1), siendo una variante de la representación del problema base:

 

 

Cuando la variante se enfoca a un grupo de artículos ilimitados, el problema se puede representar de la siguiente manera (fórmulas 1.2, 2.2 y 3.2):

 

 

Para la variante del Problema de la Mochila donde se pueden elegir múltiples ítems de diferentes tamaños y beneficios, la variable de decisión afecta de manera directa la función objetivo, definiendo, en las fórmulas 1.3, 2.3 y 3.3, la representación matemática de esta variante:

 

 

El problema denominado 0-1 Knapsack Problem, se tienen un número k clases, donde se puede elegir solo un ítem j, donde el número total de ítems seleccionados para ocupar el contenedor, es presentado con la variable Ni, donde i=1,2, …, k y se tiene como función objetivo, maximizar el beneficio (fórmulas 1.4, 2.4 y 3.4).

 

 

2.4 APLICACIONES

Como parte de la aplicación del Problema de la mochila como una forma de emular situaciones reales donde es necesario acomodar artículos de diferentes dimensiones en un espacio reducido.

Se puede emplear, como ejemplo, el uso de contenedores en las aduanas, donde se requiere enviar ítems de diferentes pesos, tamaños y valores de beneficio. Por otra parte, en la misma aduana, es necesario almacenar, de manera temporánea, los contenedores mismos, por lo que este problema puede ser resuelto con base en la soluciones propuesta para el problema de la mochila.

En aspectos de criptografía, en el caso de descifrar contraseñas, este problema se puede ver como un número de contenedores que pueden tener n valores cada uno. En otro sentido, cuando es necesario traducir un texto encriptado, en el momento de identificar los espacios, cada palabra puede fungir como un contenedor de ni ítems (caracteres de la palabra), donde cada caracter i puede tener n posibles artículos.

Como parte de la aplicación del problema de la mochila, y haciendo una revisión de la literatura actual se pueden resolver problemas relacionados con:

2.5 ALGORITMOS PROPUESTOS PARA DAR SOLUCIÓN A KP

Para la solución del Problema de la Mochila, Fernández y Velázquez [13], proponen la técnica de programación dinámica, empleando cuatro tipos de visualización: árbol de recursión, grafo de dependencia, tabla de valores y tabla de decisiones.

Almeida, Giménez y López [14], mencionan que la experimentación es un factor clave cuando se requiere ajustar una metaheurísticas a un problema; en este caso, proponen, para la solución del Problema de la mochila, el uso de metaheurísticas parametrizadas, mediante la combinación de parámetros.

Dorta et al. [15] proponen la ramificación y acotación como un método orientado a la solución de Problemas de Optimización Combinatoria; como parte de su propuesta, buscan reducir el número de soluciones factible mediante la exploración sistemática del área de soluciones (árbol de soluciones), eliminando las soluciones que no son mejores que la solución actual, eliminando la rama correspondiente y los subnodos y hojas que dependen de ésta.

3 CONCLUSIONES

El problema de la mochila, es tal vez, el problema más analizado entre los investigadores de Inteligencia Artificial, considerando que las variables son identificadas con base en las características de los artículos que se guardarán en un contenedor (mochila) con características relativas a la capacidad, a las dimensiones o a la resistencia de los materiales. Y, por otra parte, su aplicación es de forma directa a diversas situaciones de la vida real donde las variables contempladas pueden emular dichas situaciones

4 REFERENCIAS

Pisinger, D. (2003). Where are the hard knapsack problems?. Technical Report 2003/8, DIKU, University of Copenhagen, Denmark.

Fayard, D. and Plateau G. (1994). An exact algorithm for the O-l collapsing knapsack problem. Discrete Applied Mathematics 49, 175-187

E. Balas and E. Zemel, An algorithm for large zero-one knapsack problems, Oper. Res. 28 (1980) 1130-1154.

D. Fayard and G. Plateau, Reduction algorithm for single and multiple constraints O-l linear programming problems, Conference Methods of Mathematical Programming, Zakopane (Poland) (1977).

D. Fayard and G. Plateau, Un problkme du knapsack non lintaire en variables O-l, Bulletin de la Direction des Etudes et Recherches E.D.F. C (2) (1979) 51-79.

D. Fayard and G. Plateau, Un algorithme de r&solution du probltme du knapsack “baudruche” en variables O-l, in: Actes du colloque Les Mathkmatiques de l’Informatique, Paris (1982) 397-406.

D. Fayard and G. Plateau, An algorithm for the solution of the O-l knapsack problem, Computing 28 (1982) 269-287.

F. Clover, A multiphase-dual algorithm for the zero-one integer programming problem, Oper. Res. 13 (1965) 879-919.

E.L. Lawler, Fast approximation algorithms for knapsack problems, Math. Oper. Res. 4 (1979) 339-356.

S. Martello and P. Toth, A new algorithm for the O-l knapsack problem, Management. Sci. 34 (1988) 633-644.

M. Posner and M. Guignard, The collapsing O-l knapsack problem, Math, Programming 15 (1978) 155-161.

M. Posner and M. Guignard, The integer collapsing knapsack problem, Working Paper 80/101, University of Wisconsin-Milwaukee, WI (1980).

Fernández, L. Velázquez A. (2009). Estudio sobre la visualización de las Técnicas de Diseño de Algoritmos. XII Congreso Internacional de Interacción Persona – Ordenador (Interacción 2011). Universidad Politécnica de Madrid. Pp. 313-322.

Almeida, F., Giménez, D., y López J.J. (2010). Comparación de metaheurísticas para la obtención de modelos de ecuaciones simultáneas. Congreso Español de Metaheurísticas, Algoritmos Evolutivos y Bionispirados 2010.

Dorta, I., León, C., Rodríguez, C., Rodríguez, G., y Rojas, A. (2003). Complejidad Algorítmica: de la Teoría a la Práctica. III Jornadas de Enseñanza Universitaria de Informática.

Petersen, C.C., (1967). Computational experience with variants of the Balas algorithm applied to the selection of R&D projects, Management Science v13 n9, 736-750.

Gilmore, P.C., & Gomory, R.E., (1966). The theory and computation of knapsack functions, Operations Research 14, 1045-1074.

Bellman R., (1957). Dynamic Programming, Princeton University Press, Princeton, NJ.

Shih, W., (1979). A branch and bound method for the multiconstraint zero-one knapsack problem, Journal of Operation Research Society, 369-378.

Chajakis, E., & Guignard, M., (1992). A model for delivery of groceries in vehicle with multiple compartments and Lagrangean approximation schemes, In Congreso Latino Ibero-Americano de Investigación de Operaciones e Ingeniería de Sistemas, Mexico City.

Gavish B., & H. Pirkul, (1982), Allocation of databases and processors in a distributed data processing, In: J. Akola (Ed.), Management of Distributed Data Processing, North-Holland, Amsterdam, pp. 215-231.

Velasco, J. (2010). NP-Completeness: Complejidad del problema de la Mochila. Presentación de Tesis. Facultad de Ingeniería Mecánica y Eléctrica. División de Posgrado en Ingeniería en Sistemas. Universidad Autónoma de Nuevo León


[a] Profesor Investigador de la Licenciatura en Sistemas Computacionales de la ESTl

[b] Alumno de la Licenciatura en Sistemas Computacionales de la ESTl