12_ind2209_alumno_15

34
Investigación de Operaciones IND2209 Profesor: Pamela Álvarez M. Facultad de Ingeniería Departamento de Ciencias de la Ingeniería Unidad Nº 6

Upload: ele-mago

Post on 29-Jan-2016

214 views

Category:

Documents


0 download

DESCRIPTION

investigacion de operaciones

TRANSCRIPT

Page 1: 12_IND2209_Alumno_15

Investigación de OperacionesIND2209

Profesor: Pamela Álvarez M.

Facultad de IngenieríaDepartamento de Ciencias de la Ingeniería

Unidad Nº 6

Page 2: 12_IND2209_Alumno_15

• ¿Qué más veremos?:

• Ruta más corta 

• Flujo máximo

2

Programación en redes

IND2209. Prof.: Pamela Álvarez M.

Page 3: 12_IND2209_Alumno_15

3IND2209. Prof.: Pamela Álvarez M.

• Problema de Ruta más Corta o Ruta Mínima

• Consiste en encontrar la ruta más corta desde un punto denominado origen

hasta otro llamado destino.

• Es un problema de redes muy importante y bastante común.

• Algunos ejemplos: problemas de inventario, reemplazo de equipos, 

asignación de tráfico, etc.

• Suele encontrarse como subproblema en situaciones más complejas.

Programación en redes

Page 4: 12_IND2209_Alumno_15

4IND2209. Prof.: Pamela Álvarez M.

• El problema es encontrar un camino dirigido en el grafo que conecte el 

nodo de origen (s) con el nodo de destino (t) y que tenga costo mínimo.

• A cada arco (i,j) asociamos un costo cij≥0.

1

3

2

5

4

6

1

5

7

2

1

6 3

6

10

Problema de Ruta más corta

Page 5: 12_IND2209_Alumno_15

5IND2209. Prof.: Pamela Álvarez M.

• El problema se formula fácilmente como uno de flujo a costo mínimo:

,

:( , ) :( , )

:( , ) :( , )

:( , ) :( , )

min

. . 1

0 ,

1

0,1 , ( , )

ij iji j A

sj ksj s j A k k s A

ij kij i j A k k i A

tj ktj t j A k k t A

ij

c x

s a x x

x x i s t

x x

x i j A

0 1, ( , )ijx i j A

Problema de Ruta más corta

Page 6: 12_IND2209_Alumno_15

6IND2209. Prof.: Pamela Álvarez M.

• ¿Cómo resolverlo?

• Es un problema lineal con variables continuas

• Algoritmo Simplex especializado a redes

• Pero hay otros algoritmos especializados y eficientes

• Algoritmo de las marcas o Algoritmo de Dijkstra

Este algoritmo busca la ruta más corta entre el nodo de origen y TODOS

los otros nodos de la red con distancias no negativas.

Problema de Ruta más corta

Page 7: 12_IND2209_Alumno_15

7IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Dijkstra:

• Calcula en cada iteración la distancia di para cada nodo de la red

• Utiliza esta distancia como una cota superior del camino más corto al 

nodo i. 

• En cada iteración divide los nodos en 2 conjuntos:

• Aquellos a los que ya se les conoce la ruta mínima entre el origen 

y el nodo i (marcados o etiquetados permanentemente)

• Aquellos a los que aún no les conoce la ruta mínima entre el 

origen y el nodo i (marcados o etiquetados temporalmente)

Problema de Ruta más corta

Page 8: 12_IND2209_Alumno_15

8IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Dijkstra:

beginS:= ; T:=N;d(i):= para cada nodo i N;d(s):= 0 y pred(s):=0;

while |S|<n doBegin

let i T un nodo con d(i)=min{d(j):j T};S:=S U {i};T:=T - {i}

for each (i,j) A(i) do

if d(j)>d(i)+cij then d(j):= d(i) + cij y pred(j):=i;

end;

end;

Problema de Ruta más corta

Page 9: 12_IND2209_Alumno_15

9IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Dijkstra:

• La idea es ir pasando los nodos desde el conjunto T al conjunto S.

• En resumen:

• Inicialmente, sea S={s}, dv= ∞ ,  v S, ds = 0.

• Etapa general: sea i S el último nodo que ingresó a S.

• Actualizar dj ← min{dj , di + cij } , (i,j)  A, j  S

• Sea k  V‐S tal que dk = min{dj : j  V‐S }.

• S = S U {k}.

Problema de Ruta más corta

Page 10: 12_IND2209_Alumno_15

10IND2209. Prof.: Pamela Álvarez M.

• Ejemplo Algoritmo de Dijkstra:

• Determinar la ruta más corta desde el nodo 1 al nodo 5

1

2

3

4

560

20

15

50430

100

Problema de Ruta más corta

Page 11: 12_IND2209_Alumno_15

11IND2209. Prof.: Pamela Álvarez M.

• Ejemplo Algoritmo de Dijkstra:

1

2

3

4

560

20

15

50430

100d1=0

pred(1)=0

