You are on page 1of 30

GRASP

(Greedy Randomize Adaptive


Search Procedure)
Efrn Garca Buitrago
NDICE
Introducin
Descripcin general
Definicin
Fases (Constructiva y de Mejora)
Ejemplo CutWith
Fase de construccin
Fase de mejora
Usos prcticos
Alternativas/mejoras GRASP
Ventajas e incovenientes
Descripcin General
GRASP fue introducido por Feo and Resende (1989) y proviene de una
heurstica semi-constructiva.

GRASP es el acrnimo de Greedy Randomized Adaptive Search
Procedure, que, en espaol, puede traducirse por Procedimiento de
Bsqueda Adaptativo Aleatorizado y Avaricioso.

Definicin de GRASP: Es un algoritmo metaheurstico multi-arranque
en el que cada arranque se corresponde con una iteracin. Se aplica
comnmente a la optimizacin de problemas combinatorios. GRASP,
por lo general consiste de iteraciones que se componen de 2 fases:


1. La fase de construccin, que se encarga de obtener una solucin
factible de alta calidad.
2. La fase de mejora, que se basa en la optimizacin (local) de la
solucin obtenida en la primera fase.

Descripcin General
G reedy
R andomize Fase de construccin
A daptative
S earch
P rocedure Fase de mejora
Fase Constructiva
1. Eleccin aleatoria semilla.
2. Asignacin costes: Funcin Greedy.
3. Creacin lista de candidatos RCL.
RCL = Cmin + x (Cmax - Cmin)
4. Eleccin aleatoria de elemento
(Randomize).
5. Adaptacin de la solucin con el nuevo
elemento (Adaptative)
Fase Constructiva
Fase de mejora
Una bsqueda local para mejorar la fase
constructora
Ejemplo Cutwidth
A
F
C
E D

B
Ejemplo Cutwidth
Planteamiento
Grafo Matriz
Ejemplo Cutwidth
Posible solucin
A
F
C
E D

B
A B C D E F
2 4 4 4 1
Max(xi) = 4
Pseudocdigo Grasp
{x_final: TipoSolucion} = MSM(M: integer; f : TipoFuncionObjetivo)
var
i: integer;
x : TipoSolucion;
begin
for i := 1 to M do
/*Construir una solucin a travs de cualquier heurstico o proc.
aleatorio*/
{x} := ConstruirSolucion();
{x} := MejorarSolucion(x , f );
{x_final} := ActualizarSolucion( f , x_final, x )
end for
end
Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
Primer elemento
semilla/aleatorio
A
Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
Nodos Costes
B
C
D

E
F
0
1
0
1
0
A
A
A
A
A
B
C
D
E
F
0
1
0
1
0
A
Ejemplo Cutwidth (Construccin)
B
C
E
F
D

0
1
0
1
0
B
D
C
E
F

0
0
0
1
1
Ordenamos
Lista
Candidatos
Restringida


Cmin = 0
Cmax = 1
= 0,5
RCL_umbral = 0,5
RCL_umbral = Cmin + x (Cmax - Cmin)

A
F
C
E D

B
A
Ejemplo Cutwidth (Construccin)
B
D
C
E
F

0
0
0
1
1
A
F
C
E D

B
A
B
D
F

0
0
0
Lista
Candidatos
Restringida
RCL_umbral =
0,5
Elegimos uno
aleatoriamente
Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
Nodos
Costes
B
C

D
E
1
1
0
1
A
F
A
A
A
A
F
F
F
F
B
C
D
E
0 1
1 1
0 0
1 1
Ejemplo Cutwidth (Construccin)
B
C
E
D

1
1
0
1
D

0
RCL_umbral =
0,5
Elegimos uno
aleatoriamente
A
F
C
E D

B
A
F
Cmin = 0
Cmax = 1
= 0,5
Lista
Candidatos
Restringida
RCL_umbral = Cmin + x (Cmax - Cmin)

Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
Nodos
Costes
B
C

E
2
1
2
A
F
A
A
A
F
F
F
D
D
D
0 1
1 1
1 1
D
B
C
D
2
1
2
Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
A
F D
B
C
E

2
1
2
C

