Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
5 vistas24 páginas

Tema 1 Heurísticos

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 24

Modelos Avanzados de IO

Profesor: Francisco Ballestín


Departamento: Matemáticas para la Economía y Empresa.
Despacho: 5E04
Horario tutorías: jueves 9:30-12:30 (presencial)
También tutorías a la carta (concertar cita)
Correo: francisco.ballestin@uv.es

Modelos avanzados de IO
Que no se Heurísticos, Tema 1
pueden resolver
de forma óptima Metaheurísticos, Tema 2
Problemas de
optimización
Métodos para
Multiobjetivo
resolverlo, Tema 3

Desarrollo por
Con incertidumbre
e
escenarios, Tema 4

Optimización fuzzy, Tema 4

Principales elementos a aprender durante el curso


• (Modelizar problema original)
• Incorporar característica (resolución directa, multiobjetivo, incertidumbre)
• Escoger método para su resolución
• Diseñar algoritmo o modelo para su resolución (a mano)
• Seguir/Ejecutar/Resolver algoritmo o modelo (a mano, Lingo, Excel, programar)
Modelos avanzados de IO
Mayores dificultades de la asignatura:
• Diseñar algoritmos para problemas nuevos (temas 1 y 2), al ser creativo.
• Trabajar con escenarios y Lingo avanzado / sumatorios.
• Gran cantidad de conceptos teóricos.
• Gran cantidad de ejercicios diferentes. Esencial llevar la asignatura “al día”.
• Sinergias entre tema (últimas clases). Problemas más complicados.
• Los ejercicios en los exámenes pueden ser “más difíciles” que algunos
en clase (que se utilizan para enseñar los conceptos).

Clases y evaluación:
• Usaremos el portátil para usar Excel o Lingo.
• Podemos necesitar el PC de las aulas de ordenador. Aprended usuario y
contraseña!
• Colgaré ejercicios para que los hagáis. Colgaré las soluciones.

Modelos avanzados de IO
Evaluación:
• Examen final: 6 puntos, es obligatorio aprobar este examen (3/6)
• Ejercicios teórico-prácticos, modelizar, sintaxis indexada, utilización de
Excel, diseño de algoritmos, gráficas
• Evaluación continua: 4 puntos
• Pruebas teórico-prácticas y con ordenador (2 puntos)
• Trabajo en grupo (1 punto)
• Parte de la evaluación continua se puede recuperar, pero toda junta,
en un examen el día del examen final (3 puntos).
• El trabajo en grupo no se puede recuperar (1 punto).
• Se puede restar evaluación continua por hablar/molestar en clase

Recuperación de clases:
11/10: recuperarla jueves 26/9 ó 3/10
Modelos avanzados de IO
Tema 1. Algoritmos Heurísticos

1.1.- Introducción a los algoritmos heurísticos


1.2.- Métodos Constructivos
1.3.- El Problema del Viajante (TSP)
1.4.- Búsquedas Locales

1.1.– Introducción a los heurísticos

6
Problemas de optimización
Ejemplo: Problema de la Mochila (Knapsack problem)
Problemas de optimización: ¿Qué son y cómo resolverlos?

N objetos a transportar en una mochila.


Cada objeto j tiene un volumen aj y un beneficio cj.
La mochila tiene una capacidad b.
Se trata de determinar los objetos a llevar en la mochila de forma que quepan
y que el beneficio sea máximo.

Restricciones que dan lugar a soluciones factibles. Queremos la mejor de ellas, que
maximice o minimice la función objetivo.

max ܿଵ ‫ݔ‬ଵ + ܿଶ ‫ݔ‬ଶ +…+ ܿ௡ ‫ݔ‬௡

s.a. ܽଵ ‫ݔ‬ଵ + ܽଶ ‫ݔ‬ଶ+…+ ܽ௡ ‫ݔ‬௡ ൑ ܾ

‫ݔ‬௜ ‫{ א‬0,1} i
7

Introducción a los heurísticos


¾Clase P = problemas "fáciles" de resolver. Las soluciones óptimas pueden ser
calculadas en una cantidad razonable de tiempo (polinomial)

¾Clase NP = problemas complicados de resolver (quizá requeriría miles de millones de


años de computación, tiempo no polinomial) pero una vez encontrada, es fácil de
comprobar si es factible.

¾Muchos de los problemas de optimización son del tipo NP.

¾“¿ P = NP ?" es uno de los problemas "del Milenio", 1 millón $ por resolverlo

¾ Métodos Exactos: Proporcionan una solución óptima del problema.


Ejemplos: Simplex, B&B

¾ Métodos Heurísticos o Aproximados: Proporcionan buenas soluciones


