RESOLUCION DEL PROBLEMA DE LA MOCHILA 0/1 USANDO ESQUELETOS DIVIDE-Y-VENCERAS Y RAMIFICACION-Y-ACOTACION
I Dorta, C León, C Rodríguez, A Rojas
2004
REVISTA INVESTIGACION OPERACIONAL
unpublished
RESUMEN En este artículo se presenta la librería MaLLBa. Esta librería proporciona esqueletos para la resolución de problemas de optimización combinatoria usando técnicas exactas, heurísticas e híbridas. El usuario ha de elegir un paradigma y para el ha de especificar el tipo del problema, el tipo de la solución y las características específicas de la técnica usando el lenguaje de programación C++. Esta información se combina con los esqueletos de resolución que proporciona la librería para
more »
... ner un programa secuencial y un programa paralelo. Para explotar el paralelismo en redes de estaciones de trabajo bajo Linux, MaLLBa utiliza el paradigma de paso de mensajes. Nos centraremos en la presentación de los esqueletos Divide y Vencerás y Ramificación y Acotación. Concretamente se aplicaran ambos, de forma integrada, en la resolución del problema de la Mochila Entera. Finalmente se presentarán los resultados obtenidos. ABSTRACT This paper presents the MaLLBa library. This library provides skeletons to solve combinatorial optimization problems using exact, heuristic and hybrid techniques. The user must choose a paradigm and for it must establish the problem and solution types and the specific characteristics of the technique using the C++ language. This information is combined with the skeletons provided by the library to obtain two programs: one sequential and other parallel. To exploit parallelism on Linux workstations, MaLLBa uses the Message Passing paradigm. This work is centered to present the Divide an Conquer and Branch and Bound skeletons. Concretely both of them will be applied to solve the Integer Knapsack Problem. Finally, the obtained computational results will be presented. 1. INTRODUCCION La solución exacta de la mayoría de los problemas combinatorios implica la enumeración de los elementos de un espacio de soluciones exponencial. Fijado un problema, la búsqueda exhaustiva de una solución se puede acelerar a través de técnicas exactas como Divide y Vencerás, Ramificación y Acotación 0 Programación Dinámica. El esquema de trabajo de estas técnicas se puede generalizar para desarrollar herramientas software que permitan el análisis, diseño e implementación de resolutores para problemas concretos. Desafortunadamente, en muchas aplicaciones aparecen casos de tamaño irresoluble, esto es, no es posible encontrar la solución óptima en tiempo razonable. Sin embargo, es posible incrementar el tamaño de los problemas que se pueden abordar por medio de técnicas de paralelización. En este trabajo se presentan los esqueletos orientados a objeto MaLLBa::DnC y MaLLBa::BnB para la resolución de problemas de optimización combinatoria con las técnicas Divide y Vencerás y Ramificación y Acotación respectivamente. La implementación de los esqueletos se ha realizado en C++. Se proporciona el código secuencial y el código paralelo de la parte invariante de los resolutores para ambos paradigmas. Además se pone a disposición del usuario la plantilla de la parte que ha de rellenar. Las clases que componen dicha plantilla sirven para establecer la relación entre el resolutor principal y el problema instanciado. Una vez que el usuario ha instanciado su problema, obtiene gratis un resolutor paralelo de su algoritmo, sin realizar ningún esfuerzo adicional.
fatcat:nqn4ss6iyrfxtkkrkorg3tbaya