Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Libro Met A Heuristic As V 0
Libro Met A Heuristic As V 0
net/publication/331196434
CITATIONS READS
0 2,738
2 authors:
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Mauricio Granada-Echeverri on 10 November 2020.
OPTIMIZACIÓN COMBINATORIA
- de la teoría a la práctica -
Facultad de Ingenierías
Universidad Libre, Pereira, Colombia
Copyright © 2016
A mis hijas Salomé, Rafaella y Oriana.
Mauricio.
1 Conceptos básicos 1
1.1 Problemas del mundo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Complejidad computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Solución de problemas NP-difícil . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Qué es una metaheurística ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 óptimo local y global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7 Optimización mono y multi-objetivo . . . . . . . . . . . . . . . . . . . . . . . 12
2 Problemas y codificación 17
2.1 Ejemplo de codificación: triqui . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.1 Algoritmo I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2 Algoritmo II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3 Algoritmo III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Problemas de empaquetamiento . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Empaquetamiento o corte rectangular 2-D . . . . . . . . . . . . . . . . 23
2.2.2 Problema de la mochila . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Problemas representados como grafos . . . . . . . . . . . . . . . . . . . . . . 32
2.3.1 Problema del Agente Viajero (PAV) . . . . . . . . . . . . . . . . . . . 32
2.3.2 Coloreado de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4 Problemas de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.1 Asignación generalizada . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.2 Asignación de horarios de clase . . . . . . . . . . . . . . . . . . . . . 43
2.5 Problemas de secuenciamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.5.1 Secuenciamiento regular: flow-shop . . . . . . . . . . . . . . . . . . . 50
2.5.2 Secuenciamiento no regular: job-shop . . . . . . . . . . . . . . . . . . 52
2.6 Codificación binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.6.1 Codificación binaria directa . . . . . . . . . . . . . . . . . . . . . . . 58
2.6.2 Codificación binaria Gray . . . . . . . . . . . . . . . . . . . . . . . . 61
2.7 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.8 Algoritmos genéticos - AGs . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.8.1 Función de adaptación . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.8.2 Operadores de selección . . . . . . . . . . . . . . . . . . . . . . . . . 74
i
ii CONTENIDO
3 OCH 123
3.1 Experimento de los dos caminos . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.2 Algoritmo simple OCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
3.2.1 Problema de la ruta de mínimo costo . . . . . . . . . . . . . . . . . . . 126
3.3 Algoritmo OCH para el PAV . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
3.4 Algoritmo OCH para el MDVRPB . . . . . . . . . . . . . . . . . . . . . . . . 137
3.4.1 Algoritmo propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
v
vi ÍNDICE DE FIGURAS
ix
Prefacio
La optimización combinatorial es una de las áreas más jóvenes y activas de las matemáticas
discretas. Su considerable crecimiento se debe probablemente a su gran campo de aplicación
dado que muchos problemas de la vida real pueden ser formulados como problemas abstractos
de optimización combinatorial. Adicionalmente, existe un gran interés de la comunidad
científica debido al hecho que aún quedan numerosos interrogantes por resolver. De hecho
el propio término metaheurística no ha sido definido con precisión.
Este libro describe algunas de las técnicas de optimización combinatorial más reconocidas
en la literatura y utilizadas en aplicaciones prácticas. Además, incluye aspectos básicos de la
teoría de grafos y hace énfasis en el estudio y descripción de algunos problemas combinatoriales
típicos en diferentes campos de la ingeniería.
Dentro del contenido del texto se proponen algoritmos en pseudo-código que pueden ser
fácilmente implementados en cualquier lenguaje de programación. El objetivo es proporcionar
al estudiante un punto de apoyo que facilite la implementación práctica de las diferentes técnicas
usando problemas típicos y reales. Estos algoritmos no están concebidos para alcanzar una
alta eficiencia computacional, la idea es que sean de fácil implementación. La optimización
computacional de estos pseudo-códigos es un paso que el estudiante puede dar en un nivel
posterior, más avanzado.
En cada capítulo se presentan ejemplos aplicados a casos y problemas reales. Además,
se plantean ejercicios al final de cada capítulo, diseñados para interiorizar los conceptos más
relevantes.
En el primer capítulo se presentan algunos conceptos básicos que permiten homogenizar
el lenguaje utilizado durante todo el texto. Es de especial interés la sección dedicada a definir
algunos conceptos de la teoría de grafos, debido a que la mayoría de problemas combinatoriales
pueden ser formulados como grafos. Además, algunas importantes técnicas de optimización
basan su funcionamiento en problemas presentados de esta forma.
El capítulo dos explica algunos problemas combinatoriales que se han clasificado en
cuatro grupos: problemas de empaquetamiento, problemas formulados a través de grafos,
problemas de asignación y problemas de secuenciamiento. Aunque existen problemas que
pueden pertenecer simultáneamente a varios de estos grupos, se han clasificado asi para mostrar
diferentes características que pueden ser aprovechadas de formas diferentes, según la técnica de
optimización utilizada. En este capítulo se resalta la importancia del esquema de codificación
usado para representar un problema. La definición de este esquema es reducida a tres tipos de
presentaciones: una cadena binaria, una secuencia o permutación y una codificación real. Se
estudian, para cada problema, cuatro aspectos básicos: la definición del espacio de búsqueda,
xi
la codificación o representación del problema, definición de la población inicial y la definición
de la estructura de vecindad.
El capítulo tres presenta las características generales de los algoritmos evolutivos,
haciendo énfasis en los algoritmos genéticos. Después se utilizan estos conceptos para
introducir algunas bases sobre optimización multiobjetivo.
El capítulo cuatro aborda el método de optimización usando colonia de hormigas, el
capítulo cinco presenta el método de recocido simulado y el capítulo seis estudia el método
de búsqueda tabú. Todos los métodos son ejemplarizados con problemas típicos.
Finalmente, en el apéndice se presentan la implementación de todos los pseudocódigos
en la plataforma de desarrollo Matlab (c).
Conceptos básicos
1
En el campo de la ingeniería no es suficiente encontrar la solución de un problema, sino que
es necesario encontrar la mejor solución posible. Dicha solución se denomina como la mejor
posible porque, generalmente, se tienen restricciones que limitan el espacio de búsqueda. Por tal
razón, las soluciones obtenidas pueden estar dentro de los límites impuestos por las restricciones
y pueden ser implementadas en la práctica (soluciones factibles). Otras soluciones pueden
tener un mejor valor de la función objetivo, pero por estar fuera de los límites no pueden ser
implementadas en la práctica (soluciones infactibles).
En ingeniería se habla de optimización cuando se desean resolver problemas complejos a
través de procedimientos que encuentran y comparan soluciones hasta que no es posible mejorar
la mejor solución encontrada (incumbente) .
La complejidad generalmente está asociada al tipo de problema o al tipo de solución que
se requiere alcanzar. Entre los diferentes tipos están los problemas de programación lineal, no
lineal, problemas de gran tamaño y problemas de variables continuas y/o enteras, entre otros.
Por otro lado, algunos problemas pueden requerir soluciones exactas o aproximadas.
Existen 5 formas básicas que se pueden usar para resolver este tipo de problemas:
analíticamente, numéricamente, algorítmicamente a través de heurísticas, algorítmicamente a
través de metaheurísticas o por simulación.
Las soluciones analíticas prácticamente sólo son posibles para problemas simples. Para
problemas más complejos o de gran tamaño es necesario un mayor esfuerzo computacional
para su solución. En este tipo de problemas es posible encontrar soluciones realizando
aproximaciones sucesivas usando métodos numéricos, siempre y cuando se cumplan una serie
de condiciones matemáticas.
La solución de problemas combinatoriales a través de metaheurísticas se presenta
como una alternativa para obtener soluciones aproximadas de buena calidad, en tiempos
computacionales razonables. Dentro de las metaheurísticas existentes se pueden mencionar
1
Capítulo 1. Conceptos básicos
2
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Tabla 1.1: Relación de costos [$] y recursos [h] entre tareas y agentes
Tarea 1 Tarea 2 Tarea 3 Tarea 4
[$] [h] [$] [h] [$] [h] [$] [h]
Agente 1 1 3 2 1 5 4 6 4
Agente 2 2 2 1 3 3 4 10 2
NA = AgentesTareas = nm (1.1)
En empresas reales pequeñas, por ejemplo con 5 empleados, la cantidad de tareas llega a
ser del orden de 100 o más. En este caso la cantidad total de alternativas es del orden de 5100 =
7.88x1069 . Un computador actual de mediano desempeño tiene la capacidad de realizar 1x109
operaciones por segundo (1 GHz). Suponiendo que evaluar el costo de cada alternativa requiere
3
Capítulo 1. Conceptos básicos
solamente de una operación computacional, entonces en 1 año dicho computador puede evaluar
3.15x1019 alternativas de solución del problema propuesto. Esto quiere decir que para poder
evaluar todo la espacio de búsqueda con un computador de mediano desempeño se requieren
2.16x1050 años. Aquí vale la pena hacer notar, sólo para dar una idea de la magnitud de la cifra
anterior, que la edad estimada del universo es del orden de 20x109 años.
4
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
NP − difícil
NP − completo
NP
P
5
Capítulo 1. Conceptos básicos
6
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
7
Capítulo 1. Conceptos básicos
iterativo. La solución obvia a este problema podría ser inicializar el proceso muchas veces desde
diferentes puntos iniciales. Sin embargo, esta estrategia no produce mejoras significativas en la
práctica. Es aquí donde surgen nuevos métodos que intentan resolver esta dificultad.
Estos métodos son denominados metaheurísticas y se basan en un conjunto de conceptos
algorítmicos que tienen como finalidad guiar procesos heurísticos para evitar la convergencia
Definición de
metaheurística
prematura y explorar regiones del espacio de búsqueda que contienen soluciones de alta
calidad. Una metaheurística puede ser aplicable a un conjunto amplio de diferentes problemas,
por lo cual es considerado un método heurístico de propósito general el cual puede ser
aplicado a diferentes problemas de optimización teniendo que hacerse relativamente pocas
modificaciones o adaptaciones al algoritmo para poder ser aplicado a un problema específico.
Las metaheurísticas funcionan adecuadamente en problemas donde las mejores alternativas
de solución están concentradas en regiones. Si las mejores alternativas están uniformemente
distribuidas en el espacio de búsqueda, las técnicas de optimización combinatorial no tienen la
posibilidad de llegar al óptimo, dado que la posibilidad de resolver el problema es cercana a
cero.
Es importante aclarar que en la actualidad existen poderosos algoritmos que mezclan
técnicas de matemática exacta con técnicas metaheurísticas y son conocidos como mateurísticas
y que no hacen parte del alcance de este libro. Sin embargo, si el lector desea ampliar la
información sobre este tipo de técnicas, aplicadas a problemas de ruteo y empaquetamiento,
puede consultar el trabajo presentado en (Escobar-Falcón et al., 2016b).
Para resolver un problema combinatorial particular se deben definir 4 aspectos
fundamentales:
1. Definición del espacio de búsqueda: este aspecto está asociado al tamaño del problema
y su complejidad computacional.
min c(x)
(1.2)
s.a x ∈ X
En estos casos, esta formulación puede ser concebida como un código para otra
formulación. El requerimiento x ∈ X, por ejemplo, puede especificar condiciones lógicas
o interconexiones que serán difícil formular matemáticamente, y que es mejor dejarlas
como estipulaciones verbales (por ejemplo, en forma de reglas). En ocasiones, en estas
instancias, las variables son simplemente códigos para condiciones o asignaciones que
8
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
reciben un valor de uno (1) para codificar la asignación de un elemento u a una posición
v, y que recibe un valor de cero para indicar que no se produce tal asignación.
3. Población inicial: dado que las metaheurísticas comienzan la búsqueda del punto óptimo
a partir de alternativas existentes, entonces es necesario definir un conjunto de alternativas
iniciales, denominado población inicial. Generalmente se aplica una heurística o se
genera de forma aleatoria. El número de alternativas de esta población es dependiente
del problema y de la técnica de solución.
1.5 Grafos
Esta sección presenta brevemente algunos aspectos fundamentales de la teoría de grafos. La
importancia de estos aspectos en la aplicación de metaheurísticas radica en que muchos de los
problemas de optimización combinatorial pueden ser formulados como problemas de grafos.
Tal es el caso de problemas como el agente viajero, coloreado de grafos, enrutamiento óptimo
y problemas de asignación, entre otros.
Un grafo G = {V, A} consiste de un conjunto finito de vértices V y un conjunto finito
de arcos A. Cada arco a ∈ A tiene dos vértices en sus extremos (vi y vj ) y es denotado por
Definición de
aij = {vi , vj }, como se muestra en la figura 1.2a. grafo
Los arcos de un grafo pueden tener pesos que pueden estar asociados a parámetros como
distancias y costos, entre otros.
El vértice v de un grafo es caracterizado por su grado (gv ). El grado de un vértice v en un Grado de un
vértice y Grafo
grafo G corresponde al número de arcos que inciden en v. Un vértice es aislado si gv = 0. orientado
9
Capítulo 1. Conceptos básicos
Un grafo es conectado si para todos sus vértices existe un camino que los conecte
con los demás. Es decir, no existen vértices aislados. De lo contrario el grafo se denomina
Grafo
desconectado.
conectado Un grafo es completo cuando todos los vértices están conectados entre sí. Es decir,
cuando cada una de los vértices es adyacente a todos los otros vértices (ver figura 1.2d).
Grafo Un grafo es simétrico cuando el peso asociado a todo arco ai,j es el mismo que el
completo asociado al arco aj,i . Un grafo asimétrico se conoce con el nombre de digrafo.
Un Circuito Hamiltoniano es un camino en un grafo no dirigido que visita cada vértice
Grafo
una única vez (Geoffrey, 1983). Un ciclo Hamiltoniano (o circuito) visita cada vértice del grafo
simétrico una única vez, terminando en el vértice de inicio (ver figura 1.2c). Determinar la existencia de
tales caminos (o ciclos) en un grafo es un problema NP-Completo. Un camino o trayectoria,
sobre un grafo, es un conjunto de vértices C = {v1, v2, ..., vi, ...vk−1, vk }. Un camino es
Circuito cerrado si v1 = vk .
Hamiltoniano
10
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Un árbol es un grafo sin circuitos donde todos los vértices (excepto el vértice raiz) son
de grado 1. El número de arcos en un árbol es igual al número de vértices disminuido en 1.
Árbol
Un conjunto de vértices X es estable si sus elementos (dos a dos) son no-adyacentes
entre si. Es decir, X es estable si ningún arco tiene sus dos extremos dentro de X.
Algunos de los problemas que pueden ser formulados a través de grafos y digrafos son: Conjunto esta-
ble de vértices
• Agente viajero (NP-difícil). (corte)
11
Capítulo 1. Conceptos básicos
12
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
πd2
Minimizar f1 (d, L) = ρ L Peso (1.3)
4
64P L3
Minimizar f2 (d, L) = δ = Deflexión (1.4)
3Eπd4
donde ρ es la densidad del material y E el módulo de elasticidad de Young. Adicionalmente, se
pueden considerar dos restricciones:
σmax ≤ Sy (1.5)
δ ≤ δmax (1.6)
la primera restricción (eq. 1.5) garantiza que el máximo estrés desarrollado σmax sea menor que
el máximo estrés permitido Sy . La segunda (eq. 1.6), garantiza que la deflexión obtenida sea
menor que un límite de deflexión especificado δmax . Adicionalmente, las variables de decisión
poseen límites inferiores y superiores: dmin ≤ d ≤ dmax y Lmin ≤ L ≤ Lmax . El máximo
estrés se calcula de acuerdo a la siguiente expresión:
32P L
σmax = (1.7)
πd3
El problema anterior es un excelente ejemplo de optimización multi-objetivo debido a que la
primera función objetivo alcanza la solución óptima teniendo un valor pequeño de d y L, de
forma que el peso de la barra es minimizado. Así, si las dimensiones d y L son pequeñas, la
barra no será suficientemente rígida y la deflexión de la barra en el extremo donde se aplica la
fuerza P será grande. Por otro lado, para que la deflexión sea minimizada, la barra debe ser
más robusta y por lo tanto las dimensiones deben ser mayores haciendo que el peso sea también
mayor.
En muchos problemas de la vida real no es fácil identificar si dos o más funciones objetivo
del mismo problema están en conflicto o no. Por ejemplo, si para el problema (1.3)-(1.7) se
asumen 2000 valores aleatorios para d y L se puede obtener una adecuada impresión de cómo
es el espacio de soluciones del problema en función de las variables de estado, como se muestra
en la Figura 1.5a. Si se grafican los correspondientes puntos en el espacio de las funciones
objetivo, entonces se obtiene el espacio de soluciones mostrado en la figura 1.5b, en donde, por
estar minimizando las dos funciones objetivo, el frente de pareto de soluciones no dominadas
es el que se resalta en la Figura. Estos conceptos serán ampliados en la subsección 2.9.1 (Pág.
93). Las lineas punteadas muestran la relación entre un punto en el espacio de las variables y su
correspondiente ubicación en el espacio de las funciones objetivo.
Evidentemente, existen dos funciones objetivo en conflicto y el objetivo del proceso de
optimización sería encontrar el mejor compromiso entre las dos, de forma que se cumplan
con todas las restricciones. Es aquí donde surge la principal diferencia con respecto a la
optimización mono-objetivo, dado que en problemas con con más de un objetivo en conflicto
13
Capítulo 1. Conceptos básicos
1000 5
4.5
900
4
800
3.5
700
deflexion (mm)
longitud (mm)
3
600 2.5
500 2
1.5
400
1
300
0.5
200 0
15 20 25 30 35 40 45 50 0 5 10 15
Diametro (mm) peso (kg) 9
x 10
(a) (b)
no existe una única solución. Existe un número de soluciones óptimas donde no es posible
determinar si una solución es mejor que otra. Lo anterior genera un nuevo problema, cuál
de estas soluciones óptimas debe escogerse como solución del problema?. La respuesta a
este dilema depende de otro tipo de información asociada a las ventajas y desventaja de cada
solución referentes a aspectos técnicos, económicos y en general, a información denominada
de alto nivel. Para el caso del ejemplo mostrado en la figura 1.4, la selección de una solución
podría ser, por ejemplo, teniendo en cuenta aspectos económicos. Esto no quiere decir que la
barra más económica sea la de mejor calidad. Siempre será interesante contar con un conjunto
amplio de posibilidades que den solución a un problema en particular.
Por otra parte, si se considera analizar el problema utilizando otros dos objetivos, tales
como: el estrés, dado por la ecuación (1.7) y la deflexión dada por la ecuación (1.4), entonces
las soluciones obtenidas en el espacio de las funciones objetivo son como se muestran en la
figura 1.6.
5
4.5
3.5
deflexion (mm)
2.5
1.5
0.5
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45
Estres (MPa)
Como se observa, en este caso no existe un frente de pareto ya que existe una única
14
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
solución que minimiza tanto la deflexión como el estrés del problema de la barra. En este caso
las funciones objetivo no están en conflicto y el problema se define como mono-objetivo. Este
tipo de análisis en el espacio de las funciones objetivo permite identificar si un problema es
realmente de naturaleza mono ó multi-objetivo.
En la sección 6.3 (pág. 186) se presenta el script en matlab que permite obtener los
espacios de solución mostrados en las figuras anteriores.
15
Capítulo 1. Conceptos básicos
16
Problemas y codificación
2
Cuando se aborda un problema combinatorial, uno de los aspectos más importantes a tener
en cuenta para su solución es cómo representar las variables del problema para que puedan
Esquema de
ser interpretadas por un algoritmo computacional. Esta representación permite encontrar codificación
soluciones en algunas regiones del espacio de búsqueda y recibe el nombre de esquema de
codificación del problema. Este esquema debe permitir evaluar el valor de la función objetivo
y el cumplimiento de las restricciones y además, debe representar adecuadamente el espacio de
búsqueda.
En algunos problemas, por ejemplo, no es necesario explorar las regiones infactibles
lo cual puede representar un ahorro importante en esfuerzo computacional. Esto sucede en
problemas donde el espacio de búsqueda tiene el mismo tamaño de la región factible y por
ende todo el proceso de búsqueda puede realizarse usando alternativas factibles. Este tipo de
características del problema deben ser tenidas en cuenta al momento de implementar el esquema
de codificación del problema.
La estructura de vecindad, el esquema de aceptación de vecinos, el proceso de evaluación
de la función objetivo y el esquema de codificación son características dependientes del
problema estrechamente relacionadas entre sí que determinan el tamaño y complejidad del
espacio de búsqueda.
Tradicionalmente, la codificación de las variables es realizada a través de códigos binarios
o números reales o enteros ubicados en arreglos vectoriales o matriciales que a través de
un proceso de interpretación suministran información necesaria sobre el valor de la función
objetivo y las restricciones.
En este capitulo se describen algunos problemas combinatoriales de importancia en
el estudio de metaheurísticas que serán citados durante todo el texto. Una características
importante de las metaheurísticas es que los problemas no requieren ser descritos a través de un
modelo matemático. Por tal razón algunos problemas serán formulados a través de su modelo
17
Capítulo 2. Problemas y codificación
Esta explicación del juego está lejos de ser precisa y clara, ya que debería empezarse por
definir qué es una fila, una columna y una diagonal. Sin embargo, “el conocimiento”, “poder
de abstracción” y “sentido común” permiten que muchos lectores de esta explicación puedan
comprender lo suficiente para empezar el juego. Explicar este juego a una máquina no resulta
tan sencillo y es necesario diseñar una estrategia o algoritmo que así lo permita.
2.1.1 Algoritmo I
La codificación del juego usada para fines de interpretación computacional hace parte del
algoritmo de solución, así como la definición de matrices, vectores y variables. Por tal razón se
definen los siguientes aspectos:
Representación del Tablero: El tablero se representa por un vector de nueve
componentes, donde cada componente representa la posición del tablero, numeradas del 1
al 9 como se muestra en la figura 2.1. Cada componente del vector contiene un 0 si la
correspondiente casilla en el tablero está vacía, un 1 si contiene una “×” o un 2 si contiene un
“◦”. Es decir, una jugada actual sobre el tablero se representa como se muestra en la figura 2.1.
18
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
2.1.2 Algoritmo II
Este algoritmo utiliza una codificación diferente del tablero. Cada componente del vector
contiene un 2 si la correspondiente casilla en el tablero está vacía, un 3 si contiene una × ó
un 5 si contiene un ◦, como se muestra en la figura 2.2.
La principal ventaja de esta codificación es que permite evaluar una posible victoria de un
jugador. Nótese que × = 3 en el vector. Por lo tanto una línea de × suma 9. De igual manera,
una línea de ◦ suma 15. En la codificación anterior, no era posible tener valores asociados a un
posible triunfo de cada jugador por tener elementos representados con los números 0 y 1. En
otras palabras, para la codificación anterior existen problemas con las operaciones de adición y
multiplicación por tener en la codificación elementos iguales a 0 y 1.
19
Capítulo 2. Problemas y codificación
Adicionalmente, el algoritmo incorpora una estrategia particular para cada jugada. Lo que
hace necesario la utilización de una variable que almacene el turno actual usando un entero que
indica qué movimiento va a ser realizado. Turno=1 indica el primer movimiento, Turno=9 el
último. Además se incorporan estrategias de moverse a una casilla específica para defenderse
de un ataque, evaluar un posible triunfo y atacar si es posible. Así el algoritmo requiere la
definición de tres funciones:
Paso 1: Se define que “×” corresponde a una jugada impar y “◦” a una par.
Paso 2: Turno=1 (“×”). mover(1) (esquina superior izquierda)
Paso 3: Turno=2 (“◦”). Si vector5 = 2 (vacío), entonces mover(5), sino mover(1).
Paso 4: Turno=3 (“×”). Si vector9 = 2 (vacío), entonces mover(9), sino mover(3).
Paso 5: Turno=4 (“◦”). Si PosibleTriunfo(×)6=0, entonces
mover(PosibleTriunfo(×)), sino mover(Atacar)
Paso 6: Turno=5 (“×”). Si PosibleTriunfo(×)6=0, entonces
mover(PosibleTriunfo(×)) y !VICTORIA!! de ×. Sino, si PosibleTriunfo(◦)6=0,
entonces mover(PosibleTriunfo(◦)), sino si vector7 = 2 (vacío), entonces
mover(7), sino mover(3).
Paso 7: Turno=6 (“◦”). Si PosibleTriunfo(◦)6=0, entonces
mover(PosibleTriunfo(◦)) y !VICTORIA!! de ◦, sino si PosibleTriunfo(×)6=0,
entonces mover(PosibleTriunfo(×)), sino mover(Atacar).
20
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
21
Capítulo 2. Problemas y codificación
pretende verificar una posible victoria, entonces se verifican, en el vector de solución, todas las
posibles parejas conformadas por esta casilla de referencia y las casillas del tablero asignadas
al jugador que posee el turno actual. Si la diferencia entre 15 y la suma de la pareja de casillas
seleccionada es negativa o mayor de 9 entonces la pareja de casillas no son vecinas y pueden ser
ignoradas. En caso contrario, la jugada sobre la casilla vacía conducirá al triunfo. Como ningún
jugador puede tener más de 4 casilla a la vez, el espacio de busqueda es mucho más reducido
que el esquema anterior.
Si se quisiera verificar si un movimiento en la posición 9 del vector mostrado en la
figura 2.4 es un posible triunfo para el jugador ◦, entonces es necesario verificar la suma de
las posiciones de las parejas posibles. Una pareja es 9 + 4 = 13, lo cual quiere decir que el
jugador actual gana la partida haciendo un movimiento en la casilla 9 del cuadro mágico, debido
a que 15 − 13 = 2 y 0 ≤ 2 ≤ 9. Lo mismo se puede concluir si se verifica la otra posible pareja
9 + 2 = 11. Las posibles parejas son conformadas por la posición 9 y todas las posiciones del
vector que contengan un ◦.
La idea de este ejemplo es mostrar la importancia de un adecuado esquema de
codificación. Además, es importante notar que la función objetivo del problema y el esquema
de codificación usado no pueden ser procesos independientes.
22
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
A continuación se definen los 4 aspectos básicos (ver sección 1.4) que se deben tener en
cuenta en la solución del problema de empaquetamiento bidimensional:
23
Capítulo 2. Problemas y codificación
1. Definición del espacio de búsqueda: El tamaño del espacio de búsqueda del problema
de empaquetamiento ortogonal es infinito, debido a que cada movimiento factible de una
placa dentro de un patrón de empaquetamiento crea un nuevo patrón de empaquetamiento.
Para reducir el espacio de búsqueda es necesario incorporar una estrategia que permita
asociar una alternativa de solución con la evaluación de la función objetivo y con la
conservación de la factibilidad. Como se verá más adelante esta estrategia se conoce
como abajo-izquierda y reduce significativamente el espacio de búsqueda.
El PCRB es una generalización natural del problema de la mochila. En consecuencia,
si todas las placas tienen la misma altura, los dos problemas coinciden exactamente
(ver sección 2.2.2). Por otro lado, si todas las placas tienen la misma anchura, el
problema corresponde a uno de secuenciamiento regular ó flowshop (sección 2.5.1).
Cada uno de estos problemas pertenece a la familia de los problemas NP-completos
(Garey and Johnson, 1979).
cadena de
secuencia o 2. Codificación o representación del problema: Una estrategia de codificación de una
permuta- solución del problema podría ser basada en coordenadas x y y que definan la posición
ción exacta de cada placa dentro de la paleta. Esta es una codificación simple de entender pero
de difícil implementación y que requiere mayor esfuerzo computacional. La verificación
de traslapes y la definición de una alternativa vecina es una tarea difícil y el manejo de
alternativas infactibles es abundante. Para el proceso de optimización, es una codificación
que se puede considerar ineficiente.
Una mejor estrategia es conocida como Abajo-Izquierda propuesta en Jakobs (1996)
(BL,bottom-left). Una alternativa de solución está compuesta por un vector de tamaño
n cuyos valores corresponden al índice i de la placa que será ubicada.
La posición k de cada elemento en el vector corresponde al orden en que será ubicada
cada placa, como se muestra en la figura 2.6
Así por ejemplo, si se tienen 4 tipos de placas a ser ubicadas, entonces, la alternativa de
solución [2, 4, 3, 1] significa que primero se ubicará dentro de la paleta la placa tipo 2,
después la tipo 4, después la tipo 3 y finalmente la placa tipo 1.
Es por esta razón que generalmente este tipo de codificación recibe el nombre de
secuencia o permutación. Surge entonces algunas preguntas: cómo se ubican las placas a
partir de un vector como el anterior de forma que no existan traslapes entre placas?. Esta
24
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
El algoritmo BL tiene los siguientes pasos básicos para ubicar en la paleta una placa i:
25
Capítulo 2. Problemas y codificación
En este tipo de codificación una solución infactible sería aquella en la que la altura total
de las placas ubicadas es mayor que la altura h de la paleta (ver figura 2.5). Es decir, se
tiene una alternativa infactible cuando algunas placas se salen de la paleta. La solución a
este problema consiste en considerar sólo las posiciones del vector que no producen dicha
infactibilidad. Por lo tanto, para dar respuesta a las inquietudes formuladas anteriormente,
este tipo de codificación es mucho más eficiente ya que sólo produce soluciones factibles
y no se producen traslapes de una forma natural. Es decir, no se requieren procesos de
verificación de traslapes entre placas.
El algoritmo 2.1 muestra el pseudocódigo de una implementación sencilla de la estrategia
BL. Este algoritmo utiliza dos funciones adicionales de verificación: la primera es
denominada VerIz y tiene como objetivo verificar colisiones por el costado izquierdo de
la placa con posiciones de la paleta que ya han sido ocupadas. Las posiciones ocupadas
de la paleta se tienen en cuenta en el arreglo MatrizP aleta. En esta matriz las posiciones
que almacenan un 0 están vacías y las que tienen un 1 están llenas. La segunda función
es denominada VerAb y es la encargada de verificar colisiones por el costado inferior de
la placa. Los algoritmos 2.2 y 2.3 muestran cada una de estas funciones.
3. Población inicial: Puede ser generada de forma aleatoria. Es decir, se escoge una placa
aleatoria y se define su posición en el vector también de forma aleatoria. Sin embargo es
posible aplicar estrategias determinísticas basadas en ordenamientos previos que reducen
significativamente el esfuerzo combinatorial como se muestra en (Garey and Johnson,
1979).
26
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
27
Capítulo 2. Problemas y codificación
1 MovIz ← 0
2 if PosX = 0 then
3 MovIz ← 1
4 PosX ← 1
5 break
6 end
7 else
8 for i ← PosY-AltoPla
ai +1 to PosY do
9 if (MatrizPaleta (i,PosX −1) 6= 0) then
10 PosX ← (PosX)
11 MovIz ← 1
12 break
13 end
14 end
15 if MovIz = 0 then
16 PosX ← (PosX −1)
17 end
18 end
Algorithm 2.2: Algoritmo de la función VerIz
28
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
1 PosY ← PosY +1
2 MovAb ← 0
6 break
7 end
8 for j ← PosX to PosX +An
hoPla
ai −1 do
9 if (MatrizPaleta (PosY,j) 6= 0) then
10 PosY ← (PosY −1)
11 MovAb ← 1
12 break
13 end
14 end
15 if MovAb = 1 then
16 break
17 end
18 else
19 [MovAb, PosY ] ← VerAb(PosX,PosY,MatrizPaleta,An
hoPla
ai )
20 end
Algorithm 2.3: Algoritmo de la función VerAb
29
Capítulo 2. Problemas y codificación
amplia, permite que muchas estructuras de vecindad puedan ser aplicadas, siendo unas
más eficientes que otras. Para este caso en particular una estrategia estaría conformada
por los siguientes pasos:
P Más formalmente,
P el objetivo es encontrar un subconjunto S ⊆ {1, 2, . . . , n} tal que
v
j∈S j ≤ V y c
j∈S j es máxima.
1. Definición del espacio de búsqueda: Considerando que un artículo puede tener sólo dos
estados (dentro o fuera de la mochila), entonces para n artículos una búsqueda exhaustiva
arroja 2n posibles alternativas de solución. Debido a estos dos posible estados de un
30
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Pn
max j=1 cj xj (2.1)
s.a.
Pn
j=1 vj xj ≤V (2.2)
xj = {0, 1} (2.3)
j = 1, . . . , n (2.4)
3. Población inicial: Puede ser generada de forma aleatoria o utilizando una heurística
constructiva. Para problemas con pocos artículos se puede utilizar una estrategia voraz o
golosa para encontrar una solución de buena calidad y generalmente la alternativa óptima.
En problemas de gran tamaño esta misma estrategia puede ser usada para la construcción
de una población con mejores características que la obtenida de forma aleatoria. A partir
de este punto una metaheurística puede terminar el proceso de optimización.
Una heurística voraz consiste, por ejemplo, en introducir a la mochila los artículos que
tengan la mayor relación costo-volumen (cj /vj ). Es decir que se prefieren los artículos
31
Capítulo 2. Problemas y codificación
de mayor costo y menor volumen. Para garantizar la factibilidad, los artículos son
introducidos a la mochila mientras no se supere el volumen máximo de la misma.
32
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
1. Definición del espacio de búsqueda: para un grafo conectado de n vertices (n > 2),
las posibles alternativas de solución que pueden ser obtenidas son (n − 1)!/2. Existen
algoritmos que permiten reducir el tamaño del espacio de búsqueda, tales como Separar
y Sondar (B&B, Branch and Bound), los cuales generan un circuito a la vez y utilizan la
mejor solución encontrada para sondar o limitar la exploración de un conjunto de futuras
alternativas. Empíricamente se ha establecido que esta estrategia reduce el espacio de
búsqueda a 1.26n . Muchas versiones del algoritmo B&B han sido propuestas y la mayoría
obtienen soluciones en tiempos aceptables para problemas de alrededor de 60 vértices o
ciudades.
Otra forma de reducir el espacio de búsqueda es encontrando casos especiales del
problema. Es decir, dividir el problema en subproblemas de menor complejidad
que pueden ser abordados a través de heurísticas que proporcionen soluciones
exactas(Dantzig et al., 1954). Esta técnica de reducción del espacio de búsqueda se
amplia más adelante, en el aspecto correspondiente a la definición de la estructura de
vecindad (ver estrategia k-opt).
2. Codificación o representación del problema: como se mencionó en la sección 1.4, la
codificación del problema y la definición del espacio de búsqueda son aspectos diferentes
a la formulación matemática del mismo. Sin embargo, es una práctica común presentar,
cuando es posible, el modelo matemático utilizando la codificación adoptada.
Generalmente, los datos del problema son dados como coordenadas (x, y) que
representan la ubicación de las ciudades en un plano bidimencional como se muestra
en la figura 2.10a.
Para efectos de presentar un modelo más compacto, el conjunto de coordenadas puede
ser convertido en una matriz simétrica D de dimensiones n × n, donde cada elemento
di,j ∈ D representa la distancia Euclidiana entre las ciudades i y j como se muestra en la
figura 2.10b.
33
Capítulo 2. Problemas y codificación
34
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
3. Población inicial: Puede ser generada de forma aleatoria. Teniéndose en cuenta que el
circuito generado debe ser Hamiltoniano. Es decir, no se permite visitar una ciudad más
de una vez y la alternativa obtenida debe incluir todas las ciudades.
Una forma más eficiente es utilizar una heurística constructiva utilizando criterios
probabilísticos que den preferencia a los arcos con las distancias más cortas.
35
Capítulo 2. Problemas y codificación
Heurísticas
2-opt y k-opt 4. Definición de la estructura de vecindad : La definición de la estructura de vecindad
es un aspecto bastante amplio en la descripción de un problema particular. Por esta
razón un gran número de propuestas pueden tenerse en cuenta a la hora de definir un
vecino del problema. Sin embargo, para el PAV existen unas estrategias, conocidas como
estrategias de mejoramiento iterativo, que han mostrado ser bastante eficientes y que
pueden aplicarse de forma general a problemas que se pueden representar a través de
grafos (Lin and Kernighan, 1973).
2-opt: Esta técnica es una heurística propuesta por Lin and Kernighan
(1973) y es un caso especial de la técnica k-opt. Consiste en remover
aleatoriamente dos arcos del grafo, que hacen parte del circuito actual, de
manera que éste queda dividido en dos regiones. Posteriormente se incorporan
dos nuevos arcos diferentes que reconecten las dos regiones, obteniéndose así
un vecino, como se muestra en la figura 2.11.
36
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
2 Contador ← 0
5 if Aleatorio1 > Aleatorio2 then /* Se garantiza que el primer aleatorio sea menor
que el segundo */
6 Temp ← Aleatorio1
7 Aleatorio1 ← Aleatorio2
8 Aleatorio2 ← Temp
9 end
10 for i ← Aleatorio1 to Aleatorio2 do
11 Ve
ino (i) ← Cir
uito (Aleatorio2 -Contador)
12 Contador ← Contador +1
13 end
Algorithm 2.5: Función para obtener un vecino usando 2-opt
37
Capítulo 2. Problemas y codificación
En la literatura especializada existe una gran cantidad de casos de prueba que son
utilizados para evaluar el desempeño de diferentes algoritmos que se proponen constantemente.
Una gran colección de estos casos y las mejores soluciones encontradas hasta el momento
pueden ser encontrados en la dirección de internet: http://www.iwr.uni-heidelberg.de/
groups/
omopt/software/TSPLIB95/tsp/.
Una modificación al PAV es el problema de enrutamiento (ruteo) óptimo de vehículos,
el cual se describe como sigue: sea G = {V, A} un digrafo donde V es el conjunto de vértices
Problema de
enrutamiento y A el conjunto de arcos que conectan los vértices. Uno de los vértices representa el deposito
óptimo de de donde parte una flota de m vehículos. Cada vehículo tiene una capacidad de transporte qv . A
vehículos cada vértice está asociada una demanda qi y un tiempo de descarga ti . A cada arco está asociado
un costo cij y un tiempo de transporte tij . El problema consiste en encontrar un conjunto de
rutas que cumpla las siguientes condiciones:
La versión más simple del problema de ruteo óptimo de vehículos es conocida como
problema simple de transporte, el cual se define de la siguiente manera:
Problema de
transporte
Considérese un conjunto I de productores y un conjunto J de consumidores.
Conocida (1) la demanda bj de cada consumidor j ∈ J, (2) la producción máxima
ai de cada productor i ∈ I, y (3) el costo por tonelada transportada de cada producto
cij desde el productor i hasta el consumidor j , entonces el problema del transporte
consiste en determinar la cantidad de producto a transportar de forma que el costo
total de transporte sea mínimo.
38
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
j=1
d11=2 km b1=100
i=1
a1=300
j=2
b2=200
i=2 j=3
a1=500 b3=300
39
Capítulo 2. Problemas y codificación
1. Definición del espacio de búsqueda : haciendo uso del teorema de los 4 colores, en un
grafo conectado no dirigido de n vértices, las posibles alternativas de solución que pueden
ser obtenidas son 4n .
La factibilidad de este problema puede ser manejada a través de la minimización del
número de vertices adyacentes del mismo color. Es decir, las alternativas que posean un
mayor número de vértices adyacentes (vértices conectados por un arco) con el mismo
color deben ser menos atractivas que aquellas que no presentan esta situación. Además el
grafo debe ser planar.
2. Codificación o representación del problema : dado que sólo son necesarios 4 colores,
la codificación utilizada para una alternativa factible de solución es un vector V =
(v1 , v2 , ...vj , ..., vn ), donde n es el número total de vértices del grafo G. El elemento
vj del vector es un número entero ∈ {0, 1, 2, 3} y representa el color asignado al j-ésimo
vértice.
Por ejemplo, si se considera un mapa de 6 ciudades y una alternativa de solución V =
(3, 1, 0, 1, 0, 2) significa que el color 3 se asigna al vértice (o ciudad) 1, el color 1 al
vértice 2 y así sucesivamente.
Otro parámetro importante que se debe conocer es cómo están interconectadas las
ciudades (conectividad del grafo). Para esto se define una matriz simétrica de
conectividad A de dimensiones n × n, donde cada elemento ai,j ∈ {0, 1}. Si la ciudad Ci
es limítrofe con la ciudad Cj entonces ai,j = 1, de lo contrario ai,j = 0. Para un mapa de
6 ciudades la matriz de conectividad se muestra en la figura 2.14a. El grafo equivalente,
usando la matriz de conectividad y la alternativa de solución V = (3, 1, 0, 1, 0, 2) es
mostrado en la figura 2.14b.
Para evaluar la función objetivo se deben identificar todos las ciudades vecinas de cada
ciudad, para lo cual se utiliza la matriz A. Así por ejemplo, las ciudades vecinas de
la ciudad 1 (CV1 ), son CV1 = {2, 3, 6}, para la ciudad 2, CV2 = {1, 3, 4, 5, 6}, y así
sucesivamente para todos los CVj con j ∈ {1, 2, ...n}. Como la estructura del grafo no
cambia durante todo el proceso de optimización, este procedimiento se realiza sólo una
vez.
La función objetivo consiste en minimizar los vértices adyacentes con el mismo color,
para lo cual, según el teorema de los 4 colores, siempre es posible alcanzar una función
objetivo igual a cero en grafos planares.
40
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
C1 C2 C3 C4 C5 C6
C1 0 1 1 0 0 1
C2 1 0 1 1 1 1
A = C3 1 1 0 1 0 0
C4 0 1 1 0 1 0
C5 0 1 0 1 0 1
C6 1 1 0 0 1 0
(a) Matriz de conectividad (b) Grafo equivalente
n
X
min f (v) = aij (2.8)
j=1
i∈CVj
vj =vi
Una variante del problema incorpora costos a cada color, haciendo que la función objetivo
busque el menor número de colores y el uso de los más económicos.
41
Capítulo 2. Problemas y codificación
n X
X m
Cij πij (2.9)
i=1 j=1
Donde πi,j ∈ {0, 1} es el arco que conecta el agente i con la tarea j. El conjunto de arcos
πi,j , para i = 1, 2 . . . n y j = 1, 2 . . . m, conforman una matriz que representa una alternativa
de solución de dimensiones m × n. Por ejemplo, si la tarea k es asignada al agente l, entonces
el elemento πk,l = 1, mientras que los demás agentes disponibles para realizar esa misma tarea
tomarán un valor igual a cero (πk,i = 0 donde i 6= l). La representación de una alternativa
de solución a través de una matriz, sólo será usada a fin de formular el modelo matemático
como una simple operación entre matrices y vectores. Sin embargo, a la hora de implementar
un algoritmo que permita calcular el valor de la función objetivo, la codificación usada será a
través de un vector como el mostrado en la figura 2.15, el cual contiene la misma información
que la matriz mencionada anteriormente.
Para asegurar que una tarea sea asignada sólo una vez a un único agente, se incorporan
las siguientes restricciones:
n
X
πij = 1 (2.10)
i=1
π ∈ {0, 1} (2.11)
Los agentes poseen recursos limitados para la realización de las tareas, algunos de los
recursos más comunes son: tiempo, materia prima, capital e infraestructura. Por lo tanto, se
define una matriz A de consumo de recursos, donde el elemento Ai,j representa los recursos
consumidos por el agente i al realizar la tarea j, y un vector b, donde el elemento bi representa
la capacidad total de recursos del agente i. De esta manera, el modelo matemático debe incluir
una restricción adicional que represente dicha limitación en consumo de recursos.
n
X
Aij πij ≤ bi i = 1, 2 . . . m (2.12)
j=1
Así, la región factible está enmarcada dentro de las restricciones (2.10), (2.11) y
(2.12). Por tener restricciones, el calculo de la función objetivo puede involucrar factores de
42
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
penalización. De esta manera, una alternativa infactible es menos atractiva que una factible.
El modelo matemático modificado con factores de penalización consiste en incorporar la
restricción (2.12) a la función objetivo:
n X
m n
!
X X X
Cij πij + β λi
Aij πij − bi (2.13)
i=1 j=1 j=1
o
i∈ restricciones
n
violadas | {z }
antidad de re
ursos ex
edidos
m
P
Cij πij
j=1
λi = (2.14)
bi
Es importante notar que todos los problemas estudiados hasta este punto tienen una
codificación idéntica. Lo anterior es evidente cuando se comparan las figuras 2.15, 2.12, 2.9,
2.6 y 2.1. La codificación de problemas a través de un vector es una práctica general en
la optimización combinatorial, debido a que presenta características favorables a la hora de
aplicar diferentes técnicas de optimización, como se verá más adelante. Lo importante aquí,
es tener presente que todo problema, además de su vector de codificación, tiene asociado un
proceso de interpretación de ese vector. De esta manera, toda metaheurística tiene la tarea
de relacionar las modificaciones realizadas en el vector a través de la estructura de vecindad
con las variaciones que esto produce en la función objetivo. En otras palabras, se establecen
indicadores de sensibilidad que permiten al algoritmo de optimización identificar alteraciones
favorables (vecinos de buena calidad) de la alternativa de solución actual.
43
Capítulo 2. Problemas y codificación
• La capacidad del salón debe ser suficiente para atender todos los estudiantes programados
y debe satisfacer todos los requerimientos de la materia. Algunas materias requieren
salones especiales como laboratorios y aquellas asistidas por computador, entre otras.
• Sólo una asignatura es impartida en cada salón en cualquier bloque de tiempo (cruce de
salones).
Adicionalmente, se debe procurar que:
• Un estudiante no tenga clase en el último bloque del día.
44
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
nE
X
Evento_Saloni,s 6= 0 (2.15)
i=1
Debe existir también una matriz “Evento_Estudiante” que relaciona cada uno de los
estudiantes con cada uno de los eventos. Un elemento Evento_Estudiante(Ei ,Esk ) de esta
matriz es 1 cuando el estudiante Esk tiene matriculado el evento Ei . En cualquiera de los otros
casos, el elemento es 0.
Para que el estudiante k exista se debe cumplir que
nE
X
Evento_Estudiantei,k 6= 0 (2.16)
i=1
45
Capítulo 2. Problemas y codificación
nEs
X
Evento_Estudiantei,k 6= 0 (2.17)
k=1
La figura 2.16 ilustra una propuesta de codificación para representar una alternativa de
solución del problema. Esta codificación consiste en construir nE vectores fila de 45 posiciones
Codificación
del
cada uno, correspondientes a cada bloque de tiempo de la semana. Cada uno de estos vectores
PPOHC está asociado a un evento en particular y los valores existentes en cada posición corresponden a
los salones asignados.
Bloque Bloque Bloque ⋯ Bloque
1 2 3 45
Evento1 3 0 0 ⋯ 0
Evento2 0 1 0 ⋯ ⋮
⋮ ⋮ ⋮ ⋮ ⋱ 0
EventonE 1 0 0 ⋯ 0
El modelo matemático, penalizando la función objetivo con todas las restricciones (duras
y blandas), es presentado formalmente en (2.18), de la siguiente forma:
46
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Donde EsC es el número total de cruces de horario que presentan los estudiantes en sus
materias (estudiantes que deben atender más de un evento al mismo tiempo).
nEs
45 X nE
! !
X X
EsC = Num_Cruces_Est (t, k, i) −1 (2.19)
t=1 k=1 i=1
nS
45 X
X
SC = Num_Cruces_Salones(t, j) (2.21)
t=1 j=1
nE
P
Num_Cruces_Salones(t, j) = (Contador (t, j, i)) − 1, si y sólo si
i=1
nE
P
(Contador (t, j, i)) ≥ 1. En cualquiera de los otros casos Num_Cruces_Salones(t, j) =
i=1
0. El elemento Contador (t, j, i) = 1 si Sj = Alternativai,t , sino Contador (t, j, i) = 0.
47
Capítulo 2. Problemas y codificación
dias=5
X X nE
nEs X
EsU B = Est_Ultimo_Bloque (t, k, i) (2.22)
t=1 k=1 i=1
nEs
44 X
X
EsEC == Eventos_Consecutivos (t, k) (2.23)
t=1 k=1
nE
X
Evento_Estudiantei,k × Alternativai,t ≥ 1 (2.24)
i=1
nE
X
Evento_Estudiantei,k × Alternativai,t+1 ≥ 1 (2.25)
i=1
EsU E es el número total de estudiantes que tienen programado, en algún día de la semana,
sólo un evento.
nE X
X nEs
EsU E == Evento_Unico_Dia (i, k) (2.26)
i=1 k=1
dia_fin
X
Suma_Eventos (i, k, t) = 1 (2.27)
t=dia_inicio
48
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
1. Proyecto.
5. Proceso continuo.
49
Capítulo 2. Problemas y codificación
50
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
T1 T2 T3 T4
π= 4 3 1 2
M1 4 3 5 7
P= M2 7 7 5 9 r = 25 40 20 21
M3 3 3 4 1
T2 M1 T1 M2 T3 M3 T4
51
Capítulo 2. Problemas y codificación
7 12 16 19 21 25 28 35 Cmax = 38
52
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
53
Capítulo 2. Problemas y codificación
duración determinada y conocida. El objetivo es encontrar una secuencia de tareas cuyo tiempo
total de procesamiento Cmax , sea mínimo.
En comparación con la definición del problema de flow-shop, la diferencia radica en
la existencia de una secuencia predefinida de máquinas que debe seguir cada tarea. Esta
secuencia también define qué máquinas procesan una tarea, es decir, no todas las máquinas
tienen que procesar una tarea en particular. Así, el problema puede ser visto como uno con dos
restricciones: (i) la secuencia de maquinas para cada tarea y (ii) cada máquina puede procesar
sólo una tarea a la vez.
Para un problema Q con m máquinas y n tareas, codificado a través de una secuencia
o permutación, existen m 1 n! posibles alternativas de solución. En Choi and Yang (2003)
se presenta una técnica de descomposición que permite reducir el espacio de búsqueda del
problema. La técnica consiste en dividir el problema en dos tipos de subproblema: (i) el
primero es uno de asignación, de una sóla máquina, generado para cada máquina. (ii) El
segundo consiste en obtener un espacio de búsqueda de máquinas ordenadas usando una técnica
exacta.
De manera similar al problema de secuenciamiento regular, también es común incorporar
restricciones en los tiempos de procesamiento de cada tarea, dados en un vector r de tamaño n.
Ejemplo 2.2.
Encontrar el tiempo total de procesamiento Cmax involucrado en un problema de job-shop
con 4 tareas y 3 máquinas. Los tiempos de procesamiento P , la secuencia de máquinas de
cada tarea S y la secuencia de tareas π que se debe evaluar, son presentados en la figura 2.21.
Verificar si existe alguna violación en los tiempos máximos de entrega definidos en r.
s1 s2 s3 s4
4 3 5 7 1 3 3 2
P= 7 7 2 9 S= 3 1 1 1
3 3 3 5 2 2 2 3
π= 4 3 1 2 r = 25 40 20 21
54
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
T1
M1
T3 T2
T4 M2 M3
T3 T2 T1 T4
M1 T3 T4 T1 T2
M2 T4 T3 T1 T2
M3 T3 T2 T4 T1
9 16 24 31 38
Figura 2.23: Diagrama de bloques de tiempo (diagrama de Gantt) del ejemplo 2.2.
55
Capítulo 2. Problemas y codificación
tarea, y E es el conjunto de arcos disyuntivos que conectan las tareas realizadas por la misma
máquina. Estos arcos contienen información de la secuencia de máquinas asignada a cada tarea.
Por tal razón sirven para evaluar información anterior y posterior (disyuntiva y conjuntiva) de
las operaciones realizadas en cada máquina.
En la figura 2.24 se muestra un grafo que representa la alternativa de solución π =
{4, 3, 1, 2} para el problema de 3 máquinas y 4 tareas descrito en el ejemplo 2.2. Nótese que el
grafo posee 12 vértices, cada uno de los cuales representa una operación realizada a una tarea
en un máquina. Los nodos i y f son dos nodos especiales que representan el inicio (i) y el
fin (f ) de la alternativa de solución, respectivamente. Los arcos conjuntivos, representados por
flechas, muestran la secuencia de máquinas que sufre cada tarea. Por ejemplo, los arcos (4, 5)
y (5, 6) relacionan las máquinas {M3 , M1 , M2 } ∈ S3 , las cuale procesan la tarea 3.
Los arcos disyuntivos, representados por líneas punteadas, muestran las tareas que deben
ser realizadas en cada máquina. Por ejemplo, los arcos (1, 6), (6, 9), (9, 12) y (12, 1) relacionan
las tareas que deben ser realizadas en la máquina 2.
M2 M1 M3
π = {s4 , s3 , s1 , s2 } 1 2 3
S4
S3 4 5 6
i f
S1
7 8 9
S2
10 11 12
56
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
En función de los intervalos, la primera fila de la matriz C sería: C1,2 = [9, 16] y C1,3 =
[16, 21]. En este punto se puede construir un diagrama parcial de bloques de tiempo como
el que se muestra en la figura 2.25.
M1 T4
M2 T4
M3 T4
9 16 21
57
Capítulo 2. Problemas y codificación
M1 T3 T4
M2 T4 T3
M3 T3 T4
9 16 21
πd2
min f (d, h) = c + πdh (2.35)
2
πd2 h
s.a. g1 (d, h) ≡ ≥ Vmin (2.36)
4
dmin ≤ d ≤ dmax
hmin ≤ h ≤ hmax
De esta manera, surge una pregunta importante: ¿cómo representar una alternativa de
solución de este problema usando un arreglo vectorial, similar a los planteados en otros
problemas?. La respuesta es la codificación binaria. Supóngase que el diámetro d, que es una
variable continúa, varía entre 8 y 13 centímetros. Es decir, el espacio de búsqueda d ∈ [8, 13].
Así, lo primero que se debe definir es cuántas secciones discretas ns tendrá este espacio de
búsqueda y qué tamaño tendrá cada sección.
ns = 2#bits (2.37)
dmax − dmin
∆= (2.38)
ns
En esta representación el límite inferior y superior de la variable de decisión d es 0 y 31,
respectivamente. Es decir, la alternativa [0, 0, 0, 0, 0] equivale a 8 cm y es el límite inferior y
la [1, 1, 1, 1, 1] equivale a 13 cm y es el límite superior del espacio de búsqueda (figura 2.29).
Con 5 bits, para representar una variable de decisión, existen exactamente 32 alternativas de
solución diferentes equivalentes a números enteros pertenecientes al rango [0, 31].
Si se tiene un número decimal, correspondiente a un individuo de la población, y se
desea obtener su representación binaria, dentro del espacio de búsqueda, se utiliza la siguiente
expresión:
59
Capítulo 2. Problemas y codificación
Dado un nú - Número − dmin
mero decimal Binario = Bin (2.39)
∆
pasar a un
binario Si se tiene un vector binario, correspondiente a un individuo de la población, y se desea
obtener su equivalente decimal, dentro del espacio de búsqueda, se utiliza la expresión:
1 0 0 0 0 1 8.3226
2 0 0 0 1 1 8.4839
⋮ ⋮
31 1 1 1 1 1 13
Ejemplo 2.3.
a. Encontrar la cadena binaria, usando 5 bits, que representa un diámetro d = 11.2260 cm.
d ∈ [8, 13] cm.
R/:
Usando ∆ = 0.1613 (ver fig. 2.28):
11.2260 − 8
Binario = Bin = Bin(20) = [1, 0, 1, 0, 0] (2.41)
0.1613
Las expresiones 2.39 y 2.40 son también conocidas como funciones de codificación y
decodificación, respectivamente.
60
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Alternativa = 1 1 1 0 0 1 1 1 0 0
d h
Sin embargo, la codificación binaria presenta una dificultad relacionada con la definición
de la estructura de vecindad. A lo largo de este texto se ha mencionado que una alternativa
vecina se obtiene al aplicar pequeñas perturbaciones a la alternativa original. En otra palabras,
la diferencia entre la alternativa original y el vecino debe ser pequeña.
Cómo medir entonces qué tan diferente es la alternativa vecina de la original?. Existen
varias formas de realizar esta tarea, entre las cuales se destaca la distancia de Hamming. Esta
Distancia de
distancia cuantifica el número de elementos diferentes entre dos vectores. Es decir, mide el Hamming
número de substituciones que debe sufrir un vector para convertirse en el otro. Así por ejemplo,
la distancia de Hamming entre [1, 0, 1, 1, 1, 0, 1] y [1, 0, 0, 1, 0, 0, 1] es 2, debido a que sólo los
elementos de las posiciones 3 y 5 son diferentes.
61
Capítulo 2. Problemas y codificación
Cuando se tiene un problema donde, por ejemplo, el espacio de solución está dado
por números enteros pertenecientes al intervalo [0,512], es posible realizar una codificación
con 10 bits. Es claro que en el espacio de la función objetivo puede considerarse que una
alternativa con valor igual a 511 es vecina de una alternativa de valor 512. Sin embargo a nivel
de las cadenas formadas usando codificación binaria se tiene que 511 corresponde al vector
[0,1,1,1,1,1,1,1,1,1] y 512 corresponde a [1,0,0,0,0,0,0,0,0,0]. Lo cual evidencia que a nivel de
cadenas binarias no son alternativas vecinas porque la distancia de Hamming es muy grande.
Esta característica de la codificación binaria directa se conoce como “peñasco de Hamming”.
Nótese que se requieren 10 substituciones (mutaciones) para que a partir de uno de
los vectores se llegue al otro y considerando, por ejemplo, una tasa de mutación de 0.01 se
Peñasco de 20
Hamming necesitan, en el peor caso, 10 tentativas.
Para sortear esta dificultad de la codificación binaria directa existe otro tipo de
codificación binaria denominada código Gray. Esta codificación se caracteriza por ser cíclica.
Código Gray es decir, los cambios necesarios para pasar de un valor al siguiente sólo involucran 1 bit.
Dos números enteros adyacentes sólo difieren en 1 bit en código Gray y la transición de una
alternativa a la otra se puede hacer en sólo una substitución.
Por ejemplo, la tabla 2.2 muestra la codificación binaria Gray usando 4 bits. La
codificación Gray también se conoce como codificación binaria por reflejo, debido a que esta es
Códificación
binaria por
una de las formas de explicar su algoritmo. Para representar el conjunto de cadenas binarias en
reflejo código Gray usando 2 bits, se comienza reflejando (duplicando) la configuración más básica de
1 bit. Así, se obtiene un vector columna de cuatro elementos como se muestra en la figura 2.31.
El siguiente paso es concatenar el primer elemento de la cadena básica de un bit con cada uno
de los primeros dos elementos del vector columna y el segundo elemento de la cadena básica de
un bit con los últimos dos elementos del vector columna. De esta manera se obtiene el codigo
Grey para 2 bits.
Para obtener el código Gray usando 3 bits, se repite el esquema anterior reflejando el
código Gray obtenido para 2 bits.
Desde el punto de vista algorítmico, la codificación mostrada es equivalente a utilizar una
operación “or exclusiva” (xor) cuyo símbolo es ⊗. El bit más significativo (bms) de la cadena
binaria simple pasa directamente a la misma posición de la cadena binaria Gray. El segundo
elemento de la cadena binaria Gray es obtenido de la opración ⊗ entre el bms y el siguiente bit
de la cadena binaria simple. El tercer elemento elemento de la cadena binaria Gray es obtenido
de la opración ⊗ entre el segundo bms y el siguiente bit de la cadena binaria simple. El proceso
se repite hasta conformar todo el código Gray.
El algoritmo 2.7 muestra todo el proceso de codificación usando el operador ⊗ (ver
tabla 2.1).
El algoritmo 2.7 puede también ser representado por un circuito lógico de compuertas xor
como el que se muestra en la figura 2.32
Este tipo de problemas también puede ser codificado a través de números reales, es decir,
usando codificación real. Algunos operadores han sido diseñados para explorar el espacio de
búsqueda usando esta codificación (ver Deb (2004)).En la sección 2.9.6.1 se discute en detalle
los algoritmos genéticos con parámetros reales (pág. 117).
62
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
63
Capítulo 2. Problemas y codificación
2 for i ← nbits to 2 do
3 Gray (i − 1) ← Binario (i) ⊗ Binario (i − 1)
4 end
Algorithm 2.7: Pasar de Binario a Gray
64
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
2.7 Ejercicios
Ejercicio 2.1. Dadas las placas y la paleta mostradas en la figura 2.33, encontrar, para una
alternativa de solución π = {2, 1, 5, 1, 6, 6, 4, 7, 3, 4, 7, 2, 7, 6, 4, 5}:
Placa14TIPO 1
×19 × 2
Placa 9TIPO
×3
5
×2 Placa10TIPO
×1
6
×4
Paleta 24×38
3
Placa 3TIPO
×6 ×2 Placa 6TIPO
×6
4
×4 Placa 9TIPO
×6
2
×2
Placa 3TIPO
×2
7
×4
Ejercicio 2.2. Una persona gana un premio en un supermercado consistente en llevar, sin costo
alguno, todos los artículos que pueda empacar en una bolsa. La persona tiene acceso sólo a 20
artículos y cada uno de ellos tiene las características mostradas en la tabla 2.3.
La bolsa tiene una capacidad máxima de 100kg. Se requiere:
a. diseñar una estrategia para la recolección de los artículos, pensando en obtener el máximo
lucro posible.
65
Capítulo 2. Problemas y codificación
b. usar la estrategia anterior para ayudar a esta persona con 4 alternativas diferentes (conjuntos
de productos) que puedan ser empacados dentro de la bolsa.
d. obtener el número de alternativas que deben ser evaluadas para encontrar el máximo lucro
posible para esta persona.
Ejercicio 2.3. Implementar en el lenguaje de preferencia una función que permita calcular la
función objetivo del problema de Job-Shop presentado en la sección 2.5.2 (pág. 52).
Ejercicio 2.4. Obtener la codificación binaria y la codificación Gray usando 5 bits.
66
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Los Algoritmos Evolutivos (AEs) imitan los principios evolutivos naturales para constituir
procedimientos de búsqueda y optimización. Parten de un hecho, observado en la naturaleza,
basado en que los organismos vivos poseen una destreza consumada en la resolución de los
problemas que se les presentan y obtienen sus habilidades, casi sin proponérselo, a través
del mecanismo de la evolución natural. Por lo anterior, Algoritmos Evolucionarios es un
nombre extremadamente ambicioso para una idea extremadamente simple: usar la teoría de
la evolución como un algoritmo.
Cualquier programa que use el ciclo básico mostrado en la figura 2.34 hace parte de
la familia de los AEs. Estos algoritmos metaheurísticos operan sobre poblaciones las cuales
Ciclo básico
son representadas por estructuras que codifican adecuadamente cada problema en particular. de un AE
Estas estructuras son conocidas como alternativas de solución y permiten evaluar el valor de la
función objetivo y el grado de infactibilidad, como se presento en la sección 1.1 (página 2).
Generar Población de
alternativas de
solución
Cumple si
criterio Parar
?
no
Evaluar la calidad de las
alternativas de solución
Seleccionar alternativas
para la reproducción
Producir nuevas
variaciones a las
alternativas seleccionadas
Reemplazar alternativas
existentes con las nuevas
67
Capítulo 2. Problemas y codificación
• Por la misma razón, tienen mayor probabilidad de sufrir una convergencia prematura a
óptimos locales ó sub-óptimos.
• Este tipo de técnicas presentan una dificultad mayor al tratar de ser implementadas usando
procesamiento paralelo.
68
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
• De las dos anteriores se concluye que existe una lucha por la supervivencia.
69
Capítulo 2. Problemas y codificación
70
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Los intrones fueron descubiertos por Phillip Allen Sharp y Richard J. Roberts, lo que
les supuso ganar el Premio Nobel de Fisiología o Medicina en 1993. El término intrón fue
introducido por el bioquímico estadounidense Walter Gilbert en 1978.
Tradicionalmente se ha afirmado que los intrones son fragmentos de ADN carentes de
información. Sin embargo esta afirmación es cuestionada y actualmente goza de pocos adeptos.
Intrones
Se sabe que los intrones contienen varias secuencias pequeñas que son importantes para un
ajuste eficiente. En el contexto de los AGs, se refiere a la parte de un genotipo que no contribuye
al fenotipo.
Espacio de las
variables reales
Intrones
Gen
Punto de corte
Alelo=[11]
71
Capítulo 2. Problemas y codificación
reemplazados por los nuevos. Esto garantiza que durante todo el proceso el tamaño de la
población permanezca constante o controlado según alguna política adoptada.
72
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
de infactibilidad. Y, obviamente, entre una factible y una infactible será de mejor calidad la
alternativa factible.
De acuerdo a lo anterior, la función de adaptación tiene como finalidad hacer un
balance entre optimalidad y factibilidad. Una práctica común, en problemas de minimización,
consiste en cuantificar el grado de infactibilidad y usar este valor para penalizar la función
objetivo. Si el problema es de minimización se penaliza sumando a la función objetivo el
grado de infactibilidad. Si el problema es de maximización se penaliza restando el grado de
infactibilidad.
Por ejemplo, para el problema del recipiente cilíndrico presentado en la sección 2.6.1
(pág. 58), supóngase que se tiene una alternativa con d = 4cm y h = 10.0909cm, con
una precisión de 10 bits. Aplicando las expresiones ( 2.35) y ( 2.36) y asumiendo un costo
c =UM$0.065 (UM$=unidades monetarias), se obtiene que el costo f (d, h) de esta alternativa
es de 9.876 UM$ y el volumen del recipiente g1 es 126.8061cm3 . Como el volumen mínimo
permitido Vmin es 300cm3 se está violando la restricción ( 2.36) en 300cm3 − 126.8061cm3 =
173.1939cm3 . Por lo tanto, una adecuada función de adaptación fa , para este problema en
particular, podría ser:
penaliza
ión
z }| {
f (d, h) + c (Vmin − g1 ) ⇔ (Vmin − g1 ) > 0
f= (2.43)
en los otros
asos
f (d, h)
Una buena función de adaptación, asociada a una adecuada codificación del problema,
debe poder diferenciar entre todos los individuos de la población. Es decir, dos individuos
genéticamente diferentes no deben tener el mismo valor de la función de adaptación. Un
ejemplo de lo anterior puede ser ilustrado con el problema de corte en 2-D mostrado en la
figura 2.8(pág. 26). A pesar de que las dos secuencias de empaquetamiento son diferentes, el
área desperdiciada en la paleta (función objetivo) es la misma. Por lo tanto se hace necesario
incorporar un criterio diferenciador el cual es, en este caso, el área no adyacente desperdiciada.
La calidad de la función de adaptación influencia directamente la eficiencia de un algoritmo
genético (Dréo et al., 2003).
73
Capítulo 2. Problemas y codificación
4. Métodos híbridos
En la figura 2.36, se muestra el diagrama de flujo de un AG básico que integra todos los
tipos de operadores.
Existe una gran cantidad de métodos para realizar estas tareas. Algunos métodos comunes
son: selección por torneo, selección proporcional, y selección por rango.
74
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
de parada ?
Sobre este tipo de torneo existen dos versiones. La primera, presentada por Goldberg and Deb
(2004), plantea que en este tipo de selección se realizan torneos entre parejas de individuos
Torneo
determinístico
escogidos aleatoriamente y la alternativa de mayor calidad (mejor valor de la función de
versión 1 adaptación) es seleccionada para pasar su copia genética a la siguiente generación. Se debe
escoger, usando torneo, un número de alternativas igual al tamaño de la población. Por esta
razón, si el tamaño de la población es n, se deben realizar 2n torneos para conformar el total
de individuos. Esto quiere decir, en pro de la justicia, que cada individuo deberá participar en
2 torneos. En el caso de la mejor solución de toda la población, ésta ganará los dos torneos y
tendrá derecho a tener dos descendientes dentro de la nueva población, lo cual es considerado
como una estrategia elitista. De forma similar, la peor solución de toda la población perderá los
dos torneos y será eliminada de la población. En este orden de ideas, cualquier individuo de la
población tendrá cero, uno o dos descendientes en la nueva población. En Goldberg and Deb
(2004) se ha podido establecer que la selección por torneo tiene las mejores propiedades
de convergencia y complejidad computacional cuando se compara con otros operadores de
selección que existen en la literatura. Un interesante aspecto del operador de selección por
torneo es que permite manejar fácilmente problemas de minimización o maximización ya que
simplemente depende del operador de comparación. Es decir, en el caso de maximización, una
alternativa es mejor que otra si su función de adaptación tiene un valor mayor. En el caso de
minimización, una alternativa es mejor que otra si tiene una función de adaptación con un valor
75
Capítulo 2. Problemas y codificación
población
Datos de Salida : Sele
Reprod: vector con la posición de los individuos
seleccionados para reproducción
1 Pos ← vector columna de permutación aleatoria de enteros
7 end
8 else
9 Sele
Reprod (t,1)← Pos (t+1)
10 end
11 end
12 t←t+1
13 Individuo1 ← ValAdapta
ion (Pos (t))
17 end
18 else
19 Sele
Reprod (t,1)← Pos (1)
20 end
Algorithm 2.8: Selección por torneo - Versión 1
La segunda versión, presentada en Dréo et al. (2003) sugiere que la selección consiste en
escoger aleatoriamente un número k de individuos de la población (k < n), y de ese subconjunto
Torneo
determinístico
escoger para la reproducción el individuo con mejor función de adaptación. El paso anterior es
versión 2 repetido, las veces que sean necesarias, para conformar el conjunto de individuos que tienen
derecho a reproducirse. Recuérdese que este conjunto tiene el mismo número de individuos
que la población original. Este método de selección es mucho más usado que el anterior por
su fácil implementación y ha mostrado tener un desempeño similar. A medida que k crece (se
aproxima a n) el proceso de selección se vuelve más determinístico. A medida que k disminuye
(se aproxima a 1) el proceso se vuelve más aleatorio.
76
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
fi
λi = Pn (2.44)
j=1 fj
Sin embargo, el número efectivo de descendientes debe estar dado en números enteros.
Por lo tanto, se requiere de un mecanismo que integre toda la información y la convierta a
números enteros. Esto se logra utilizando un procedimiento de muestreo estocástico, el cual
constituye el eje central de la selección proporcional. Existen dos técnicas bastante aplicadas:
el método de selección por ruleta y el método universal de muestreo estocástico (Baker, 1985).
Este método de selección consiste en dividir una ruleta en n secciones (n =número de
individuos), cada una de las cuales tiene un tamaño proporcional a la función de adaptación de
Selección por
cada individuo, como se muestra en la figura 2.37a. Por lo tanto, la ruleta es activada n veces ruleta
y cada vez se selecciona el individuo que indica el puntero de la ruleta. Los individuos con
mejor función de adaptación poseen secciones más grandes de la ruleta. Por tal razón, estos
individuos tiene mayor probabilidad de ser seleccionados para la reproducción.
Si las secciones de la ruleta son “desenrolladas” sobre un segmento de línea recta, la
selección de un individuo es equivalente a escoger, aleatoriamente, un punto del segmento con
una probabilidad uniformemente distribuida (ver fig.2.37b).
El algoritmo 2.9 corresponde a la función SeleccionRuleta. Esta función simula un
lanzamiento de la ruleta sobre secciones proporcionales a la función de adaptación y devuelve
la posición de la alternativa ganadora. El script de la función SeleccionRuleta en matlab es
presentado en el capítulo 6 (pág. 185).
La varianza de esta técnica es alta, lo cual significa que es posible que un individuo de
buena calidad nunca sea seleccionado. O el caso contrario, que un individuo de mala calidad
sea seleccionado muchas veces.
77
Capítulo 2. Problemas y codificación
2 A umulado ← 0
8 break
9 end
10 end
Algorithm 2.9: Selección de un individuo usando ruleta
78
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
20%
i=9
2%
i = 10
12%
i =1
17%
i=8
17%
i=2
7%
i=7
2% 6%
i =3 4% i=6
i=4 14%
i=5
(a) Ruleta circular
Aleatorio
i=5
i=1 i=10
∑ λi = 1
(b) Ruleta en formato horizontal
i=3 i= 4 i= 6 i=10
79
Capítulo 2. Problemas y codificación
su función de adaptación será el rango obtenido. El paso final consiste en aplicar el operador
de selección proporcional para seleccionar los n individuos con derecho a reproducirse. Este
método no tiene el problema de escalamiento.
Ejemplo 2.4.
• dmin = 0 y dmax = 31
• hmin = 0 y hmax = 31;
• #bits = 5
• Tamaño de la población= 10
• Vmin = 300
• c = 0.065
∑ 1031,9 1
80
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
c Aplicar el operador de selección por torneo, usando el algoritmo 2.8, y obtener el conjunto
de individuos con derecho a reproducirse.
R/: La figura 2.39 muestra un vector de permutaciones aleatorias de los índices de cada
individuo. Sobre este vector se realiza cada uno de los torneos ti de forma secuencial,
similar a la construcción de un circuito Hamiltoniano (ver definición pág. 1.5). Así
por ejemplo, el torneo t4 enfrenta a los individuos 3 y 7. Como es un problema
de minimización y la función de adaptación de cada uno es fadapt. (3) = 21.1339 y
fadapt. (7) = 75.045, respectivamente, el torneo es ganado por el individuo 3. El
conjunto de individuos seleccionados para la reproducción esta conformado por el vector
[6, 6, 3, 3, 10, 10, 4, 4, 8, 1]. Se puede notar que el individuo 9, que es el de peor calidad,
desapareció de la población, mientras que los individuo 3 y 10, que son los mejores de
la población con fadapt. (3) = 21.134, adquieren el derecho de reproducirse 2 veces cada
uno. Esto es justamente lo que se busca en el proceso de selección. Nótese que en este
caso particular los individuos 3 y 10 son genéticamente diferentes pero con igual valor de
la función de adaptación.
Individuo
f adap . Torne o Ga na dor
1 6
t1 t1
t2 t2 2 6
3 3
t3 t3
4 3
t4 t4
t10
t5
t6
≡ t10
t5
t6
⇒ 5
6
7
10
10
4
t7 t7 8 4
t8 t8 9 8
9
t9 t9 10 1
Figura 2.39: Selección por torneo, aplicada a los individuos de la tabla 2.5
f nuevo
λi = Pn i nuevo (2.45)
j=1 fj
P P
Por lo tanto, nj=1 fjnuevo = nj=1 f1j = 0.1841. Las probabilidades λi de cada individuo,
así como la probabilidad acumulada son mostradas en la figura 2.40a. Diez números
81
Capítulo 2. Problemas y codificación
Prob.
Acumul. Números aleatorios
i λi Pi
1 2 3 5 5 6 7 8 9 10
1 0.044448 0.044448
2 0.031669 0.076117
3 0.25704 0.333157 0.22595
4 0.14779 0.480947 0.4235 0.33395 0.43291
5 0.036718 0.517665 0.51551
6 0.095007 0.612672 0.58279 0.57981 0.52982
7 0.072386 0.685058 0.64053
8 0.031821 0.716879
9 0.02608 0.742959
10 0.25704 1 0.76037
i = 10
26%
i =1
4%
i=2 3% 3% i = 9
3% i = 8
7% i=7
i=3 26%
10%
i=6
4%
i =5
15%
i=4
(b) Representación circular
82
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
18%
2%
4%
16%
5%
7%
15%
9%
11% 13%
83
Capítulo 2. Problemas y codificación
Estos operadores deben tener la capacidad de balancear adecuadamente las dos funciones
más importantes en el proceso de búsqueda de un óptimo:
Exploración y
explotación
• La exploración del espacio de búsqueda, con el propósito de descubrir áreas de buena
calidad que pueden contener el óptimo global.
• La representación real en Rn .
84
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
85
Capítulo 2. Problemas y codificación
Este operador puede o no ser aplicado sobre toda la población. Por tal razón existe una
tasa de cruzamiento tc ≤ 1 que determina la proporción de individuos que van a recombinarse.
Tasa de
cruzamiento Los individuos que no se someten a la recombinación pasan directamente a la siguiente
generación. Así, si se utiliza una tasa de cruzamiento tc , entonces 100tc % individuos de
la población son usados en la operación de recombinación y 100(1 − tc )% son simplemente
copiados a la nueva población.
Una recombinación es conocida como letal si los padres son de buena calidad y el
descendiente obtenido es de mala calidad. Una solución a este problema consiste en realizar
Recombina-
ción letal
cruzamientos entre individuos que sean vecinos. Para ello se utiliza una métrica de la diferencia
genética, por ejemplo la distancia de Hamming, y sólo se cruzan los individuos más similares.
Este valor que determina qué individuos son similares y cuales no, recibe el nombre de
proporción de restricción rc . Si este valor es muy pequeño, la proporción de cruzamientos
efectivos será también menor y esto podría ser perjudicial ya que se reduce el espacio de
búsqueda, se acentúa la búsqueda local y puede existir convergencia prematura. Escoger
un adecuado valor rc es dependiente del problema y afecta directamente el desempeño de
convergencia.
También es posible considerar un parámetro rc decreciente durante la evolución del
proceso de optimización.
El operador de cruzamiento puede realizarse en uno, dos ó más puntos. En el caso de
cadenas binarias es común realizar un cruzamiento uniforme.
El cruzamiento en un punto consiste en escoger aleatoriamente una pareja de individuos
y aplicarles los siguientes 2 pasos (Holland, 1992):
cruzamiento
en un punto
1. Escoger de forma aleatoria un mismo punto de corte (ver fig. 2.35) para los individuos
como se muestra en la figura 2.42a.
2. Cortar las dos cadenas e intercambiar los dos fragmentos localizados a la izquierda (fig.
2.42b).
86
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
87
Capítulo 2. Problemas y codificación
Punto de corte
aleatorio
1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0
0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1
(a) Punto de corte aleatorio (b) Corte e intercambio de fragmentos
0 0 1 0 1 1 0 0 1 0
1 0 1 0 0 1 0 0 0 1
(c) Nuevos descendientes
Pc1 Pc 2 Pc 3
Descendientes
1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1
0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0
J1 J2 J3 J4 J5 J6 J7 J8 J9 J1 J2 J3 J4 J1 J9 J8 J3 J7
J2 J6 J4 J5 J1 J9 J8 J3 J7 J2 J6 J4 J5 J5 J6 J7 J8 J9
88
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
2. Los genes que están fuera de la franja limitada por los dos puntos de corte son copiados
del padre1 al descendiente, conservando las mismas posiciones del padre1 .
3. Los genes faltantes en el descendiente son tomados del padre2 , conservando el orden en
el que se encuentran en el padre2 . Tal como se muestra en la figura 2.45.
Franja
64447444 8
PC1 PC 2
J1 J2 J3 J4 J5 J6 J7 J8 J9
J2 J6 J4 J5 J1 J9 J8 J3 J7
J1 J2 J6 J4 J5 J3 J7 J8 J9
2.8.3.3 Mutación
El operador de mutación tiene como objetivo alterar un individuo localmente, modificando
aleatoriamente un alelo de un pseudo-cromosoma en un gen aleatorio, para obtener una solución
vecina de mejor calidad. Aunque no siempre la mutación genera un individuo mejor, si se realiza
con una baja probabilidad deja de ser una operación aleatoria debido a que el proceso favorece
la creación de pocas soluciones en el espacio de búsqueda (Deb, 2004).
Clásicamente, la probabilidad de aplicar el operador de mutación varía entre 0.01 y 0.1
por individuo. Esta probabilidad se conoce con el nombre de tasa de mutación tm .
89
Capítulo 2. Problemas y codificación
Es sorprendente que un mecanismo tan simple como los AGs permitan resolver problemas
complejos de optimización NP-difíciles. En la teoría de los AGs no se mencionan palabras
tales como gradiente, Hessiana o cualquier otra información auxiliar del problema, excepto el
valor de la función objetivo. A pesar de que la operación es simple, los AGs son altamente no
lineales, aplicables a muchos tipos de problemas, estocásticos y complejos.
90
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
En el ámbito de los AGs, es interesante notar que a pesar que toda información inicial de
un problema es generada aleatoriamente, un AG que utilice los tres operadores tradicionales
produce una búsqueda dirigida, la cual usualmente incrementa la calidad promedio de las
soluciones de una generación a otra.
Cuando se observa cuidadosamente las alternativas de solución que se crean de una
generación a otra en un problema cualquiera, se pueden observar similitudes entre la
información de ciertas posiciones de las cadenas. Estas similitudes son llamada esquemas
dentro de la literatura de los AGs.
Un esquema puede ser representado, para el caso de cadenas binarias, a través de tres
tipos de elementos (1′ s, 0′ s y ∗′ s). Un ∗ representa un 1 o un cero, es decir una posición
Representación
indefinida. Además, un esquema puede ser clasificado por su orden y por su longitud. de
un esquema
El orden de un esquema H corresponde al número de posiciones definidas dentro del
esquema y es representado como o(H). Un esquema con orden completo representa una cadena.
La longitud de un esquema δ(H) es definida como el número de posiciones entre las posiciones
definidas más distantes. En otras palabras, es equivalente al mayor número de ∗ consecutivos, Orden y longi-
tud de un
considerando que la última posición esta conectada con la primera posición del esquema. Por esquema
ejemplo, si H = [∗ ∗ 011 ∗ ∗ ∗ ∗001 ∗ ∗∗] la distancia δ(H) = 5 y el o(H) = 6. Un esquema
H1 = [1 ∗ ∗0 ∗ ∗] representa 16 cadenas con un 1 en la primera posición y un 0 en la tercera
posición. El número de cadenas que puede representar un esquema corresponde, en el caso
de cadenas binarias, a 2#P os.indef inidas = 2#∗ . Cuando una alternativa es de buena calidad su
esquema crece en la población debido a los operadores genéticos.
91
Capítulo 2. Problemas y codificación
92
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Comodidad
Barrera impuesta por el mercado
Punto irreal para
90% el mercado
E B
D
Zona A:
Zona de Zona B:
búsqueda. Nada se puede concluir
Mayor confort a
menor precio
C
Zona D:
Zona C: Menor confort
Nada se puede concluir a mayor precio
40%
A F
93
Capítulo 2. Problemas y codificación
x2
D z = { z1 , z2 }
f2
Z
x = { x1 , x2 , x3 }
x3 f1
x1
94
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
95
Capítulo 2. Problemas y codificación
entonces se habla de frente óptimo de Pareto. Esta noción de frente óptimo de Pareto es la más
aceptada en el contexto de problemas multiobjetivo y fue propuesta originalmente por Francis
Ysidro Edgeworth en 1881 y generalizada posteriormente por Vilfredo Pareto en 1896.
Un buen conjunto de soluciones no dominadas es caracterizado por tener individuos
distribuidos a lo largo de todo el frente, es decir, se caracteriza por tener mayor diversidad.
Como se mencionó anteriormente, el objetivo de un proceso de optimización es encontrar el
frente óptimo de Pareto con el mayor grado de diversidad posible.
Una definición más formal de frente de Pareto óptimo global y local se presentan en las
expresiones (2.49) y (2.50)
f 2 (min)
S
Pareto óptimo global
P
x1
x2
x3
x4
Pareto óptimo local
f1 (min)
96
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
10
f1 (min)
10
f1 (max)
Conjunto óptimo de Pareto
10 10
9 9
8 8
7 7
11 11
2 2 7
7
4 3 f 2 (min) 4 3 f 2 (min)
1 1
1 2 3 4 5 6 7 1 2 3 4 5 6 7
10 10
f1 (min) 10 f1 (max) Conjunto óptimo de Pareto 10
9 9
8 8
7 7
8 8
5 2 5 2
5 9 5 9
4 1 4 1
6 12 6
3 12 3
11 11
2 2 7
7
4 3 f 2 (max) 4 3 f 2 (max)
1 1
1 2 3 4 5 6 7 1 2 3 4 5 6 7
97
Capítulo 2. Problemas y codificación
Solución2 ≺
6 Solución1
Solución3 ≺ Solución1
Como la Solución3 ≺ Solución1 , entonces se revisa otra solución
98
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Solución1 ≺
6 Solución2
Solución3 ≺ Solución2
Como la Solución3 ≺ Solución2 , entonces se revisa otra solución
f1 (minimización)
10
f1 f2 10
i 9
1 1 4
2 2 5 8
3 5 1 7
4 1 1
5 4,5 4 6
6 4 3 2 8
5
7 3 1,5 1 5
4 9
8 6 5
12 6
9 7 4 3
10 7 10 11
2 7
11 6,5 2 3
4
12 2 3 1
1 2 3 4 5 6 7
f 2 (maximización)
Solución1 6≺ Solución3
Solución2 6≺ Solución3
Solución4 6≺ Solución3
Solución5 6≺ Solución3
Solución6 6≺ Solución3
Solución7 6≺ Solución3
Solución8 6≺ Solución3
Solución9 6≺ Solución3
Solución10 6≺ Solución3
Solución11 6≺ Solución3
Solución12 6≺ Solución3
como ninguna solución domina la solución 3, ésta es NO dominada y debe ser
almacenada en el vector P ′ , adicionalmente debe ser retirada del vector P . Así,
′
P = {1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12} y P = {3}
De una manera similar, se verifica la dominancia sobre todas las soluciones, para llegar
al conjunto no dominado P ′ = {3, 11, 9}. La figura 2.51 muestra las soluciones no dominadas
de la población en diferentes frentes. Es posible encontrar los diferentes frentes, retirando de la
99
Capítulo 2. Problemas y codificación
población P las soluciones no dominadas ubicadas en el primer frente y ejecutando los pasos
nuevamente. Una vez encontrado el nuevo frente, estas soluciones son retiradas también y se
ejecuta el proceso para encontrar el tercer frente. Este proceso se repita las veces que sean
necesarias hasta que todas las soluciones queden ubicadas en un frente.
f1 (minimización)
10
7
frente de soluciones
6 no dominadas
5
1
1 2 3 4 5 6 7
f 2 (maximización)
Método de Kung: El método discutido en Kung et al. (1975) propone una división
recursiva de la población. El primer paso consiste en ordenar descendentemente la población
P según la importancia del valor de la primera función objetivo. Posteriormente, la población
es dividida en dos sub-poblaciones I (izquierda) y D (derecha) de forma recursiva (ver líneas 4
y 5 del algoritmo 2.11). Lo anterior implica que la sub-población I es de mejor calidad que la
D desde el punto de vista de la primera función objetivo. Así, es posible verificar el criterio de
dominancia, respecto a la segunda función objetivo, entre la sub-población D y la I (el proceso
es aplicable para problemas con más de dos funciones objetivo). Las soluciones de D que no
son dominadas por cualquier miembro de I son combinadas con los miembros de I para formar
una población no dominada M (ver líneas 8 y 16). La conformación de la población M y la
verificación de dominancia tienen lugar en el momento en que el tamaño de I y de D sea igual a
1, es decir, hasta que las divisiones recursivas de las sub-poblaciones permitan comparar sólo un
individuo de la población I con uno de la población D. Este método es más difícil de visualizar
e implementar que el método exhaustivo, pero en problemas de gran tamaño es importante
disminuir el esfuerzo computacional invertido en la obtención de los frentes no dominados.
La figura 2.52 muestra un formato típico de la presentación de la población y los valores
de las diferentes funciones objetivo. Este formato es descompuesto en dos arreglos: un vector
P que contiene los índices de cada individuo de la población y una matriz V que contiene, por
columna, los valores de las diferentes funciones objetivos para cada individuo.
El algoritmo 2.11 corresponde a la función que divide recursivamente la población y
obtiene el frente no dominado. La figura 2.53 corresponde al diagrama de flujo del algoritmo
general que permite obtener todos los frentes ordenados de la población. Este algoritmo
100
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
VECTOR P MATRIZ [V ]
101
Capítulo 2. Problemas y codificación
102
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Datos de entrada: V, P, M,
TipoOpt, L=1
Es Fobj1 de TipoOpt[1]=0 no
minimización ? ?
si
Ordenar P Ordenar P
descendentemente ascendentemente
según Fobj1 según Fobj1
i=2
Borrar de P los elementos que
ya se ubicaron en el Frente[L].
L=L+1
i=M
Verifica si se han comparado ?
si
todas las funciones objetivo
no
i=i+1
Llamar la función que permite obtener el
frente L no dominado:
Frente[L] =FND_ordenado(V,P,TipoOpt, i)
Figura 2.53: Algoritmo para obtener todos los frentes, considerando múltiples funciones objetivo
que pueden ser de maximización o minimización
30
Ve ctor P Ma triz [V]
4
Individuo Fobj1 Fobj2
25 8
1 0.2285 11.5128
2 0.3902 7.4299
3 0.7559 7.1822 20
4 0.1688 28.4664
Valor Fobj2
5 0.457 11.8462
Población = 6 0.4078 8.0556 15
7 0.3727 7.7673
8 0.1195 26.9118 5
9 0.7348 6.5577 10 1
10 0.2813 8.2604 10 726
11 0.6785 3.863 5 93
12 0.8121 3.5582
11 12
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
Valor Fobj1
Figura 2.54: Ejemplo de aplicación del método de Kung, con 12 individuos y 2 funciones
objetivos de minimización.
103
Capítulo 2. Problemas y codificación
8 4 1 10 7 2 6 5 11 9 3 12 nivel 1
8 4 1 10 7 2 6 5 11 9 3 12 nivel 2
8 4 1 10 7 2 6 5 11 9 3 12 nivel 3
8 4 1 10 7 2 6 5 11 9 3 12 nivel 4
8 4 10 7 6 5 9 3 nivel 5
Frente1 = 8 1 10 7 2 6 11 9 12
Si se quiere obtener los demás frentes, correspondientes a los individuos que no hacen
parte del conjunto no dominado, el procedimiento consiste en retirar de la población los
individuos que ya han sido ubicados en un frente y repetir el proceso de bisección recursiva
explicado anteriormente, como se explica en el algoritmo de la figura 2.53. En este caso,
retirando los individuos del f rente1 la población es P = {4, 6, 5, 9, 3} y el f rente2 = {4, 6, 9}.
Finalmente el f rente3 = {5, 3}, como se muestra en la figura 2.57.
104
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
30
25
20
Valor Fobj2
15
10
5
Frente no
dominado
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
Valor Fobj1
f2
X(i – 1)
Xi
f 2X ( i +1) − f 2X ( i −1) d2
X( i +1)
d1
f 1X (i +1) − f1 X (i −1) f1
105
Capítulo 2. Problemas y codificación
f X(i+1) − f X(i−1) f X(i+1) − f X(i−1)
1 1 2 2
di = max min + max min (2.51)
f1 − f1 f2 − f2
2. Si ambas tienen el mismo rango pero la alternativa i tiene mejor distancia de apilamiento
que la j, es decir, si di > dj .
106
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Frente 2
Frente 3
Rechazadas
Frente n
Paso 3. Combinar padres e hijos en una única población R de tamaño 2N. Sobre esta población
realizar una clasificación por frentes y ordenar. Por ejemplo, si la población tiene 13
107
Capítulo 2. Problemas y codificación
P k+1 = P k ∪ fi (2.52)
Paso 5. Si np > N es necesario eliminar np − N individuos del frente actual fi . Para ello se
eliminan los individuos con menor distancia de apilamiento. Los individuos de los demás
frentes también son descartados.
Paso 6. Aplicar operadores de selección (<c ), recombinación y mutación para obtener una
población Q de descendientes (hijos) de tamaño N y volver al paso 3. El proceso se
repite hasta alcanzar un criterio de parada, como por ejemplo un número determinado de
generaciones.
108
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
3. métodos híbridos;
Este último grupo es actualmente de gran interés científico y conforma el estado del arte
de los algoritmos de optimización restricta.
La utilización de métodos de optimización multi-objetivo usando algoritmos
evolucionarios MOEA (acrónimo en inglés de Multi-Objective Evolutionary Algorithms) tiene
ventajas adicionales sobre los otros métodos al resolver problemas de optimización restricta,
como son:
• Las restricciones que maneja el problema pueden ser resueltas de una manera natural. Es
decir, no es necesario formular funciones objetivo penalizadas artificialmente.
• En los problemas del mundo real es poco común encontrar restricciones rígidas o duras.
Es decir, se permite un margen de violación a las restricciones (restricciones blandas) a
cambio de una ganancia importante en la función objetivo. Por lo tanto, el uso de MOEA
permite obtener un conjunto con los mejores compromisos entre las funciones objetivo
(pareto-óptimo) involucradas en el problema. Así, es posible encontrar soluciones que
violan las restricciones marginalmente o por mucho. En la Figura 2.60 se muestra un
problema mono-objetivo restricto abordado a través de una filosofía multi-objetivo donde
un objetivo es el grado de violación de las restricciones y el otro la función objetivo
original. También se muestra el frente óptimo de pareto del problema multiobjetivo, el
109
Capítulo 2. Problemas y codificación
punto mínimo restricto (punto A), el punto mínimo considerando restricciones blandas
a través de un margen de violación ε (punto B) y las soluciones factibles del problema
mono-objetivo original. Todas las soluciones del frente que están entre los puntos A y B
son de gran interés.
f(x)
Espacio de búsqueda
ε
Violación restricciones v(x)
Figura 2.60: Problema mono-objetivo restricto abordado a través de una filosofía multi-objetivo
con restricciones duras y blandas
110
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
f2 A
B
C
E f1
max {0, gj (X)} j = 1, . . . , q
cj (X) = (2.56)
max {0, |hj (X)| − δ} j = q + 1, . . . , m
111
Capítulo 2. Problemas y codificación
Estos valores de máxima violación de cada restricción en toda la población son usados
para normalizar cada restricción violada calculada en (2.56). Finalmente, para producir un
grado de violación de restricciones (un escalar) para cada individuo de la población que varíe
entre 0 y 1, los valores de las violaciones normalizadas son sumados y divididos luego por el
número total de restricciones del problema:
m
P cj (X)
cmax (j)
j=1
v(X) = (2.58)
m
Ejemplo 2.7.
Obtención de la función de adaptación para la fase uno. Se considera el siguiente problema
de optimización restricta:
0.000002 3
min G5(X) ≡ 3x1 + 0.000001x31 + 2x2 + x2
3
s.a
r1 ≡ x3 − x4 − 0.55 ≤ 0
r2 ≡ x4 − x3 − 0.55 ≤ 0
r3 ≡ 1000sin(−x3 − 0.25) + 1000 sin(−x4 − 0.25) + 894.8 − x1 = 0 (2.59)
r4 ≡ 1000sin(x3 − 0.25) + 1000 sin(x3 − x4 − 0.25) + 894.8 − x2 = 0
112
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
cmax (j). Para mejorar el desempeño computacional del algoritmo se debe tener especial cuidado
al momento de calcular y actualizar este vector. La primera vez que se calcula, el procedimiento
se realiza sobre todos los individuos de la población.
Tabla 2.7: Valor de las restricciones para cada individuo del ejemplo 2.7
r1 r2 r3 r4 r5
Después, cuando un individuo nuevo es generado, una comparación entre las violaciones
en las restricciones del individuo y las violaciones máximas calculadas en (2.57) permiten
mantener actualizaos los valores de este vector. Es conveniente generar un vector adicional
imax (j) que contenga los individuos generadores de cada cmax (j) actual. Así, por ejemplo, la
máxima violación a la restricción 1 es ocasionada por el individuo 5 (X5 ).
Finalmente, aplicando la expresión (4) a la tabla anterior se obtiene un vector de escalares
v(X) que cuantifica el grado de infactibilidad de cada individuo de la población v(X) =
[0.44256, 0.43024, 0.2481, 0.37711, 0.25322]T .
El vector v(X) corresponde a la función de adaptación de la fase
uno, el cual será usado en el proceso de selección. Para la búsqueda de
soluciones factibles se utiliza un Algoritmo genético (AG) tradicional con
codificación real incorporando endurecimiento progresivo de restricciones blandas.
113
Capítulo 2. Problemas y codificación
imax ( j ) 5 - 1 2 1
114
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
9000
8000
7000
6000
5000
4000
3000
2000
1000
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
ε min = 0, 0001 ε max
115
Capítulo 2. Problemas y codificación
6000 5300
5200
5100
5000
5000 4900
4800
4700
4000
2000 Frente
inicial
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4
donde aij es una sensibilidad entre funciones objetivo que relaciona el valor de la ganancia en
la j-ésima función objetivo para una pérdida de una unidad en la i-ésima función objetivo. Esto
modifica el concepto original de dominancia de la siguiente manera:
Para un problema con dos funciones objetivo (M = 2) las funciones ponderadas son:
Ω1 (f1 , f2 ) = f1 + a12 f2 , Ω2 (f1 , f2 ) = a21 f1 + f2 . De esta manera la nueva definición de
dominancia hace referencia a una región de interés, definida por la escogencia adecuada de los
parámetros a12 y a21 , la cual es dominada por cualquier solución que cumpla con la definición
tradicional de dominancia aplicada a las funciones ponderadas, tal como se ilustra en la figura
2.64.
f2
Región objetivo de
búsqueda
a21
1 a21 f1
116
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
117
Capítulo 2. Problemas y codificación
Mutación aleatoria: Es el esquema más simple de mutación y consiste en crear una solución
vecina Yi de forma totalmente
aleatoria teniendo en cuenta todo el espacio de búsqueda:
(U ) (L)
Y i = ri X i − X i . Donde ri es un número aleatorio entre [0,1] y los superíndices
U y L indican los límites superior e inferior, respectivamente, del espacio de búsqueda.
Paso 1. Generar una población inicial de N individuos. Esta población se puede obtener de
forma aleatoria o a través de una heurística constructiva.
118
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Paso 3. Aplicar el operador de selección para seleccionar dos padres. En este paso se
recomienda usar una selección por torneo (ver 2.8.2.1, pág. 75). Además, Sólo se tiene
en cuenta el valor de la función objetivo sin penalización, es decir sólo el valor de la
optimalidad.
119
Capítulo 2. Problemas y codificación
¡No aplicar
Tasa de
Paso 5. Sobre este único descendiente, aplicar el operador de mutación. Es importante resaltar
mutación! que en un AG básico la tasa de mutación es pequeña (generalmente menor al 2%) ya que
se aplica sobre la población y no sobre un individuo particular. Sin embargo, en el AG
de Chu-Beasley el operador de mutación debe ser visto como un operador de búsqueda
en el entorno de una alternativa particular, por lo cual este operador siempre debería ser
ejecutado, sin ser sometido a una probabilidad. En este caso, el concepto de vecindad (ó
mutación suave) no es definido por la tasa de mutación, sino más bien por el criterio de
vecindad seleccionado.
1. Disminuir Infactibilidad.
2. Mejorar optimalidad.
Paso 7. Incorporar el hijo obtenido a la población usando una estrategia eficiente. Este paso es
la principal característica del método propuesto por Chu-Beasley. y consiste en incorporar
la siguiente estrategia:
120
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
2.10 Ejercicios
Ejercicio 2.5. Se necesita escoger un conjunto de artículos que produzcan el mayor lucro
posible y que no excedan el peso máximo permitido de 35 kg. Los datos de los artículos son
los siguientes:
costo($) = 4 1 3 2 5 8 4 6 10 7
peso(kg) = 6 5 7 3 8 4 10 4 8 5
b. Usar los datos presentados para ejecutar una iteración del AG. Escoger de form adecuada
todos los parámetros necesarios.
Ejercicio 2.10. Ejecutar una iteración del algoritmo NSGA-II para un problema con 2 variables
(x1 y x2 ) y dos funciones objetivo (f1 y f2 ). Utilizar las poblaciones de padres y descendientes
mostradas en la figura 2.65.
Padres P Descendientes
Solucion x1 x2 f1 f2 Solucion x1 x2 f1 f2
1 0.31 0.89 0.31 6.1 a 0.21 0.24 0.21 5.9
2 0.43 1.92 0.43 6.79 b 0.79 2.14 0.79 3.97
3 0.22 0.56 0.22 7.09 c 0.51 2.32 0.51 6.51
4 0.59 3.63 0.59 7.85 d 0.27 0.87 0.27 6.93
5 0.66 1.41 0.66 3.65 e 0.58 1.62 0.58 4.52
6 0.83 2.51 0.83 4.23 f 0.24 1.05 0.24 8.54
121
Capítulo 2. Problemas y codificación
122
Optimización usando Colonias de Hormigas
3
Las colonias de hormigas, y en general el comportamiento de insectos sociales, son sistemas
distribuidos que, a pesar de la simplicidad de sus individuos, presentan una gran organización
social estructurada. Como resultado de esta organización, las colonias de hormigas pueden
realizar tareas complejas que en muchos casos superan la capacidad individual de una única
hormiga.
La idea principal consiste en utilizar los principios auto-organizativos que permiten el
comportamiento altamente coordinado de las hormigas reales para coordinar poblaciones de
agentes artificiales que pueden resolver problemas computacionales.
Muchos de los comportamientos observados en sociedades de insectos han podido ser
explicados a través de modelos simples en donde sólo se considera una comunicación indirecta
entre individuos. Esta comunicación indirecta permite explicar cómo funciona el principio
auto-organizativo de los insectos sociales. Por lo tanto, las colonias de hormigas artificiales
usan una comunicación indirecta artificial para coordinar las actividades de agentes artificiales.
La capacidad visual de muchas especies de hormigas es desarrollada rudimentariamente
e incluso existen algunas especies de hormigas que son completamente ciegas. El tipo de
Comunicación
comunicación indirecta que utilizan las hormigas es basada en modificaciones del ambiente en indirecta a
el que se desenvuelven, usando sustancias químicas. Estas sustancias son llamada feromonas, y través de
son usadas para proporcionar información a los individuos de la colonia a través de los rastros rastros de
de feromonas. Estos rastros están compuestos por un tipo de feromona específica que algunos feromonas
tipos de hormigas usan para marcar los caminos por donde transitan, que llevan del hormiguero
a posibles fuentes de alimento. Las hormigas perciben estos rastros y los pueden seguir hasta
llegar a la fuente de alimento descubierta por otras hormigas. Este comportamiento colectivo
basado en marcar y seguir caminos y donde el comportamiento de una hormiga es influenciado
por el rastro químico dejado por otra hormiga es la fuente de inspiración del la Optimización
por Colonias de Hormigas (OCH).
123
Capítulo 3. OCH
1. En la primera versión, los caminos son de igual longitud como se muestra en la figura
3.1a.
Hormiguero Alimento
60 0
Hormiguero Alimento
(a) Primer experimento: caminos de igual (b) Segundo experimento: Un camino 2 veces
longitud más largo que el otro
30 min
124
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Esta información química depositada en los caminos hizo que las otras hormigas sintieran
preferencia por el camino con más feromona y al final, todas las hormigas terminaron
circulando por uno de los caminos. Este fenómeno es un proceso de retroalimentación
positiva o autocatalítico el cual corresponde a un comportamiento auto-organizativo de
las hormigas. El proceso empieza con un patrón microscópico que hace emerger un
comportamiento macroscópico. Esto es un ejemplo de comunicación indirecta, en la cual
las hormigas coordinan sus actividades a través de modificaciones del ambiente en el que
se mueven.
125
Capítulo 3. OCH
1. Ida: Caminar hacia el nodo destino (alimento) de forma probabilística y construir una
ruta que conecte el nodo fuente y el nodo destino.
126
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Fuente
0 1 2 3
1 0.5
3 1 0.5
1
4 5 6 7
1 1.5
1 1 1
1 1
2 1
8 9 10 11
Destino
A continuación se amplían los aspectos a tener en cuenta en cada uno de los pasos
anteriores. A cada arco Ai,j del grafo se asocia una variable τi,j que representa la cantidad
de feromona depositada en ese arco. La cantidad de feromona depositada en cada arco es
proporcional a la calidad de la solución encontrada por la hormiga.
En el trayecto de ida la hormiga artificial debe seleccionar, partiendo del nodo fuente, el
siguiente nodo del grafo que le permite avanzar, paso a paso, hacia al nodo destino. La
escogencia del arco se realiza de forma probabilística basándose en la cantidad de feromona
de cada arco. La probabilidad, abarca todos los nodos vecinos excepto el nodo anterior. Los
callejones sin salida son los únicos casos en los que es posible devolverse a un nodo ya visitado.
La situación anterior se presenta en grafos no completos.
El principal inconveniente que se presenta en la ida es la posibilidad de que se formen
ciclos o trayectorias cerradas. La formación de estos ciclos puede producir, eventualmente, que
la hormiga artificial quede atrapada en ellos. Si se considera la posibilidad de que la hormiga
deposite feromona en el trayecto de ida, estos ciclos pueden potenciar el efecto autocatalítico
de la feromona en los arcos que forman el ciclo, y la hormiga nunca saldrá de ellos. La solución
obvia es considerar que el deposito de feromona sólo se realice en el trayecto de vuelta al nodo
fuente. Aún así es necesario destruir los ciclos antes de empezar el trayecto de vuelta.
Inicialmente, todos los arcos del grafo deben tener la misma cantidad inicial de feromona
para que la probabilidad de escogencia sea igual para todos. Es común encontrar en la literatura
un valor inicial τi,j = 1, ∀(i, j) ∈ A.
La probabilidad de escogencia de un nodo vecino corresponde a una distribución por
secciones en una ruleta (ver sección 2.8.2.2, pág 77). La expresión (3.1) corresponde a la
Probabilidad de
probabilidad que tiene una hormiga k, estando posicionada en el nodo i, de ir a un nodo j, escoger un nodo
teniendo en cuenta los rastros de feromona de los arcos conectados al nodo i. vecino
127
Capítulo 3. OCH
( α
τij
P α
τil
si j ∈ Nik
pkij = l∈N k
i (3.1)
0 si j ∈
/ Nik
Donde Nik es el vecindario de la hormiga k que está ubicada en el nodo i. Es decir, el
conjunto de nodos directamente conectados al nodo i, excepto el nodo predecesor. Esta última
condición evita que la hormiga se devuelva al nodo anterior.
Cuando Nik = {Φ}, se refiere a un callejón sin salida como en el caso del nodo 8 en la
figura 3.2. Sólo en este caso es posible que la hormiga se devuelva al nodo anterior, o sea, que
este nodo es incluido en el conjunto Nik .
El parámetro α determina el grado de aleatoriedad del proceso de optimización. Para
valores α >> 1 la influencia de las fluctuaciones aleatorias iniciales es amplificada y si, por
ejemplo, el camino largo es inicialmente escogido, la colonia entera converge rápidamente a este
camino por las características auto-catalíticas (efecto de bola de nieve) del algoritmo. Con α =
1 la técnica de OCH se desempeña eficientemente en la mayoría de problemas y la escogencia
del nodo vecino se convierte en un proceso de selección proporcional usando la ruleta. Por lo
anterior, en este problema en particular, α = 1.
La hormiga avanza aplicando estas políticas, paso a paso, hasta que eventualmente
encuentra el nodo destino. Una vez esto suceda, la hormiga comienza su recorrido de vuelta al
hormiguero.
La evaporación decrementa los rastros de feromona con una velocidad exponencial. En
el algoritmo OCH-S la evaporación es realizada cada vez que la hormiga k se mueve al siguiente
Deposito de
feromona
nodo de acuerdo a las políticas anteriores. Es decir, en este algoritmo, de forma excepcional, la
evaporación es realizada en el trayecto de ida. Sin embargo, en forma general, la evaporación
es aplicada en el trayecto de vuelta justo antes de depositar la feromona y se puede realizar en
un solo paso, aplicando la expresión (3.2) a todos los arcos del grafo. Esta última estrategia es
la que se adopta en esta sección.
Los rastros de feromona, de todos los arcos, son evaporados aplicando la siguiente
ecuación:
128
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Fuente Fuente
0 1 2 3 0 1 2 3
1 0.5 1 0.5
1 1
3 0.5 3 0.5
1 1
1 1
4 5 6 7 4 5 6 7
1 1.5 1 1.5
1 1 1 1
1 1 1 1 1 1
2 1 2 1
8 9 10 11 8 9 10 11
Destino Destino
(a) Ruta con un ciclo (b) Ruta sin ciclos
R/: Se selecciona el nodo en la primera posición (posición inicial Pi ) del vector (nodo 0
en este caso) y se realiza una búsqueda de éste en el vector, empezando de la última posición
hasta la posición donde se encuentre la primera repetición del nodo (posición final Pf ). Cuando
el nodo sea encontrado en el vector se compara la posición donde fue encontrado Pf con la
posición inicial Pi . Si las posiciones son diferentes (Pf > Pi ) entonces se ha encontrado un
ciclo. En este caso Pi = Pf = 1. Como no se encontró un ciclo, se continúa el proceso con el
siguiente nodo de izquierda a derecha.
Se selecciona el nodo en la segunda posición del vector (nodo 5 en este caso) y se realiza
la búsqueda del nodo 5, empezando de la última posición hasta la posición donde se encuentre
la primera repetición. Se encuentra que para el nodo 5 Pi = Pf = 2. Como no se encontró un
ciclo, se continúa con el siguiente nodo.
Para el nodo 6, Pi = 3 mientras que pf = 7. Como Pf > Pi se ha encontrado un ciclo
entre las posiciones Pi + 1 = 4 y 7. Si se elimina el ciclo, la ruta definitiva es {0, 5, 6, 7, 11},
como se muestra en la figura 3.3b. El proceso se debe repetir hasta que no existan más ciclos
en la ruta.
129
Capítulo 3. OCH
Después de que los ciclos son eliminados, la hormiga comienza el trayecto de vuelta a
la fuente siguiendo la ruta construida en el trayecto de ida. Durante este viaje, la hormiga k
deposita sobre cada arco que pasa una cantidad ∆τ k de feromona. Por lo tanto, la actualización
de los rastros de feromona obedece a la siguiente expresión.
En el caso del PRMC, la cantidad ∆τ k puede ser un valor constante, debido a que el
problema es simple. Sólo considerar las diferencias de longitud entre las rutas encontradas, es
suficiente para que la hormiga encuentre el camino más corto. Sin embargo, de forma general, la
cantidad de feromona depositada ∆τ k debe estar asociada a la calidad de la solución encontrada
(función de adaptación). Esto establece una sensibilidad entre la función objetivo y cambios en
las variables del problema.
La aplicación de OCH es particularmente interesante en la solución de problemas
NP-difíciles representados a través de grafos. Entre las características particulares del método
OCH se destaca el hecho de que es una metaheurística constructiva basada en población que
explota de forma indirecta la memoria del desempeño previo del algoritmo. Esta combinación
de características no es encontrada en ninguna de las otras metaheurísticas (Dorigo and Stützle,
2004).
Algoritmos más sofisticados y eficientes son versiones mejoradas del algoritmo OCH-S.
Las mejoras se centran principalmente en la expresión probabilística, cantidades iniciales de
feromona y en los métodos usados para calcular la cantidad de feromona depositada. sin
embargo, los pasos básicos, en los cuales se construyen soluciones haciendo trayectos de ida y
vuelta, permanecen inalterados.
130
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
n ← número de ciudades
describe el pseudo-código de cada una de las funciones básicas, las cuales, a su vez, llaman
otras funciones que también serán descritas.
La línea 1, del algoritmo 3.2, inicializa en cero la matriz de memoria de las hormigas
[M]m×n . Esta matriz contiene información, que permite construir un circuito Hamiltoniano,
relacionada con las ciudades que ya han sido visitadas. Si el elemento Mi,j = 0 significa que
la ciudad j no ha sido visitada por la hormiga i. Si Mi,j = 1 significa que la ciudad j ya fue
visitada por la hormiga i.
La linea, 2 del algoritmo 3.2, utiliza la variable Paso como un contador del número
de ciudades que han sido visitadas. El ciclo comprendido entre las líneas 3 y 7 escoge
aleatoriamente, para cada hormiga, una ciudad y la asigna como la primera ciudad visitada.
Es decir, se está ubicando cada una de las hormigas en una ciudad aleatoria para empezar la
construcción del circuito.
Otro aspecto importante es incorporar en la expresión probabilística (3.1), usada en el
algoritmo OCH-S, información adicional que permita mejorar la sensibilidad del algoritmo, no
sólo con respecto a la función objetivo (distancia total del circuito) sino también con respecto a
la longitud de cada arco.
Incorporar este tipo de información determinística en el PAV mejora el desempeño de
cualquier metaheurística que aborde este problema específico (Dorigo and Stützle, 2004). De
esta manera se puede generar una expresión que establezca un compromiso adecuado entre la
información determinística dada por las longitudes de los arcos y la información probabilística
131
Capítulo 3. OCH
2 Paso ← 1
3 for k ← 1 to m do
4 r ← random {1 . . . n}
5 C (k,Paso)← r
6 M (k,r)← 1
7 end
8 while Paso < n do
9 Paso ← Paso +1
10 for k ← 1 to m do
11 CiudadIni ← C (k,Paso-1)
14 M (k,CiudadDest)← 1
15 end
16 end
/* Computar la longitud de
ada
ir
uito k. */
17 for k ← 1 to m do
18 L (k) ← ComputarLongitudTour(C (k),D,N ) /* alg. 2.4, p.35 */
19 end
Algorithm 3.2: Algoritmo para construir soluciones
132
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
dada por los depósitos de feromona en los mismos. La expresión 3.4 involucra los dos tipos de
información en el proceso de optimización y le da un grado de importancia a cada uno a través
de los parámetros α y β .
[τij ]α [ηij ]β
pkij =P α β
sij ∈ Nik (3.4)
l∈N k [τil ] [ηil ]
i
Como en este caso se trata de un problema de minimización, los arcos con menor longitud
deben ser más atractivos que los de mayor longitud. Así, se establece una relación inversamente
proporcional a la distancia de cada arco, dada por ηij = 1/dij .
Nótese que si en (3.4) α = 0 el comportamiento del algoritmo tiende a ser determinístico,
ya que los nodos vecinos más cercanos al nodo actual tendrán mayor probabilidad de ser
escogidos. Este caso corresponde a un algoritmo goloso estocástico. Si β = 0, sólo será
usada la información de los depósitos de feromona, lo cual afecta el desempeño del algoritmo
y puede ocasionar convergencias a óptimos locales (Dorigo and Colorni, 1996).
Algunos valores recomendados para los parámetros usados en OCH son: α = 1, β =
[1 . . . 5], ρ = 0.5, m = n y τ0 = m/C nn . En donde ρ es la tasa de evaporación, m es el número
Valores reco-
de hormigas, n es el número de ciudades, τ0 es la cantidad de feromona inicial en todos los arcos mendados de
y C nn es la longitud del circuito obtenido usando los nodos vecinos más cercanos, es decir un parámetros
circuito obtenido de forma determinística.
El ciclo comprendido entre las líneas 8 y 15 del algoritmo 3.2, hace que las m hormigas
avancen una ciudad a la vez usando la probabilidad calculada con la expresión (3.4). La ciudad
es escogida usando la función EscogerCiudadDestino, que se muestra en el algoritmo 3.3.
Estos pasos de construcción son repetidos hasta que las hormigas completen un circuito. Cada
hormiga visita exactamente n ciudades.
Es importante tener en cuenta que un circuito Hamiltoniano conecta la última ciudad
visitada con la primera. No es necesario almacenar explicitamente esta información en la
matriz [C]m×n , que contiene la información de los circuitos construidos por cada hormiga. Sin
embargo, a la hora de calcular la función objetivo (longitud total del circuito) se debe tener en
cuenta esta último tramo del circuito.
La función del algoritmo 3.3 es calcular las probabilidades de todos los arcos conectados
a la ciudad donde la hormiga se encuentra ubicada (CiudadIni). Posteriormente, basándose en
estas probabilidades, escoger una ciudad de destino.
El ciclo comprendido entre las líneas 3 y 7 del algoritmo calcula el denominador de la
expresión (3.4). El ciclo entre las líneas 8 y 12 calcula las probabilidades de selección de cada
ciudad vecina. La línea 13 implementa el método de selección proporcional por ruleta para
escoger una ciudad de destino. El algoritmo 2.9 (pág. 78) muestra el pseudo-código de la
selección de un vecino usando la ruleta.
En problemas de gran tamaño, con grafos no completos es conveniente incorporar una
estrategia basada en lista de candidatos. Usar una lista de candidatos, restringe el número de
Lista de
posibles ciudades vecinas en cada paso de construcción de un circuito. Una lista de candidatos candidatos
contiene un número de las mejores ciudades vecinas de acuerdo a algún criterio heurístico. En
133
Capítulo 3. OCH
3 for j ← 1 to n do
4 if M (k,j)= 0 then /* Si la
iudad no ha sido visitada */
5 Denominador ← Denominador + τ (i,j)α (1/D (i,j))β
6 end
7 end
8 Contador ← 1
9 for j ← 1 to n do
10 if M (k,j)= 0 then /* Si la
iudad no ha sido visitada */
11 τ
Pi (Contador) ← ( (i, j) (1/D (i,j))β )/Denominador
α
12 CnoVisitada (Contador) ← j
13 Contador ← Contador +1
14 end
15 end
16 CiudadDest ← CnoVisitada (Sele
ionRuleta(Pi , Contador-1)) /* alg. 2.9, p.
78 */
Algorithm 3.3: Algoritmo para escoger probabilísticamente la ciudad de destino
134
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
el caso del PAV, la lista de candidatos contiene un número s de las ciudades j más cercanas a
cada ciudad i. Existen varias formas de determinar cuales ciudades entran a la lista.
Una forma consiste en ordenar los vecinos de una ciudad i en orden creciente de acuerdo
a las distancias di,j e incorporar a la lista las s primeras ciudades. Como el grafo es estático
y las distancias no cambian, este proceso sólo se hace una vez. Cuando está en la ciudad i, la
hormiga escoge la siguiente ciudad de destino de la lista de ciudades candidatas asociadas a la
ciudad i que aún no han sido visitadas.
Cuando todas las ciudades candidatas han sido visitadas, sólo en este caso, la siguiente
ciudad se escoge de forma tradicional. En el caso del PAV, los resultados experimentales
han mostrado que el uso de listas de candidatos mejoran el desempeño del algoritmo OCH
(Dorigo and Colorni, 1996).
La segunda función básica corresponde a la función BusquedaLocal. Este paso es
realmente una etapa de intensificación que utiliza la estructura de vecindad del problema para
realizar una exploración que permita, eventualmente, mejorar la calidad de las soluciones
actuales. En la sección 2.3.1 (pág. 36) se discutió la estructura de vecindad para el PAV. Allí se
presentó una heurística que permite explorar el vecindario de un circuito Hamiltoniano con gran
eficiencia, conocida como k-opt. En este caso se utiliza el caso especial 2-opt que ha mostrado
gran desempeño en este tipo de problemas.
Realizar una exploración exhaustiva de los vecinos de un circuito en problemas de gran
tamaño usando 2-opt, resulta una tarea de gran esfuerzo computacional. Por esta razón, la
exploración se realiza aplicando 2-opt un número t de veces sobre nodos del circuito escogidos
aleatoriamente. En el algoritmo 3.4, el ciclo entre las líneas 2 y 10 es el encargado de realizar
dicha exploración.
Un esquema de aceptación de vecinos puede ser basado en la regla del primer
mejoramiento, que consiste en aceptar la solución vecina que primero mejore la solución actual
(ver sección 1.3, pág. 6).
Finalmente, la tercera función básica Actualizarτ (algoritmo 3.5) es la encargada de
actualizar la matriz de feromonas. La actualización consta de dos pasos: la evaporación en
todos los arcos del grafo utilizando una tasa de evaporación ρ, según la expresión (3.2) y la
actualización de los arcos pertenecientes al circuito construido por la hormiga, adicionando una
cantidad de feromona proporcional a la calidad del circuito, según la expresión (3.3).
El método OCH discutido en este capitulo corresponde al planteamiento más simple de
todos. Sobre este esquema básico se pueden realizar muchas modificaciones con el fin de
mejorar el desempeño del algoritmo. Algunas de estas modificaciones y adaptaciones son:
• Se pueden incorporar límites máximos y mínimos en los depósitos de feromona con el fin
de mejorar la selectividad. En ausencia de estos límites, la feromona de todo el sistema
puede llegar a valores cercanos de cero a causa de una mala selección de la tasa de
evaporación, en cuyo caso las hormigas pierden la capacidad de selección. Por otro lado,
arcos con depósitos de feromona muy elevados pueden llevar a convergencias prematuras.
135
Capítulo 3. OCH
1 for k ← 1 to m do
2 for i ← 1 to t do
3 Ve
ino ← 2opt(C (k, ∗),n) /* (k, ∗) ≡ Toda la k-ésima fila */
4 FobjVe
ino ← ComputarLongitudTour(Ve
ino, D, n) /* alg. 2.4, p.35
*/
5 if FobjVe
ino < L (k) then /* Criterio de a
epta
ión de ve
ino: primer
mejoramiento */
6 (k, ∗) ← Ve
ino
C
136
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
• Para evitar los problemas de selección mencionados en el ítem anterior, se pueden utilizar
otros esquemas de selección como, por ejemplo, selección por torneo.
137
Capítulo 3. OCH
desde ciertos depósitos a sus consumidores finales y la necesidad de planear una ruta de regreso
del vehículo no vacío a la ciudad de origen.
En las últimas décadas han aparecido diferentes propuestas para resolver problemas de
ruteo de vehículos con solo restricciones básicas de capacidad. En (Toth and Vigo, 2014) se
menciona la primera aproximación para la formulación de un problema para el problema de
distribución de combustible.
En (Clarke and Wright, 1964) se propone el primer algoritmo heurístico efectivo para
la solución del CVRP (Capacitated Vehicle Routing Problem), denominado algoritmo de los
ahorros, este método comienza con rutas que sólo están formadas por el depósito y un solo
nodo. A cada paso del algoritmo se unen dos rutas si se genera un ahorro en distancia o en la
variable objetivo que se esté buscando optimizar.
El problema de Ruteo de Vehículos con Múltiples Depósitos con consideraciones de
Backhaul (MDVRPB) es considerado NP-hard y ha sido poco explorado en la literatura. La
literatura relacionada con el MDVRPB puede ser clasificada en tres categorías principales:
(i) recogidas y despachos simultáneos; (ii) recogidas y despachos mixtos; y (iii) recogidas
exclusivamente después de haber realizado despachos. En (Salhi and Nagy, 1999) se propone
un algoritmo heurístico para resolver el MDVRPB con recogidas y despachos mixtos. El
algoritmo está basado en la idea de “clientes frontera”, los cuales son clientes ubicados
aproximadamente en la mitad de dos depósitos. En (Min et al., 1992) se introduce por primera
vez el problema de MDVRPB considerando recogidas después de haber realizado entregas.
Dos algoritmos basados en colonias de hormigas para resolver el problema de ruteo de
vehículos con múltiples depósitos con estrategia mixta de recogida y despacho son presentados
en (Wade and Salhi, 2003) y (Wade and Salhi, 2001). Finalmente, algoritmos genéticos
para el MDVRPB han sido propuestos por Ho et al. (2008), Chunyu and Xiaobo (2009a),
Chunyu and Xiaobo (2009b) y Chunyu et al. (2009).
El problema de MDVRPB es una extensión del VRPB considerando m depósitos
potenciales desde donde se pueden generar las diferentes rutas de atención. En el MDVRPB
todos los depósitos no son necesariamente usados.
El MDVRPB puede ser formulado a través de un problema de teoría de grafos de la
siguiente manera: sea G = (V, A) donde V = 1, . . . , n + m es el conjunto de vértices y A
es el conjunto de arcos. El conjunto V es dividido en dos subconjuntos: N = 1, . . . , n y
M = n + 1, . . . , n + m. Donde N es el conjunto de clientes, que a su vez se subdivide en
el subconjunto de nodos a los que se entrega mercancía (clientes Linehaul - L) y subconjunto
de nodos a los cuales se les recoge mercancía (clientes Backhaul - B), es decir N = L ∪ B.
Finalmente, M es el conjunto de depósitos potenciales.
Una cantidad no negativa dj de productos debe ser entregada o recogida asociada con cada
cliente n ∈ N. Cada uno de los depósitos posee una demanda ficticia (d0 = 0), y un conjunto
K de vehículos idénticos con una capacidad dada Q. Cij es un costo no negativo asociado con
cada arco (i, j) ∈ A, con cii = +∞ para cada i ∈ V y con cij = cji para cada i, j ∈ V tal que
i 6= j. El objetivo es encontrar el menor costo (distancia recorrida) de una colección de r rutas,
donde se cumplan las siguientes condiciones:
• Cada ruta parte del depósito m, visita los vértices y regresa al mismo depósito m de inicio.
138
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
X X X
Min z = Cij xijk (3.5)
i∈C∪D j∈C∪D k∈K
sujeto a:
X X
xijk = 1 i∈C (3.6)
k∈K j∈C∪D
X X
xijk = xjik j ∈ C ∪ D, k ∈ K (3.7)
i∈C∪D i∈C∪D
X X
xijk = 1 k∈K (3.8)
i∈D
/ j∈C
X X
qi xijk 6 Sk k∈K (3.9)
i∈L j∈C∪D
X X
qi xijk 6 Sk k∈K (3.10)
i∈B j∈C∪D
X X
qi xijk 6 1 k∈K (3.11)
i∈L i∈B
xijk ∈ {0, 1} (3.12)
139
Capítulo 3. OCH
140
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
• Vector de clientes factibles linehaul: se inicializa con los clientes Linehaul que pueden ser
elegidos dentro del recorrido y se van eliminando del vector a medida que son visitados,
su primer elemento será 1 y su último elemento será el número total de clientes Linehaul
(nl). (Figura 3.7)
• Vector clientes Backhaul factibles: se inicializa con los clientes Backhaul que pueden ser
elegidos dentro del recorrido y se van eliminando del vector a medida que son visitados,
141
Capítulo 3. OCH
• Vector ruta solución: se inicia con un número de un depósito, se continua con un conjunto
de clientes Linehaul y luego un conjunto de clientes Backhaul y se pasa nuevamente con
el deposito inicial. Después, se continua a otro deposito que puede ser el mismo anterior
ya que se cuenta con varios vehículos por deposito u a otro nuevo depósito según sea
elegido por el algoritmo. Lo anterior se repite hasta recorrer todos los clientes Linehaul
y Backhaul, se conforma entonces una ruta completa, que es a su vez la ruta completa de
una hormiga (Figura 3.9).
• Matriz de rutas solución: en esta matriz se almacenan los vectores de las soluciones
halladas. Su cantidad de filas es igual al número de iteraciones multiplicado por el número
de hormigas. Su número de filas corresponde al número de iteraciones por el número de
depósitos y la cantidad de columnas será como mínimo el número de clientes más el
número de depósitos para satisfacer las recolecciones y demandas de estos. En la Figura
3.10 se muestra un posible conjunto de vectores solución para el caso en que se tengan
tres depósitos, cuatro clientes Linehaul (entrega) y tres clientes Backhaul (recogida).
142
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
143
Capítulo 3. OCH
144
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
los clientes linehaul y backhaul desde los diferentes depósitos se tendrá la ruta
consolidada D2 − L1 − L6 − L7 − B5 − B1 − B6 − D2 − D1 − L4 − L2 −
L3 − L5 − D1 − D3 − B4 − B3 − B2 − B7 − D3 como se muestra en 3.14.
145
Capítulo 3. OCH
3.5 Ejercicios
Ejercicio 3.1. En la figura 3.15 se muestran las distancias de cada arco dij , la cantidad de
feromona inicial τi,j = 1 ∀(i, j) y la configuración del grafo de un PRMC.
146
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
a. Usar dos hormigas y el algoritmo OCH-S para construir dos rutas del PRMC
mostrado en la figura 3.15. Adicionar una tercera ruta compuesta por los nodos
{1, 10, 11, 15, 16, 13, 12, 11, 15, 16, 13, 14, 19, 16, 13, 14, 9}.
b. Con el conjunto de las tres rutas, iniciar el trayecto de vuelta al nodo fuente.
c. Una vez actualizada la feromona en el paso anterior, realizar otro trayecto de ida al nodo
destino. Entregar el valor de la mejor ruta encontrada.
Utilizar una tasa de evaporación ρ = 0.01 y α = 1. Usar una estrategia que permita
asociar la calidad de la ruta encontrada con la cantidad de feromona depositada.
i j d ij τ ij
5
1 2 0.7172 1
2 3 0.7172 1 4
3 4 0.7172 1 6
4 5 0.7172 1
5 6 0.7172 1 3
6 7 0.7172 1
7 8 0.7172 1 7
8 9 0.7172 1
9 14 0.7172 1
12
14 18 0.7172 1 2 8
18 19 2.2361 1
1 10 0.7172 1 FUENTE 1 11 13 9
10 11 0.7172 1 DESTINO
11 12 2.2361 1
12 13 2.2361 1
13 14 0.7172 1
10 15 0.7172 1 10 15 16 14
11 16 0.7172 1
13 17 0.7172 1
16 17 2 1
15 19 2.2361 1 17 19
15 18 4 1 18
11 13 4 1
Ejercicio 3.2. El algoritmo OCH discutido en este capítulo permite resolver PAV simétricos y
completos. Qué modificaciones se tendrían que realizar para adaptar este algoritmo a:
a. un PAV asimétrico.
b. un PAV no completo.
Ejercicio 3.3. Implementar un algoritmo OCH para resolver el problema de coloreo de grafos
planteado en la sección 2.3.2 (pág. 39).
Ejercicio 3.4. Implementar un algoritmo OCH para resolver el problema de asignación
generalizada planteado en la sección 2.4 (pág. 41).
Ejercicio 3.5. Descargar diferentes casos de prueba, simétricos y completos de las páginas de
Internet:
http://www.iwr.uni-heidelberg.de/groups/
omopt/software/TSPLIB95/tsp/
http://www.resear
h.att.
om/~dsj/
htsp/
Obtener las soluciones usando el algoritmo OCH presentado en este capitulo.
Ejercicio 3.6. A continuación se presenta un caso de prueba clásico de 26 ciudades. Resolver
usando el algoritmo OCH-S.
147
Capítulo 3. OCH
148
Recocido simulado
4
Tres investigadores de IBM society (S. Kirkpatrick, C.D. Gelatt y M.P. Vecchi) propusieron
en 1982, y publicaron en 1983, un nuevo método iterativo, denominado recocido simulado
(SA, simulated annealing) (Kirkpatrick et al., 1983), cuya principal característica es que puede
escapar de óptimos locales. Un trabajo similar, desarrollado independientemente y al mismo
tiempo, fue publicado por Cerny (1985).
El algoritmo de SA puede interpretarse como iteraciones sucesivas del algoritmo de
Metrópolis (Metropolis et al., 1953) en las que se evalúa y decrementa de forma controlada la
temperatura o parámetro de control. El algoritmo de Metrópolis simula el proceso físico basado
en temperatura en el que los sólidos obtienen estados de baja energía o equilibrio térmico, este
proceso es conocido como recocido de sólidos. Durante este proceso, la energía libre del sólido
es minimizada.
Un ejemplo que ilustra el fenómeno natural de optimización de estructuras de solidos es
el nacimiento de un monocristal. La técnica de recocido consiste en calentar un material para
inyectar un estado energético superior. Luego, el material es enfriado lentamente, es decir,
manteniendo la temperatura, en cada estado del proceso de enfriamiento, durante un tiempo
suficiente. Si el decremento en la temperatura es muy rápido, se pueden presentar defectos
los cuales pueden ser eliminados posteriormente, a través de un recocido local. Esta estrategia
de decremento controlado de la temperatura permite encontrar un estado sólido cristalizado, el
cual corresponde a un estado estable del sistema. Es decir, corresponde a un mínimo absoluto
de energía. En esta técnica el enfriamiento del material causa una transformación de un estado
de desorden a un estado de orden.
En optimización combinatorial se desarrolla un proceso similar analizando el proceso
de recocido de sólidos. Este proceso puede ser formulado como un problema que encuentra,
entre muchas soluciones, aquella que tenga mínimo costo. Así, se establecen las siguientes
correspondencias:
149
Capítulo 4. Recocido simulado
La idea original que dio lugar a esta metaheurística se denomina algoritmo de Metrópolis,
el que a su vez está basado en el método de Monte Carlo, con el cual se estudian las propiedades
Algoritmo de
Metrópolis
de equilibrio en el análisis del comportamiento microscópico de los cuerpos. Este algoritmo
permite simular la evolución de un sistema físico hacia su balance termodinámico a una
temperatura dada (Metropolis et al., 1953).
El algoritmo de metrópolis se basa en la técnica de Monte Carlo para generar una
secuencia de estados del sólido en su proceso de enfriamiento. Si se tiene un estado actual del
sólido i con energía Ei , entonces el subsiguiente estado j con energía Ej es generado aplicando
un mecanismo de perturbación consistente en provocar una pequeña distorsión en el estado
actual. Si la diferencia de energía entre estados, Ej − Ei , es menor o igual a cero, el estado j
es aceptado como el estado actual. Si la diferencia de energía es mayor a cero, el estado j es
aceptado con cierta probabilidad, la cual esta determinada por el factor de Boltzmann:
E −E
− kj T i
e B (4.1)
Donde T denota la temperatura y KB es una constante física conocida como constante de
Boltzmann.
Es importante resaltar que todo el planteamiento del algoritmo es inicialmente concebido
para problemas de minimización y, por lo tanto, siempre será considerado que existe un
El algoritmo
de SA es
mejoramiento del estado actual cuando Ej − Ei ≤ 0. Sin embargo, en términos generales,
concebido un mejoramiento existe cuando se presenta un decremento en la energía del sistema.
para En optimización un movimiento (un vecino) será aceptado si éste mejora la función
problemas de objetivo; o en caso contrario, si su probabilidad de aceptación es mayor que un número aleatorio
minimización
uniformemente distribuido. Este tipo de estrategias permiten que el algoritmo escape de óptimos
locales. En la medida en que evoluciona el proceso, disminuye la temperatura, se incrementa
la longitud de la cadena y por lo tanto, disminuye la probabilidad de aceptar soluciones de peor
calidad.
La codificación del problema define el espacio de búsqueda y por consiguiente la
estructura de vecindad. Este aspecto juega un papel fundamental en la eficiencia del algoritmo
debido al concepto de proximidad entre estados energéticos. En un sistema real un estado
energético es una transformación continua del estado energético anterior y por lo tanto, una
pequeña perturbación produce un pequeño cambio energético.
150
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
¯ +
∆E
T0 = (4.3)
m2
ln m2 τ0 −m1 (1−τ0 )
151
Capítulo 4. Recocido simulado
¯ +
Donde ∆E es el valor promedio, únicamente, de las transiciones que degradaron la
función objetivo.
Los valores 12 y 100 pueden ser ajustados de forma diferente, dependiendo del problema
Equilibrio que se esté abordando. Cuando se cumple una de las dos condiciones anteriores se dice
termodinámico que el sistema alcanzó el equilibrio termodinámico.
N indica el número de variables del problema. Por ejemplo, para el problema del
Una mayor agente viajero con 230 ciudades, N = 230 y para el problema de asignación generalizada
longitud en con 100 tareas y 5 agentes, N = 500. A medida que la temperatura disminuye, menos
la cadena alternativas vecinas (perturbaciones) son aceptadas, y por lo tanto la exploración del
de Markov vecindario en busca de una mejor alternativa se intensifica hasta revisar, en el peor caso,
significa
mayor explo-
100N alternativas vecinas. Esto significa que a medida que la temperatura disminuye la
ración del longitud de la cadena de Markov aumenta implícitamente.
vecindario
El aumento de la cadena de Markov también puede hacerse de forma explícita,
haciendo que la segunda condición de equilibrio termodinámico aumente un porcentaje
determinado, en cada iteración o cambio de estado k. Se puede usar la ley geométrica
para activar un cambio de estado:
152
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
• Temperatura final: este parámetro define el criterio de parada del algoritmo. Puede ser
usado el criterio de activar la finalización del algoritmo cuando se alcanzan más de n
estados de temperatura sin ninguna aceptación de vecinos. Generalmente n es un valor
entero entre 3 y 5. También se puede utilizar un número determinado de cambios de
estado o iteraciones.
153
Capítulo 4. Recocido simulado
Alternativa inicial π i
Función objetivo F (π i )
Longitud Cadena ρ ∝ N
Temperatura inicial T
si
?
no
Salida:
k =1 Incumbente
ρ = β ⋅ρ
T = α ⋅T
si
k≥ρ?
no
Calcular F (π j )
k = k +1
154
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
de reversibilidad establece que para cualquier cambio permitido en el sistema debe permitirse
también una oposición al cambio. La propiedad de conectividad establece que cualquier
estado del sistema puede ser alcanzado comenzando desde cualquier otro estado, en un número
finito de cambios elementales. Estas dos propiedades permiten justificar el decremento de
la temperatura en estados, de lo cual depende la velocidad de convergencia del algoritmo, y
garantiza que una solución de buena calidad puede ser encontrada en un tiempo polinomial para
ciertos problemas NP-difíciles (Aarts and Van Laarhoven, 1985).
Sin embargo, otros autores enfocaron sus estudios en el comportamiento asintótico del
método (Hajek, 1988; Hajek and Sasaki, 1989). El principal resultado de este trabajo es que
mostró que el algoritmo de SA converge a un óptimo global con una probabilidad igual a la
unidad si, cuando en un tiempo t → ∞, la temperatura T (t) no decrementa más rápidamente
que la expresión C/log(t), donde C es una constante que depende del problema. Este resultado
significa, que hasta ahora no existe un método lo suficientemente generalizado y unánime para
ser aplicado a cualquier tipo de problema.
Desde el punto de vista práctico, la técnica de SA generalmente consigue soluciones
de buena calidad, se considera un método general que puede ser aplicado a muchos tipos
de problemas y es de fácil implementación. Los problemas abordados con esta técnica, que
mejores resultados presentan, son aquellos cuya codificación permite una evaluación rápida
y directa de la función objetivo después de cada perturbación. Esto evita alcanzar tiempos
computacionales prohibitivos.
Algunas verificaciones importantes, que muestran un adecuado ajuste de los parámetros
involucrados en la técnica de SA, son las siguientes:
Ejemplo 4.1.
Con base en el diagrama de flujo de la figura 4.1, plantear el algoritmo, en pseudo-código, de
la técnica de SA aplicada al problema de secuenciamento regular (flow-shop), estudiado en la
sección 2.5.1 (pág. 50). Utilizar los siguientes parámetros: τ0 = 0.8, ρ = n × m, α = 0.97,
β = 1 y k = 100. Utilizar como criterio de parada un número η = 300 de cambios de estado
sin mejorar la incumbente. Para generar un vecino, utilizar la permutación simple de dos tareas.
R/: El algoritmo 2.6 corresponde a la función que permite obtener el valor de la función
objetivo (Cmax ) del problema flow-shop. Usando esta función, el pseudo-código es el que se
muestra en el algoritmo 4.1
Ejemplo 4.2.
Utilizar el algoritmo 4.1 para resolver un problema con 20 tareas (n = 20) y 5 máquinas
(m = 5). Los tiempos de procesamiento de cada tarea son dados en la taba 4.1. Estos datos
155
Capítulo 4. Recocido simulado
156
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
In umbente.Alternativa: Configuración de la
incumbente.
ont: Número de Cambios de estado sin mejorar
incumbente
1 if Cmaxj -Cmaxi ≤ 0 then /* A
epta un ve
ino */
2 πi ← πj
3 Cmaxi ← Cmaxj
4 end
5 else /* A
epta un ve
ino
on una probabilidad */
−(Cmax −Cmax )
j i
6 if random ≤ e T then
7 πi ← πj
8 Cmaxi ← Cmaxj
9 end
10
11 if Cmaxi < In
umbente.Fobj then
12
ont ← 0
13 In umbente.Fobj ← Cmaxi
14 In umbente.Alternativa ← πi
15 end
Algorithm 4.2: Regla de aceptación de Metropolis
157
Capítulo 4. Recocido simulado
corresponde a un caso de prueba reconocido, que puede ser encontrado en la siguiente dirección
en Internet:
http://mistic.heig-vd.ch/taillard/
Secuencia Cmax
Alternativa1 9 15 6 3 14 8 17 4 19 5 18 7 11 1 16 2 13 10 20 12 1278
Alternativa2 9 15 6 11 17 3 14 5 7 19 8 18 16 13 4 2 1 10 20 12 1278
Alternativa3 9 15 1 3 6 4 11 2 19 13 17 14 5 18 7 8 16 10 20 12 1278
Alternativa1 Alternativa2
41 41
m1 m1
40 40
39 39
m2 m2
38 38
37 37
m3 m3
36 36
35 35
m4 m434
34
33 33
m5 m5
32 32
0 200 400 600 800 1000 1200 1400 0 200 400 600 800 1000 1200 1400
Alternativa3
41
m1
40
39
m2
38
37
m3
36
35
m434
33
m5
32
0 200 400 600 800 1000 1200 1400
158
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
4.1 Ejercicios
Ejercicio 4.1. Sobre el problema de flow-shop del ejemplo 4.2:
peso(kg) = 6 5 7 3 8 4 10 4 8 5
b. Usar los datos presentados para ejecutar una iteración del algoritmo de SA. Escoger de form
adecuada todos los parámetros necesarios.
Ejercicio 4.4. El problema de partición de números consiste en que se tiene una secuencia de
n números racionales positivos, definida por:
A (a1 , a2 , a3 , . . . , an )
El problema consiste en encontrar una secuencia:
S (s1 , s2 , s3 , . . . , sn ), donde si ∈ {−1, +1}
que minimice la función objetivo: P
u = | ni=1 si ai |
Así, para la secuencia A = {7, 15, 3, 6, 10, 12, 4, 118, 13, 2, 11}:
b. Ejecutar una iteración usando el algoritmo anterior. Escoger de forma adecuada todos los
parámetros necesarios.
159
Capítulo 4. Recocido simulado
160
Búsqueda tabú
5
La palabra tabú (ó taboo) es originaria del Tonga (idioma polinesio) y se usa para indicar cosas
que no pueden ser tocadas dado que son sagradas. En la actualidad esta palabra significa una
prohibición social.
La Búsqueda Tabú (Tabu Search - TS) es un procedimiento metaheurístico cuya
característica distintiva es el uso de memoria adaptativa y de estrategias especiales de resolución
de problemas, el cual fue originalmente propuesto por Glover (1986). Puede verse como una
metaheurística que se superpone a una técnica de búsqueda y que se encarga de evitar que dicha
técnica caiga en óptimos locales prohibiendo (o,en un sentido más general, penalizando) ciertos
movimientos. El propósito de clasificar ciertos movimientos como prohibidos (o tabú) es para
evitar que se caiga en ciclos durante la búsqueda. Debido a esto, Glover sugiere como nombre
alternativo para su método el de búsqueda con inhibición débil, ya que los movimientos que se
consideran prohibidos constituyen generalmente una pequeña fracción del total de movimientos
disponibles, y un movimiento pierde su status de prohibido después de un período de tiempo
relativamente corto, volviéndose después nuevamente accesible. A este respecto, este método
puede contrastarse con la técnica de ramificación y límites (branch and bound) que también
prohibe ciertos movimientos para evitar ciclos, pero lo hace de una manera más rígida, por lo
que se le considera como una forma de búsqueda con inhibición fuerte.
Desde la perspectiva de la Inteligencia Artificial, la búsqueda tabú trata de emular (de
manera somera) el comportamiento de una persona. Es bien sabido que los humanos poseemos
un avanzado mecanismo de intuición que nos permite operar aún con información mínima o
nula, pero por lo general solemos introducir un elemento aleatorio (probabilístico) en dichas
decisiones, lo cual promueve un cierto nivel de inconsistencia en nuestro comportamiento. La
tendencia resultante en estos casos suele desviarnos de una cierta trayectoria preestablecida, lo
cual algunas veces puede ser una fuente de errores, pero en otras ocasiones puede llevarnos a una
solución mejor. La búsqueda tabú deriva de la suposición de que una mala elección estratégica
161
Capítulo 5. Búsqueda tabú
puede proporcionar más información que una buena elección realizada al azar, dado que una
elección estratégica mala puede proporcionar pistas útiles sobre cómo guiar la búsqueda hacia
zonas prometedoras.
La búsqueda tabú intenta emular este mecanismo fundamental de la ingenuidad humana,
pero sin utilizar elementos aleatorios, sino más bien asumiendo que no hay razón para escoger
un movimiento que nos lleve a una peor solución, a menos que estemos tratando de evitar
recorrer una ruta que ya se examinó previamente. Con esta sola excepción, la técnica buscará,
a cada paso, el mejor movimiento posible de acuerdo a la métrica utilizada por el problema
en cuestión. Esto hace que la técnica se dirija inicialmente de forma directa hacia un óptimo
local, pero eso no importa porque la búsqueda no se detendrá ahí, sino que se reinicializará
manteniendo la capacidad inicial de identificación del mejor movimiento posible. Además, se
mantiene información referente a los movimientos más recientes en una o más listas tabú, a fin
de evitar que una cierta trayectoria previamente recorrida se repita, aunque esta prohibición es
generalmente condicional y no absoluta.
162
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
explícita permite expandir los entornos de búsqueda usados durante un proceso de búsqueda
local mediante la inclusión de soluciones élite, mientras que la memoria basada en atributos los
reduce prohibiendo determinados movimientos.
La prohibición de movimientos en la generación y selección de vecino es lo que se conoce
como estado tabú y requiere de la evaluación inteligente de la historia del proceso de búsqueda.
Surge así una importante pregunta: ¿Cómo almacenar y evaluar esta historia?. La respuesta
puede obtenerse más facilmente a través del siguiente ejemplo.
Ejemplo 5.1.
Considerese el problema de secuenciamiento de tareas presentado en el ejemplo 2.1 (pág. 51).
Este problema es codificado a través de una permutación y, por facilidad, a continuación se
presentan nuevamente los datos de entrada.
T1 T2 T3 T4
π= 4 3 1 2
M1 4 3 5 7
P= M2 7 7 5 9 r = 25 40 20 21
M3 3 3 4 1
Para una solución inicial π = {4, 3, 1, 2} se tiene: el valor de la función objetivo, las
violaciones de los tiempos máximos de procesamiento de cada tarea (límites violados) y la
función de adaptación mostrados en la tabla 5.1.
La función de adaptación corresponde al valor de la función objetivo penalizado en
un valor resultante de sumar todos los limites violados. Así, es posible generar un criterio de
Entorno
vecindad para una permutación, tal como se mostró en el capítulo 2.
163
Capítulo 5. Búsqueda tabú
La búsqueda tabú puede ser caracterizada mediante referencia a la búsqueda por entornos,
aunque es importante destacar que la búsqueda en el entorno tiene un significado más amplio
en búsqueda tabú que en algunas otras estrategias de la literatura de las metaheurísticas.
Una representación de búsqueda por entorno identifica, para cada solución x ∈ X, un
conjunto asociado de vecinos, N(x) ⊂ X, llamado entorno de x. Así, cada solución x tiene
Movimiento
asociado un entorno o vecindario, donde cada solución x′ ∈ N(x) es obtenida de x por una
operación denominada movimiento. En búsqueda tabú, los entornos normalmente se asumen
simétricos, es decir, x′ es un vecino de x si y sólo si x es un vecino de x′ .
Los intercambios por pares son frecuentemente usados para definir entornos en problemas
de permutaciones, identificando movimientos que conducen de una solución a la siguiente.
Para este caso en particular una estrategia estaría conformada por los siguientes pasos:
Para un número mayor de tareas la exploración exhaustiva del vecindario puede ser
inviable, lo cual justifica la utilización de una lista o conjunto de vecinos candidatos N(x) ⊂ X
Lista de
vecinos de tamaño k << NV . Lo más importante a tener en cuenta es que el criterio para la generación
candidatos de la lista de movimientos candidatos debe consistir en la utilización de una sensibilidad que
se calcule de forma simple y eficiente, sin tener que calcular el valor de la función objetivo
de los posibles vecinos. Tradicionalmente este conjunto es generado utilizando heurísticas
constructivas, golosas o selección aleatoria.
Para este ejemplo, supóngase que la lista de candidatos está conformada por las primeras
3 alternativas vecinas, escogidas aleatoriamente, presentadas en la tabla 5.2.
164
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Estructura de memoria
Solución Atributos Valor Solución corto plazo
inicial primeros 3 movimiento actual 1 2 3 4
candidatos
4 1 1 3
(1, 2 ) 4
3 3 2
(1,3) 9 NT = 3
1 4 3
(1, 4 ) 6
2 2 4
Fadapt = 49 Fadapt = 40
Incumbente=49 Incumbente=40
En la Figura 5.2 se muestra que la solución inicial posee un valor de función de adaptación
Fadapt (π) = 49 y pasa a ser el valor inicial de la incumbente del proceso de búsqueda.
La lista de candidatos está conformada por un entorno de 3 soluciones las cuales, a su vez,
están caracterizadas por los atributos relacionados al intercambio de posiciones. El valor del
movimiento corresponde a la diferencia entre los valores de las funciones de adaptación de la
solución inicial y cada uno de los vecinos considerados (Fadapt (π) − Fadapt (vecino)). Mientras
mayor sea el valor del movimiento mayor calidad tendrá la solución. Así, el intercambio
165
Capítulo 5. Búsqueda tabú
escogido corresponde al par de posiciones (1, 3) cuya aplicación genera la solución actual
(1, 3, 4, 2) con Fadapt = 40. La incumbente es actualizada cada vez que se encuentra una
solución de mejor calidad que la incumbente actual.
Un mecanismo principal para explotar la memoria en la búsqueda tabú es clasificar
un subconjunto de movimientos en un entorno como prohibidos (o tabú). La clasificación
depende de la historia de la búsqueda, determinada mediante lo reciente o frecuente que ciertos
movimientos o atributos, han participado en la generación de soluciones pasadas.
El pasado reciente permite establecer una sensibilidad entre la exploración del entorno
y su impacto en la calidad de la función objetivo. La idea es mejorar la diversidad evitando la
Período tabú
búsqueda a partir de atributos utilizados en el pasado reciente, lo cual se logra definiendo un
estado prohíbido o tabú del atributo, durante un numero NT de iteraciones. Este número NT
se conoce como período tabú y simboliza qué tán reciente es la memoria de corto plazo.
Cada celda de la estructura de memoria de corto plazo de la figura 5.2 contendrá el número
de iteraciones restantes (período tabú) que un atributo prmanecerá en estado tabú. Por tanto,
si la celda (1,3) tiene un valor de 0, entonces las tareas correspondientes a las posiciones 1 y
3 pueden ser intercambiadas. Por otro lado, si la celda tiene valor de 3, entonces las tareas de
estas posiciones no podrán ser intercambiadas durante las tres iteraciones siguientes (es decir,
un intercambio asociado a estas posiciones es clasificado como tabú).
El ciclado sucede cuando cuando se visitan soluciones vecinas que ya han sido visitadas
recientemente. Aunque las restricciones tabú más comunes tienen generalmente el objetivo de
Ciclado
prevenir el ciclado, es necesario precisar que el objetivo final de la búsqueda tabú no es evitar
ciclos. Es importante tener en cuenta que en algunos problemas, un buen camino de búsqueda
resultará en volver a visitar una solución encontrada anteriormente. El objetivo más general
es continuar estimulando el descubrimiento de nuevas soluciones de alta calidad y con alta
diversidad.
Es posible reconocer que un período tabú es muy pequeño para una clase de problemas
cuando se detectan repetitivos valores de la función objetivo, lo cual sugiere la aparición de
ciclado en el proceso de búsqueda. De la misma forma, se detecta que un período tabú es muy
grande cuando se produce un deterioro en la calidad de las soluciones encontradas. Es posible,
por tanto, establecer un rango de períodos intermedios para obtener un buen comportamiento de
la búsqueda. Una vez obtenido este rango de períodos tabú, un modo de proceder es seleccionar
diferentes valores del rango en iteraciones diferentes.
Para implementar restricciones tabú, debe tenerse en cuenta una excepción importante:
las restricciones tabú no son inviolables bajo cualquier circunstancia. Cuando un movimiento
Criterio de
aspiración
tabú genera una solución mejor que cualquiera visitada hasta ese momento, su estado tabú
cambia y el movimiento puede ser realizado. Esta excepción se denomina criterio de aspiración.
La figura 5.3 ilustra el diagrama de decisiones para actualizar la estructura de memoria reciente,
incluyendo el caso en el que el criterio de aspiración es utilizado.
Estos contadores dentro de la estructura de memoria de corto plazo son utilizados para
diversificar la búsqueda, conduciéndola a nuevas regiones y rompiendo el ciclado.
166
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
2 3 4
1 1 3
2 2
k movimientos candidatos k ≪ NV
si
Fadapt ( EntornoOrd(1) ) < Incumbente Criterio de
? aspiración
no
i =1 2 3 4
1 0 2
no 2 3
EntornoOrd (i ) es tabú
? 3
si p.ej.
si i=4 2 3 4
i=k ?
1 0 2
no
i = i +1 2 3 1
Terminar 3
167
Capítulo 5. Búsqueda tabú
El ejemplo anterior sólo considera una memoria basada en lo reciente. Las utilización
de memoria requiere la creación y adecuación de estructuras, lo cual es un desafio de diseño
al abordar cada problema específico y una oportunidad para los investigadores para proponer
ideas novedosas.
168
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Reciente
( 3, 4 ) −5 Ord. ( 3, 4 ) −10
4 2 1 1
3 3 1 ( 2,3) −4 (1, 3) −9
2 4 1 2 5
Fadapt = 44
Frecuente
En la iteración actual (iteración 11), la memoria basada en lo reciente indica que los
últimos tres pares de tareas intercambiados fueron {1, 3} , {1, 4}, y {2, 4}. Los contadores
de frecuencia muestran la distribución de movimientos a través de las 11 primeras iteraciones.
Estos contadores son utilizados para diversificar la búsqueda, conduciéndola a nuevas regiones
y rompiendo el ciclado. El uso de información de frecuencia penalizará movimientos de no
mejora mediante la asignación de una penalización mayor a intercambios de pares de tareas
con mayores contadores de frecuencia. Típicamente, estos contadores deben ser normalizados,
por ejemplo: mediante la división por el número total de iteraciones o su máximo valor. Por
facilidad, en la figura 5.4, se penaliza restando directamente el valor de frecuencia al valor del
movimiento asociado.
Los atributos ordenados por valor del movimiento muestran que el movimiento de máxima
mejora es el intercambio {2, 3}, pero dado que este par tiene un período tabú residual, es
clasificado tabú. El movimiento {3, 4} tiene un valor de -5, y pudiera ser en otro caso el
siguiente preferido, excepto si sus tareas asociadas han sido intercambiadas frecuentemente
durante la historia de la búsqueda. Por lo tanto, el movimiento es penalizado fuertemente y
pierde su atractivo. El intercambio de las tareas {1, 3} es, por tanto, seleccionado como el
mejor movimiento en la iteración actual.
Las medidas de frecuencia se conciben como proporciones, cuyos numeradores
representan contadores del número de ocurrencias de un evento particular (por ejemplo, el
número de veces que un atributo particular pertenece a una solución o movimiento) y cuyos
denominadores generalmente representan uno de cuatro tipos de valores:
• El número total de ocurrencias de todos los eventos representados por los numeradores
(tal como el número de iteraciones asociadas).
169
Capítulo 5. Búsqueda tabú
170
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
171
Capítulo 5. Búsqueda tabú
Ruta Linehault Enlace Ruta Backhault Cliente Backhault Cliente Linehault Depósito
70 4
(9)
20
(15) 7
11 (16)
(19) 12
60 (23)
5
50 (7)
[57] 10
(15) 6
(30)
18
(21) 15
40 2 (19)
[47] (30)
[59]
[60]
13
0 16 (11)
[59]
30 (29) 9 3
[53] (21) (16)
8
17 (9) 1
(23) (7)
14
20 (5)
19
(10)
0 10 20 30 40 50 60
por una flota de vehículos homogéneos a fin de satisfacer la demanda (entrega o recolección) de
todos los clientes. En este caso, los vehículos deben atender primero los LCs antes de los BCs.
El VRPB representa adecuadamente la necesidad de algunas transportadoras de no
reorganizar la carga del vehiculo en cada punto de entrega debido al flujo de productos entrando
y saliendo del vehiculo. Un servicio mixto de entrega y recogida simultánea causa dificultades
en la reorganización de los productos en el vehículo.
Así, en el VRPB se deben cumplir las siguientes condiciones:
• Cada vértice debe ser visitado una única vez por una ruta en particular. esto es, cada
vértice es de grado 2.
• Cada ruta empieza y termina en el depósito. Esto es, Cada circuito visita el vértice 0.
• La capacidad del vehiculo nunca debe ser superada tanto en la trayectoria linehaul como
en la backhaul y todos los vehículos tienen la misma capacidad (flota homogénea).
• En cada circuito, los clientes linehaul preceden los clientes backhaul, es decir:
172
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
– El ultimo cliente de una ruta linehaul se conecta siempre con el deposito o con un
cliente que es inicio de una ruta backhaul.
– El ultimo cliente de una ruta backhaul siempre se conecta con el deposito.
La Figura 5.5 muestra la solución óptima de un VRPB con 20 clientes, de los cuales los
primeros 10 son LCs y los otros 10 son BCs. Para este caso, la capacidad de todos los vehículos
es la misma e igual a Q = 60 unidades de carga. El mínimo número de vehículos es KL = 3.
Las demandas de cada cliente son mostradas en la figura con la notación (•), y el flujo de bienes
entrando y saliendo del depósito es mostrado con la notación [•]. El depósito es representado
con un rectángulo y los clientes con un circulo. La Tabla 5.3 muestra las coordenadas de todos
los vertices y su respectiva demanda.
173
Capítulo 5. Búsqueda tabú
con necesidades de recolección de productos. Los elementos de cada uno de estos conjuntos
son organizados de tal forma que se puedan construir rutas factibles, los cuales se agrupan en
los subconjuntos GL y GB . Esto es, la ruta i ∈ GL es tal que inicia en el depósito y termina
en un punto determinado, siendo que todos los nodos por los que pasa pertenecen a L. Por otro
lado, la ruta j ∈ GB es tal que inicia en un punto determinado y termina en el depósito, siendo
que todos los nodos pertenecen al conjunto B. Para mantener la factibilidad de las rutas, se debe
garantizar que la capacidad del vehículo destinado a cumplir una ruta sea mayor o igual a la
carga que debe transportar. De esta forma Lc denota el conjunto de índices de rutas que pasan
a través de la ciudad c ∈ L, mientras que LTc denota el conjunto de índices de rutas en GL que
terminan en la ciudad c ∈ L. Similarmente, Bc denota el conjunto de índices de rutas en GB
que pasan a través de la ciudad c ∈ B, mientras que BcI denota el conjunto de índices de rutas
que inician su recorrido en la ciudad c ∈ B. Finalmente, se debe construir el conjunto ξi j, el
cual contiene el conjunto de arcos que unen la ruta i ∈ GL con la ruta j ∈ GB .
De esta forma se deben considerar tres tipos de variables binarias. La variable xi asume
el valor uno si la ruta i ∈ GL es seleccionada como parte de la solución, de lo contrario
asume el valor cero. Así mismo, la variable binaria yj asume el valor uno si la ruta j ∈ GB
es seleccionada para formar parte del recorrido, de lo contrario se le asigna el valor cero.
Finalmente, la variable zij también asume el valor uno si el arco que conecta la ruta i ∈ GL con
la ruta j ∈ GB hace parte de la solución, y cero en cualquier otro caso. De esta forma, el modelo
matemático de programación entera para el VRPB está formulado mediante las ecuaciones (5.1)
(5.6), donde M es el número de vehículos disponibles, de los cuales se asume que tienen todos
la misma capacidad. costoi es el costo global del transporte por la ruta i ∈ GL , mientras que
costoj es el costo global del transporte por la ruta j ∈ GB ; finalmente, costoij es el costo del
transporte por el arco (i, j) ∈ ξij que conecta el nodo i ∈ L con el nodo j ∈ B.
!
X X XX
z= min costoi · xi + costoj · yj + costoij · zij (5.1)
i∈GL j∈GB i∈L j∈B
sujeto a:
X
xl = 1, ∀c ∈ L (5.2)
l∈Lc
X
yj = 1, ∀c ∈ B (5.3)
j∈Bc
X X
xl − zcj = 0, ∀c ∈ L (5.4)
l∈LT
c
j∈B
X X
yl − zic = 0, ∀c ∈ B (5.5)
l∈BcI j∈L
XX
zij = M (5.6)
i∈L j∈B
174
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
175
Capítulo 5. Búsqueda tabú
(
Aceptado (LTA = 0) ∨ (Ite − LTA ) < NT abu
(5.7)
Rechazado De lo contrario
Luego de cada movimiento aceptado, los únicos componentes de la lista tabú que deben
ser actualizados son aquellos en las posiciones definidas por los atributos que salen de la
alternativa de solución. Para el caso de la Figura 5.7, los atributos que se caracterizan como
prohibidos son A3 = (Xmi−1 , Xmi , Xmi+1 ), y A4 = (Xmj−1 , Xmj , Xmj+1).
176
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
5.3.6 Resultados
La estrategia de solución que se propone es implementada en la plataforma de programación
Delphi 7.0 y su desempeño es evaluado por medio de simulaciones en las instancias descritas
177
Capítulo 5. Búsqueda tabú
Tabla 5.4: Resumen de resultados con 1000 iteraciones del algoritmo implementado.
Propuesto Exacto (Wassan, 2007)
Instancia L B NL NB Costo Tiempo Costo Tiempo
EIL2250A 11 10 3 2 375 0.125 371* 2
EIL2280A 17 4 3 1 376 0.124 375* 1
EIL2350A 11 11 2 1 698 0.17 682* 21
EIL2380A 18 4 2 2 627 0.172 623* 2
EIL3050A 15 14 2 2 557 0.14 501* 47
EIL5150A 25 25 3 3 601 0.467 559 13
EIL5180A 40 10 4 1 596 1.868 565 369
EIL7650A 38 37 6 5 820 1.348 739 127
EIL7680A 60 15 8 2 817 2.751 781 628
* óptimo global
en Toth and Vigo (1997) y Mingozzi et al. (1999), y resueltas en Wassan (2007) a través de una
técnica de búsqueda tabú reactivo. En la Tabla 5.4 se muestran los tiempos de ejecución y el
valor de la función objetivo alcanzados por la metodología propuesta y se comparan con los
expuestos en (Wassan, 2007). En cada simulación, se considera como criterio de convergencia
el valor de 100 iteraciones del algoritmo sin mejorar la solución global. Para la ejecución
del algoritmo se utilizó un computador personal con procesador AMD10 de 2300 MHz. De
los resultados expuestos se logra evidenciar que el algoritmo propuesto resulta más eficiente
computacionalmente comparado con los resultados disponibles en la literatura especializada
(Wassan, 2007), aunque igualmente se observa una marcada tendencia a la convergencia
acelerada a óptimos locales. Sin embargo, el tiempo de procesamiento refleja una disminución
apreciable del esfuerzo computacional que admite la posibilidad de agregar mecanismos que
permitan escapar de óptimos locales, alcanzar soluciones mejores, y conservar aún la eficiencia
computacional.
178
Apéndice: scripts en matlab
6
6.1 Algoritmo genético de Chu-Beasley aplicado al PAV
179
Capítulo 6. Apéndice: scripts en matlab
31 %P as o 2 : S l e c c i o n 2 p a d r e s
32 P o s P a d r e 1 = S e l e c c i o n T o r n e o ( DT, k , NumI ) ;
33 P a d r e 1 =Pob ( P o s P ad r e1 , : ) ;
34 P o s P a d r e 2 = S e l e c c i o n T o r n e o ( DT, k , NumI ) ;
35 P a d r e 2 =Pob ( P o s P ad r e2 , : ) ;
36
37 %P as o 3 : C r u z a m i e n t o PMX
38 i f r an d <Tc
39 [ H ijo 1 , H i j o 2 ] = CruzamientoPMX ( P ad r e1 , P ad r e2 , n ) ;
40 else
41 Hijo1 =Padre1 ;
42 Hijo2 =Padre2 ;
43 end
44
45 %P as o 4 : E l i m i n a c i o n de un h i j o
46 F o b j1 = C o m p u t a r L o n g i t u d T o u r ( H ijo 1 , D i s t a n c i a s , n ) ;
47 F o b j2 = C o m p u t a r L o n g i t u d T o u r ( H ijo 2 , D i s t a n c i a s , n ) ;
48 i f F o b j1 ≤ F o b j2
49 Hijo =Hijo1 ;
50 FobjH= F o b j1 ;
51 else
52 Hijo =Hijo2 ;
53 FobjH= F o b j2 ;
54 end
55 %P as o 5 : M u tació n . . . v e c i n d a d
56 i f r an d <Tm
57 H i j o = o p t 2 ( H ijo , n ) ;
58 FobjH= C o m p u t a r L o n g i t u d T o u r ( H ijo , D i s t a n c i a s , n ) ;
59 end
60
61 %P as o 6 : I n g r e s o a l a p o b l a c i ó n
62 bandera =0;
63 f o r i = 1 : NumI
64 i f H i j o ==Pob ( i , : )
65 bandera =1;
66 break
67 end
68 end
69 i f b a n d e r a ==0
70 [ V alP eo r , P o s P e o r ] = max (DT) ;
71 i f FobjH ≤ V a l P e o r
72 Pob ( P o s P eo r , : ) = H i j o ;
73 DT( P o s P e o r ) =FobjH ;
74 i f FobjH < F o b j I n c u m b e n t e ( c o n t a d o r )
75 contador = contador +1;
76 F o b j I n c u m b e n t e ( c o n t a d o r ) =FobjH ;
77 It e ra c io n ( contador )=generaciones ;
78 A lter nativaI n cu m be nt e =Hijo ;
79 contador1 =0;
80 end
81 end
82 else
83 bandera =0;
84 end
85 contador1 = contador1 +1;
86 i f contador1≥I t e r R e i n i c i a r
87 %P as o 1 : P o b l a c i ó n i n i c i a l
88 Pob= z e r o s ( NumI , n ) ; % i n i c i a l i z a c i o n d e l R e c i p i e n t e
89 f o r i = 1 : NumI
90 c= r an d p er m ( n ) ; %G e n e r a r p o b l a c i o n a l e a t o r i a
91 Pob ( i , : ) =c ;
92 DT( i ) = C o m p u t a r L o n g i t u d T o u r ( c , D i s t a n c i a s , n ) ;
93 end
94 DT( NumI ) = F o b j I n c u m b e n t e ( c o n t a d o r ) ;
95 Pob ( NumI , : ) = A l t e r n a t i v a I n c u m b e n t e ;
180
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
96 contador1 =0;
97 end
98 end
99 p l o t ( I t e r a c i o n , FobjIncumbente ) ;
100 FobjT = F o b j I n c u m b e n t e ( c o n t a d o r )
101 %D i b u j a r Tour
102 Tamano= s i z e ( D a t o s C l i e n t e s , 1 ) −1;
103 C o o r d e n a d a s = D a t o s C l i e n t e s ( [ 1 : Tamano + 1 ] , : ) ;
104 T S P s o l =[ A l t e r n a t i v a I n c u m b e n t e A l t e r n a t i v a I n c u m b e n t e ( 1 ) ] ;
105 x =[];
106 y =[];
107 x= C o o r d e n a d a s ( TSPsol ' , 2 ) ;
108 y= C o o r d e n a d a s ( TSPsol ' , 3 ) ;
109 MaxX=max ( x ) ;
110 MaxY=max ( y ) ;
111 figure
112 f o r i = 1 : Tamano +1
113 l i n e ( [ x ( i ) x ( i +1 ) ] , [ y ( i ) y ( i +1 ) ] , ' L i n e S t y l e ' , '−− ' , . . .
114 ' L in eW id th ' , 5 , ' C o l o r ' , [ . 8 . 8 . 8 ] ) ;
115 end
181
Capítulo 6. Apéndice: scripts en matlab
3 %c= c i r c u i t o H a m i l t o n i a n o
4 %D= M a t r i z de D i s t a n c i a s
5 %n=Número de c i u d a d e s
6 l =0;
7 f o r i = 1 : n−1
8 l = l +D( c ( i ) , c ( i +1 ) ) ;
9 end
10 l = l +D( c ( n ) , c ( 1 ) ) ;
Script 6.4. Selección por torneo (ver torneo determinístico, pág. 76).
1 f u n c t i o n P o s P a d r e = S e l e c c i o n T o r n e o ( Vfobj , k , n )
2 %P r o c e s o de s e l e c c i ó n u t i l i z a n d o t o r n e o
3 %V f o b j : V e c t o r con v a l o r e s de f u n c i ó n o b j e t i v o p a r a
4 % someter a t o r n e l
5 %k : Número de i n d i v i d u o s que p a r t i c i p a n en t o r n e o
6 %n : Tamaño d e l v e c t o r V f o b j
7 Temp= r an d p er m ( n ) ; %G e n e r a r p e r m u t a c i ó n a l e a t o r i a de tamaño n
8 A l e a t o r i o s =Temp ( 1 : k ) ; %E s c o g e r k i n d i v i d u o s
9 [ Val , Pos ] = min ( V f o b j ( A l e a t o r i o s ) ) ;
10 P o s P a d r e = A l e a t o r i o s ( Pos ) ;
Script 6.5. Cruzamiento PMX para n puntos (ver cruzamiento en permutaciones, pág. 88).
1 f u n c t i o n [ H ijo 1 , H i j o 2 ] = CruzamientoPMX ( P1 , P2 , n )
2 PC1= f l o o r ( r a n d * ( n −1) ) + 1 ;
3 PC2= f l o o r ( r a n d * ( n −1) ) + 1 ;
4
5 i f PC1>PC2
6 Temp=PC1 ;
7 PC1=PC2 ;
8 PC2=Temp ;
9 end
10
11 H i j o 1 =[ P1 ( 1 : PC1 ) , z e r o s ( 1 , PC2−PC1 ) , P1 ( PC2 + 1 : n ) ] ;
12 Pos =PC1 ;
13 f o r i =1: n
14 B an d er a = 0 ;
15 f o r j =1:n
16 i f P2 ( i ) == H i j o 1 ( j ) ;
17 B an d er a = 1 ;
18 break
19 end
20 end
21 i f B an d er a ==0
22 Pos= Pos + 1 ;
23 H i j o 1 ( Pos ) =P2 ( i ) ;
24 end
25 end
26
27 H i j o 2 =[ P2 ( 1 : PC1 ) , z e r o s ( 1 , PC2−PC1 ) , P2 ( PC2 + 1 : n ) ] ;
28 Pos =PC1 ;
29 f o r i =1: n
30 B an d er a = 0 ;
31 f o r j =1:n
32 i f P1 ( i ) == H i j o 2 ( j ) ;
33 B an d er a = 1 ;
34 break
35 end
36 end
182
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
37 i f B an d er a ==0
38 Pos= Pos + 1 ;
39 H i j o 2 ( Pos ) =P1 ( i ) ;
40 end
41 end
183
Capítulo 6. Apéndice: scripts en matlab
1 f u n c t i o n [ C , L] = C o n s t r u i r S o l u c i o n e s ( Tao , D , m, n , a l p h a , b e t a )
2 %F u n c i ó n que c o n s t r u y e m t o u r s y l o s a l m a c e n a en l a
3 %m a t r i z C ( c i r c u i t o s H a m i l t o n i a n o s ) , c á l c u l a además s u s
4 %l o n g i t u d e s y l a s a l m a c e n a en e l v e c t o r L
5 %Tao : M a t r i z de f er o m o n a
6 %D : M a t r i z de d i s t a n c i a s
7 %m : Número de h o r m i g a s
8 %n : Número de c i u d a d e s
9 %a l p h a : I m p o r t a n c i a r e l a t i v a de d e p o s i t o s de f er o m o n a
10 %b e t a : I m p o r t a n c i a r e l a t i v a de l o s n o d o s más c e r c a n o s
11
12 M= z e r o s (m, n ) ; %M a t r i z de c i u d a d e s v i s i t a d a s
13 P as o = 1 ;
14 f o r k = 1 :m %p a r a c a d a h o r m ig a k
15 r = f l o o r ( r a n d * ( n −1) ) + 1 ; %u b i c a r en una c i u d a d a l e a t o r i a
16 C ( k , P as o ) = r ;
17 M( k , r ) = 1 ;
18 end
19
20 w h i l e Paso <n
21 P as o = P as o + 1 ;
22 f o r k = 1 :m %P a r a c a d a h o r m ig a
23 C i u d a d I n i =C ( k , Paso −1) ;
24 C i u d a d D e s t = E s c o g e r C i u d a d D e s t i n o ( k ,M, C i u d a d I n i , n , . . .
25 Tao , a l p h a , b e t a , D) ;
26 C ( k , P as o ) = C i u d a d D e s t ;
27 M( k , C i u d a d D e s t ) = 1 ;
28 end
29 end
30 f o r k = 1 :m
31 L ( k ) = C o m p u t a r L o n g i t u d T o u r ( C( k , : ) ,D, n ) ;
32 end
184
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
28 C i u d a d D e s t = C n o V i s i t a d a ( S e l e c c i o n R u l e t a ( P , C o n tad o r −1) ) ;
Script 6.10. Selección de un individuo usando ruleta (ver pseudocódigo 2.9, pág. 78)
1 f u n c t i o n [ P o s C i u d a d D e s t ] = S e l e c c i o n R u l e t a ( P , NumP)
2 %F u n c i ó n que e s c o g e p o r s e l e c c i ó n p r o p o r c i o n a l una
3 %c i u d a d de d e s t i n o . E s t a f u n c i ó n s i m u l a un l a n z a m i e n t o
4 %de l a r u l e t a s o b r e s e c c i o n e s p r o p o r c i o n a l e s a l a f u n c i ó n
5 %de a d a p t a c i ó n y d e v u e l v e l a p o s i c i ó n de l a a l t e r n a t i v a
6 %g a n a d o r a .
7 %P : V e c t o r con v a l o r e s de l a s p r o p o r c i o n e s que
8 % p a r t i c i p a n en l a r u l e t a ( tamaño de l a s p o r c i o n e s ) .
9 %NumP : Número de p o r c i o n e s en l a s que s e d i v i d e l a r u l e t a
10 PosCiudadDest =1;
11 Acumulado = 0 ;
12 A l e a t o r i o =rand ;
13 f o r i = 1 :NumP
14 Acumulado =Acumulado +P ( i ) ;
15 i f A l e a t o r i o ≤Acumulado
16 PosCiudadDest= i ;
17 break
18 end
19 end
185
Capítulo 6. Apéndice: scripts en matlab
186
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Script 6.14. Función objetivo 1: Peso (ver sección 1.3, pág. 13)
1 f u n c t i o n p e s o = F o b j1 ( d , l , d e n s i d a d )
2 %d e n s i d a d =kg /m^3
3 %p e s o en kg
4 %d= d i a m e t r o en mm
5 %l = l o n g i t u d en mm
6 p e s o = d e n s i d a d * p i * d ^2 * l / 4 ;
Script 6.15. Función Objetivo 2: Deflexión (ver sección 1.4, pág. 13)
1 f u n c t i o n d e f l e x i o n = F o b j2 ( d , l , E , P )
2 %d= d i a m e t r o en mm
3 %l = l o n g i t u d en mm
4 %E= f u e r z a p o r m etr o ^2 que s o p o r t a l a v i g a = E x t r e s s [ Gpa ]
5 %P= f u e r z a p r o d u c i d a p o r l a C ar g a u b i c a d a a l f i n a l de l a v i g a [ kN ]
6 %d e f l e x i o n en mm
7
8 d e f l e x i o n =64 * P * l ^ 3 / ( 3 * E * p i * d ^ 4 ) ;
187
Capítulo 6. Apéndice: scripts en matlab
13 dmax =3 1 ;
14 VolumenMin =3 0 0 ;
15 Pc = 2 ; %P u n t o s de c r u z a m i e n t o
16 G e n e r a c i o n e s =1 5 0 0 ;
17
18 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
20
21 h _ e s p a c i o =( hmax−hmin ) + 1 ;
22 d _ e s p a c i o =( dmax−dmin ) + 1 ;
23
24 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25 %%%%%%%%%%%%%%%%%%POBLACION INICIAL%%%%%%%%%%%%%%%%%%%%%%%
26
27 f o r i = 1 : NumPoblacion
28 a l e a t o r i o = r o u n d ( r a n d * ( h _ e s p a c i o −1) +1 ) ;
29 P_dec ( i , 1 ) = a l e a t o r i o ; %a l t u r a y d i a m e t r o d e c i m a l
30 %P o b l a c i o n d e c i m a l
31 h_bin =CodBinaria ( a l e a t o r i o , h_Nbits , h_espacio ) ;
32 a l e a t o r i o = r o u n d ( r a n d * ( d _ e s p a c i o −1) +1 ) ;
33 P_dec ( i , 2 ) = a l e a t o r i o ;
34 d_bin =CodBinaria ( a l e a t o r i o , d_Nbits , d_espacio ) ;
35 P _ b in ( i , : ) =[ h _ b i n d _ b i n ] ; %P o b l a c i o n
36 end
37 f o r i = 1 : s i z e ( P_dec , 1 )
38 F o b j ( i ) = F o b j e t i v o ( P_dec ( i , 1 ) , P_dec ( i , 2 ) , C o s to ) ;
39 end
40
41 %La i n c u m b e n t e d eb e s e r l a minima e n t r e l a s f a c t i b l e s
42 k =1;
43
44 j =1;
45 [ I n f a c t i b i l i d a d , Volumen ] = V a l o r I n f a c t i b i l i d a d ( P_dec , . . .
46 VolumenMin ) ;
47 f o r i = 1 : NumPoblacion
48 i f I n f a c t i b i l i d a d ( i ) ==0
49 Posicion ( j )= i ;
50 j = j +1;
51 end
52 end
53
54 [ I n cu m b en te , I n d i c e ] = min ( F o b j ( [ P o s i c i o n ] ) ) ;
55 [ I n f a c t i b i l i d a d , Volumen ] = V a l o r I n f a c t i b i l i d a d ( P_dec ( . . .
56 I n d i c e ( 1 ) , : ) , VolumenMin ) ;
57 V a r i a b l e s = P_dec ( I n d i c e ( 1 ) , : ) ;
58 C o n v e r g e n c i a ( k , : ) =[ I n c u m b e n t e Volumen I n f a c t i b i l i d a d . . .
59 Variables ] ;
60 f o r g = 1 : G e n e r a c i o n e s %e l numero s e r e p i t e un numero de
61 %g e n e r a c i o n e s
62 [ P a d r e s ] = s e l e c c i o n ( P_bin , P_dec , 2 , C o s to ) ;
63 [ H i j o s ] = c r u z a m i e n t o ( P a d r e s , Pc ) ;
64 [ Hijos ] = mutacion ( Hijos ) ;
65
66 %C o d i f i c a r l o s h i j o s a d e c i m a l
67 h_bin = Hijos ( : , 1 : h_Nbits ) ;
68 d_bin = Hijos ( : , h_Nbits +1: h_Nbits+ d_Nbits ) ;
69 f o r i =1 :2
70 H i j o s _ d e c ( i , : ) =[ CodDecimal ( h _ b i n ( i , : ) , h _ N b i t s , . . .
71 h _ e s p a c i o , hmin ) CodDecimal ( d _ b i n ( i , : ) , . . .
72 d _ N b i t s , d _ e s p a c i o , dmin ) ] ;
73 end
74 %s e l e c c i o n a r un h i j o p a r a e n t r a r a l a p o b l a c i o n
75 [ H ijo , I n d i c e ] = s e l e c c i o n ( H i j o s , H i j o s _ d e c , 1 , C o s to ) ;
76 H i j o _ d e c = H i j o s _ d e c ( I n d i c e , : ) ; %a l t u r a h y d i a m e t r o
77 %d en d e c i m a l
188
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
189
Capítulo 6. Apéndice: scripts en matlab
1 f u n c t i o n [ B i n a r i o ] = C o d B i n a r i a (Num , N b i t s , e s p a c i o )
2 %F u n c i ó n que t r a n s f o r m a de d e c i m a l a b i n a r i o
3 P o s i c i o n e s =2^ N b i t s ;
4 D e l t a =( e s p a c i o ) / ( P o s i c i o n e s ) ;
5 B i n a r i o = d e 2 b i ( r o u n d (Num / D e l t a ) −1, N b i t s , ' l e f t −msb ' ) ;
190
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
14 i f acu m u lad o ≥ v a l o r _ r u l e t a
15 posicion = i ;
16 break ;
17 end
18 end
19 P a d r e s ( j , : ) = P _ b in ( p o s i c i o n , : ) ;
20 Indices ( j )=posicion ;
21 end
191
Capítulo 6. Apéndice: scripts en matlab
18 Gen1= H i j o s ( 2 , a l e a t o r i o 1 ) ;
19 Gen2= H i j o s ( 2 , a l e a t o r i o 2 ) ;
20
21 H i j o s ( 2 , a l e a t o r i o 1 ) =Gen2 ;
22 H i j o s ( 2 , a l e a t o r i o 2 ) =Gen1 ;
192
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
46 [ Costo , i ] = min ( C o s to )
47 P( i , : )
48 Volumen ( i )
193
Capítulo 6. Apéndice: scripts en matlab
5 i f T ip o ==1
6 H i j o 1 ( 1 ) = r a n d * ( Dmax−Dmin ) ;
7 H i j o 1 ( 2 ) = r a n d * ( Lmax−Lmin ) ;
8
9 H i j o 2 ( 1 ) = r a n d * ( Dmax−Dmin ) ;
10 H i j o 2 ( 2 ) = r a n d * ( Lmax−Lmin ) ;
11 end
194
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
46 i f j +1> T am P o b lacio n
47 PosPadre=SelecReprod ( VecParejas ( 1 ) ) ;
48 else
49 P o s P a d r e = S e l e c R e p r o d ( V e c P a r e j a s ( j +1 ) ) ;
50 end
51 P a d r e = P o b l a c i o n ( P o s P ad r e , : ) ;
52 Madre = P o b l a c i o n ( PosMadre , : ) ;
53 [ H i j o 1 ] = CruzamientoPMX ( P ad r e , Madre , NumPlacas ) ;
54 [ H i j o 2 ] = CruzamientoPMX ( P ad r e , Madre , NumPlacas ) ;
55 i f r an d < T a s a M u t a c i o n
56 Hijos =mutacion ( [ Hijo1 ; Hijo2 ] ) ;
57 Hijo1 =Hijos ( 1 , : ) ;
58 Hijo2 =Hijos ( 1 , : ) ;
59 end
60 F u n O b jH ijo 1 = B o t t o m L e f t ( NumPlacas , H ijo 1 , D a t o s P l a c a s , . . .
61 A lto P aleta , AnchoPaleta ) ;
62 F u n O b jH ijo 2 = B o t t o m L e f t ( NumPlacas , H ijo 2 , D a t o s P l a c a s , . . .
63 A lto P aleta , AnchoPaleta ) ;
64 i f FunObjHijo 1 < I n c u m b e n t e
65 PosIncumbente=PosIncumbente +1;
66 I n c u m b e n t e ( P o s I n c u m b e n t e ) = F u n O b jH ijo 1 ;
67 I ter I n cu m b en te ( PosIncumbente ) = i ;
68 A lter nativa I nc um b en te =Hijo1 ;
69 end
70 i f FunObjHijo 2 < I n c u m b e n t e
71 PosIncumbente=PosIncumbente +1;
72 I n c u m b e n t e ( P o s I n c u m b e n t e ) = F u n O b jH ijo 2 ;
73 I ter I n cu m b en te ( PosIncumbente ) = i ;
74 A lter nativa I nc um b en te =Hijo2 ;
75 end
76 P o b l a c i o n ( PosMadre , : ) = H i j o 1 ;
77 P o b l a c i o n ( P o s P ad r e , : ) = H i j o 2 ;
78 ValFunObj ( PosMadre , : ) = F u n O b jH ijo 1 ;
79 ValFunObj ( P o s P ad r e , : ) = F u n O b jH ijo 2 ;
80 end
81
82 end
83 Alte rnativa =AlternativaIncumbente ;
84 BottomLeftPlot ;
195
Capítulo 6. Apéndice: scripts en matlab
22 %co lu m n as a l a IZ
23 [ MovIz , PosX ] = V e r I z ( PosX , PosY , M a t r i z P a l e t a , . . .
24 AltoPlaca ) ;
25 [ MovAb , PosY ] = VerAb ( PosX , PosY , M a t r i z P a l e t a , . . .
26 A l t o P a l e t a , A n ch o P laca ) ;
27 i f ( MovIz ==1) & ( MovAb==1)
28 break
29 end
30 end
31 f o r k=PosY−A l t o P l a c a + 1 : PosY
32 f o r l =PosX : PosX+ AnchoPlaca −1
33 M a t r i z P a l e t a ( k , l ) =1;
34 end
35 end
36 end
37 end
38 A r e a P a l e t a =H* L ;
39 ValFunObj = A r e a P a l e t a −sum ( sum ( M a t r i z P a l e t a ) ) ;
196
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
11 i f M a t r i z P a l e t a ( i , PosX−1)==1 %s i l a p o s i c i o e s t a o cu p ad a
12 MovIz = 1 ;
13 break
14 end
15 end
16 i f MovIz==0
17 PosX=PosX −1;
18 end
19 end
197
Capítulo 6. Apéndice: scripts en matlab
24 end
25 end
26 f o r k=PosY−A l t o P l a c a + 1 : PosY
27 f o r l =PosX : PosX+ AnchoPlaca −1
28 M a t r i z P a l e t a ( k , l ) =1;
29 end
30 end
31 P o s C o l= r o u n d ( r a n d * ( 7 ) ) + 1 ;
32 i f P o s C o l ==1
33 C o l o r =[ 0 0 0 ] ;
34 e l s e i f P o s C o l ==2
35 C o l o r =[ 0 0 1 ] ;
36 e l s e i f P o s C o l ==3
37 C o l o r =[ 0 1 1 ] ;
38 e l s e i f P o s C o l ==4
39 C o l o r =[ 1 0 1 ] ;
40 e l s e i f P o s C o l ==5
41 C o l o r =[ 1 0 1 ] ;
42 e l s e i f P o s C o l ==6
43 C o l o r =[ 1 1 0 ] ;
44 e l s e i f P o s C o l ==7
45 C o l o r =[ 1 0 0 ] ;
46 e l s e i f P o s C o l ==8
47 C o l o r =[ 0 1 0 ] ;
48 end
49 r e c t a n g l e ( ' P o s i t i o n ' , [ PosX , A l t o P a l e t a −PosY + 1 , . . .
50 AnchoPlaca , A l t o P l a c a ] , ' F a c e C o l o r ' , C o l o r )
51 end
52 end
53 A r e a P a l e t a =H* L ;
54 ValFunObj = A r e a P a l e t a −sum ( sum ( M a t r i z P a l e t a ) )
55 figure
56 p l o t ( I ter I n cu m b en te , Incumbente )
198
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
20 60 88 26 58 76 98 29 47 79 26 19 48 95 78 77 90 24 10 85 55
21 54 66 12 57 70 82 99 84 16 41 23 11 68 58 30 5 5 39 58 31
22 92 11 54 97 57 53 65 77 51 36 53 19 54 86 40 56 79 74 24 3
23 9 8 88 72 27 22 50 2 49 82 93 96 43 13 60 11 37 91 84 67
24 4 18 25 28 95 51 84 18 6 90 69 61 57 5 75 4 38 28 4 80
25 25 15 91 49 56 10 62 70 76 99 58 83 84 64 74 14 18 48 96 86
26 15 84 8 30 95 79 9 91 76 26 42 66 70 91 67 3 98 4 71 62];
27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29 P i _ i = r an d p er m ( n ) ; %G e n e r a r una a l t e r n a t i v a i n i c i a l
30 Cmax_i = FobjFS ( P i _ i , P , m, n , 0 ) ;
31 I n c u m b e n t e . F o b j =Cmax_i ;
32 Incumbente . I n d iv id u o = P i_ i ;
33 Cmax_j = FobjFS ( P i _ i , P , m, n , 1 ) ;
34 figure
35 %C a l c u l o de l a t e m p e r a t u r a i n i c i a l T0
36 m1 = 0 ;
37 m2 = 0 ;
38 DeltaE =0;
39 f o r i =1: k
40 P i_ j = GenerarVecino ( Pi_i , n ) ;
41 Cmax_j = FobjFS ( P i _ j , P , m, n , 0 ) ;
42 i f ( Cmax_j−Cmax_i ) ≤0
43 m1=m1 + 1 ;
44 else
45 m2=m2 + 1 ;
46 D e l t a E = D e l t a E +Cmax_j ;
47 end
48 end
49 D e l t a E = D e l t a E / m2 ;
50 To=10 e5 ;%D e l t a E / l o g ( m2 / ( m2* Tao−m1* (1− Tao ) ) ) ;
51 C o n t E s t a d o s = 0 ; %C u en ta e l numero de cam b io s de e s t a d o
52 %s i n m e j o r a r i n c u m b e n t e
53 w h i l e C o n t E s t a d o s < 300 %C r i t e r i o de p a r a d a : cam b io s
54 %de e s t a d o s i n m e j o r a r i n c u m b e n t e
55 k =1;
56 ContE stados= ContE stados +1;
57 w h i l e k< r h o
58 P i_ j = GenerarVecino ( Pi_i , n ) ;
59 Cmax_j = FobjFS ( P i _ j , P , m, n , 0 ) ;
60 %%REGLA DE ACEPTACIÓN DE METROPOLIS
61 i f ( Cmax_j−Cmax_i ) ≤0 %A cep ta un v e c i n o
62 Pi_i =Pi_j ;
63 Cmax_i=Cmax_j ;
64 else
65 P r o b _ j = exp ( −( Cmax_j−Cmax_i ) / ( To ) ) ;
66 a l e a t o r i o =rand ;
67 i f a l e a t o r i o ≤ P r o b _ j %A cep ta un v e c i n o
68 %s eg u n P r o b a b i l i d a d
69 Pi_i =Pi_j ;
70 Cmax_i=Cmax_j ;
71 end
72 end
73 i f Cmax_i < I n c u m b e n t e . F o b j
74 ContEstados =0;
75 I n c u m b e n t e . F o b j=Cmax_i ;
76 Incumbente . I n d iv id u o = P i_ i ;
77 Incumbente . Fobj
78 end
79 k=k + 1 ;
80 end
81 rho= beta * rho ;
82 To= a l p h a * To ;
83 end
84 % figure ;
199
Capítulo 6. Apéndice: scripts en matlab
85 Cmax_j = FobjFS ( I n c u m b e n t e . I n d i v i d u o , P , m, n , 1 ) ;
200
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
201
Capítulo 6. Apéndice: scripts en matlab
32 27 21 21 26 18] ';
33 T ip o O p t =[ 0 0 ] ; %X1 X2 0= m i n i m i z a r 1= m a x i m i a z a r
34
35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36 NumFobj= s i z e ( M_Fobj , 2 ) ;
37 i f NumFobj
38 p l o t ( M_Fobj ( : , 1 ) , M_Fobj ( : , 2 ) , ' bd ' ) ;
39 end
40 M_FobjAux=M_Fobj ;
41
42 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
44 %%%%%%%%%%%% OBTENER FRENTES DE PARETO %%%%%%%%%%%
45
46 i f T ip o O p t ( 1 ) ==1 %s i f o b j 1 e s de m a x i m i z a c i o n
47 [ f1 , P ] = d s o r t ( M_Fobj ( : , 1 ) ) ; %O r d e n a r l a p o b l a c i o n de
48 %a c u e r d o a l o r d e n d e s c e n d e n t e de i m p o r t a n c i a
49 %de l a f o b j 1
50 e l s e %s i f o b j 1 e s de m i n i m i z a c i o n
51 [ f1 , P ] = s o r t ( M_Fobj ( : , 1 ) ) ;
52 end
53
54 %% R u t i n a que O b t i e n e t o d o s l o s f r e n t e s
55 l =1;
56 w h i l e i s e m p t y ( P ) == 0 %S i P t i e n e e l e m e n t o s h ag a
57 [ F rentes O rd ( l ) . F r e n t e ]= FrentesNDordenados ( P , . . .
58 M_FobjAux , TipoOpt , NumFobj ) ;
59 k =1;
60 f o r i =1: s i z e ( P , 1 )
61 f o r j =1: s i z e ( FrentesOrd ( l ) . Frente , 1 )
62 i f P ( i , 1 ) == F r e n t e s O r d ( l ) . F r e n t e ( j , 1 )
63 BorrarPos ( k )= i ;
64 k=k + 1 ;
65 end
66 end
67 end
68 P ( BorrarPos ) = [ ] ;
69 BorrarPos = zeros (1) ;
70 l = l +1;
71 end
72 i f NumFobj
73 f o r i =1: s i z e ( FrentesOrd , 2 )
74 i f i == 1
75 p l o t ( M_Fobj ( F r e n t e s O r d ( i ) . F r e n t e , 1 ) , . . .
76 M_Fobj ( F r e n t e s O r d ( i ) . F r e n t e , 2 ) , ' b l a c k + : ' ) ;
77 else
78 p l o t ( M_Fobj ( F r e n t e s O r d ( i ) . F r e n t e , 1 ) , . . .
79 M_Fobj ( F r e n t e s O r d ( i ) . F r e n t e , 2 ) , ' b l u e + : ' ) ;
80 end
81 end
82 end
202
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
10 i f T ip o O p t ( i ) ==0
11 f o r j = 1 : s i z e ( P , 1 ) −1
12 %s i l a s o l u c i o n j domina a l a j +1 , l a j +1 d eb e s a l i r
13 i f M_Fobj ( P ( l , 1 ) ,M) ≤M_Fobj ( P ( j + 1 , 1 ) ,M)
14 b o r r a r ( k , 1 ) = j +1;
15 k=k + 1 ;
16 else
17 l = j +1;
18 end
19 end
20 else
21 f o r j = 1 : s i z e ( P , 1 ) −1
22 %s i l a s o l u c i o n j domina a l a j +1 , l a j +1 d eb e s a l i r
23 i f M_Fobj ( P ( l , 1 ) ,M) ≥M_Fobj ( P ( j + 1 , 1 ) ,M)
24 b o r r a r ( k , 1 ) = j +1;
25 k=k + 1 ;
26 else
27 l = j +1;
28 end
29 end
30 end
31 i f k > 1 %S i " B o r r a r " t i e n e e l e m e n t o s h ag a
32 P( borrar ) =[];
33 end
34 end
35 F r e n t e s O r d =P ;
Script 6.40. Obtener soluciones del conjunto P que pertenecen al frente no dominado (método de Kung
Kung et al. (1975)).
1 f u n c t i o n [ Fnd ] = FrenteNoDominad o ( P , M_V_fobj , . . .
2 S eg u n d aF u n cio n , T ip o O p t )
3 %O b t i e n e l a s s o l u c i o n e s d e l c o n j u n t o P que
4 %p e r t e n e c e n a l f r e n t e no dominado
5
6 %M_V_fobj = m a t r i z de v a l o r e s de l a s d i f e r e n t e s f u n c i o n e s
7 %o b j e t i v o de c a d a uno de l o s i n d i v i d u o s de l a p o b l a c i o n
8 N= s i z e ( P , 1 ) ;
9 P o s D i v i d i r = r o u n d ( ( N) / 2 ) ;
10 i f N>1
11 [ I ] = FrenteNoDominado ( P ( [ 1 : P o s D i v i d i r ] , : ) , . . .
12 M_V_fobj , S eg u n d aF u n cio n , T ip o O p t ) ;
13 [ S ] = FrenteNoDominado ( P ( [ P o s D i v i d i r + 1 :N ] , : ) , . . .
14 M_V_fobj , S eg u n d aF u n cio n , T ip o O p t ) ;
15 %Se v e r i f i c a l a d o m i n a n c i a r e s p e c t o a l a s e g u n d a
16 %F o b j con l a que s e compara
17 i f T ip o O p t ( S eg u n d aF u n c io n ) ==0
18 i f M_V_fobj ( S ( s i z e ( S , 1 ) ) , S eg u n d aF u n c i o n ) ≤ . . .
19 M_V_fobj ( I ( s i z e ( I , 1 ) ) , S eg u n d aF u n c i o n )
20 %D o m in an cia f u e r t e
21 M=[ I ; S ] ;
22 else
23 M=[ I ] ;
24 end
25 end
26
27 i f T ip o O p t ( S eg u n d aF u n c io n ) ==1
28 i f M_V_fobj ( S ( s i z e ( S , 1 ) ) , S eg u n d aF u n c i o n ) ≥ . . .
29 M_V_fobj ( I ( s i z e ( I , 1 ) ) , S eg u n d aF u n c i o n )
30 %D o m in an cia f u e r t e
31 M=[ I ; S ] ;
32 else
203
Capítulo 6. Apéndice: scripts en matlab
33 M=[ I ] ;
34 end
35 end
36 Fnd=M;
37 e l s e Fnd=P ;
38 end
204
Bibliografía
Aarts, E. H. L. and Van Laarhoven, P. J. M.: 1985, Statistical cooling : a general approach to
combinatorial optimisation problems., Philips J. of Research, 40 pp. 193–226.
Aubin, J. and Ferland, J.: 1989, A large scale timetabling problem., Computers and Operations
Research, 16:1 pp. 67–77.
Baker, J. E.: 1985, Adaptive selection methods for genetic algorithms., In proceedings of an
international Conference on Genetic Algorithms and their Applications. pp. 101–111.
Carter, M.: 1989, A lagrangian relaxation approach to the classroom assignment problem.,
Computers and Operations Research, 27:2 pp. 230–246.
Cerny, V.: 1985, Thermodynamical approach to the traveling salesman problem : an efficient
simulation algorithm., J. of Optimization Theory and Applications, 45(1) pp. 41–51.
Choi, S. and Yang, F.: 2003, A machine-order search space for job-shop scheduling problems,
Intl. Trans. in Op. Res. 10 pp. 597–610.
Chu, P. and Beasley, J.: 1997, A genetic algorithm for the generalized assignment problem.,
Computers Operations Research, 24(1) pp. 17–23.
Chunyu, R. and Xiaobo, W.: 2009a, Study on hybrid genetic algorithm for multi-type vehicles
and multi-depot vehicle routing problem with backhauls, Intelligent Computation Technology
and Automation, 2009. ICICTA’09. Second International Conference on, Vol. 1, IEEE,
pp. 197–200.
Chunyu, R. and Xiaobo, W.: 2009b, Study on improved hybrid genetic algorithm
for multi-depot vehicle routing problem with backhauls, Artificial Intelligence and
Computational Intelligence, 2009. AICI’09. International Conference on, Vol. 2, IEEE,
pp. 347–350.
Chunyu, R., Zhendong, S. and Xiaobo, W.: 2009, Study on single and mixed fleet strategy for
multi-depot vehicle routing problem with backhauls, Computational Intelligence and Natural
Computing, 2009. CINC’09. International Conference on, Vol. 1, IEEE, pp. 425–428.
Clarke, G. and Wright, J. W.: 1964, Scheduling of vehicles from a central depot to a number of
delivery points, Operations research 12(4), 568–581.
Dantzig, G.: 1957, Discrete-variable extremum problems, Operations Research 5, 266–277.
Dantzig, G., Fulkerson, R. and Johnson, S. M.: 1954, Solution of a large-scale traveling
salesman problem, Operations Research 2, 393–410.
Deb, K.: 2004, Multi-Objective Optimization Using Evolutionary Algorithms., John Wiley &
Sons.
Deb, K., Agrawal, S., Pratap, S. and Meyarivan, T.: 2000, A fast elitist non-dominated sorting
genetic algorithm for multi-objective optimization: Nsga-ii., In proceedings of the parallel
205
Bibliografía
206
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Gutin, G. and Punnen, A. P.: 2002, The Traveling Salesman Problem and Its Variations,
Springer.
Hajek, B.: 1988, Cooling schedules for optimal annealing., Math. Oper. Res., 13 pp. 311–329.
Hajek, B. and Sasaki, G.: 1989, Simulated annealing to cool or not., Systems and Control
Letters, 12 pp. 443–447.
Hayes, R. and Wheelwright, S.: 1984, Restoring Our Competitive Edge: Competing Through
Manufacturing., Nueva York: John Wiley and Sons.
Ho, W., Ho, G. T., Ji, P. and Lau, H. C.: 2008, A hybrid genetic algorithm for the multi-depot
vehicle routing problem, Engineering Applications of Artificial Intelligence 21(4), 548–557.
Holland, J.: 1975, Adaptation in natural and artificial systems., Ann Arbor, MI:MIT Press. .
Holland, J.: 1992, Adaptation in Natural and Artificial Systems., 2nd edition. MIT Press.
Jakobs, S.: 1996, Theory and methodology - on genetic algorithms for the packing of polygons,
European Journal of Operational Research 88, 165–181.
Karp, R.: 1972, Reducibility among combinatorial problems, Complexity of Computer
Computations, R.E. Miller and J.W. Thatcher, eds. pp. 85–103.
Kirkpatrick, S., Gelatt, C. and Vecchi, M.: 1983, Optimization by simulated annealing., Science,
220(4598) pp. 671–680.
Kirkpatrick, S. and Toulouse, G.: 1985, Configuration space analysis of travelling salesman
problems., J. Physique, 46 pp. 1277–1292.
Kung, H., Luccio, F. and Preparata, F.: 1975, On finding the maxima of a set of vectors., Journal
of the association for computing machinery, 22(4) pp. 469–476.
Lin, S. and Kernighan, W.: 1973, An effective heuristic algorithm for the traveling salesman
problem., Operations Research 21, 498–516.
Metropolis, N., Rosenbluth, A., Rosenbluth, M., Teller, A. and Teller, E.: 1953, Equation of
state calculations by fast computing machines., J. Chem. Phys., 21 pp. 1087–1090.
Michalewicz, Z.: 1992, Genetic Algorithms + Data Structures = Evolution Programs., Berlin:
Springer-Verlag.
Min, H., Current, J. and Schilling, D.: 1992, The multiple depot vehicle routing problem with
backhauling, Journal of Business Logistics 13(1), 259.
Mingozzi, A., Giorgi, S. and Baldacci, R.: 1999, An exact method for the vehicle routing
problem with backhauls, Transportation Science 33(3), 315–329.
Mitchell, M.: 1996, Introduction to Genetic Algorithms., Ann Arbor, MIT Press.
Moraglio, A., H.M.M., T. E. and R., T.: 1999, Genetic local search for job shop scheduling
problem, Simulation and Optimisation in Operations Management pp. 197–203.
Mulvey, J.: 1983, A classroomtime assignment model., European Journal of Operational
Research, 9 pp. 64–70.
Murata, T. and Ishibuchi, H.: 1995, Moga: Multi-objective genetic algorithms., In proceedings
of the second IEEE international Conference on Evolutionary Computation. pp. 289–294.
Rahmawati, R.: 2013, Multiple depot vehicle routing problem with backhauls menggunakan
algoritma clark and wright dengan 2-opt dan penerapannya, SKRIPSI Jurusan
Matematika-Fakultas MIPA UM .
Rammal, R., Toulouse, G. and Virasoro, M.: 1986, Ultrametricity for physicists., Reviews of
Modern Physics, 58(3) pp. 765–788.
207
Bibliografía
Rudolph, G.: 1994, Convergence analysis of canonical genetic algorithm., IEEE transaction on
neural network 5(1) pp. 96–101.
Salhi, S. and Nagy, G.: 1999, A cluster insertion heuristic for single and multiple depot
vehicle routing problems with backhauling, Journal of the operational Research Society
pp. 1034–1042.
Santa Chávez, J. J., Granada, M., Escobar, J. W. and Meneses, C. A. P.: 2015, A metaheuristic
aco to solve the multi-depot vehicle routing problem with backhauls, International Journal
of Industrial Engineering and Management (IJIEM) 6(2), 49–58.
Santa Chávez, J. J., Meneses, C. A. P. and Granada, M.: 2014, Un algoritmo de búsqueda
tabú para el problema de ruteo de vehículos considerando entregas y recogidas, XVII
Latin-Iberian-American Conference on Operations Research (CLAIO) .
Solla, S., Sorkin, G. and White, S.: 1986, Configuration space analysis for optimization
problems., In Bienenstock, E., Fogelman Soulie, F., and Weisbuch, G., editors, Disordered
Systems and Biological Organization, New York, Springer-Verlag. pp. 283–292.
Steinberg, L.: 1961, The backboard wiring problem: A placement algorithm, SIAM Review
pp. 37–50.
Thomas, W.: 2007, Global Optimization Algorithms: Theory and Application., ebook.
Toth, P. and Vigo, D.: 1997, An exact algorithm for the vehicle routing problem with backhauls,
Transportation science 31(4), 372–385.
Toth, P. and Vigo, D.: 2014, Vehicle routing: problems, methods, and applications, Vol. 18,
Siam.
Venkatraman, S. and Gary, G.: 2005, A generic framework for constrained optimization using
genetic algorithms., IEEE Trans. Evolutionary Computation, vol. 9. pp. 424-432.
Vose, M.: 1999, Simple Genetic Algorithm: Foundation and Theory., Ann Arbor, MIT Press.
Wade, A. and Salhi, S.: 2001, An ant system algorithm for the vehicle routing problem with
backhauls, MICÕ2001—-4th Metaheuristic International Conference.
Wade, A. and Salhi, S.: 2003, An ant system algorithm for the mixed vehicle routing problem
with backhauls, Metaheuristics: computer decision-making, Springer, pp. 699–719.
Wassan, N.: 2007, Reactive tabu adaptive memory programming search for the vehicle routing
problem with backhauls, Journal of the Operational Research Society 58(12), 1630–1641.
Yong, Z. and Sannomiya, N.: 2000, A method for solving large-scale flowshop problems by
reducing search space of genetic algorithms, IEEE International Conference on Systems, vol.
3 pp. 1776–1781.
Zixing, C. and Yong, W.: 2006, A multiobjective optimizationbased evolutionary algorithm for
constrained optimization., IEEE Trans. Evolutionary Computation, vol. 10. pp. 659-675.
208
Índice general
209
Índice general
210
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
211
Índice general
212
Mauricio Granada Echeverri - Jhon Jairo Santa Chávez.
Triqui, 18
Variable-opt, 38
Varianza, 77
Vecino
Ver Mutación, 89
213