1
RCL_umbral =
1,5
Elegimos uno
aleatoriamente
Cmin = 1
Cmax = 2
= 0,5
Lista
Candidatos
Restringida
RCL_umbral = Cmin + x (Cmax - Cmin)

Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
Nodos
Costes
B
E

3
3
A
F
A
A
F
F
D
D
1 2
2 2
D
C
C
3
3
C
B
E
2
3
Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
A
F D
B
E
3
3 RCL_umbral = 3
Elegimos uno
aleatoriamente
Cmin = 3
Cmax = 3
= 0,5
Lista
Candidatos
Restringida
RCL_umbral = Cmin + x (Cmax - Cmin)

C
B
E
3
3
Ejemplo Cutwidth (Construccin)
A
F
C
E D

B
A F D C E B
2 3 4 5 2
Max(xi) = 5
Solucin
factible
Pseudocdigo Grasp
{x_final: TipoSolucion} = MSM(M: integer; f : TipoFuncionObjetivo)
var
i: integer;
x : TipoSolucion;
begin
for i := 1 to M do
/*Construir una solucin a travs de cualquier heurstico o proc.
aleatorio*/
{x} := ConstruirSolucion();
{x} := MejorarSolucion(x , f );
{x_final} := ActualizarSolucion( f , x_final, x )
end for
end

Ejemplo Cutwidth (Mejora por
intercambio)

A
F
C
E D

B
A
F D C E B
A D C E B
D
F A C E B
C
F D A E B
E
F D C A B
B
F D C E A
F
Max(xi) = 5
Max(xi) = 5
Max(xi) = 5
Max(xi) = 5
Max(xi) = 4
Max(xi) = 3
Ejemplo Cutwidth (Mejora por
inserccin)

A
F
C
E D

B
A
F D C E B
A F D C E
E
B A F D C
C
E B A F D
D
C E B A F
F
D C E B A
B
Max(xi) = 5
Max(xi) = 4
Max(xi) = 5
Max(xi) = 4
Max(xi) = 4
Max(xi) = 5
Pseudocdigo Grasp
{x_final: TipoSolucion} = MSM(M: integer; f : TipoFuncionObjetivo)
var
i: integer;
x : TipoSolucion;
begin
for i := 1 to M do
/*Construir una solucin a travs de cualquier heurstico o proc.
aleatorio*/
{x} := ConstruirSolucion();
{x} := MejorarSolucion(x , f );
{x_final} := ActualizarSolucion( f , x_final, x )
end for
end
Usos prcticos

Cubrimiento de conjuntos.
Enrutamiento y Transporte (TSP)
Lgica (N-reinas, tablero-figuras)
Grafos (CutWith)
Localizacin (p-mediana)
Telecomunicaciones (VLSI)
Alternativas/mejoras GRASP
GRASP Reactivo.
no es fijo, se selecciona de un conjunto de valores discretos en
cada iteracin. Este conjunto viene determinado por los valores
delas soluciones en iteraciones previas ( auto-ajusta su valor)

Funciones de desplazamiento.
Como todos lo elementos de la RCL tienen la misma probabilidad
de ser incluidos en la solucin de forma aleatoria se hacen estas
funciones que son distribuciones de probabilidad encargadas de
enfocar la seleccin de un elemento a ciertos candidatos, los
candidatos por tanto dejan de ser equi-probables.

Memoria y aprendizaje.
Introduccin de memoria a largo plazo. Se tiene en cuenta la
historia pasada (soluciones de iteraciones anteriores) a la hora de
tomar una decisin en la fase de construccin.
Ventajas e inconvenientes
Entre los puntos fuertes de esta metaheurstica estn el
hecho de que es fcil de programar, muy rpida, tienen
muy pocos parmetros, se maneja bien en presencia de
restricciones, genera soluciones buenas y se puede
hibridizar y paralelizar con facilidad.

Entre los inconvenientes del mtodo estn que hay que
definir el proceso constructivo y en particular el ndice de
forma "ad hoc" (especfico) para cada problema y,
desgraciadamente, no todos los problemas permiten
definir un ndice que mida de forma efectiva el impacto
de las sucesivas decisiones en la calidad de la solucin
finalmente generada.

You might also like