You are on page 1of 12

PROGRAMACIÓN HEURÍSTICA

INTRODUCCIÓN

La heurística está diseñada para encontrar buenas soluciones aproximadas de


problemas combinatorios difíciles que de lo contrario no pueden resolverse mediante
los algoritmos de optimización disponibles. Una heurística es una técnica de búsqueda
directa que utiliza reglas favorables prácticas para localizar soluciones mejoradas. La
ventaja de la heurística es que en general determina (buenas) soluciones con rapidez,
utilizando reglas de solución simples. La desventaja es que la calidad de la solución (con
respecto a la óptima) suele desconocerse.

Las primeras generaciones de heurística se basan en la regla de búsqueda


codiciosa que dicta que se mejore el valor de la función objetivo con cada movimiento
de búsqueda. La búsqueda termina en un óptimo local donde ya no son posibles más
mejoras.

En la década de 1980, una nueva generación de metaheurística buscó mejorar


la calidad de las soluciones heurísticas al permitir la búsqueda de una trampa de
escape en óptimos locales. La ventaja obtenida se logra a expensas de los cálculos
incrementados

la heurística codiciosa.

Se tiene : Heurística Vecindad; Heurística de camino aleatorio.

MetaHeuristica:

Se tiene: Tabú; Secuencia de tareas

HEURÍSTICA CODICIOSA (BÚSQUEDA LOCAL)

Minimizar z = F(x), x ϵ S

La definición de N(xk)es importante en el diseño de la heurística. Si, para x entera,


N(x k ) = [x k - 1, x k + 1] define la vecindad inmediata de xk. Alternativamente, una
vecindad expandida puede incluir puntos de solución cercanos adicionales. La primera
definición implica menos cálculos de búsqueda local pero podría deteriorar la calidad
de la solución final. La segunda definición (vecindad expandida) requiere más cálculos
de búsqueda local, pero podría mejorar la calidad de la solución.
Heurística de variable discreta

Esta sección presenta dos ejemplos que utilizan la heurística codiciosa para estimar el
óptimo de una función de una sola variable discreta

Pasos:

 Se inicia en un punto Factible.


 Se mueve a un punto de mejor solución
 Finaliza cuando ya no se puede obtener mejor solución

Ejemplo De los problemas propuestos de Hamdy A. Taha.

Considere la función F(x) dada en la figura y defina el problema de


optimización como Maximizar F(x), x ϵ S = {1, 2, . . . ,
8}
La función tiene un mínimo local en x = 3(B) y un mínimo global en x = 7D).
N(xk) = {xk - 1, xk + 1}. El número aleatorio R 5 .1002 selecciona el punto
de inicio x = 1 de entre todos los puntos factibles x = 1, 2,…, 8. En la iteración 1,
N(1) = {2} porque x = 0 es no factible. La búsqueda termina en la iteración 3
porque F(x) . F(x* = 3) para todas las x H N(3). Esto significa que la búsqueda
se detiene en el máximo local x* =1 con F(x*) = 90. Y UN máximo global x* =5
con F(x*) = 100

Función F(x) Heurística Codiciosa


120

100

80

60

40

20

0
1 2 3 4 5 6 7 8

Series1
Resolución

Iteraciones
k xk N(Xk) F(xk-1) F(xk+1) Acción
Inicia 0 3 x*=3, F(x*)=50; xk+1=3
1 3 [2 , 4] 60 80 F(xk+1)>F(x*),estab x*=4, F(x*)=80
2 4 [3 , 5] 50 100 F(xk+1)>F(x*),estab x*=5, F(x*)=100
F(xk-1)F(xk+1)<F(x*,,estab xk-1=5, máximo
fin 3 5 [4 , 6] 80 40 local
:

Resultado x* = 5 F(x*)=100, en la iteración 2

Heurística de camino abierto

Los valores son un rango mayor

Ejemplo del libro Hamdy A. Taha

considere la función F(x) dada en la figura 10.1 y defina el problema de


optimización como Minimizar F(x), x C S = {1, 2, . . . ,
8}
La función tiene un mínimo local en x 5 3(B) y un mínimo global en x 5 7D).
N(xk) = {xk - 1, xk + 1}. El número aleatorio R 5 .1002 selecciona el punto
de inicio x 5 1 de entre todos los puntos factibles x 5 1, 2,…, 8. En la iteración 1,
N(1) 5 {2} porque x 5 0 es no factible. La búsqueda termina en la iteración 3
porque F(x) . F(x* 5 3) para todas las x H N(3). Esto significa que la búsqueda
se detiene en el mínimo local x* 5 3 con F(x*) 5 50.
Función F(x) Heurística caminata aleatoria
120
100
80
60
40
20
0
1 2 3 4 5 6 7 8

