From 56abb14ca7f99816c340b102fbbd2052d7fd1d84 Mon Sep 17 00:00:00 2001 From: Jose Miguel Garcia Date: Mon, 1 Jun 2020 19:46:12 +0200 Subject: [PATCH] Add local search explanation in chapter 4 --- Chapters/Chapter4.tex | 2 ++ main.ist | 2 +- main.pdf | Bin 2727532 -> 2728215 bytes 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Chapters/Chapter4.tex b/Chapters/Chapter4.tex index c18d63b..d18a22a 100755 --- a/Chapters/Chapter4.tex +++ b/Chapters/Chapter4.tex @@ -82,6 +82,8 @@ \section{Implementación} Una vez se obtiene el listado de candidatos, es procesado mediante la función $get\_rcl$, la cual haciendo uso del valor de $\mu$, calculado como se mostró en el algoritmo \ref{alg:grasp} con el valor de $\alpha$, permite obtener la lista de candidatos restringida denominada en el algoritmo como $RCL$. A partir de este momento el siguiente paso es escoger de manera aleatoria un nodo de esta lista e incluirlo en el conjunto solución, eliminando de la lista $CL$ los nodos que no son adyacentes a este, ya que no formarían una solución factible. Esta operación es realizada hasta que la lista de candidatos esté vacía. +Obtenida esta solución preliminar, se aplica la búsqueda local para la mejora de la misma, mediante la función $apply\_ls$. En esta función en primer lugar se obtienen los vecinos de los nodos que forman parte de la solución y son ordenados de mayor a menor ratio. Cada nodo es añadido a la solución previa, comprobando si forma o no una nueva solución factible. Si no cumple con las restricciones, se eliminarán todos los nodos mediante una función de exclusión de nodos. Esta elimina todos los nodos que impiden que se forme solución. Una vez cumple con las restricciones, se añaden todos los nodos adyacentes con el fin de obtener un clique máximo.Esta solución parcial es añadida a un listado de la que se seleccionará la mejor opción una vez finalizado el procesamiento de todos los nodos. + Para mantener el código ordenado se ha implementado la clase GraphUtils, la cual contiene información necesaria y métodos útiles para el procesado de las instancias, así como la exportación a ficheros de tipo CSV\footnote{Es un tipo de ficheros de texto simple en el que se almacenan datos separados en columnas por comas o por punto y coma, y las filas por salto de línea.} de los resultados obtenidos. Con el fin de probar las diferentes funciones del proyecto se han escrito casos de prueba mediante la librería de Python unittest\footnote{https://docs.python.org/3/library/unittest.html}. diff --git a/main.ist b/main.ist index 9cece1b..0fab0a1 100644 --- a/main.ist +++ b/main.ist @@ -1,5 +1,5 @@ % makeindex style file created by the glossaries package -% for document 'main' on 2020-5-29 +% for document 'main' on 2020-6-1 actual '?' encap '|' level '!' diff --git a/main.pdf b/main.pdf index 48b65510eddf6da1514b180bcf77ab51149a0090..e61f5b971bb2c1e0947bfa498908e4b4d4d7ca7f 100644 GIT binary patch delta 17835 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 QH!?IcH8Bb$B}Gq03Z2h<5C8xG delta 17073 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