Sunteți pe pagina 1din 5

Optimizacion Capitulo 6 Bsqueda Local 1

1. Introduccion
En este captulo y los que restan consideraremos mtodos aplicados a
problemas de optimizacion NP-hard, es decir, aquellos para los cuales no
se conocen algoritmos eficientes ( de tiempo polinomial) que hallen la
solucin exacta. En lugar de eso intentaremos el uso de mtodos
eficientes pero que solo pretenden una solucin aproximada. A diferencia
del capitulo anterior, estas soluciones carecen de una cota de la
aproximacion. Simplemente nos conformaremos con la esperanza de que
la solucion que resulte sea "buena". Es en es sentido que llamamos
heuristicos a estos mtodos.

Recordemos que llamamos instancia de un problema a un caso especifico


del mismo. Por ejemplo en el problema TSP se obtiene una instancia
cuando especificamos que grafo completo y que costo sobre sus ramas se
est considerando.

Un problema de optimizacion lo indicaremos mediante el par (F,c) donde


F = conjunto de soluciones factibles de un instancia de un problema de
optimizacin. c: FR, la funcin costo.

El objetivo es encontrar un f0F tal que c(f0 )c(f) para todo fF.
La base del metodo consiste en asignar a cada tF un entorno de t, es
decir, un subconjunto N(t) F que contiene a t y a cuyos elementos los
consideramos "cercanos o vecinos" a t.

Definamos la funcion improve de la siguiente manera:


any s N (t ) c( s ) c(t ) if s exists
improve(t)=
" no" otherwise
El algoritmo de busqueda local consiste consiste en partir de una
solucion inicial t0 y aplicar reiteradamente improve para ir disminuyendo
c(t) hasta encontrar un t en cuyo entorno no podamos disminuir el costo.
Habremos as conseguido un mnimo local. Observamos que hay por lo
menos dos maneras extremas para definir s en cada iteracin: hallar la
primera s que mejora el costo o hallar una s que minimiza el costo sobre
todo N(t).

Este algoritmo presenta los siguientes problemas:


1) Como debe elegirse una solucin t0 inicial. A veces conviene usar
varias t iniciales en cuyo caso el problema es cuantas y cmo
distribuirlas en F.
2) Definir el entorno N(t) para c/t . Esto es problem-dependent e
intuitivo. Ademas, hay un trade-off entre N grande o chica. Grande
consume mucho tiempo de bsqueda pero el minimo local es de
buena calidad. Chico es rapido pero el minimo puede ser pobre.
Las decisiones 1) y 2) se toman en forma emprica. Se trata de un arte.

2. Ejemplos de entornos
1) TSP
Consideremos el siguiente entorno en el problema TSP.
F= {f: circuitos hamiltonianos en el grafo completo G}
Optimizacion Capitulo 6 Bsqueda Local 2

N2(f)= {g: g es un circ.hamilt. que resulta de suprimir 2 ramas en f y


reemplazarlas por otras 2 que formen de nuevo un circuito en G}
Por ejemplo, supongamos que las ramas fueran (a,b) y (y,z). Entonces las
sustituiriamos por (a,z) y (b,y).

2) MST
Consideremos el siguiente entorno en el problema MST (minimum
spanning tree)
F= {f: spanning trees de G}
N(f)= { g: g se obtiene agregando una rama en f y suprimiendo una rama
en el circuito resultante}
(este es solo un ejemplo ya que existe un algoritmo de tiempo
polinomial)

Definicion
Cuando el minimo en cualquier entorno es tambien un minimo global
decimos que la funcion N(t) es exacta.

3) Bubble sort
Sea una sucesin de nmeros a1,a2,...,an. El problema consiste en
ordenarla de menor a mayor. F={f: f es una permutacin de la sucesion}.
Podemos definir la funcion costo como c(f)=j f(j). Nk (f)={g:
permutacin que resulta de intercambiar en f k pares distintos}. Para k=1
se tiene bubble sort. Observemos que el entorno definido es exacto.

4) Particion uniforme de un grafo


Sea G=(V,E) un grafo donde V=2n es par. Sea p(e) eE un peso
s/c/rama. Consideramos una particion de V en 2 partes con igual numero
de vertices c/u (A,B). Escribamos (A,B) para representar las ramas
cuyos extremos pertenecen a A y a B. El problema es hallar la particion
que minimiza la suma de las p(e) para e(A,B).
Definimos un vecino de (A,B) eligiendo k ramas de (A,B) y permutando
sus extremos, es decir, si (a,b) (A,B) con aA y bB ponemos aB y
bA.

5) Job shop scheduling.