para el problema pero no garantizan que sean óptimas.
8
Introducción a los heurísticos
Un heurístico es un “procedimiento simple, a menudo basado en el sentido común, que se supone
que ofrecerá una buena solución (aunque no necesariamente la óptima) a problemas difíciles, de un
modo fácil y rápido”. (Zanakins y Evans, 1981)

ALGORITMO = Secuencia de pasos lógicos que permiten solucionar un problema.

• Algoritmos heurísticos: Repetitivos, la manera de obtener las soluciones sigue el mismo guión.
Sólo estudian una zona del conjunto de soluciones factibles. No aprovechan la solución obtenida
en una iteración para el resto de iteraciones.

• Algoritmos metaheurísticos: Utilizan varias maneras de obtener soluciones. Aprovechan la


solución obtenida en una parte del algoritmo para mejorarla y encontrar una mejor. En muchas
ocasiones poseen mecanismos para explorar diferentes zonas del conjunto de soluciones
factibles.

• Dado un problema, primero hay que intentar resolverlo óptimamente antes de aplicar un algoritmo
heurístico.

• La calidad de un algoritmo heurístico se mide aplicándolo a muchas instancias del problema y


comparando su solución o bien con las soluciones óptimas (si se conocen) o con soluciones de
otros heurísticos.

Ejemplo – Problema de la Mochila


Consideremos una empresa que puede realizar como mucho 7 proyectos, cada uno de
los cuales con un beneficio, un coste inicial y requerimientos de personal. La
información se resume en la tabla mostrada. Por ejemplo, el Proyecto 1 requiere de 120
profesionales para ser realizado, con un coste/inversión inicial de 15 millones de euros
y aportará un beneficio de 2 millones de euros. El personal sólo puede realizar un
proyecto. Asumiremos que la empresa dispone de 130 profesionales y un presupuesto
para inversión de 30 millones de euros. Los datos están en cientos de miles de euros.

Proyecto Personal Coste Beneficio Queremos maximizar el beneficio, pero


1 120 15.000.000 2.000.000 sin pasarnos del presupuesto ni del
2 25 5.000.000 1.000.000
personal. ¿Qué cálculos y pasos harías
para escoger los proyectos?
3 15 6.000.000 900.000
4 60 10.000.000 1.200.000 ¿Cómo esquematizar esos pasos para que
5 8 3.200.000 500.000 sirvieran para que lo hiciera otra persona y
6 12 4.000.000 1.000.000 sirvieran para otro problema con otros
7 20 12.000.000 2.500.000 datos?

“Pasos” = Algoritmo 10
Ejemplo – Problema de la Mochila
Si definimos xi = 1 si cogemos el proyecto i-ésimo, bi el rendimiento del i-ésimo
proyecto, ci el coste, peri el nº de personas por proyecto, Pres el presupuesto
que tenemos y Nper el nº de personas en la plantilla, obtenemos el siguiente
problema:

‫ ݔܽܯ‬σ௡௜ୀଵ ܾ௜ · ‫ݔ‬௜
Max ܾଵ ‫ݔ‬ଵ + ܾଶ ‫ݔ‬ଶ +…+ܾ௡ ‫ݔ‬௡
s.a. ܿଵ ‫ݔ‬ଵ + ܿଶ ‫ݔ‬ଶ +…+ܿ௡ ‫ݔ‬௡ ൑ ܲ‫ݏ݁ݎ‬ s.a. σ௡௜ୀଵ ܿ௜ · ‫ݔ‬௜ ൑ ܲ‫ݏ݁ݎ‬
‫ݎ݁݌‬ଵ ‫ݔ‬ଵ + ‫ݎ݁݌‬ଶ ‫ݔ‬ଶ + ‫ ڮ‬+ ‫ݎ݁݌‬௡ ‫ݔ‬௡ ൑ ܰ‫ݎ݁݌‬
‫ݔ‬௜ ‫ א‬0,1 ‫݅׊‬ σ௡௜ୀଵ ‫ݎ݁݌‬௜ · ‫ݔ‬௜ ൑ ܰ‫ݎ݁݌‬

‫ݔ‬௜ ‫ א‬0,1 ‫݅׊‬

11

1.2.– Métodos Constructivos

12
Algoritmos Constructivos
En cada problema una solución factible estará formada por un número de ‘elementos’.
Tenemos que detectar esos elementos.
Soluciones

Los métodos constructivos son procedimientos iterativos que, en cada paso,


añaden un elemento hasta completar la solución. La forma de escoger ese
elemento determina el algoritmo
Algoritmo Constructivo (completamente) aleatorio
El elemento se escoge completamente aleatoriamente.
Algoritmo Constructivo inteligente
El elemento se incluye usando alguna característica “favorable para el problema”.
Algoritmo Constructivo Inteligente Aleatorizado
Incluye azar en las elecciones. Se obtienen diferentes soluciones con diferentes aplicaciones del algoritmo.

