Incorporación en MATLAB de Algoritmos Metaheur´ısticos

Transcripción

Incorporación en MATLAB de Algoritmos Metaheur´ısticos
Incorporación en MATLAB
de Algoritmos Metaheurı́sticos
Autor: José Rodrı́guez Vives
Codirector: Enrique Alba Torres
Codirector: José Francisco Chicano Garcı́a
Introducción
Los estudios en optimización han sido de gran importancia en Informática a lo largo de toda su
historia. Dondequiera que aparezca un problema de búsqueda, optimización o incluso aprendizaje tienen
cabida los múltiples análisis existentes sobre el diseño eficiente de algoritmos. La optimización es una rama
de trabajo muy dinámica debido a que nos enfrentamos a nuevos retos: nuevos problemas de ingenierı́a,
nuevas situaciones de la industria, nuevos servicios que necesitan ser optimizados y un largo etcétera de
situaciones que desafı́an a las técnicas de optimización existentes constantemente [RSORS96, MF98].
Los algoritmos usados en optimización pueden ser clasificados en dos categorı́as principales: exactos
y aproximados. Los algoritmos exactos son capaces de encontrar una solución óptima en un tiempo
acotado. No obstante, en problemas NP-duros este tiempo crece exponencialmente con el tamaño del
problema. Es por esto que en los últimos 30 años los algoritmos aproximados se han ganado la atención
de la comunidad investigadora. Estos algoritmos no aseguran un óptimo pero son capaces de obtener una
solución de calidad en un tiempo razonable [BR03]. Un ejemplo distinguido de algoritmos aproximados son
los metaheurı́sticos [RSORS96], surgidos en los años 70 y que incluyen técnicas tales como optimización
basada en colonias de hormigas [Dor92], computación evolutiva [Bäc96], búsqueda local iterada [Stü99],
recocido simulado [KGV83] y búsqueda tabú [Glo86].
Uno de los motivos por los que las técnicas metaheurı́sticas no han alcanzado la popularidad de otros
enfoques más clásicos es la gran brecha existente entre el ámbito académico desde el que se promueven y
el ámbito práctico en el que deben ser empleadas. Nos encontramos ante el hecho de que muchos usuarios
potenciales de este tipo de técnicas desisten de utilizarlas (e incluso de considerarlas) debido a la dificultad
práctica que para ellos supone plasmar la solución a su problema mediante las mismas.
1
Durante años ha existido (y sigue existiendo) un esfuerzo dentro del dominio de las metaheurı́sticas por
desarrollar bibliotecas software que descarguen al usuario interesado en la optimización de la dificultad
de implementar los mencionados algoritmos [VW02]. Ası́ por ejemplo, podemos encontrar bibliotecas
dedicadas a computación evolutiva tales como GAlib [Wal], ParadisEO [CTM03], y JEO [AFSM02];
ası́ como a otras metaheurı́sticas [Klo98]. La gran mayorı́a de las bibliotecas de algoritmos metaheurı́sticos
están disponibles para los lenguajes C, C++ o Java, por lo que se requieren conocimientos en estos
lenguajes para poder utilizarlas.
El entorno MATLAB se ha convertido en un estándar de facto para el cómputo cientı́fico gracias a
su lenguaje de alto nivel basado en matrices que permite resolver problemas de cálculo con más rapidez
y facilidad que los lenguajes de propósito general como Java o C/C++ [Mat]. De hecho, son muchas
las empresas y los investigadores que usan MATLAB como entorno de trabajo [PKB+ 04, Ono01]. Por
este motivo, un toolbox de algoritmos metaheurı́sticos en MATLAB puede tener un gran impacto en la
comunidad cientı́fica y tecnológica, ayudando a reducir el espacio existente entre los ámbitos académico
y práctico antes mencionados.
Desde el año 2004 The MathWorks, la empresa desarrolladora de MATLAB, ofrece un toolbox de
algoritmos genéticos y búsqueda dirigida que extiende el toolbox de optimización. Además de este, existen otros toolboxes sobre computación evolutiva realizados por desarrolladores independientes entre los
cuales cabe destacar GEATbx [Poh99] por ser el más completo. No obstante, el software de algoritmos
metaheurı́sticos que podemos encontrar en C/C++ o Java supera con creces al existente en lenguaje
MATLAB, no sólo en cantidad sino en calidad. En efecto, el software de MATLAB es relativamente
nuevo y poco probado mientras que las bibliotecas existentes en C/C++ y Java se llevan utilizando años
y han sido objeto de numerosas revisiones, por lo que poseen un mayor grado de madurez. Por esto,
parece razonable plantear la opción de utilizar todo ese software ya existente dentro de la plataforma
MATLAB. Las interfaces que MATLAB incorpora hacia C/C++ y Java permiten realizar esta conexión
de una forma directa.
Con la integración de bibliotecas externas dentro de MATLAB no sólo tenemos acceso a una implementación más fiable de los algoritmos metaheurı́sticos sino que podemos hacer uso de caracterı́sticas
avanzadas de éstos que los actuales toolboxes no incorporan como, por ejemplo, la ejecución de algoritmos
descentralizados en un entorno geográficamente distribuido (WAN).
2
Objetivos del Proyecto
Los objetivos principales de este proyecto han sido concretados en los siguientes puntos:
1. Diseñar e implementar un toolbox para MATLAB que permita a los usuarios:
a) Tener acceso a un conjunto de bibliotecas de algoritmos metaheurı́sticos programadas
en C/C++ y Java con las que puedan resolver problemas de optimización definidos mediante
funciones de MATLAB.
b) Modificar el comportamiento de los algoritmos en la medida de las posibilidades de la biblioteca para adaptarlos a sus necesidades.
c) Introducir nuevos elementos de los algoritmos de optimización (tales como operadores o
tipos de individuo) siempre y cuando la biblioteca lo permita.
2. Ofrecer a los desarrolladores un entorno en el que puedan fácilmente:
a) Incorporar bibliotecas externas en el toolbox.
b) Trasladar a los usuarios de MATLAB toda la versatilidad de las bibliotecas.
c) Ejecutar código de usuario dentro de los algoritmos de optimización para permitir la extensión de éstos por parte de usuarios avanzados.
3. Elaborar documentos sobre el toolbox. En concreto, una guı́a para los usuarios y otra para los
desarrolladores. En ambas se debe reflejar con detalle todas las opciones que ofrece el toolbox
para cada colectivo.
4. Incorporar alguna biblioteca ya existente y hacer uso de ella para resolver algunos problemas
de optimización con el objetivo de demostrar la efectividad del toolbox.
Para alcanzar estos objetivos será necesario estudiar los algoritmos metaheurı́sticos y conocer en
profundidad los detalles de la interacción entre MATLAB y los lenguajes C/C++ y Java.
3
Fases del Proyecto
Tras los detalles aportados, la realización de este proyecto consta de las siguientes fases:
1. Estudio de los diferentes paradigmas relacionados con los algoritmos metaheurı́sticos en general y
evolutivos en particular.
2. Análisis y evaluación de las bibliotecas de algoritmos metaheurı́sticos.
3. Estudio de las interfaces externas de MATLAB: MATLAB-Java y MATLAB-C/C++.
4. Diseño del toolbox. Identificación de las funciones y su interrelación.
5. Implementación del toolbox.
6. Elaboración de una guı́a de usuario y una guı́a para el desarrollador. Posible elaboración de páginas
web para dar publicidad al toolbox.
7. Incorporación de una biblioteca existente. Posible adición de más bibliotecas.
8. Resolución de problemas de optimización usando el toolbox desarrollado para acceder a las bibliotecas incorporadas. Análisis de resultados.
Medios Materiales
Para llevar a cabo el proyecto se utilizarán los siguientes medios:
1. Plataforma MATLAB, entorno JDK para Java y compilador de C/C++.
2. Bibliotecas de algoritmos metaheurı́sticos.
3. Documentación escrita aportada por los codirectores del proyecto y otra adicional accesible en
Internet. Revistas de la hemeroteca y de acceso electrónico.
4. Ordenador personal e impresora láser y/o chorro de tinta para documentos intermedios y memoria
final.
5. Compilador de LATEX para los documentos y editor de páginas web para la difusión en Internet del
toolbox.
6. Utilidades misceláneas para intercambio de correo electrónico, de ficheros, servicio http, etc.
4
Bibliografı́a
[AFSM02] M. G. Arenas, L. Foucart, M. Schoenauer, and J. J. Merelo. Computación evolutiva en java:
JEO. In Actas del Primer Congreso Español de Algoritmos Evolutivos y Bioinspirados, pages
46–53, February 2002.
[Bäc96]
T. Bäck. Evolutionary Algorithms in Theory and Practice: Evolution Strategies, Evolutionary
Programming, Genetic Algorithms. Oxford University Press, New York, 1996.
[BR03]
C. Blum and A. Roli. Metaheuristics in combinatorial optimization: Overview and conceptual
comparison. ACM Computing Surveys, 35(3):268–308, 2003.
[CTM03]
S. Cahon, E-G. Talbi, and N. Melab. PARADISEO: A framework for parallel and distributed
biologically inspired heuristics. In IPDPS-NIDISC’03, page 144, Nize, France, 2003.
[Dor92]
M. Dorigo. Optimization, Learning and Natural Algorithms. PhD thesis, DEI, Politecnico di
Milano, Italy, 1992. (in italian).
[Glo86]
F. Glover. Future paths for integer programming and links to artificial intelligence. Computers & Operations Research, 13:533–549, 1986.
[KGV83]
S. Kirkpatrick, C. D. Gelatt, and M. P. Vecchi. Optimization by simulated annealing. Science,
4598(220):671–680, May 1983.
[Klo98]
K. Klohs. Parallel simulated annealing library.
http://www.uni-paderborn.de/fachbereich/AG/monien/SOFTWARE/PARSA/, 1998.
[Mat]
The MathWorks.
MATLAB Documentation, 7 edition.
Disponible online en
http://www.mathworks.com.
[MF98]
Z. Michalewicz and D.B. Fogel. How to Solve It: Modern Heuristics. Springer Verlag, Berlin
Heidelberg, 1998.
[Ono01]
E. Onori. Elementary celestial mechanics using matlab. Computing in Science & Engineering,
3(6):48–53, 2001.
[PKB+ 04]
R. Pfarrhofer, M. Kelz, P. Bachhies, H. Stögner, and A. Uhl. Distributed optimization of
fiber optic network layout using matlab. In International Conference on Computation Science
5
and Its Applications (LNCS 3045), pages 538–547, Assisi, Italy, May 2004. Springer-Verlag
GmbH.
[Poh99]
H. Pohlheim. Genetic and evolutionary algorithm toolbox for use with matlab – documentation. Disponible online en http://www.geatbx.com, 1999.
[RSORS96] V.J. Rayward-Smith, I.H. Osman, C.R. Reeves, and G.D. Smith. Modern Heuristic Search
Methods. John Wiley & Sons, Chichester, 1996.
[Stü99]
T. Stützle. Iterated local search for the quadratic assignment problem. Technical Report
aida-99-03, FG Intellektik, TU Darmstadt, 1999.
[VW02]
S. Voss and D. L. Woodruff, editors. Optimization Software Class Libraries, volume 18 of
Operations Research and Computer Science Interfaces. Kluwer Academic Publishers, Boston,
2002.
[Wal]
M. Wall. GAlib home page, http://lancet.mit.edu/ga/.
6

Documentos relacionados