Skip to content

Commit

Permalink
Add local search explanation in chapter 4
Browse files Browse the repository at this point in the history
  • Loading branch information
JoseMiguel92 committed Jun 1, 2020
1 parent 93838c0 commit 56abb14
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Chapters/Chapter4.tex
Original file line number Diff line number Diff line change
Expand Up @@ -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}.
Expand Down
2 changes: 1 addition & 1 deletion main.ist
Original file line number Diff line number Diff line change
@@ -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 '!'
Expand Down
Binary file modified main.pdf
Binary file not shown.

0 comments on commit 56abb14

Please sign in to comment.