Sei sulla pagina 1di 3

TRABAJO ESCALONADO CB-412-I

Se tiene la ubicacin (coordenada x, coordenada y), de las diferentes ciudades en donde


es necesario entregar una mercanca. Debido a que la persona que debe realizar la
entrega de la mercanca, desea optimizar la distancia recorrida, ha contratado a 04
alumnos del curso de programacin CB-412-I, para realizar un programa que optimice el
recorrido, para ello el solicitante ha brindado los siguientes alcances.

1. El programa debe leer desde un archivo tipo texto las coordenadas x e y de cada
ciudad y el nombre de la ciudad. Cabe sealar que el programa deber calcular
automticamente el nmero de ciudades en donde se realizar la entrega. A
continuacin se muestra ejemplo del archivo tipo texto:

INFORMACION_CIUDADES.TXT

COORDENADA X: 100.00 COORDENADA Y: 150.20 CIUDAD: CIUDAD 1


COORDENADA X: 150.40 COORDENADA Y: 200.70 CIUDAD: CIUDAD 2
COORDENADA X: 980.00 COORDENADA Y: 130.50 CIUDAD: CIUDAD 3



COORDENADA X: 680.18 COORDENADA Y: 450.20 CIUDAD: CIUDAD N-1
COORDENADA X: 120.30 COORDENADA Y: 180.20 CIUDAD: CIUDAD N

2. Para el desarrollo del algoritmo de optimizacin se deber realizar los siguientes


pasos:

Paso 1. Determinar una matriz que contenga una poblacin inicial con diferentes
rutas distintas. Cabe sealar que la poblacin inicial deber ser lo ms
aleatoria posible. A continuacin se muestra un ejemplo para el caso de 8
ciudades:

7 1 4 5 8 3 6 2 1
4 2 3 1 7 8 6 5 2
2 5 6 3 4 1 8 7 3
. .
2 8 3 7 5 6 4 1 M

Donde M=Poblacin Inicial definida por el programador (Recomendacin


M=500).
Paso 2. Utilizar una funcin que calcule la distancia de las diferentes rutas, colocar
dicha distancia en la siguiente columna de la matriz de la poblacin inicial,
tal como se muestra a continuacin:

7 1 4 5 8 3 6 2 dist(x,y) 1
4 2 3 1 7 8 6 5 dist(x,y) 2
2 5 6 3 4 1 8 7 dist(x,y) 3
. .
2 8 3 7 5 6 4 1 dist(x,y) M

Dnde:
x= vector de coordenadas x de las ciudades.
y= vector de coordenadas y de las ciudades.

Paso 3. Una vez calculada la distancia de cada ruta, ordenar de menor a mayor las
filas de la matriz con respecto a la distancia calculada. Utilizar cualquier
algoritmo de ordenamiento (p.e. Seleccin ).

Paso 4. Definir el nmero de datos para cruce (Recomendacin n_cruce=60); una


vez definida el nmero de datos para cruce, escoger los n_cruce primeros
datos de la matriz ordenada en el Paso 3.

Paso 5. Definir la funcin cruce, que realice aleatoriamente un cruce de dos filas de
los datos escogidos en el Paso 4. A continuacin se muestra un ejemplo:

ALEATORIO = 4

7 1 4 5 8 3 6 2 PADRE 1
4 2 3 1 7 8 6 5 PADRE 2

7 1 4 5 7 8 6 5 HIJO 1
4 2 3 1 8 3 6 2 HIJO 2

Obtenido HIJO 1 HIJO2, utilizar la dist(x,y), definida en el Paso 2 y


determinar la distancia de HIJO 1 e HIJO 2.

7 1 4 5 7 8 6 5 dist(x,y) HIJO 1
4 2 3 1 8 3 6 2 dist(x,y) HIJO 2
Paso 6. Definir el nmero de datos para mutacion (Recomendacin
n_mutacion=40); una vez definida el nmero de datos para mutacion,
escoger n_mutacion datos aleatorios de la matriz ordenada en el Paso 3.

Paso 7. Definir la funcin mutacion, que realice aleatoriamente una mutacion de


las filas de los datos escogidos en el Paso 6. A continuacin se muestra un
ejemplo:

ALEATORIO ALEATORIO
=2 =6

7 1 4 5 8 3 6 2 PADRE 3

7 3 4 5 8 1 6 2 HIJO 3

Obtenido HIJO 3, utilizar la funcion dist(x,y), definida en el Paso 2 y


determinar la distancia de HIJO 1.

7 3 4 5 8 1 6 2 dist(x,y) HIJO 3

Paso 8. Agregar a la matriz determinada en el Paso 3, los HIJOS calculados en el


Paso 5 y Paso 7.

Paso 9. Regresar al Paso 3(Proceso iterativo, considerar iter=100), adicionando que


la matriz una vez realizado el Paso 3, se deber obtener una matriz de la
misma dimensin que la matriz inicial.

Paso 10. Finalmente imprimir en pantalla y guardar en un archivo tipo texto, la ruta
ptima; es decir la primera fila de la matriz una vez realizada el proceso
iterativo.

FECHA PRIMERA REVISIN: 20/06/2017.

FECHA SEGUNDA REVISIN: 27/06/2017.

Potrebbero piacerti anche