13

Codificación
¾ Es el 1er paso antes de cualquier algoritmo. Es un paso esencial.

¾ Es una representación de una solución. Tiene como base los “elementos


principales” del problema.

¾ Tiene que estar completamente claro cómo obtener una solución del problema a
partir de una codificación y viceversa.

¾ A veces son todas factibles y otras tenemos que comprobarlo con cada
codificación.

¾ Normalmente existen diferentes posibilidades de codificación para un problema.

¾ Las técnicas a aplicar (algoritmos constructivos, búsquedas locales etc.)


depende de la codificación escogida.

¾ Ejemplos de codificación
¾ Un vector binario, de 0’s y 1’s
¾ Una permutación de números de 1 a n
14
¾ En ocasiones son necesarios dos o más vectores para la codificación
Método constructivo
Elemento esencial en el problema de mochila (piezas): Proyectos.

Codificación: Vector binario V de n componentes. Es decir, vector V de n


componentes donde V(i) = 1 si se realiza el proyecto i-ésimo, 0 en otro caso.
(1 0 0 1 0 1 1) = escogemos proyectos 1, 4, 6 y 7.
Sabemos perfectamente qué solución corresponde a una codificación.
Cuando tenemos una solución sabemos cómo codificarla.

Es un vector, porque el orden importa.

Idea para un constructivo para el problema de la mochila


Partimos de 0. En cada iteración escogemos un proyecto y calculamos si se
puede añadir a la solución.

Necesitamos describir algoritmos de manera clara Ÿ Pseudo - código


15

¿Qué es el pseudo-código?

• Son los pasos que hay que seguir para realizar el algoritmo.

• Es una descripción compacta e informal de un algoritmo

• Está diseñado para la lectura humana, en lugar de la de un ordenador

• Es independiente de cualquier lenguaje de programación (Python, C++, …).

• Tiene que servir para diferentes ejemplos (instancias) del mismo problema.

• En un puente entre la descripción literaria de un algoritmo y la programación


del algoritmo en un lenguaje concreto.

• Tiene mucho que ver con los diagramas de flujo y diagramas de control, que
habréis visto o veréis en otras asignaturas.

• Combina 1) estructuras de control, 2) notación matemática, 3) frases simples


en lenguaje natural (castellano en nuestro caso).
16
Esquema básico constructivo mochila
Antes del algoritmo
Elementos/piezas para construir la solución: proyectos; n = nº proyectos
Ntrabmax =130, Presup = 30000, bi = beneficio proyecto i, ci = coste proyecto i,
ntrabi = nº trabajadores necesarios para el proyecto i.

Algoritmo Constructivo
1. L = {1,…,n} lista de proyectos. V(i) = 0  i = 1, …, n;
2. Costeacum=0, Trabacum = 0, función objetivo f = 0.
3. Mientras L z ‡
3.1. Escoger un proyecto i  L.
3.2. Si (Costeacum + ci d Presup , Trabacum + ntrabi d Ntrabmax)
3.2.1. V(i) = 1. f = f + bi.
3.2.2. Costeacum = Costeacum + ci . Trabacum = Trabacum + ntrabi.
3.3. Eliminamos i de L.
4. Proporcionamos V y la función objetivo f.

Algoritmo Constructivo Inteligente


3.1. Escoger el proyecto i  L con mayor beneficio bi.
17

Ejemplo - Constructivos para la mochila


Aplicación del algoritmo constructivo inteligente
Paso 1 y 2: L = {1,…,7}. Costeacum=0, Trabacum = 0, función objetivo f = 0. Los
proyectos ordenados por beneficio son L = {7, 1, 4, 2, 6, 3, 5}. V(i) = 0 i

1er Bucle paso 3: Elegimos el proyecto 7 pq tiene mayor beneficio. Cabe en la solución,
pk 0+12 d 30 y 0+20 d 130. V(7)=1, Costeacum = 12, Trabacum = 20, f = 2.5
2º Bucle paso 3: Elegimos el proyecto 1. No cabe, por culpa del personal, 20+120 no es
d 130. La solución no cambia.
3er Bucle paso 3: Elegimos el proyecto 4. 12+10 d 30 y 20+60 d 130. Solución: {4,7},
Costeacum = 22, Trabacum = 80, f = 2.5 + 1.2 = 3.7, V(4)=1.
4º Bucle paso 3: Elegimos el proyecto 2. Cabe en la solución. 22+5 d 30 y 80+25 d 130.
Solución: {2,4,7}, Costeacum = 27, Trabacum = 105, f = 3.7+1=4.7 , V(2)=1.
4º Bucle paso 3: Elegimos el proyecto 6. No cabe en la solución por coste.
5º Bucle paso 3: Elegimos el proyecto 3. No cabe en la solución por coste.
6º Bucle paso 3: Elegimos el proyecto 5. No cabe en la solución por coste.

