Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Optimización de Rutas en la UNJ: Aplicación del TSP, Guías, Proyectos, Investigaciones de Programación Informática

Una aplicación práctica del algoritmo del problema del viajante (tsp) para optimizar la ruta de visita a las escuelas profesionales de la universidad nacional de juliaca. Se describe el proceso de modelado del problema, la implementación del algoritmo y la obtención de la ruta más corta, destacando la utilidad del tsp en la gestión de recursos educativos.

Tipo: Guías, Proyectos, Investigaciones

2023/2024

Subido el 18/12/2024

giovanni-cutipa-benavente
giovanni-cutipa-benavente 🇵🇪

1 documento

1 / 22

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Ruta óptima para visitar a todas las escuelas profesionales
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Vista previa parcial del texto

¡Descarga Optimización de Rutas en la UNJ: Aplicación del TSP y más Guías, Proyectos, Investigaciones en PDF de Programación Informática solo en Docsity!

Ruta óptima para visitar a todas las escuelas profesionales

RESUMEN

Utilizando el algoritmo del Problema del Viajante (TSP), se logró determinar la

ruta más eficiente para visitar todas las escuelas profesionales de la Universidad

Nacional de Juliaca y retornar al punto de partida. El análisis abarcó la identificación y

geolocalización de cada escuela, así como la evaluación de las distancias entre ellas.

Tras aplicar el algoritmo, se determinó que la ruta más corta comienza en la Entrada de

la universidad. Desde ahí, la siguiente parada es la Escuela de Ingeniería Alimentaria,

seguida por la Escuela de Ingeniería Textil. El recorrido continúa hacia la Escuela de

Ingeniería Ambiental y posteriormente hacia la Escuela de Ingeniería de Energías

Renovables, culminando finalmente con el regreso a la Entrada.

Este recorrido óptimo se encontró que minimiza la distancia total recorrida a

26.6 unidades. Este resultado es significativo, ya que permite planificar actividades

logísticas de manera más eficiente, reduciendo el tiempo y los recursos necesarios para

moverse por el campus. La implementación de esta ruta óptima puede beneficiar tanto a

los procesos administrativos como a las actividades académicas, facilitando

inspecciones, distribución de materiales y orientación a nuevos estudiantes. Además, al

reducir las distancias recorridas, se disminuye el desgaste físico de los involucrados y se

optimiza el uso de vehículos de transporte, contribuyendo a la sostenibilidad ambiental

del campus. En resumen, la aplicación del TSP ha proporcionado una solución práctica

y efectiva para mejorar la movilidad y eficiencia dentro de la Universidad Nacional de

Juliaca, destacando la importancia de las técnicas de optimización en la gestión de

recursos educativos.

I. INTRODUCCIÓN

El problema del viajante fue definido en los años 1800 por el matemático

irlandés W. R. Hamilton y por el matemático británico Thomas Kirkman. El juego

Icosian de Hamilton fue un puzle creativo basado en encontrar un ciclo de Hamilton.

Todo parece indicar que la forma general del TPS fue estudiada por primera vez por

matemáticos en Viena y Harvard durante los años 1930. Destacándose Karl Menger,

quien definió los problemas, considerando el obvio algoritmo de fuerza bruta, y

observando la no optimalidad de la heurística de vecinos más cercanos.

Denotamos por “Problema del Mensajero” (dado que en la práctica esta pregunta

puede resolverse por cada cartero, aunque puede ser resuelta por varios viajeros) la

pregunta es encontrar, para un conjunto finito de puntos de los cuales se conocen las

distancias entre cada par, el camino más corto entre estos puntos. Por supuesto, el

problema es resuelto por un conjunto finito de intentos. La regla que se debe seguir es

que desde el punto inicial se va al punto más cercano a este, de ahí a su más cercano y

así sucesivamente, en general este algoritmo no retorna la ruta más corta.

Determinar el camino más corto para visitar todas las escuelas profesionales de

la Universidad y volver al punto de Inicio, La Universidad Nacional de Juliaca (UNAJ)

alberga varias escuelas profesionales distribuidas por su campus. Este trabajo se centra

en la problemática de la optimización del recorrido necesario para visitar todas las

escuelas profesionales y regresar al punto de inicio, un problema comúnmente conocido

en matemáticas y ciencias de la computación como el TSP (Problema del Viajante)

El algoritmo del problema del Viajante en este caso para el ámbito universitario,

consiste en hacer NODOS o puntos en coordenadas para encontrar la ruta más corta que

permite a un viajante visitar un conjunto de ciudades una sola vez y volver a la ciudad

