














Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
1 / 22
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
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.
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.
Determinar el camino más corto para visitar todas las escuelas profesionales de
la Universidad Nacional de Juliaca y volver al punto de inicio.
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
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
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
import math
ubicaciones = {
"Entrada": ( 0 , 4 ),
"Ing. Alimentaria": ( 2 , 2 ),
"Ing. Textil": ( 5 , 2 ),
"Ing. Ambiental": ( 12 , 5 ),
"Ing. Renovable": ( 12 , 6 ),
}
def calcular_distancia(coord1, coord2):
return math.sqrt((coord1[ 0 ] - coord2[ 0 ])** 2 + (coord1[ 1 ]
def resolver_tsp(ubicaciones):
inicio = "Entrada"
visitados = [inicio]
distancia_total = 0
actual = inicio
while len(visitados) < len(ubicaciones):
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
visitados.append(siguiente)
ubicaciones = {
"Entrada": ( 0 , 4 ),
"Ing. Alimentaria": ( 2 , 2 ),
"Ing. Textil": ( 5 , 2 ),
"Ing. Ambiental": ( 12 , 5 ),
"Ing. Renovable": ( 12 , 6 ),
claves los nombres de los lugares ("Entrada") y como valores sus
coordenadas representadas por tuplas (x, y).
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 =
2
1
2
2
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
visitados.append(siguiente) # Marca como visitado
distancia_total += distancia_min # Suma la distancia
al total
actual = siguiente # Cambia al siguiente lugar
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.
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.
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.