La solución final es que realizamos los proyectos 2, 4 y 7, con función objetivo 4.7.

18
Constructivo mochila
Aleatorio, Inteligente, Inteligente aleatorizado
¿Cómo escoger el proyecto?

Algoritmo Constructivo (completamente) Aleatorio


3.1. Escoger el proyecto i  L aleatoriamente.

Para el algoritmo constructivo inteligente: una característica favorable es que


el proyecto tenga mucho beneficio.

Algoritmo Constructivo Inteligente


3.1. Escoger el proyecto i  L con mayor beneficio bi.

Algoritmo Constructivo Inteligente Aleatorizado


3.1.1. Calcular los tres proyectos de L con mayor beneficio bi.
3.1.2. Escoger aleatoriamente uno de ellos y llamarlo i.

19

Solución completa / incompleta


¾ Recordemos que una solución está formada por piezas.

¾ Una solución es incompleta cuando se pueden añadir, quitar una pieza a la solución
sin modificar otras piezas, mejorando la función objetivo y que la solución siga
siendo factible. En en aquellos problemas que las piezas tengan varias posibilidades
de realizarse, una solución será incompleta si se puede cambiar la manera de
realizar la pieza, que se mejore la función objetivo y la solución siga siendo factible.

¾ En el ejemplo del problema de la mochila (los proyectos), una solución es incompleta


cuando podemos añadir un proyecto a una solución y que la solución siga siendo
factible (tengamos presupuesto y personal para realizarlo).

¾ Escoger los proyectos 4 y 7 es una solución incompleta, porque podemos además


añadir el proyecto 2 sin eliminar ninguno.

¾ Para hablar de solución completa/incompleta la solución tiene que ser factible.

¾ Que una solución sea completa o incompleta dependerá del problema específico
con el que trabajemos. Si el problema lo permite, la solución final que proporcione un
algoritmo tiene que ser completa.
20
Estructura de un algoritmo (pseudo-código)
ƒ Antes del algoritmo
Definir el significado de las variables y constantes que el algoritmo utiliza.
ƒ Inicialización
Se inicializan las listas, vectores y acumuladores.

ƒ Bucle principal (con condición de parada)


En cada iteración del bucle seleccionamos un elemento y decidimos si
añadirlo a la solución. Al finalizar la iteración normalmente eliminaremos ese
elemento.

Saldremos del bucle cuando hayamos analizado todos los elementos o no


tenga sentido considerar ninguno más.

Dentro del bucle tenemos que actualizar la codificación y la función objetivo.

ƒ Finalización
Pasos finales para finalizar la solución (si son necesarios)
Devolver la solución y función objetivo.
21

Componentes de un algoritmo (pseudo-código)


ƒ Estructuras:
ƒ Lista de elementos. L = {1, …, n}
La lista representa lo mismo independientemente de cómo ordenemos la lista.

Se pueden añadir y eliminar elementos. En muchas ocasiones serán listas con


los elementos clave que tenemos que introducir en la solución al construirla.
En muchas ocasiones acabaremos el bucle principal cuando la lista sea vacía.

ƒ Vector con posiciones, V(i)


Tiene un tamaño fijo, V(i) significa algo relacionado con el elemento i-ésimo.

Si cambiamos los números de posición SÍ cambia la solución

ƒ Vector/Lista para cada elemento j: Lj

ƒ Variables: acumuladores para poder calcular si una solución es factible


Ejemplo: restricciones de recurso

22
Componentes de un algoritmo (pseudo-código)
ƒ Datos: Si dependen de los elementos llevarán un subíndice o dos asociados
ci = coste del proyecto i; bi = beneficio de realizar el proyecto i-ésimo

cij = coste de ir de la ciudad i a la ciudad j.

Ejemplos de acciones dentro de un algoritmo


ƒ Ordenar lista L según una característica de sus elementos
ƒ Por ejemplo, ordenar una lista de alumnos en orden decreciente del
rendimiento

ƒ Escoger aleatoriamente un elemento de una lista.


ƒ Utilizar estructuras de control
ƒ Si (condición), entonces … En otro caso …
ƒ Mientras [condición]: ….
ƒ Desde i = 1 hasta n, hacer …

23

Mejoras: Introducir el azar en el procedimiento