de origen. En el contexto del campus ayabacas UNAJ, esto se traduce en determinar la

ruta óptima que permita visitar cada una de las escuelas profesionales, minimizando el

tiempo y la distancia recorrida, y regresando al punto de partida. Este problema es

especialmente relevante para mejorar la eficiencia en actividades que requieren

desplazamientos frecuentes por el campus, como las inspecciones administrativas, la

distribución de correspondencia, y las visitas de orientación para nuevos estudiantes.

La optimización del recorrido tiene múltiples beneficios. Primero, permite un

uso más eficiente del tiempo y los recursos, lo cual es crucial en un entorno educativo

donde la productividad y la eficiencia son fundamentales. Segundo, una ruta optimizada

contribuye a la reducción del desgaste físico de las personas encargadas de realizar estos

recorridos, y puede llevar a una menor emisión de gases contaminantes en caso de

utilizar vehículos motorizados. Finalmente, disponer de una ruta óptima facilita la

planificación y la ejecución de tareas logísticas dentro del campus, mejorando así la

experiencia académica y administrativa de todos los involucrados.

El objetivo principal de este trabajo es desarrollar una estrategia mediante el

algoritmo del problema del viajante que permita determinar el camino más corto para

visitar todas las escuelas profesionales de la Universidad Nacional de Juliaca y retornar

al punto de inicio, para el cumplimiento del objetivo se necesitara el mapeo del campus,

modelado del problema en código, aplicación de los algoritmos correspondientes, la

evaluación y implementación del código.

II. OBJETIVO

Determinar el camino más corto para visitar todas las escuelas profesionales de

la Universidad Nacional de Juliaca y volver al punto de inicio.

III. MARCO TEORICO

Algoritmo de Kruskal

El algoritmo de Kruskal es un algoritmo de la teoría de grafos utilizado para

encontrar un árbol de expansión mínima en un grafo conexo y ponderado. Este

algoritmo, propuesto por Joseph Kruskal, busca un subconjunto de aristas que incluye

todos los vértices del grafo y donde la suma de los pesos de las aristas es la mínima

posible. (Kruskal, J. 1956)

Para Benavides Larreina (2017), la ruta óptima es representada como una línea

de transmisión y su objetivo es evitar la congestión de red considerando las limitaciones

en los costos. El autor aplica la teoría de grafos y realiza una comparación entre los

algoritmos de Kruskal y Prim. Los vértices del grafo se componen por los costos de

operación y mantenimiento. Por ejemplo, los costos de combustible y de desgaste de

Dado el grafo G:

Se obtiene un árbol de expansión mínima y otro no:

Características y Tiempo de Ejecución

 En cada paso iterativo la solución parcial que se obtuvo ya forma parte de la

solución global, es decir que la arista que se obtuvo ya forma parte del MST y ya

no puede eliminarse.

 Esta característica clasifica al algoritmo de Kruskal como al algoritmo de Prim

en la categoría de Algoritmos Greedy.

 Cabe aclarar también que el algoritmo de Kruskal se desempeña mejor cuando

tenemos grafos dispersos, sino fuera el caso el algoritmo de Prim es

significativamente más Rápido.

Aplicaciones

 Establecer una red eléctrica de una manera que minimice el costo total de

cableado.

 Planear rutas de la red de aviones.

 También se puede aplicar en la red de TV, operaciones turísticas

 Diseño de red de tuberías para agua potable o gas natural.

 Google Maps

Clases de algoritmos

 Algoritmo de aproximación

 Algoritmos de heurísticos

 Método de Branch and bound

Algoritmo del Problema de Viajante

Supongamos que estamos parados en la puerta un almacén. Este almacén contiene

familias de productos (yerba, galletitas, vino, etc.). Ahora supongamos que tenemos un

pedido con distintos productos del almacén y el problema consiste en encontrar la ruta

más corta para recoger todos los productos, y regresar a la puerta. Un ejemplo concreto

sería tener una lista con 3 paquetes de yerba, 2 de galletitas y 3 de vino, y un almacén

con conjuntos de estos productos distribuidos por todo el local. Este problema

generaliza al problema GTSP (Generalized TSP) donde hay que visitar un individuo de

cada familia, y también generaliza al clásico TSP donde hay una única familia en la cual

debemos visitar cada nodo. Al generalizar un problema N P-Duro, también nos

encontramos ante un problema para el cual no se conoce ningún algoritmo exacto de

tiempo polinomial que lo resuelva. Esta clase de problemas son tan costosos en términos

computacionales que muchas veces se opta por resolverlo con heurísticas, es decir

métodos que no nos aseguran la mejor solución pero que en muchos casos otorgan

