METODOS MATEMATICOS EN CIENCIAS DE LA COMPUTACION 07-08
UNIVERSIDAD DEL PAIS VASCO - EUSKAL HERRIKO UNIBERTSITATEA, UPV-EHU

        Este trabajo práctico se deberá entregar para antes del 14 de marzo (viernes) del 2008. En caso de presentarlo en la convocatoria de septiembre, como fecha tope se considerará el día del examen de la convocatoria de septiembre. El trabajo consiste en dos partes:

→  Forma de entrega: documentación impresa dentro de un sobre transparente (en el que meteré también vuestras entregas futuras), con vuestro nombre, e-mail de contacto y grupo en la parte alta de la primera hoja. Grapad por un lado las hojas correspondientes al resumen de la lectura, y por otro lado las correspondientes a lo aprendido con LiO. Si la impresión ha podido ser a doble cara, os lo agradecería.
    Durante todo el curso realizaré entrevistas personalizadas sobre el trabajo que habéis realizado con la mayor parte de la clase que pueda. Os citaré por e-mail.


LECTURA Y RESUMEN DE ARTÍCULO CIENTÍFICO EN COMPUTACIÓN EVOLUTIVA

    Puedes encontrar la versión Acrobat de los trabajos en el siguiente subdirectorio. También se pueden encontrar en Internet mediante distintos buscadores/servidores especializados en artículos científicos: buscador de Google para artículos científicos Google Scholar, servidor de artículos científicos "CiteSeer" de la Pittsburgh University. Todos ellos son trabajos publicados en revistas o conferencias internacionales del área.

    Ten en cuenta que estos artículos que os propongo reflejan:

    Si buscas en un buscador por aplicaciones de los Algoritmos Genéticos en casi cualquier área o problema, es muy posible que la encuentres. Si tienes curiosidad por alguna aplicación concreta y has encontrado un artículo de aplicación de los Genéticos en ella, enséñamelo e igual lo consideramos como artículo para que lo trabajes.

     Para la elección del artículo os recomiendo la lectura del Abstract (o resumen general) de varios de ellos, ya que os dará una idea general de lo tratado por éste. Como podrás obervar, el esquema general de cualquier artículo científico sigue un patrón muy marcado: abstract - introducción - (revisión del estado del arte) - revisión de propuestas similares - decripción de la propuesta novedosa realizada - experimentación y sus resultados - conclusiones...

            Como entregable de la práctica se redactará un documento técnico sobre lo leido-analizado, NO UNA TRADUCCION, en formato impreso de Word o Acrobat del artículo escogido. El entregable no debería exceder de las 2-3 páginas... La claridad, presentación  y corrección ortográfica de esta redacción serán básicos para su evaluación, así como el análisis y respuesta a cada uno de los puntos que os planteo. El documento debe incluir y seguir los siguientes puntos:

  1. Explicación del problema real que se trata de resolver

  2. Explicación básica de la técnica y procedimiento utilizado en su resolución: ten en cuenta que no se utiliza un AG-canónico tal y como se explica en clase para resolver el problema OneMax... Trata de dar explicaciones básicas sobre la forma utilizada para representar los individuos de la búsqueda, la función objetivo concreta, operadores utilizados, reflexiones que hacen los autores sobre estas cuestiones... (y más cuestiones que consideres claves en el trabajo sobre la técnica utilizada). Relaciónalo con los conceptos aprendidos en las clases teóricas, y resalta dónde y cómo aparecen éstos en el artículo

  3. Resultados obtenidos, niveles de satisfacción en la resolución del problema, conclusiones y análisis de los autores sobre el resultado

  4. Cualquier otra cuestión o comentario que consideres oportuno

    No hay que tenerlo "excesivo" respeto al inglés (de hecho no lo tenéis en todas las horas que pasáis en Internet), y menos todavía al inglés técnico utilizado en un área concreta de la ciencia: este "lenguaje dentro del lenguaje" (a veces casi una "jerga") es utilizado por investigadores en el área de todo el mundo y variadísimos orígenes, y no creo equivocarme al decir que está compuesto de no más allá de 200-300 palabras clave, alrededor de las que todo gira, y estando acompañada de un subconjunto reducido de verbos sencillos (to be, to have, to obtain, to study, to learn, to develop, to design...). No he encontrado en Internet una "pequeña guía" que abarcase un diccionario abreviado (o algo por el estilo) para este campo concreto de la "computación evolutiva": pero me he atrevido a crearos este breve diccionario-guía "ad-hoc", que aunque desordenado, creo que puede ayudar a familiarizarse con algunas palabras clave de este área de la ciencia y que os encontraréis en vuestros textos. 

   No se pide una comprensión total del trabajo y sus detalles. Ni mucho menos. ¿Es eso lo que creéis que buscamos? Sí buscamos una comprensión general de los objetivos del método presentado, su posible aplicación y resultados, descubrir cómo se mueve el mundo de la ciencia y las publicaciones científicas... No se busca que si no has entendido un párrafo concreto, te leas ese párrafo cuatro veces... Como ampliación voluntaria de la práctica se os propone el análisis y resumen de más de un artículo de entre los ofrecidos. Este esfuerzo será tenido en cuenta en la nota final de la asignatura y en la de esta práctica.