Se pueden calcular muchas soluciones y así obtener mejores resultados, a costa de más tiempo
computacional. Son también apropiados para metaheurísticos, donde se necesitan varias soluciones
distintas de cierta calidad.
¾ Selección al Azar Restringida: Por ejemplo de entre los 3 mejores elegir uno aleatoriamente.
¾ Selección Probabilística (método de la ruleta, roulette-Wheel):
Más probabilidad el mayor, calculamos la suma
proyecto valor probabilida
d
2 30 30/90 =0.33 1
0 0.33 0.55
11 20 20/90 = 0.22 Se elige un número al azar en el intervalo [0,1]. Por ejemplo 0.35. Como
cae en el segundo trozo: elegimos el segundo dato, el proyecto 11.
7 40 40/90 = 0.45

Más probabilidad el menor, calculamos el máximo +1. En este caso el máximo +1 = 41


Proy Valor Valor Probabilidad
Opuesto
7 40 41-40=1 1/33 = 0.03 1
0 0.03 0.36
2 30 41-30=11 11/33 = 0.33
Se elige un número al azar en el intervalo [0,1]. Por ejemplo 0.4. Como
cae en el tercer trozo: elegimos el proyecto 11.
11 20 41-20=21 21/33 = 0.64
24
Constructivos inteligente aleatorizado mochila

Algoritmo Constructivo Inteligente Aleatorizado


3.1. Escoger el proyecto i  L con el método de la ruleta, usando el
beneficio (a mayor beneficio mayor probabilidad)

25

Diseño de algoritmos
¾ Tiene que ser claros y que se entienda fácilmente lo que hacen.

¾ Tienen que servir para cualquier instancia. Ojo con los datos que haya que
generalizar.

¾ No pueden realizar pasos ineficientes. Por ejemplo, seleccionar y trabajar con un


elemento que ya ha sido asignado y que no podemos volver a asignar.

¾ Si el problema lo permite, el algoritmo debe devolver siempre soluciones factibles.

¾ Usar lenguaje del problema, no copiar de otros algoritmos. Ejemplo: Si en el


problema se habla de paquetes no podemos usar luego proyectos.

¾ A la hora de un algoritmo inteligente, no se puede seguir un orden que no beneficie a


la función objetivo. A la hora del aleatorio, no se puede seguir ningún orden
establecido, porque queremos que se puedan calcular todas las soluciones.

26
1.3.– El problema del agento viajero

27

El Problema del Viajante (TSP)


Dada una lista de ciudades y las distancias entre cada par de ellas,
¿Cuál es la ruta más corta (o más barata) posible que visita cada ciudad
exactamente una vez y regresa a la ciudad origen?

Hay que considerar (n-1)!/2 rutas posibles


(n = 10 o 180000; n = 30 o 4·1030 )
28
El Problema del Viajante (TSP)

En las décadas de los 50 y de los 60 el


problema empezó a ser popular en USA.
Gracias a la campaña de publicidad llevada a
cabo por “Procter and Gamble” en 1962. La
campaña anunciaba un concurso cuyo premio
ascendería a 10.000$. Dicha recompensa sería
para aquel que ayudara a Toody y Muldoon
decidir la ruta más corta entre 33 ciudades de
Estados Unidos (Concurso Car 54). Los policías
Toody y Muldoon, siempre conduciendo su
famoso Car 54, eran personajes de una popular
serie americana. Y “su tarea” de visitar las 33
ciudades un claro ejemplo del TSP.

29

El Problema del Viajante (TSP)


Numerosas aplicaciones del TSP: impresión de microchips, logística, rutas en
almacenes, secuencias de ADN, rutas escolares (buses), reparto de
paquetería, producción de circuitos electrónicos, etc.

Existen diferentes formulaciones matemáticas para modelizar el problema, pero


nuestro enfoque será diferente.

30
Formulación Matemática del TSP

‫݊݅ܯ‬ ෍ ܿ௜௝ ‫ݔ‬௜௝


xij = 1 si después del nodo i se visita el nodo j, 0 otro caso
(௜,௝)‫א‬஺
s.a.

෍ ‫ݔ‬௜௝ = 1 ‫ܸ א ݅׊‬
௝ୀଵ

෍ ‫ݔ‬௝௜ = 1 ‫ܸ א ݅׊‬
௝ୀଵ

෍ ‫ݔ‬௜௝ ൑ ܵ െ 1 ‫ܸ ؿ ܵ׊‬, ܵ > 1


௜‫א‬ௌ,௝‫א‬ௌ
S cualquier subconjunto

‫ݔ‬௜௝ ‫{א‬0,1} (݅, ݆) ‫ܣ א‬

¾ El número de restricciones de eliminación de subtours es exponencial. Para resolver la