buenos resultados a mucho menor costo.

Un viajante de comercio desea visitar n ciudades volviendo al punto de partida.

¿Qué ruta debe seguir para minimizar la distancia total recorrida?

Según el algoritmo nos sirve para:

 Calcular la distancia total

Hamilton en base a este concepto diseña un juego (1857) donde se desea encontrar un

ciclo hamiltoniano en las aristas de un grafo de un dodecaedro.

Imagen rescatada de G. Dantzig, R. Fulkerson, and S. Johnson (1954)

camino hamiltoniano en una gráfica es una

sucesión de aristas adyacentes

Juego hamiltoniano

https://www.tsp.gatech.edu/index.html

Applegate, Bixby, Chvátal, and Cook (1998) tour óptimo para 13,509 ciudades de

EEUU con población mayor a 500.

Algoritmo

Un precursor mas directo del TSP, en donde el largo de las ramas jugaba un rol

predominante fue, una nueva definicion de la medida de una curva que propuso Menger.

´ El la definio como el supremo del conjunto formado por todos los numeros que

pueden ser obtenidos de tomar cada conjunto finito de puntos sobre la curva y

determinar la medida de la menor poligonal que los une. A este problema se lo llamo el

del mensajero. La resolucion no requiere un ciclo, s´olo un camino que contenga todos

los vertices. En 1832 fue impreso en Alemania un libro titulado: El problema del

viajero, como debe hacer para obtener ´exito en sus negocios. En su ´ultimo capítulo se

vislumbra la esencia del TSP cuando se comenta que con una elecci´on apropiada del

tour, se puede ganar mucho tiempo y que el aspecto m´as importante es cubrir tantas

ciudades como sean posibles sin visitar una de ellas dos veces. Merrill Flood fue el

responsable de divulgar el nombre del TSP. Le hablo acerca de ´el a A. W. Tucker en

  1. Tucker le coment´ o que recordaba haberlo escuchado de boca de Hassler

Whitney de la Universidad de Princeton pero no pod´ ıa confirmar con certeza esta

historia. De ser ver´ıdica asegura que ocurri´o en los a˜nos 1931-1932 pues fue en ese

entonces cuando se hallaba terminando su tesis con Lefschetz. Whitney era un

compañero que se encontraba en su etapa posdoctoral y estaba trabajando en teor´ ıa de

grafos, especialmente en planaridad y en el problema de los cuatro colores y Flood era

un estudiante recien graduado. El problema del viajante ya ten´ıa un nombre. John

IV. DESARROLLO DEL TRABAJO

Primero se buscó trazar las rutas más cercadas a cada escuela profesional

Se pasaron las escuelas profesionales a un plano cartesiano para asígnales

coordenadas

CODIGO PARA ENCONTRAR LA RUTA MÁS CORTA

import math

Coordenadas de las ubicaciones

ubicaciones = {

"Entrada": ( 0 , 4 ),

"Ing. Alimentaria": ( 2 , 2 ),

"Ing. Textil": ( 5 , 2 ),

"Ing. Ambiental": ( 12 , 5 ),

"Ing. Renovable": ( 12 , 6 ),

}

Función para calcular la distancia entre dos puntos

def calcular_distancia(coord1, coord2):

return math.sqrt((coord1[ 0 ] - coord2[ 0 ])** 2 + (coord1[ 1 ]

  • coord2[ 1 ])** 2 )

Función para resolver el problema del viajero

def resolver_tsp(ubicaciones):

inicio = "Entrada"

visitados = [inicio]

distancia_total = 0

actual = inicio

while len(visitados) < len(ubicaciones):

Encuentra el lugar más cercano no visitado

siguiente, distancia_min = None, float('inf')

for lugar, coord in ubicaciones.items():

if lugar not in visitados:

distancia =

calcular_distancia(ubicaciones[actual], coord)

if distancia < distancia_min:

siguiente, distancia_min = lugar,

distancia

Actualiza el camino y la distancia total

visitados.append(siguiente)