d2=49

pred(2)=4

d4=34

pred(4)=3

d3=30

pred(3)=1

d5=84

pred(5)=4

Problema de Ruta más corta

Page 12: 12_IND2209_Alumno_15

12IND2209. Prof.: Pamela Álvarez M.

• Ruta más corta:

• Algoritmo de Dijkstra

• Este algoritmo de Dijkstra puede no servir si hay arcos con costo negativo. 

• Queremos llegar del nodo 1 al 3. Apliquemos 

Dijkstra:

• Iteración 1:

• Iteración 2:

• FIN ……. ¿Es correcto?

1

2

3

3

2

‐2

1

2 3

01

dSd d

2 2 12 1

3 3 13 1

, ,3 0 3

, , 2 0 2

1,3

d Min d c d Min

d Min d c d Min

S

Problema de Ruta más corta

Page 13: 12_IND2209_Alumno_15

13IND2209. Prof.: Pamela Álvarez M.

• Es posible resolver n veces el algoritmo para encontrar las rutas más cortas entre 

todos los nodos de la red.

• Pero hay un algoritmo más eficiente que resuelve lo anterior llamado algoritmo de 

Floyd. 

Problema de Ruta más corta

Page 14: 12_IND2209_Alumno_15

14IND2209. Prof.: Pamela Álvarez M.

• Este es otro problema básicos de flujo en redes.

• Posee aplicaciones directas y también es un subproblema de otros problemas 

mayores.

• La pregunta a responder es: ¿cuál es el flujo máximo que se puede enviar entre un 

par de nodos?

Problema de Flujo máximo

Page 15: 12_IND2209_Alumno_15

15IND2209. Prof.: Pamela Álvarez M.

• Consideramos un grafo DIRIGIDO G = (N,A).

• Cada arco tiene una CAPACIDAD mínima (lij ) y una máxima (uij , eventualmente ∞).

• No hay costos asociados.

• Existen dos nodos especiales: 

• 1 V será el “origen”

• n V será el “destino”

• El problema consiste en enviar flujo en la mayor cantidad posible desde 1 con 

destino n.

1

4

6

3 5

2(0,3)

(0,5)

(0,2)

(0,5)

(0,4) (0,2)

(0,2) (0,3)

(0,5)

Problema de Flujo máximo

Page 16: 12_IND2209_Alumno_15

16IND2209. Prof.: Pamela Álvarez M.

• El problema es enviar la mayor cantidad de flujo desde 1 a n.

1 1: 1, : ,1

: , : ,

: , : ,

. .

0 2,..., 1

,,

0

j kj j A k k A

ij kij i j A k k i A

nj knj n j A k k n A

ij ij

ij ij

Max Fs a x x F

x x i n

x x F

x u i j Ax l i j A

F

Problema de Flujo máximo

Page 17: 12_IND2209_Alumno_15

17IND2209. Prof.: Pamela Álvarez M.

• Algunas definiciones:

• Corte: Dado un grafo conexo G=[N,A], se dice que S  N define un corte  que 

separa 1 de n, si 1  S y n  N‐S.

• Capacidad del corte:

1

2

3

1

4

2 4

2

3

( , ): ,

( ) iji j i S j N S

C S u

Problema de Flujo máximo

Page 18: 12_IND2209_Alumno_15

18IND2209. Prof.: Pamela Álvarez M.

• Capacidad del corte:

• S={1} N‐S={2,3,4} C(S)=5

• S={1,2} N‐S={3,4} C(S)=9

• S={1,3} N‐S={2,4} C(S)=3

• S={1,2,3} N‐S={4} C(S)=5

1

2

3

1

4

2 4

2

3

( , ): ,

( ) iji j i S j N S

C S u

Problema de Flujo máximo

Page 19: 12_IND2209_Alumno_15

19IND2209. Prof.: Pamela Álvarez M.

• ¿Qué se puede decir?

• Teorema de Ford Fulkerson (Flujo máximo‐Corte mínimo):

El flujo máximo entre el nodo origen y el destino es igual a la menor

capacidad entre todos los conjuntos de corte que separan el nodo origen y el

destino.

Problema de Flujo máximo

Page 20: 12_IND2209_Alumno_15

20IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Ford Fulkerson :

• La idea es construir iterativamente el flujo máximo, a partir de un flujo factible.

• En cada iteración se identifica un camino de aumento de flujo con respecto al flujo 

existente.

• Determinación de la cantidad de flujo adicional máxima que puede transportar el 

camino determinado en la primera parte.

Problema de Flujo máximo

Page 21: 12_IND2209_Alumno_15

21IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Ford Fulkerson :

• ¿Cómo  identificar un camino de aumento de flujo?

• Construir un grafo auxiliar G’  (grafo incremental o residual)

• Los nodos de G’ son los nodos de G

• Los arcos de G’ se calculan así:

• Así si lij<xij<uij en G, se generan 2 arcos en G’

, , 'ij ij

ij ij ij