relajación lineal, se van añadiendo cuando son violadas y se vuelve a resolver el PL.
¾ Existen formulaciones más eficientes.

31

El Problema del Viajante (TSP)


Instancia = caso concreto de un problema, con un tamaño del problema
concreto y unos datos concretos. Tenemos que realizar algoritmos que
puedan aplicarse a cualquier instancia de un problema.

Dada una lista de 5 ciudades y las distancias entre cada par de ellas se
muestra en la tabla, ¿Cuál es la ruta más corta posible que visita cada
ciudad exactamente una vez y regresa a la ciudad origen?

C1 C2 C3 C4 C5
C1 999 16 63 21 20
C2 57 999 40 46 69
C3 23 11 999 55 53
C4 71 53 58 999 47
C5 27 79 53 35 999

32
Ejemplos de problemas modelizados como un TSP
EJEMPLO TSP1:
La producción diaria en la compañía Rainbow incluye lotes de pintura blanca (B), amarilla (A), roja (R), negra
(N) y verde (V). Las instalaciones de producción se deben limpiar entre uno y otro lote. La tabla muestra en
minutos los tiempos de limpieza. El objetivo es determinar la secuencia de producción para los lotes de
colores que minimice el tiempo de limpieza total.

Blanca Amarilla Negra Roja Verde

Blanca ’ 10 17 15 14

Amarilla 20 ’ 19 18 15

Negra 50 44 ’ 22 25

Roja 45 40 20 ’ 26

Verde 30 32 33 35 ’

EJEMPLO TSP2:
Tenemos 4 trabajos que tenemos que realizar en una máquina. En las tablas siguientes se muestra el tiempo
de ejecución de los trabajos y el tiempo de preparación de la máquina en función del trabajo que se realice
antes. El objetivo es determinar la secuencia de producción para las piezas que minimice el tiempo de
ejecución total.

t1 t2 t3 t4
0 1 2 1 1 Sería otras instancias del TSP. Nuestro
t1 ’ 3 4 4 algoritmo tiene que ser capaz de poder
t2 1 ’ 3 3 Aplicarse a cualquier instancia.
t3 2 2 ’ 3

t4 2 4 6 ’

33

El Problema del Viajante (TSP)


Elemento esencial en el TSP (piezas): Ciudades.
Codificación: Vector de n posiciones. En la i-ésima posición se coloca la
ciudad que visitamos la i-ésima. Desde la última ciudad tenemos que volver
a la 1ª.
En realidad se trata de una permutación de las ciudades (sabiendo que de
la última ciudad se vuelve a la 1ª)
(2 4 3 1 5) = Empezamos en la ciudad 2, luego vamos a la 4. Después a la
3. En 4º lugar visitamos la ciudad 1, pasamos a la 5 y acabamos volviendo
a la ciudad 2. No es una lista porque reordenar el vector cambia la solución.

Idea para un constructivo para el TSP


Partimos de una ciudad cualquiera. En cada iteración escogemos una
ciudad no escogida y esa es la siguiente ciudad que visitamos.
Para constructivo inteligente: escogemos la ciudad no escogida más
cercana a la original (heurístico del vecino más cercano).

34
Ejemplo - Constructivos para el TSP
Esquema básico
Antes del algoritmo
Elementos/piezas para construir la solución: ciudades
n = nº ciudades; cij = coste de ir de la ciudad i a la ciudad j

Algoritmo Constructivo (sirve para los 3)


1. L = {1,…,n}. V(i) = 0 i; Función objetivo f = 0.
2. Escoger una ciudad aleatoriamente, i. Eliminarlo de L.
3. V(1) = i. Realizamos h = 2.
4. Mientras L z ‡
4.1. Escoger una ciudad j  L.
4.2. V(h) = j; h = h + 1. f = f + cij.
4.3. Eliminamos j de L.
4.4. Llamamos i a j.
5. f = f + ciV(1). (Le añadimos el coste entre la última ciudad escogida y la 1ª).
6. Proporcionamos V y la función objetivo f.

35

Ejemplo - Constructivos para el TSP


Aleatorio, Inteligente, Inteligente aleatorizado
Algoritmo Constructivo (completamente) Aleatorio
4.1. Escoger la ciudad j  L aleatoriamente.
Para el algoritmo constructivo inteligente: una característica favorable es que
las ciudades estén cerca.
Algoritmo Constructivo Inteligente
4.1. Escoger la ciudad j  L con menor cij.

Algoritmo Constructivo Inteligente Aleatorizado


4.1.1. Calcular las dos ciudades de L con menores cij.
4.1.2. Escoger aleatoriamente uno de los dos y llamarlo j.