ubicaciones = {

"Entrada": ( 0 , 4 ),

"Ing. Alimentaria": ( 2 , 2 ),

"Ing. Textil": ( 5 , 2 ),

"Ing. Ambiental": ( 12 , 5 ),

"Ing. Renovable": ( 12 , 6 ),

  1. ¿Qué es? : Un diccionario llamado ubicaciones que almacena como

claves los nombres de los lugares ("Entrada") y como valores sus

coordenadas representadas por tuplas (x, y).

  1. ¿Por qué? : Esto permite acceder fácilmente a la posición de cualquier

lugar con su nombre como clave, ubicaciones["Entrada"] devuelve (0, 4).

2. Función para calcular la distancia entre dos puntos

def calcular_distancia(coord1, coord2):

return math.sqrt((coord1[ 0 ] - coord2[ 0 ])** 2 +

(coord1[ 1 ] - coord2[ 1 ])** 2 )

¿Qué es? : Una función que toma como parámetros dos coordenadas coord1 y

coord2, y calcula la distancia entre ellas usando la fórmula de distancia

euclidiana:

ecuación =

X

2

− X

1

2

Y

2

− Y

1

2

¿Por qué? : La distancia euclidiana es clave para determinar cuál es el punto

más cercano en cada paso.

Ejemplo de uso:

calcular_distancia(( 0 , 4 ), ( 2 , 2 )) # Devuelve la distancia

entre Entrada e Ing. Alimentaria

3. Lógica principal para resolver el problema del viajero

def resolver_tsp(ubicaciones):

inicio = "Entrada" # Punto de inicio

visitados = [inicio] # Lista para registrar el recorrido

distancia_total = 0 # Contador para la distancia total

recorrida

actual = inicio # Variable que rastrea dónde estamos

actualmente

while len(visitados) < len(ubicaciones): # Iterar hasta

visitar todos los lugares

siguiente, distancia_min = None, float('inf') #

Inicializar la búsqueda

for lugar, coord in ubicaciones.items():

if lugar not in visitados: # Solo considera

lugares no visitados

distancia =

calcular_distancia(ubicaciones[actual], coord)

if distancia < distancia_min: # Actualiza si

se encuentra una distancia menor

siguiente, distancia_min = lugar,

distancia

Actualiza el estado del recorrido

visitados.append(siguiente) # Marca como visitado

distancia_total += distancia_min # Suma la distancia

al total

actual = siguiente # Cambia al siguiente lugar

Regresa al punto de inicio

distancia_total +=

calcular_distancia(ubicaciones[actual], ubicaciones[inicio])

visitados.append(inicio) # Cierra el ciclo

return visitados, distancia_total # Devuelve la ruta y

la distancia total

a) Variables iniciales:

 inicio: Define el lugar inicial ("Entrada").

 visitados: Una lista que mantiene el registro del recorrido, empezando

por el lugar de inicio.

 distancia_total: Contador para sumar las distancias recorridas.

 actual: Almacena el lugar donde estamos actualmente.

print("Ruta óptima:", " -> ".join(ruta))

print(f"Distancia total: {distancia:.2f}")

¿Qué hace? : Llama a la función resolver_tsp, que devuelve la ruta y la distancia

total.

Formato de salida:

 Usa " -> ".join(ruta) para mostrar la ruta como una cadena separada por

flechas.

 Muestra la distancia total con 2 decimales ({distancia:.2f}).

Ruta óptima: Entrada -> Ing. Alimentaria -> Ing. Textil ->

Ing. Ambiental -> Ing. Renovable -> Entrada

Distancia total: 26.

5. Estructuras utilizadas

1.- Diccionarios (ubicaciones):

 Se usan para almacenar las posiciones con un nombre descriptivo y

acceder rápidamente a ellas.

2.- Listas (visitados):

 Sirven para registrar el recorrido y mantener el orden en que se visitan

los lugares.

3.- Funciones (calcular_distancia, resolver_tsp):

 Encapsulan la lógica del cálculo y optimizan la reutilización del código.

V. RESULTADOS

Los resultados obtenidos aplicando el algoritmo del viajero. El presente trabajo

se determinó con 5 puntos (entrada, Ing. Alimentaria, Ing. Textil, Ing. Ambiental y Ing.

Renovables) estas vendrían a ser las profesionales de cada carrera, para la mejor

ubicación de estos puntos se utilizó coordenadas de esta manera hallar las distancias que

necesitamos para cada punto hacia otro.

Entrada Ing.

Alimentarias

Ing. Textil Ing.

Ambiental

Ing.

Renovables

Entrada 0 2,8 5,38 12,04 12,

Ing.

Alimentarias

Ing. Textil 5,38 3 0 7,62 8,

Ing.

Ambiental

Ing.

Renovables

Ruta mas corta encontrada:

Ruta mas optima: Entrada

Ing. Alimentaria

Ing. Textil

Ing. Ambiental

Ing. Renovables entrada

Distancia total: 26.

VI. CONCLUSIONES

En conclusión, para visitar a todas las escuelas profesionales de la Universidad Nacional

de Juliaca se logró encontrar la ruta más corta posible con una distancia de recorrido

total de 26,61 en comparación con otras rutas que salen con más distancia a recorrer.