Si x u enG entonces el arco i j se incorpora a G

concapacidad residual u x

, , 'ij ij

ij ij ij

Si x l enG entonces el arco j i se incorpora a G

concapacidad residual x l

Problema de Flujo máximo

Page 22: 12_IND2209_Alumno_15

22IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Ford Fulkerson :

• Construido G’ se calcula un camino C’ (equivalente a un camino C de aumento 

de flujo en G) desde el nodo 1 (origen) al nodo n (destino).

• Si no existe C’  en G’, el algoritmo termina.

• Se determina la cantidad máxima de flujo adicional () que el camino C’ 

admite (viendo los arcos de C’)

• ¿Cómo determinar el nuevo flujo?

• Flujo adicional ()  se suma al existente en arcos hacia adelante en C

• Flujo adicional ()  se resta al existente en arcos hacia atrás en C

• Nuevo valor: F’=F + 

1 2, ,min min , minij ij ij iji j C B i j C B

u x x l

Problema de Flujo máximo

Page 23: 12_IND2209_Alumno_15

23IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Ford Fulkerson:

1. Inicialización: determinar un flujo factible F

Si  lij= 0  (i,j) , F=0 y xij=0 (i,j) es factible 

2. Construir el grafo auxiliar G’=[N, A’] y definir B1=B2=

Determinar A’:

• Si xij<uij, entonces el arco (i,j) se incorpora a A’ y B1=B1 {(i,j)} y ij=uij-xij

• Si xij>lij, entonces el arco (j,i) se incorpora a A’ y B2=B2 {(j,i)} y ij=xij-lij

3. Determinar un camino C’ en G’ desde el nodo 1 al n

• Si no existe ningún C’, el flujo actual es máximo

• Si existe, determinar el flujo máximo adicional  que admite el camino de 

aumento de flujo C

1 2, ,min min , minij iji j C B i j C B

Problema de Flujo máximo

Page 24: 12_IND2209_Alumno_15

24IND2209. Prof.: Pamela Álvarez M.

• Algoritmo de Ford Fulkerson:

4. Nuevo flujo factible F

Volver a 2

1

2

si ,

si ,ij ij

ij ij

F F

x x i j C B

x x i j C B

Problema de Flujo máximo

Page 25: 12_IND2209_Alumno_15

25IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Sea el siguiente grafo G

• lij= 0  (i,j) A

• Flujo factible: xij= 0  (i,j) puesto que lij= 0 y F=0

1

5

6

3 4

22

3

1

3

1 1

1 3

3F

uij

F

Problema de Flujo máximo

Page 26: 12_IND2209_Alumno_15

26IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 1

1

5

6

3 4

20

0

0

0

0 0

0 0

00 0

1

5

6

3 4

22

3

1

3

1 1

1 3

3

G G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

ij

Problema de Flujo máximo

Page 27: 12_IND2209_Alumno_15

27IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 1

1

5

6

3 4

22

3

1

3

1 1

1 3

3

G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

ijCamino de aumento de flujo C

Flujo adicional 

1‐2‐5‐6 2

Problema de Flujo máximo

Page 28: 12_IND2209_Alumno_15

2

28IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 2

1

5

6

3 4

22

0

0

2

0 0

0 0

22 2

1

5

6

3 4

22

3

1

1

1 1

1 3

1

G G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

2

Problema de Flujo máximo

Page 29: 12_IND2209_Alumno_15

2

29IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 2

1

5

6

3 4

22

3

1

1

1 1

1 3

1

G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

2Camino de aumento de flujo C

Flujo adicional 

1‐3‐5‐4‐6 1

Problema de Flujo máximo

Page 30: 12_IND2209_Alumno_15

22

2

30IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 3

1

5

6

3 4

22

1

0

2

1 1

0 1

23 3

1

5

6

3 4

22

1

1

1 1

1

1

G G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

2

11

Problema de Flujo máximo

Page 31: 12_IND2209_Alumno_15

22

2

31IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 3

1

5

6

3 4

22

1

1

1 1

1

1

G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

2

11

Camino de aumento de flujo C

Flujo adicional 

1‐3‐4‐6 1

Problema de Flujo máximo

Page 32: 12_IND2209_Alumno_15

11

2

32IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 4

1

5

6

3 4

22

2

0

2

1 1

1 2

24 4

1

5

6

3 4

22

1

1

1 1

1

1

G G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

2

22

Problema de Flujo máximo

Page 33: 12_IND2209_Alumno_15

11

2

33IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Iteración 4

1

5

6

3 4

22

1

1

1 1

1

1

G’

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

2

22

Camino de aumento de flujo C

Flujo adicional 

………………… 0

Problema de Flujo máximo

Page 34: 12_IND2209_Alumno_15

34IND2209. Prof.: Pamela Álvarez M.

• Ejemplo:

• Solución óptima:

1

5

6

3 4

22

2

0

2

11

1 2

24 4

G

1

5

6

3 4

22

3

1

3

1 1

1 3

3F F

Problema de Flujo máximo