Algoritmo Constructivo Inteligente Aleatorizado


4.1. Escoger la ciudad j  L con el método de la ruleta, usando el coste
(a menor coste mayor probabilidad)

36
Ejemplo - Constructivos inteligente para el TSP
Vecino más próximo
C1 C2 C3 C4 C5
C1 999 16 63 21 20
C2 57 999 40 46 69
C3 23 11 999 55 53
C4 71 53 58 999 47
C5 27 79 53 35 999
Pasos 1-3: Elegimos una ciudad, por ejemplo el 2. V(1) = 2. Solución: (2…), L = {1, 3, 4, 5}

1er Bucle paso 4: Elegimos la ciudad más cercana a 2 en L: 3. V(2) = 3. Solución: (2,3…) f = 40. L = {1,
4, 5}

2º Bucle paso 4: Elegimos la ciudad más cercana a 3 en L: 1 . V(3)= 1Solución: (2,3,1…) f = 40+23 = 63.
L = {4, 5}

3er Bucle paso 4: Elegimos la ciudad más cercana a 1 en L: 5. V(4) = 5. Solución: (2,3,1,5…)
f = 63+20=83. L ={4}

4º Bucle paso 4: Elegimos la ciudad más cercana a 5 en L: 4. V(5) = 4. Solución: (2,3,1,5,4) f =


83+35=118. L = ‡. Salimos del bucle.

Recordemos que del vértice 4 se pasaría al vértice inicial, el vértice 2. f = 118 + 53 = 171
Solución (2,3,1,5,4)

37

1.4.– Búsquedas Locales

38
¿Qué es una búsqueda local?

¾ Un proceso iterativo que empieza en una solución y la mejora realizando


modificaciones locales.
¾ Empieza con una solución inicial y busca en su vecindad una solución mejor. Si la
encuentra, reemplaza la solución por la nueva y continua el proceso, hasta que no
es capaz de mejorar la solución actual.
¾ El vecindario o conjunto de soluciones vecinas son todas las soluciones
factibles del problema que sean “vecinas” de la solución actual S. La definición de
qué es una solución vecina depende del problema.
¾ Movimiento: Se denomina de esta forma al cambio que se efectúa en la solución
para transformarla en otra. Este cambio se realiza en la codificación.

ெଵ ெଶ ெଷ ெସ
S1 S2 S3 S4 S5

39

¿Qué es una búsqueda local?

¾ Un movimiento tiene que cumplir una serie de características:


¾ Cambia muy poco la codificación.
¾ La función objetivo de un vecino tiene que poder calcularse con
muy pocas operaciones a partir de la función objetivo de la
solución inicial
¾ Siempre proporciona una solución completa.
¾ El movimiento puede proporcionar una solución infactible, pero
esas las descartamos como vecinas.
¾ Tiene que poder incorporar cualquier elemento/pieza del
problema

¾ Los vecindarios pueden ser pequeños o grandes, dependiendo del


número de vecinos de una solución.

40
¿Qué es una búsqueda local?
Hay varias formas principales de realizar esta búsqueda en el vecindario,
veremos dos:

¾Búsqueda de la mejor solución (exhaustiva): Se evalúan todas las


soluciones del vecindario. Si ninguna tiene un coste estrictamente mejor
que la solución actual, el algoritmo se detiene. En caso contrario, el algoritmo
continúa aplicándose sobre la mejor solución encontrada hasta el momento.

¾Búsqueda de una solución mejor (no exhaustiva): Se evalúan según algún


orden definido las soluciones del vecindario. Cuando se encuentre una
solución que tenga un coste mejor que la solución actual el algoritmo
para y no evalúa el resto de soluciones vecinas. Si no se encuentra una
con un coste estrictamente mejor que la solución actual, el algoritmo se
detiene. En caso contrario, el algoritmo continúa aplicándose sobre la mejor
solución encontrada hasta el momento.

41

¿Qué es una búsqueda local?


¾ La base de muchos métodos heurísticos usados en problemas de optimización.
¾ Método determinístico y sin memoria.
¾ El algoritmo se detiene cuando la solución no puede ser mejorada. La solución
encontrada se denomina óptimo local respecto al entorno definido.
¾ Principal ventaja: Encuentra soluciones muy rápidamente.
¾ Principal desventaja: queda atrapada fácilmente en esos óptimos locales.

Algoritmo de búsqueda local general exhaustivo

1. Comenzar con una solución inicial Sol. Iniciamos Mejora = 1.


2. Mientras (Mejora = 1)
2.1. Calcular todos los vecinos de Sol.
2.2. Llamamos Sol2 a la mejor solución calculada en 2.1.
2.3. Si Sol2 mejora a Sol, realizamos Sol = Sol2. Mejora = 1.
2.4. En otro caso, Mejora = 0.
3. Devolver Sol.
42
¿Qué es una búsqueda local?