Series1

RESOLUCIÓN
1. Repitiendo la heurística con puntos de inicio aleatorios y expandiendo
el tamaño de la vecindad para llegar a más puntos de solución factible

Iteraciones
k xk F(xk) N(Xk) Rk x'k F(x'k) Acción
Inicia 0 1 90 x*=1, F(x*)=90; xk+1=1
1 1 90 [2,3,4,5,6,7,8] 0.4128 3 50 F(x'k)<F(x*),establecer x*=3,xk-1=3
2 3 50 [1,2,4,5,6,7,8] 0,2039 7 20 F(x'k)<F(x*),establecer x*=7,xk+1=7
F(x'k+1)>F(x*),volver a muestrear
3 7 20 [1,2,3,4,5,6,8] 0,0861 6 40 desde N(xk)
F(x'k+1)>F(x*),volver a muestrear
fin 4 7 20 [1,2,3,4,5,6,8] 0,5839 2 60 desde N(xk)

Mejor solución x=3 f(x*)=20, en la segunda iteración

Nota: El Rk se saca de la tabla del apéndice A que son números aleatorios

Heurística de variable continua

El problema de optimización se define como

Minimizar F(x), L ≤x ≤ U

𝑈−𝐿 𝑈−𝐿
1. El desplazamiento se basa en una distribución uniforme en el intervalo (-2
, 2 )
Dado que R es un número aleatorio (0,1), entonces

X(k+1)= xk + (R - 0.5)(U - L)

2. El desplazamiento se basa en una distribución normal con una media de x k y


𝑈−𝐿
desviación estándar (- 6
)(la estimación de la desviación estándar se basa en el
supuesto de que U - L representa de forma aproximada la dispersión 6-sigma de
la distribución normal). Por lo tanto,
𝑈−𝐿
𝑥𝑘+1 = 𝑥𝑘 + ( ) 𝑁(0,1)
6

3. La desviación estándar N(0,1) se determina con tablas normales en el apéndice A


del libro de Hamdy A. Taha 9 edición

Ejemplo

Aplique la heurística de caminata aleatoria al problema


Minimizar F(x) = x5 - 10x4 + 35x3 - 50x2+ 24x, 0 ≤x ≤ 4

Extensión de la búsqueda codiciosa al caso de múltiples variables. Dada X = (xi,


x 2 ,...,x n ) y un espacio de soluciones S, el problema de optimización se define como

Minimizar z = F(X), X e S
Siendo xo=0.5 y x’k=xk+4(R-5) en el intervalo , 0 ≤x ≤ 4
Para lo cual

1 x'k = 0,5+4( 0.4127 -5) = 0,151


2 x'k = 0,5+4( 0,204 -5) = -1,033
3 x'k = 0,5+4( 0,086 -5) = 1,801
4 x'k = 0,5+4( 0,584 -5) = 2,086
5 x'k = 0,5+4( 0,872 -5) = 3,288

Iteraciones
k xk F(xk) Rk x'k F(x'k) Acción
Inicia 0 0,5 3,281 x*=1, F(x*)=90; xk+1=1
1 0,5 3,281 0.4128 0,151 2,602 F(x'k)<F(x*),establecer x*=0.1512
2 0,15 2,602 0,2039 -1,033 Fuera del intervalo, volver al muestreo, kk+1=xk
3 0,15 2,602 0,0861 1,801 -0,757 F(x'k+1)>F(x*),volver a muestrear desde N(xk)
4 1,8 -0,757 0,5839 2,086 0,339 F(x'k+1)>F(x*),volver a muestrear desde N(xk)
fin 5 1,8 -0,757 0,8718 3,288 -1,987 F(x'k)<F(x*),establecer x*=3,288 F(x*)=-1,987

El resultado buscado es x= 1.801, F(x)= -7.57, ocurre en la iteración 3 Mínimo exacto global
x*= 3.64438, F(x*)= -3.631
METAHEURÍSTICA
La heurística codiciosa presentada en la sección 10.2 comparte una estrategia
común. En la iteración k la búsqueda se mueve a un nuevo punto Xk11 H N(Xk)
sólo si el nuevo punto mejora el valor de la función objetivo F(X). Si no se
puede hallar una Xk11 mejor en N(Xk) o si se llega a una cantidad de
iteraciones especificada por el usuario, la solución se encuentra atrapada en un
óptimo local y la búsqueda termina.

La metaheurística está diseñada principalmente para escapar del


entranpamiento en el óptimo local al permitir movimientos inferiores, si es
necesario. Se espera que la flexibilidad agregada a la búsqueda conduzca a una
mejor solución.
A diferencia de la heurística codiciosa, la cual siempre termina cuando se
llega a un óptimo local, la terminación de una búsqueda metaheurística se basa
en los siguientes puntos de referencia:

1. La cantidad de iteraciones de búsqueda excede una cantidad especificada.

2. La cantidad de iteraciones desde la última mejor solución excede una

cantidad especificada.

3. La vecindad asociada con el punto de búsqueda actual, o está vacía o no

puede conducir a un nuevo movimiento de búsqueda viable.

4. La calidad de la mejor solución actual es aceptable.

10.3.1 Algoritmo de búsqueda tabú

Cuando la búsqueda se queda atrapada en un óptimo local, la búsqueda tabú (BT)


selecciona el siguiente movimiento de búsqueda (posiblemente inferior) de una
manera que prohíbe temporalmente, volver a examinar las soluciones anteriores.
El instrumento principal para alcanzar este resultado es la lista tabú que “recuerda”
los movimientos de la búsqueda anterior y los deshabilita durante un periodo de
tenencia especificada. Cuando un movimiento tabú completa su tenencia, se elimina
de la lista tabú y se hace disponible para futuros movimientos.
Ejemplo 10.3-1 (Minimización de una función de una sola variable)

Este ejemplo detalla la aplicación de la BT a la minimización de la función F(x) en la


figura 10.1. Para la iteración k sean

xk = Solución de prueba actual


N(xk) = Vecindad de Xk
Lk = Lista tabú de valores inadmisibles de x en la iteración

k t = Periodo de permanencia tabú expresado en cantidad de


iteraciones sucesivas

x* = Mejor solución encontrada durante la búsqueda

En términos de la función F(x) de la figura 10.1, los valores factibles son 1,2,..8. En la iteración
k, el conjunto de vecindades de xk puede definirse como N(xk) = {xk — q,. xk — 1, xk + 1,.,xk +
q} — Lk donde q es una constante entera. La definición excluye implícitamente los

Minimización mediante el algoritmo de BT de F(x), con periodo de permanencia tabú t = 3 y N(xk)


= {xk — 4,..., xk — 1, xk + 1,..., xk + 4}

Iteración k Rk xk F(xk) Lk N(xk)


(Inicio)0 .0935 1 90 {2,3,4,5}
1 .4128 3 50 {1} {2,4,5,6,
2 .2039 4 80 {1,3} {2,5,6,7,
7}
3 .0861 2 60 {1,3,4} {5,6}
8}
4 .5839 5 100 {3,4,2} {1,6,7,8}
(Terminación)5 .5712 7 20 {4,2,5} {3,6,8}

Mejor solución heurística: x = 7, F(x) = 20, en la iteración 5 (sucede que también es óptima).

Ejemplo (Secuenciación de tareas)


Considere el caso de secuenciar n tareas en una sola máquina. El tiempo de procesamiento de
la tarea j es tj y su fecha límite es dj (medida a partir de cero). Si la tarea j se completa con
anticipación a su fecha límite se incurre en un costo de retención (almacenamiento) hj por
unidad de tiempo. Una tarea j retrasada provoca un costo de penalización pj por unidad de
tiempo. La tabla da los datos para un problema de 4 tareas.

Defina
jik = La tarea j ocupa la posición i durante la iteración
k sk = Secuencia de tareas utilizada en la iteración
k N(sk) = Secuencias de las vecindades de
sk Lk = Lista tabú en la iteración k
t = Periodo de permanencia expresado en cantidad de iteraciones
sucesivas
zk = Costo total (retención + penalización) de la secuencia
sk s* = Mejor secuencia disponible durante la búsqueda
z* = Costo total asociado con s*

En realidad, un elemento tabú puede definir un siguiente movimiento de búsqueda si satisface


el llamado Criterio de Nivel de Aspiración, como se explicará en el ejemplo

Datos del problema de secuenciación de tareas para el ejemplo


Tiempo de procesamiento Costo de retención Costo de penalización
Tarea, j en días, Tj Fecha límite, dj por día, hj por día, pj
1 10 15 $3 $10
2 8 20 2 22
3 6 10 5 10
4 7 30 4 8

Entre las posibles opciones para determinar la vecindad, N(s¿), a partir de sk se


encuentran las siguientes:
1. Intercambiar las posiciones de pares sucesivos de tareas.
2. Intercambiar las posiciones de pares implícitos de cada dos tareas.
3. Intercambiar la posición de una tarea con otra seleccionada al azar de entre las
tareas restantes.
En este ejemplo se utiliza la primera definición. Para demostrar su uso considere so =
(1-2-3-4). El conjunto de vecindades es N(so) = {(2-1-3-4), (1-3-2-4, (1-2-4-3)}, el cual
corresponde a intercambiar las posiciones (en so) de las tareas 1, y 2, las tareas 2 y 3, y
las tareas 3 y 4, respectivamente. La selección del siguiente movimiento si a partir de
N(so) puede hacerse al azar o basado en el criterio de costo mínimo. Este ejemplo
emplea la selección aleatoria.
La tabla 10.7 resume 5 iteraciones suponiendo un periodo de permanencia t = 2 iteraciones. La
secuencia (3-1-2-4) en la iteración 2 proporciona la mejor solución con z* = 126. Para de

TABLA BT aplicada al problema de secuenciación de tareas con periodo 2 iteraciones


de permanencia t =
Secuencia, Lista Vecindades
Iteración, sk Costo total (retención) + z* L(sk)
tabú R N(sk)*
k (penalización)
(Inicio) (1-2-3-4) (5 X 3 + 2 X 2) + (14 X 10 + 1 X 8) = 167 .512 (2-1-3-4)
0 167 4 (1-3-2-4)/
(1-2-4-3)
1 (1-3-2-4) (5 X 3) + (6 X 10 + 4 X 22 + 1 X 8) = {3-2} .324 (3-1-2-4)/ (12 3 4)
171 1 (1-3-4-2)
2 (3-1-2-4) (4 X 5) + (1 X 10 + 4 X 22 + 1 X 8) = 126 {3-2,3-1} .295 (1-3 2 4)
126 2 (3-2-1-4)/
3 (3-2-1-4) (4 X 5 + 6 X 2) + (9 X 10 + 1 X 8) = {3-1,2-1} .424 (2-3-1-4)/
(3-1-4-2)
130 1 (3 12 4) (3-2-4-1)
4 (2-3-1-4) (12 X 2) + (4 X 10 + 9 X 10 + 1 X 8) = {2-1,2-3} .891 (3-2 1 4)
162 2 (2-1-3-4)
(Termi- (2-3-4-1) (12 X 2 + 9 X 4) + (4 X 10 + 16 X 10) = {4-1,1-3} .099 (3-2-4-1)/
(2-3-4-1)/
nación)
5 260 2 (2-4-3-1)
(2-3-1-4)

Mejor secuencia de búsqueda: (3-1-2-4) con costo = 126 en la iteración 2


La marca de verificación ✓ designa el elemento no tabú seleccionado al azar a partir de N(sk)
utilizando R.

mostrar los cálculos de los costos en la tabla, el valor de z para la secuencia S2 = (3-1-2-4) de la
iteración 2 se determina en el siguiente orden.

Tarea: 3 1 2 4
Tiempo de 6 10 8 7
Fecha límite: 10 15 20 30
procesamiento:
Fecha de terminación: 6 16 24 31
Tiempo de retención: 4 0 0 0
Tiempo de retardo: 0 1 4 1
Costo de retención: 20 0 0 0
Costo de penalización por 0 10 88 8
retraso

Tarea: 3 1 2 4
Tiempo de procesamiento: 6 10 8 7
Fecha límite: 10 15 20 30
Fecha de terminación: 6 16 24 31
Tiempo de retención: 4 0 0 0
Tiempo de retardo: 0 1 4 1
Costo de retención: 20 0 0 0
Costo de penalización por 0 10 88 8
Por lo tanto, z = Costo de retención + Costo de penalización
retraso

La heurística funciona de la siguiente manera: En la iteración 1, R = 0.5124 selecciona la


secuencia S1 = (1-3-2-4) al azar de N(so). La lista tabú asociada es L1 = {3-2}, lo que significa
que las posiciones de las tareas 2 y 3 no pueden cambiarse durante el periodo de permanencia
(es decir, durante dos iteraciones sucesivas). Ésta es la razón por la que la secuencia (1-2-3-4)
se excluye en N(s1). El mismo razonamiento aplica a las secuencias tachadas en iteraciones
subsiguientes. Observe que los cálculos y aplican R sólo a elementos cercanos admisibles

TABLA Datos para el problema , conjunto 1


Tiempo de procesamiento Fecha límite, Costo de retención Costo de penalización
Tarea, j en días, Tj dj por día, hj por día, pj
1 10 12 $3 $10
2 12 30 1 20
3 5 9 5 12
4 7 25 2 8
5 9 40 4 15

Resolución

Tiemp Cost Pen


Tarea j ProceTj Fech Lim dj Cost Ret Hj dia Pj
ingrese las tareas 1 10 12 3 10
y los procesos 2 12 30 1 20
según sus valores 3 5 9 5 12
4 7 25 2 8
5 9 40 4 15

tareas 1 2 3 4 5
Tiempo de 10 12 5 7 9
procesamiento
Fecha Limite 12 30 9 25 40
Fecha de término 10 22 27 34 43
Tiempo de Retención 2 8 0 0 0
Tiempo de Retardo 0 0 18 9 3
Costo de Retencion 6 8 0 0 0 14
Costo de Retardo 0 0 216 72 45 333
347

tareas 1 3 2 4 5
Tiempo de
procesamiento 10 5 12 7 9
Fecha Limite 12 9 30 25 40
Fecha de término 10 15 27 34 43
Tiempo de Retención 2 0 3 0 0
Tiempo de Retardo 0 6 0 9 3
Costo de Retencion 6 0 3 0 0 9
Costo de Retardo 0 72 0 72 45 189
198
tareas 3 1 2 4 5
Tiempo de
procesamiento 5 10 12 7 9
Fecha Limite 9 12 30 25 40
Fecha de término 5 15 27 34 43
Tiempo de Retención 4 0 3 0 0
Tiempo de Retardo 0 3 0 9 3
Costo de Retencion 20 0 3 0 0 23
Costo de Retardo 0 30 0 72 45 147
170

tareas 3 2 1 4 5
Tiempo de 5 12 10 7 9
procesamiento
Fecha Limite 9 30 12 25 40
Fecha de término 5 17 27 34 43
Tiempo de Retención 4 13 0 0 0
Tiempo de Retardo 0 0 15 9 3
Costo de Retencion 20 13 0 0 0 33
Costo de Retardo 0 0 150 72 45 267
300

tareas 3 1 4 2 5
Tiempo de 5 10 7 12 9
procesamiento
Fecha Limite 9 12 25 30 40
Fecha de término 5 15 22 34 43
Tiempo de Retención 4 0 3 0 0
Tiempo de Retardo 0 3 0 4 3
Costo de Retencion 20 0 6 0 0 26
Costo de Retardo 0 30 0 80 45 155
181

tareas 3 1 4 5 2
Tiempo de 5 10 7 9 12
procesamiento
Fecha Limite 9 12 25 40 30
Fecha de término 5 15 22 31 43
Tiempo de Retención 4 0 3 9 0
Tiempo de Retardo 0 3 0 0 13
Costo de Retencion 20 0 6 36 0 62
Costo de Retardo 0 30 0 0 260 290
352
Realizando 6 iteraciones se tiene

Iteración k Secuencia Costo de Z* L(sk) Rk Vecindades


Sk retención
+costo N(sk)*
penalización
0 (1-2-3-4-5) 347 0.5124 (2-1-3-4-5)
(1-3-2-4-5)´
(1-2-4-3-5)
(1-2-3-5-4)
1 (1-3-2-4-5) 198 [2-3] 0.3241 (3-1-2-4-5)´
(1-2-3-4-5)
(1-3-4-2-5)
(1-3-2-5-4)
2 (3-1-2-4-5) 170 170 [1-3,2-4] 0.2952 (1-3-2-4-5)
(3-1-4-2-5)
(3-1-2-5-4)
(3-2-1-4-5)´
3 (3-2-1-4-5) 300 [2-1,4-5] 0.4241 (2-3-1-4-5)
(3-1-2-4-5)
(3-2-4-1-5)
(3-2-1-5-4)
4 (3-1-4-2-5) 181 181 [3-1,2-5] 0.8912 (1-3-4-2-5)
(3-4-1-2-5)
(3-1-2-4-5)
(3-1-4-5-2)
5 (3-1-4-5-2) 352 [1-4,5-2] 0.0992 (1-3-4-5-2)
(3-4-1-5-2)
(3-1-5-4-2)
(3-1-4-2-5)

El costo optimo mínimo es 170, en la segunda iteración

Es todo Gracias