Hay n jobs, m mquinas y N operaciones. Cada operacin pertenece a un
job y debe ser hecha en una mquina. Las operaciones de un dado job
estan ordenadas linealmente por .
Armamos un grafo mixto G=(V,A,E) donde V son las N operaciones, A
es el conjunto de arcos (uv) donde u y v son 2 operaciones ordenadas de
un mismo job, E son pares no ordenados {u,v} de las operaciones de una
misma mquina (con lo cual las operaciones de una misma mquina
forman un clique).
A cada vrtice u (operacin) tiene asignado el tiempo pu>0 para procesar
la operacin u en la mquina que le corresponde.

Un schedule consiste en asignar a cada vertice u un instante su0 que es


el momento en que debe comenzar la operacin u en la mquina que le
Optimizacion Capitulo 6 Bsqueda Local 3

corresponde. El objetivo es que el makespan maxu {su+pu} sea un


mnimo.
Observamos que un schedule queda determinado por un orden de las
operaciones en cada mquina. Esto significa que en el grafo (V,A,E)
debemos transformar los pares de E en pares ordenados E'. Esto modifica
el grafo G que se transforma en uno G' dirigido. ESTE GRAFO
DIRIGIDO G'=(V,AE') REPRESENTA UN SCHEDULE SI Y SOLO
SI ES ACCLICO. En este grafo, maxu {su+pu} est dado POR LA
LONGITUD DE CAMINO MS LARGO EN G'.
Si G'0 = (V,AE'0) es un schedule factible (grafo acclico) definimos un
schedule vecino invirtiendo k arcos de E'0. En palabras, elegimos 2
operaciones sucesivas en una mquina e invertimos el orden y esto lo
hacemos para k pares distintos. Obtenemos as otro grafo
G'1= (V,AE'1). Sin embargo, este puede no ser acclico.
Para ver esto en forma simple consideramos un caso particular de job
shop que se llama flow shop donde todas las operaciones de un job
se procesan en el mismo orden en las mquinas. Llamemos
A,B,C,... a la mquinas entonces las operaciones de cualquier job
uvw... se procesan en A,B,C, ... respectivamente. Algunas
mquinas pueden saltearse: por ejemplo pw=0 significa que no hay
operacin en C para ese jobConsideremos un simple ejemplo con 3
mquinas A,B,C y 3 jobs a,b,c. Hay 7 operaciones numeradas
segn se indica en la tabla .

Operaciones
a b c
A 1 3 5
B 2 6
C 4 7

Representamos ahora las operaciones en un grafo mixto (figura 1)


figura 1 figura 2

1 3 5 1 3 5

2 6 2 6

4 7

4 7

Obtenemos un grafo dirigido decidiendo el orden de las operaciones en


cada maquina (figura 2). Construimos ahora un diagrama llamado Gannt
Optimizacion Capitulo 6 Bsqueda Local 4

donde se representan las operaciones u (=1,2,3,4,5,6,7) en cada maquina


como bloques de longitud proporcional al tiempo pu de elaboracin
(fig 3):
figura 3

Tiempo

A 1 5 3

B 6 2

C 4 7

Observamos que el makespan es p1+p5+p3+p2 y es la longitud del camino


en el grafo 1532 (fig 2). As el makespan es el camino mas largo en el
grafo . Resumiendo, la iteracin del algoritmo es la siguiente:
1) Invertir k flechas de E'
2) Si el grafo resultante es acclico y el makespan es menor, aceptar el
nuevo E'. Si no, repetir 1).
Notas: El algoritmo para verificar que un grafo es aciclico es polinomial.
El algoritmo para hallar el camino ms largo es polinomial. Por lo menos
una de las flechas a invertir en 1) debe pertenecer al camino mas largo si
no el makespan no disminuira.

6) Bsqueda en profundidad
En los ejemplos anteriores hemos buscado una solucion vecina a la dada
por k intercambios de elementos en la estructura de la solucin. El
siguiente enfoque para definir el vecino es distinto de los anteriores y lo
llamamos bsqueda en profundidad. Ejemplificamos la idea con el
problema 4) de la particin uniforme de un grafo.
Sean A y B partes de V con el mismo cardinal n. Sea r(a ,b ) la reduccion
de costo si intercambiamos a A con b B. Llamemos g1 al mximo
r(a,b) sobre todos los posibles n2 pares (a,b). Si repetimos esta operacion
k veces tendremos un total de ganancia:
G(k)= i 1 g i
k

Observamos que G(n)=0 porque n intercambios nos conducen a la


situacin inicial. Elijamos el k tal que G(k) sea mximo. Si G(k)>0
entonces el proximo vecino es el que se obtiene repitiendo la operacion
precitada k veces. Si G(k)0 detenemos el algoritmo.

PRACTICA
Definir un algoritmo heuristico para el problema 4) particin uniforme de
un grafo y hacer un programa para ejecutarlo (Kreher, p.165)
Optimizacion Capitulo 6 Bsqueda Local 5

S-ar putea să vă placă și