Algoritmo de búsqueda local general no exhaustivo

1. Comenzar con una solución inicial Sol. Iniciamos Mejora = 1.


2. Mientras (Mejora = 1)
2.1. Mejora = 0.
2.2. Calcular cuántos vecinos tiene Sol. Llamarlo N. Iniciar i = 1.
2.3. Mientras (i < N & Mejora = 0)
2.3.1. Calcular el i-ésimo vecino de Sol.
2.3.2. Si Sol2 mejora a Sol, realizamos Sol = Sol2. Mejora = 1.
2.3.3. En otro caso, realizar i = i + 1.
3. Devolver Sol.

43

Ejemplo – Búsqueda Local para el TSP


Inserción
MOVIMIENTO: Seleccionar un nodo del tour y probar a ponerlo en cualquier otro lugar

Solución vecina de otra: uno de los nodos está en otra posición.

Es un vecindario pequeño si sólo movemos un nodo concreto, grande si vamos probando


con todos los nodos (de uno en uno siempre).

Sin embargo, la mayoría de las búsquedas locales para el TSP se basan en


movimientos donde se eliminan arcos del tour actual y se reconecta el tour
usando nuevos arcos.
¾ 2-Opt
¾ 3-Opt (vecindario grande)
¾ Se pueden ver en vídeos de YouTube.

44
Ejemplo – Búsqueda Local para el TSP
Inserción
MOVIMIENTO: Seleccionar un nodo del tour y probar a ponerlo en cualquier otro lugar

Iteración 1 1
Solución Actual: (1,2,5,3,4) C=264
Vértice (elegido al azar) para aplicar BL: 1
Vecindario del 1: (2,1,5, 3,4) C=238 2 5
(2,5,1, 3,4) C=267
(2,5,3,1,4) C=219

3 4
En una búsqueda local exhaustiva generaríamos todo el vecindario y nos quedaríamos con la mejor solución (la de C=219).
En una búsqueda no exhaustiva iríamos generando y nos quedaríamos con la primera mejor que encontráramos (la de
C=238 en este caso).

Iteración 2
Solución Actual: (2,5,3,1,4) C=219
Vértice (elegido al azar) para aplicar BL: 3
Vecindario del 3: (3,2,5,1,4) C=186 Mejora la solución por tanto actualizamos la mejor solución y seguimos.

45

Ejemplo – Búsqueda Local para el TSP


Inserción

Iteración 3
Solución Actual: (3,2,5,1,4,3) C=186
Vértice (elegido al azar) para aplicar BL: 2
Vecindario del 2: (2,3,5,1,4,2) C=194
(3,5,2,1,4,3) C=268
(3,5,1,2,4,3) C=200
Como no mejoramos pasamos a estudiar la vecindad de otro vértice.
Vértice (elegido al azar) para aplicar BL: 4
Vecindario del 4: (3,4,2,5,1,3) C=267
(3,2,4,5,1,3) C=194
(3,2,5,4,1,3) C=200
Como no mejoramos pasamos a estudiar la vecindad de otro vértice.
Vértice (elegido al azar) para aplicar BL: 5
Vecindario del 5: …………………
.

46
Comparación de métodos

Instancia Alg 1 Alg 2 f* Desv Desv


Alg1 Alg 2
1 100 95 90 11.11% 5.56%
2 115 130 110 4.55% 18.18%
3 85 98 85 0% 15.29%
4 110 99 95 15.79% 4.21%
5 115 115 110 4.55% 4.55%
Media 7.20% 9.56%

Desviación en una instancia = 100·(ଵ଴଴ିଽ଴) % = 11.11%


ଽ଴

Escogeríamos el algoritmo 1, porque se queda a menor distancia de las


mejores soluciones en media.
47

Bibliografía

¾ Jünger, M., Reinelt, G., Giovanni, R. (1995), The traveling salesman problem, Chapter 4,
Handbooks in Operations Research and Management Science, Volume 7, Pages 225–330,
doi:10.1016/S0927-0507(05)80121-5

¾ Martí, R. (2003). Procedimientos metaheurísticos en optimización combinatoria. Matematiques,


vol. 1, No 1, p. 3-62.

¾ Taha, H. A. Investigación de operaciones. Pearson, 9ª edición , 2012.

¾ Hillier, F. S., Lieberman, G.J., Investigación de operaciones, 10ª edición, 2015.

¾ Search Methologies, Introductory Tutorials in Optimization and Decision Support Techniques,


Burke & Kendall 2014, Springer

48

También podría gustarte