Está en la página 1de 8

Aplicación de algoritmo genético para el problema del viajero

en MATLAB (LAUREL BRAVO ANGEL)


El problema del viajero consiste en reducir la distancia recorrida entre un número total de posiciones y
obtener dicha distancia mínima mediante un algoritmo genético.

1. Se realiza una lista con el número total de posiciones y la distancia de cada posición con respecto a
las otras. (Ejm. 15 posiciones)

2. Al abrir el programa principal, primero se carga la lista previa en una matriz de datos bajo el nombre
”distancia”, y las siguientes variables:
cantidad_poblacion: Es la cantidad de individuos por generacion
iteraciones: Es la cantidad de generaciones en total
porcentaje_mutacion: Es el grado de variación de los genes de cada individuo por generacion
3. Se genera mediante la función “crearPoblacionInicial” el número total de individuos de la población
inicial (en este caso 1000 formas aleatorias para recorrer todas las posiciones).

4. En el siguiente bucle for se repite el procedimiento de selección para el número total de


generaciones (iteraciones) con el fin obtener el mejor resultado generación tras generación.

Primero se obtiene el total de la distancia

Luego el valor de la función fitness


5. Se agregan a la matriz los valores calculados previamente y se ordenan de mayor a menor según el
valor fitness

6. Una vez realizado el ordenamiento previo ya se pueden extraer los valores de tipo de recorrido,
distancia de recorrido total y valor fitness en distintas matrices

7. Se generara una matriz llamada “bolsa” en la cual mediante un bucle se irá repitiendo y ordenando
los tipos de recorridos (individuos) más óptimos.

8. Se realiza una sumatoria desde 1 a 1000 (número total de la población inicial) para definir la
ubicación de cada individuo dentro de “bolsa” y se habilita una matriz para proceder
posteriormente a almacenar los nuevos individuos con las mejores características

9. Se ingresa en un bucle, el cual seleccionara al azar una pareja de individuos (padres), de ambos se
tomaran ciertas características (función “reproducir”) para generar un nuevo individuo (hijo).

10. Si “porcentaje_mutacion” es mayor a un número generado aleatoriamente entre 0 y 1 se procede a


intercambiar aleatoriamente dos posiciones entre sí dentro del “hijo” para que este sea insertado
en la siguiente generación. Caso contrario se inserta directamente el hijo

11. Este proceso se repite según el valor ingresado en “iteraciones” (generaciones, nuevas
poblaciones). Al finalizar la última generación debería mostrar la mejor forma de pasar por las 15
posiciones con la menor distancia recorrida.

12. Con una función auxiliar (plotGraphVU) podemos visualizar las posiciones y las trayectorias de la
mejor ruta de manera gráfica.
Para aplicar ejecutar el AG con una matriz que cuente con un número distinto de posiciones, solo se
procede a cambiar el tamaño de las variables a utilizar

Se usara la matriz de distancias de la siguiente publicación como ejemplo:


https://www.taringa.net/+ciencia_educacion/programe-un-algoritmo-genetico-en-
matlab_wlo24
1. Se cargan los valores de las distancias en la matriz

2. Se modifican las variables del número de posiciones y tamaño de matrices en el programa principal
y en las funciones
3. Una vez ejecutado el algoritmo nos arroja los siguientes valores, bastante cercanos a los resultados
de la publicación mencionada anteriormente, en este caso solo con 11 posiciones
4. Realizando una comparativa con ambos resultados se puede observar que el resultado más óptimo
fue generado por el algoritmo genético de la publicación mencionada, ya que reemplazando los
datos en la matriz de individuos (cromosomas) se puede calcular que la distancia varia en una
unidad.

También podría gustarte