










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
Encuentra los documentos específicos para los exámenes de tu universidad
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
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 introducción a la optimización heurística, centrándose en los algoritmos de colonia de hormigas (aco) y el método gomory. Se explica el funcionamiento de estos métodos, se ilustran con ejemplos prácticos y se analizan sus aplicaciones en problemas de optimización combinatoria. Útil para estudiantes de ingeniería, informática y matemáticas que buscan comprender las técnicas de optimización heurística.
Tipo: Guías, Proyectos, Investigaciones
1 / 18
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!











Universidad Nacional de Piura
Facultad de Ingeniería Industrial, Escuela de Ingeniería Industrial
Presentación de Informe de Algoritmos de Optimización y Metaheurísticas
Arica Rodríguez, Jeshua Ricarte
Bazán Perez, Miguel Angel
Berru Mijahuanga, Mauricio
Lalupú Morales, Cristhian Fabián
Ortiz Llacsahuanga, Adrian Alonso
Ramos Alamo, Carmen Elizabeth
Rios Garcia, Keiner
Tomay Chunga, Yuber Abel
Castillo Burgos
Investigación de Operaciones I
03 de Febrero del 2025
El problema del viajante (por sus siglas en inglés TSP) consiste en encontrar el camino
único más corto que, dada una lista de ciudades y las distancias entre ellas, visita todas
las ciudades una sola vez y regresa a la ciudad de origen.
Su origen no está claro. Un manual alemán para viajantes de 1832 menciona el
problema e incluye viajes de ejemplo por Alemania y Suiza, pero no cubre sus
matemáticas.
La primera formulación matemática fue realizada en el siglo XIX por W.R. Hamilton y
Thomas Kirkman. El juego icosiano de Hamilton era un rompecabezas recreativo basado
en encontrar un ciclo hamiltoniano, que en realidad es una solución al problema de TSP
en un grafo (nota: el TSP es el ciclo hamiltoniano de menor longitud en un grafo conexo).
El TSP se puede formular como un modelo de Programación Lineal Entera. Aunque se
conocen varias formulaciones para resolver este problema, dos de ellas son las más
destacadas: la propuesta por Miller, Tucker y Zemlin, y la propuesta por Dantzig,
Fulkerson y Johnson.
En teoría, estos métodos pueden devolver una solución óptima al problema, pero como
éste se considera un problema NP-difícil, pueden ser demasiado costosos tanto en
potencia de cálculo como en tiempo.
Con el fin de obtener buenas soluciones en un tiempo más corto, se ha realizado un gran
esfuerzo para intentar resolver este problema con una variedad de métodos heurísticos.
De todo este grupo de heurísticas, nos gustaría destacar las inspiradas en la
biología: Optimización por Colonia de Hormigas y Algoritmos Genéticos (GA).
Programación Lineal Entera
Como mencionamos, existen dos formulaciones principales para el TSP, el propuesto
Miller, Tucker y Zemlin (MTZ) y el Dantzig, Fulkerson y Johnson (DFJ). Aunque la
formulación DFJ es más fuerte, la formulación MTZ puede ser útil.
Formulación MTZ
La formulación matemática propuesta por Miller, Tucker y Zemlin es la siguiente:
Usando este conjunto, las dos variables y el parámetro, podemos formular el problema
como:
Sujeto a:
La primera y la segunda ecuación refuerzan el tipo de las diferentes variables, la tercera
y la cuarta ecuaciones aseguran que cada nodo sea alcanzado y abandonado solo una vez,
mientras que las dos últimas ecuaciones imponen que solo una ruta cruce todos los nodos.
Formulación DFJ
En la formulación propuesta por Dantzig, Fulkerson y Johnson partimos de la misma
variable x_ {ij} y parámetro c_ {ij}> 0 para que la formulación se pueda completar con:
Sujeto a:
Las tres primeras ecuaciones son las mismas que en la formulación anterior, y la nueva
restricción (la última) asegura que no haya sub-recorridos, por lo que la solución devuelta
es un recorrido único y no la combinación de recorridos más pequeños. Debido a que esto
conduce a un número exponencial de posibles restricciones, en la práctica se resuelve con
una generación de columnas retrasada.
En el siguiente gráfico podemos ver la solución óptima para un problema de 100 nodos.
Algoritmos Genéticos
Los Algoritmos Genéticos (GA) son heurísticos inspirados en el proceso de evolución
de los seres vivos. Cada solución es un cromosoma compuesto por genes que representan
los diferentes valores de las variables de la solución.
Comenzando con una población inicial, podemos hacer que las soluciones “evolucionen”
en iteraciones. El proceso consiste en seleccionar la mejor mitad de la población de la que
elegimos al azar pares de cromosomas (soluciones) para el apareamiento. En estos
apareamientos intercambiamos genes de ambas soluciones para generar nuevas
soluciones (hijos).
Después del proceso de apareamiento, aplicamos mutaciones al azar en los hijos
resultantes para explorar más a fondo el espacio de la solución.
Finalmente seleccionamos los mejores 50 individuos de la población (el inicial más los
hijos) y continuamos el proceso hasta que convergemos en una solución.
En la siguiente animación podemos ver cómo evoluciona el Algoritmo Genético para el
mismo problema de 100 puntos.
Para diseñar un modelo de red de transporte para Perú basado en las ciudades principales
y aplicando conceptos de teoría de grafos, como el Problema del Viajante (TSP) , que
busca encontrar la ruta más corta que visita cada nodo (ciudad) exactamente una vez y
regresa al punto de inicio.
Proceso de Diseño:
Utilizaré las principales ciudades de la costa, sierra y selva de Perú como nodos.
Las distancias entre ciudades estarán basadas en rutas terrestres aproximadas. Si
no es posible una conexión directa, consideraré distancias aproximadas.
Generaré una visualización con rutas optimizadas entre las ciudades para
minimizar la distancia total.
Procedimiento:
Seleccioné las ciudades principales de la costa peruana: Tumbes, Piura,
Chiclayo, Trujillo, Lima, Ica, Arequipa y Tacna.
Establecí las conexiones entre las ciudades mediante rutas con distancias
aproximadas en kilómetros, representadas por las siguientes aristas:
o Tumbes ↔ Piura: 270 km
o Piura ↔ Chiclayo: 210 km
o Chiclayo ↔ Trujillo: 210 km
o Trujillo ↔ Lima: 490 km
o Lima ↔ Ica: 300 km
o Ica ↔ Arequipa: 710 km
o Arequipa ↔ Tacna: 380 km
Ejemplo práctico: Un conductor de Uber que recibe múltiples pedidos no espera a
calcular la mejor ruta posible para todos los viajes. En cambio, sigue un enfoque
heurístico:
Este tipo de heurística se utiliza en aplicaciones como Google Maps o Waze, que
constantemente ajustan la mejor ruta de acuerdo con el tráfico en tiempo real.
3. Simulated Annealing (Enfriamiento Simulado) - Asignación de Horarios
Problem a: Una universidad debe asignar horarios de clases a profesores y estudiantes,
evitando conflictos como superposiciones de cursos en el mismo salón.
Cómo funciona la heurística:
aula).
quedarse atrapado en una solución no óptima.
estabilizar una solución aceptable.
Ejemplo práctico:Imagina que una escuela tiene 20 clases y solo 10 aulas disponibles.
La asignación inicial de horarios podría tener conflictos (por ejemplo, dos clases
asignadas a la misma aula). En cada iteración, el algoritmo realiza ajustes hasta
encontrar un horario funcional, minimizando conflictos.
4. Heurística de Colonia de Hormigas - Diseño de Redes de Telecomunicaciones
Problema: Una empresa de telecomunicaciones necesita diseñar la mejor red de fibra
óptica para conectar diferentes ciudades con el menor costo posible.
Cómo funciona la heurística:
Ejemplo práctico: Este método se ha utilizado para diseñar redes de fibra óptica. En
lugar de analizar todas las combinaciones posibles, las "hormigas" digitales exploran
rutas y optimizan la mejor manera de conectar las ciudades con el menor costo.
1
2
3 −−−−−−−−−− >
𝐹𝑢𝑛𝑐𝑖ó𝑛 𝑂𝑏𝑗𝑒𝑡𝑖𝑣𝑜
1
2
3
1
2
3
1
2
3
1
2
3
≥ 0 𝑦 𝑒𝑛𝑡𝑒𝑟𝑜𝑠 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 − − − −→ 𝑉𝑎𝑟𝑖𝑜𝑏𝑙𝑒𝑠 𝑑𝑒 𝑑𝑒𝑐𝑖𝑠𝑖ó𝑛
1
2
3 −−−−−−−−−− >
1
2
3
1
1
2
3
2
1
2
3
3
1
2
3
𝑆𝑖 𝑙𝑎 𝑟𝑒𝑠𝑡𝑟𝑖𝑐𝑐𝑖ó𝑛 𝑒𝑠 "<" 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑑𝑒 𝑜ℎ𝑙𝑔𝑢𝑟𝑎 𝑠𝑒𝑟á 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑎
𝑆𝑖 𝑙𝑎 𝑟𝑒𝑠𝑡𝑟𝑖𝑐𝑐𝑖ó𝑛 𝑒𝑠 "≥" 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑑𝑒 𝑜ℎ𝑙𝑔𝑢𝑟𝑎 𝑠𝑒𝑟á 𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑎
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑆
1
5 2 1 1 0 0 15
𝑆
2
2 1 7 0 1 0 20
𝑆
3
1 3 2 0 0 1 25
𝑍 − 2 − 10 − 1 0 0 0 0
1
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑆
1
5 2 1 1 0 0 15
𝑆
2
2 1 7 0 1 0 20
𝑆
3
1 3 2 0 0 1 25
𝑍 − 2 − 10 − 1 0 0 0
0
5 2
⁄ 2 2
⁄ 1 2
⁄ 1 2
⁄ 0 2
⁄ 0 2
⁄ 15 2
⁄
2
2
2
3
2
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑆
1
5 2 1 1 0 0 15
𝑆
2
2 1 7 0 1 0 20
𝑆
3
1 3 2 0 0 1 25
𝑍 − 2 − 10 − 1 0 0 0
0
𝑆𝑜𝑙𝑢𝑐𝑖ó𝑛 Ó𝑝𝑡𝑖𝑚𝑎
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑋
2
5 ⁄ 2 1 1 ⁄ 2 1 ⁄ 2 0 0 15 ⁄ 2
𝑆
2
− 1 ⁄ 2 0 13 ⁄ 2 − 1 ⁄ 2 1 0 25 ⁄ 2
𝑆
3
− 13 ⁄ 2 0 1 ⁄ 2 − 3 ⁄ 2 0 1 5 ⁄ 2
𝑍 23 0 4 5 0 0 75
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑥
2
5 2
⁄ 1 1 2
⁄ 1 2
⁄ 0 0 15 2
⁄
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 25 2
⁄
𝑆
3
− 13 2
⁄ 0 1 2
⁄ − 3 2
⁄ 0 1 5 2
⁄
𝑍 23 0 4 5 0 0 75
𝐸𝑙𝑒𝑔𝑖𝑚𝑜𝑠 𝑒𝑙 𝑣𝑎𝑙𝑜𝑟 𝑓𝑟𝑎𝑐𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜 𝑚á𝑠 𝑝𝑒𝑞𝑢𝑒ñ𝑜
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑥
2
5 2
⁄ 1 1 2
⁄ 1 2
⁄ 0 0 15 2
⁄
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 25 2
⁄
𝑆
3
− 13 2
⁄ 0 1 2
⁄ − 3 2
⁄ 0 1 5 2
⁄
𝑍 23 0 4 5 0 0
75
𝑢𝑛𝑎 𝑣𝑒𝑧 𝑖𝑑𝑒𝑛𝑡𝑖𝑓𝑖𝑐𝑎𝑑𝑜 𝑒𝑙 𝑣𝑎𝑙𝑜𝑟 𝑚á𝑠 𝑝𝑒𝑞𝑢𝑒ñ𝑜 𝑠𝑒 𝑡𝑜𝑚𝑎 𝑑𝑒 𝑙𝑎 𝑡𝑎𝑏𝑙𝑎 𝑠𝑖𝑚𝑝𝑙𝑒𝑥 𝑡𝑜𝑑𝑎
𝑙𝑎 𝑟𝑒𝑠𝑡𝑟𝑖𝑐𝑐𝑖ó𝑛 𝑑𝑒 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑒𝑙𝑒𝑔𝑖𝑑𝑎 𝑒𝑛 𝑒𝑠𝑡𝑒 𝑐𝑎𝑠𝑜 𝑡𝑒𝑛𝑒𝑚𝑜𝑠:
𝑦𝑎 𝑞𝑢𝑒 ℎ𝑒𝑚𝑜𝑠 𝑡𝑜𝑚𝑎𝑑𝑜 𝑡𝑜𝑑𝑎 𝑙𝑎 𝑟𝑒𝑠𝑡𝑟𝑖𝑐𝑖ó𝑛 𝑒𝑠 𝑛𝑒𝑐𝑒𝑠𝑎𝑟𝑖𝑜 𝑑𝑒𝑠𝑐𝑜𝑚𝑝𝑜𝑛𝑒𝑟
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑅
𝑥
2
5 ⁄ 2 1 1 ⁄ 2 1 ⁄ 2 0 0 15 ⁄ 2
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 25 2
⁄
𝑆
3
− 13 2
⁄ 0 1 2
⁄ − 3 2
⁄ 0 1 5 2
⁄
𝑍 23 0 4 5 0 0 75
𝑒𝑙 𝑣𝑎𝑙𝑜𝑟 𝑚á𝑠 𝑒𝑞𝑢𝑒ñ𝑜 𝑐𝑜𝑛𝑠𝑖𝑑𝑒𝑟𝑎𝑛𝑑𝑜 𝑢𝑛 𝑣𝑎𝑙𝑜𝑟 𝑎𝑏𝑠𝑜𝑙𝑢𝑡𝑜.
8 𝑒𝑠 𝑒𝑙 𝑟𝑒𝑠𝑢𝑙𝑡𝑎𝑑𝑜 𝑚𝑒𝑛𝑜𝑟 𝑝𝑜𝑟 𝑡𝑎𝑛𝑡𝑜 𝑒𝑠𝑎 𝑐𝑜𝑙𝑢𝑚𝑛𝑎 𝑑𝑒 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑠𝑒𝑟á 𝑛𝑢𝑒𝑠𝑡𝑟𝑎 𝑐𝑜𝑙𝑢𝑚𝑛𝑎
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑆
4
𝑅
𝑥
2
5 2
⁄ 1 1 2
⁄ 1 2
⁄ 0 0 0 15 2
⁄
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 0 25 2
⁄
𝑆
3
− 13 2
⁄ 0 1 2
⁄ − 3 2
⁄ 0 1 0 5 2
⁄
𝑆
4
− 1 / 2 0 − 1 / 2 − 1 / 2 0 0 1 − 1 / 2
𝑍 23 0 4 5 0 0 0 75
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑆
4
𝑅
𝑥
2
5 ⁄ 2 1 1 ⁄ 2 1 ⁄ 2 0 0 0 15 ⁄ 2
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 0 25 2
⁄
𝑆
3
− 13 ⁄ 2 0 1 ⁄ 2 − 3 ⁄ 2 0 1 0 5 ⁄ 2
𝑆
4
− 1 / 2 0 − 1 / 2 − 1 / 2 0 0 1 − 1 / 2
𝑍 23 0 4 5 0 0 0 75
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑆
4
𝑅
𝑥
2
5 2
⁄ 1 1 2
⁄ 1 2
⁄ 0 0 0 15 2
⁄
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 0 25 2
⁄
𝑆
3
− 13 2
⁄ 0 1 2
⁄ − 3 2
⁄ 0 1 0 5 2
⁄
𝑆
4
− 1 / 2
0 − 1 / 2 − 1 / 2
0 0 1 − 1 / 2
𝑍 23 0 4 5 0 0
0 75
𝑞𝑢𝑒𝑑𝑎 𝑒𝑛 𝑙𝑎 𝑖𝑛𝑡𝑒𝑟𝑠𝑒𝑐𝑐𝑖ó𝑛 𝑡𝑜𝑚𝑎𝑟𝑒𝑠 𝑒𝑠𝑒 𝑣𝑎𝑙𝑜𝑟 𝑝𝑎𝑟𝑎 𝑠𝑒𝑔𝑢𝑖𝑟 𝑟𝑒𝑠𝑜𝑙𝑣𝑖𝑒𝑛𝑑𝑜 𝑒𝑙 𝑒𝑗𝑒𝑟𝑐𝑖𝑐𝑖𝑜
𝑨𝒑𝒍𝒊𝒄𝒂𝒓 𝒏𝒖𝒆𝒗𝒂𝒎𝒆𝒏𝒕𝒆 𝒆𝒍 𝒎é𝒕𝒐𝒅𝒐 𝒔𝒊𝒎𝒑𝒍𝒆𝒙 :
𝑑𝑖𝑏𝑖𝑑𝑖𝑚𝑜𝑠 𝑙𝑎 𝑓𝑖𝑙𝑎 𝑝𝑖𝑣𝑜𝑡𝑒 𝑒𝑛𝑡𝑟𝑒 𝑒𝑙 𝑛ú𝑚𝑒𝑟𝑜 𝑝𝑖𝑣𝑜𝑡𝑒 𝑙𝑜 𝑞𝑢𝑒 𝑠𝑒𝑟í𝑎 𝑺
𝟒
2
2
3
3
2
2
3
Realizamos las operaciones y obtenemos lo siguiente:
*nota: el resultado se incluirá en X3 que es la columna que ingresa.
ya que nos quedan enteros en el resultado que es lo que se busca con el método de
gomory hemos culminado.
Por lo tanto, el resultado final es el siguiente:
𝟏
𝟐
𝟑
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑆
4
𝑅
𝑥
2
5 2
⁄ 1 1 2
⁄ 1 2
⁄ 0 0 0 15 2
⁄
𝑆
2
− 1 2
⁄ 0 13 2
⁄ − 1 2
⁄ 1 0 0 25 2
⁄
𝑆
3
− 13 2
⁄ 0 1 2
⁄ − 3 2
⁄ 0 1 0 5 2
⁄
𝑆
4
− 1 / 2 0 − 1 / 2 − 1 / 2 0 0 1 − 1 / 2
𝑍 23 0 4 5 0 0 0 75
𝑋
1
𝑋
2
𝑋
3
𝑆
1
𝑆
2
𝑆
3
𝑆
4
𝑅
𝑥
2
2
1 0 0
0 0 1 7
𝑆
2
𝑆
3
𝑋
3
1 0 1 1 0 0 - 2 1
𝑍 19 0 0 1 0 0 8 71