USO Y PRÁCTICA CON EL SOFTWARE LiO

    Familiarización con la amigable y extraordinaria librería de heurísticos de optimización LiO, realizado por el grupo de Sistemas Inteligentes y Minería de Datos de la Universidad de Castilla - La Mancha. Me parece una herramienta excelente para adentrarse y "tocar tierra" en el campo de los heurísticos de búsqueda, con una sencillez y elegancia de uso dignas de mención. La librería puede utilizarse como plataforma-base de programación de nuevas propuestas de algoritmos de búsqueda: nosotros aún así utilizaremos su amigable y sencillo interfaz de usuario (en él mismo veréis que bajo el término custom, se pueden programar estas nuevas propuestas). He aquí la potencia de un lenguaje como Java, que únicamente con un intérprete o runtime (JRE, JVM), es posible ejecutar-interpretar este programa bajo cualquier sistema operativo:
 
PROMPT>>>   java -jar LiO.jar


    El fichero LiO.jar se encuentra en el subdirectorio  C:\LiO\deploy\  de los ordenadores de la facultad.
    Una vez cargada la interfaz de trabajo de LiO, observáis que tiene cuatro paneles-botones de parámetros principales (cada uno con sus opciones de configurarlos):

    El trabajo mínimo que os propongo consiste en que con una (o varias) función(es) de las que alberga LiO (en "task") y por medio de Algoritmos Genéticos, realicéis un estudio del efecto de los siguientes parámetros clave en un genético:

    Probad con 3 valores distintos para el tamaño de población (idea: bajo-medio-alto¿?; decide tú mismo) ----- Realiza 5 ejecuciones para cada posible valor, y quedaros con el tamaño de población que mejor función objetivo media consiga (respecto a las 5 ejecuciones el que tenga mejor media de función objetivo, "Best Fitness", teniendo en cuenta la mejor solución-individuo en cada ejecución). Esto es, en toda la práctica y con cada algoritmo de búsqueda, toma las decisiones de con qué valor del parámetro quedarte en base a la media del "fitness" de las 5 ejecuciones que hagas para cada valor del parámetro.
    Una vez fijado el tamaño de población en el paso anterior, probad con 3 valores distintos para la probabilidad de cruce ----- En base a 5 ejecuciones, quedaros con la probabilidad de cruce que mejor función objetivo media (respecto a las 5 ejecuciones) consiga.
    Una vez fijadas el tamaño de población y la probabilidad de cruce en los pasos anteriores, probad con 3 valores distintos para la probabilidad de mutación ----- En base a 5 ejecuciones, quedaros con la probabilidad de mutación que mejor función objetivo media (respecto a las 5 ejecuciones) consiga.

    Compara ahora los resultados del "genético optimizado" con los del EDA de LiO (es un UMDA explicado en clase y está dentro de la carpeta "probabilistic"). Fíjate que el EDA de LiO tiene únicamente un parámetro libre con el que "jugar". Para ser lo más justo posible en la comparativa, ¿qué tamaño(s) de población le ponemos al EDA?

    Rastrea en los demás algoritmos de búsqueda que ofrece LiO. Te encontrarás al menos dos algoritmos que sí conoces, bien de esta asignatura explicados por Abdel en el Tema 1 o de otra asignatura. Inclúyelos en la comparativa que estamos haciendo:

    -- MRHillClimbing ("Multiple Restart Hill Climbing", MRHC): es un algoritmo de búsqueda de mejora iterativa clásico ("subida de la colina, hill-climbing"), pero que realiza varias ejecuciones ("multiple restart") empezando desde distintos puntos aleatorios del espacio. Indaga en sus parámetros ("Configure"), y realiza según tu criterio-intuición-decisión una "optimización de parámetros" similar a la que hemos hecho para el Genético. Haz esta "optimización" únicamente para parámetros que conozcas. Por lo menos, realiza esta optimización para el parámetro "startingPoints" (cantidad de puntos aleatorios del espacio a partir de los cuales comenzar una búsqueda hill-climbing voraz). Como con el Genético o el EDA, toda decisión que tomes para el valor "idóneo" de cada parámetro que sea en base a 5 ejecuciones... Dentro de los parámetros del MRHillClimbing, hay uno denominado "HillClimbing": pincha en sus propiedades...
 
  -- "Simmulated Annealing" (SA): los parámetros que tiene en su versión de LiO los puedes observar siguiendo la transparencia del SA del Tema 1: temperaturas inicial y final, factor de decrecimiento - enfriamiento temperatura, número máximo de iteraciones del boucle-interno, etc... Inclúyelo en la comparativa optimizando sus parámetros en una línea "similar" (dentro de lo posible) a cómo lo hemos hecho en los genéticos... ¿3 valores por parámetros e ir optimizándolos uno a uno... tú mismo? En el SA los parámetros y su comportamiento quizás no sea tan "intuitivo" como en los genéticos... Como con el Genético o el EDA, toda decisión que tomes para el valor "idóneo" de cada parámetro que sea en base a 5 ejecuciones...
 


    Normas generales para realizar el trabajo:

    Algunas características generales de LiO: