Está en la página 1de 48

Diseño de redes logísticas

1. Optimización de redes
1.1 Problemas NP-Completos
1.2 Problema ruta corta, flujo máximo y flujo de costo mínimo.
Bibliografía:

Introductions to algorithms. Chapters Chapters 25, 26 and 27.


Thomas H. Cormen, Charles E. Leiserson and Ronald L. Rivest

Apostila otimização em rede .


Adelaida Pallavicini F., José A. Rodríguez M., Fernanda Pinheiro Rezende.
Introducción

z Muchos problemas de optimización en el diseño de redes


surgieron de la practica diaria en la ingeniería y
administración
z Determinar caminos cortos o mas confiables en las redes de
trafico o de comunicación.

z Determinar flujos máximos o compatibles.

z Planificar las conexiones en redes de trafico.

z Coordinación de proyectos.

z Solucionar problemas de oferta y demanda.


z El diseño de redes es importante para la teoría de la
complejidad.

ry
heo
cs
ati ica
l

ity t
e m r e t
ath eo er

plex
m Th put
m
Com co ence
sci

z Existe una clase de problemas de optimización en redes para


los cuales no existen algoritmos óptimos.
z El diseño de redes es muy usado en la practica.

z Los modelos de optimización en redes:

z Shortest path z Matching


z Assignment z Traveling salesman
z Max flow z Generalized assignment
z Transportation z Vehicle routing
z Transhipment z Multi-Commodity flow
z Spanning tree

Constituyen la clase mas común de problemas de


optimización en redes en la práctica.
Problemas NP-Completo en el diseño de redes
Problema Ruta corta

(Shortest path problem)


Problema de la Ruta corta

z Los problemas de ruta corta están en el corazón del flujo en


redes.

z Ellos son interesantes por diversas razones:


z Surgen con frecuencia en la práctica cuando se desea enviar algún
material entre dos nodos:
z Paquete de datos.

z Una llamada telefónica.

z Etc.
z Son solucionados eficientemente.

z Capturan las partes básicas del flujo en redes.

z Surgen frecuentemente como subproblemas, cuando se solucionan


problemas de optimización combinatoria y de redes.
Este problema tiene muchas aplicaciones practicas.
• Telecomunicaciones y transporte.
• Planificación del transporte urbano.
Instancia: Un grafo dirigido G = (V, E).
Una función peso c: E(G) → R.
Dos vértices s, t ∈ V(G).

Trabajo : Hallar menor ruta P denotado por st, es decir una ruta
de menor peso c(E(P)), o decidir que t no es
alcanzable desde s.
Tipos de Shortest Path Problems

z Tipos de problemas son:


z De un nodo hacia los otros nodos, cuando las longitudes de los
arcos son positivos.

z De un nodo hacia los otros nodos, con arcos de longitud arbitraria.

z Hallar shortest paths desde cualquier nodo hacia cualquier otro


nodo.
Suposiciones para el problema

• Datos en los arcos dirigidos son enteros y no negativos.

• La red contiene un path dirigido desde un nodo fuente s hacia


los otros nodos.

• La red no contiene un ciclo de longitud negativa

• Objetivo: Hallar el shortest path desde el nodo s hacia cada otro


nodo de la red.
Modelo

min ∑
( i , j )∈ A
c ij x ij

s .a .

(
∑ )
i: i , j ∈ A
x ij = 1


( i , k )∈ A
x ik − ∑
( k . j )∈ A
x kj = 0

− ∑
j :( i , j )∈ A
x ij = − 1

x ij ≥ 0 ∀ (i , j )∈ A
c 20 f

100 60 70
60

a
d g
50
40

b 50
70
20
e

c 20 f

100 60 70
60

a
d g
50
40

b 50
70
20
e
Algoritmos

single-source shortest path

Esta basado en las condiciones de optimalidad:


“El vector d(.) de distancias rotuladas representa la distancia mas corta
sii d(j) ≤ d(i) + cij ∀ (i,j) ∈ A“
all-pairs shortest paths
Aplicaciones

Distribución::

Material a transportar en un camión desde un depósito a diversos


a centros minoristas a un costo mínimo.

La red es una pista no dirigida, donde los arcos unen diversas ciudades. El
costo de un arco es el costo de trasbordo por unidad. Este problema es del
tipo single-source.
Ruteo telefónico:
Una llamada es ruteada desde un origen especificado hacia
un destino.

La red es un sistema telefónico, donde los nodos


representan a los abonados (o switching centers).

Como la conexión directa entre el nodo origen s y el nodo


destino t puede no estar disponible, entonces lo práctico es
rutear las llamadas a lo largo de un path que tenga la
cantidad mínima de arcos.
Ruteo de un agente vendedor:
un agente vendedor desea viajar en avión desde la ciudad A a la
ciudad B, donde la comisión obtenida por visitar cada ciudad de este modo
puede ser estimada.

Un itinerario óptimo puede ser hallado solucionando un problema de ruta


corta usando la red aérea, el cual esta representado como una red dirigida
de rutas sin escala (arcos) que conectan las ciudades (nodos).

Cada arco (i,j) tiene un costo de cij = fij – rj , donde fij es el costo por volar
de la ciudad i a la ciudad j; rj es la comisión obtenida por visitar la ciudad j.
Luego la ruta corta desde A hacia B identifica el mejor itinerario.
Otras aplicaciones:
Paso clave en algoritmos Shortest Path

z d( ) denota un vector de distancias temporales.

z d(i) es la longitud de algún path desde el nodo de origen 1 hacia el


nodo i.

z Procedimiento actualizar(i)
PARA cada (i, j) ∈ A(i)
SI d(j) > d(i) + cij ENTONCES d(j) ← d(i) + cij y
pred(j) ← i;

z Esto es usado en el algoritmo de Dijkstra y en el label correcting


algorithm.
actualizar(7)

d(7) = 6 en algún punto en el algoritmo, pues el path 1- 8 – 2 – 7.

9 11 8
2
1 3 2
1
1 8 2 7 5 9 7
3
0 1 4 6
3 8 no cambia

Suponer que 7 es incidente a los nodos 9, 5, 3, con distancia temporal


rotulada.

Entonces la actualización de 7: actualizar(7).


Algoritmo de Dijkstra, complejidad computacional

Sea d*(j) la distancia shortest path desde el nodo 1 al nodo j.

El algoritmo de Dijkstra determinará d*(j) para cada j, incrementando la


distancia desde el nodo origen 1.

S denota el conjunto de nodos permanentemente rotulados, esto es d(j) =


d*(j) para j ∈ S.

T denota el conjunto de nodos temporalmente rotulados, esto es d(j) ≥


d*(j) para j ∈ T.
S ← {1} ;
T ← N – {1};
d(1) ← 0 y pred(1) ← 0;
d(j) = ∞ para j = 2 hasta n;
actualizar(1);
MIENTRAS S ≠ N
// nodo selección, también llamado FINDMIN
sea i ∈T un nodo para el cual
d(i) = min {d(j) : j ∈ T};
S ← S ∪ {i};
T ← T – {i};
actualizar(i)
FINMIENTRAS;
Análisis de complejidad

z Actualizar: actualizar(j) ocurre una sola vez para cada j, al transferir j desde T
hacia S. El tiempo para ejecutar todas las actualizaciones es O(m), pues el
arco (i, j) solamente es invocado en actualizar(i).

z Hallar FindMin: Hallar el mínimo implica examinar d(j) para cada j ∈ T.


z Inicialmente T tiene n elementos.

z De este modo, el número de exámenes es n + (n-1) + (n-2) + … + 1 = O(n2).

z Teorema:
z El algoritmo de Dijkstra soluciona el problema de la ruta corta en un tiempo total
O(n2).
Problema flujo máximo

(maximum flow problem)


Problema de flujo máximo

• Los problemas flujo máximo y ruta corta son complementarios.

• Estos dos problemas poseen todas las componentes del flujo en


redes. Por lo tanto son el centro de la optimización en redes.

• Estos problemas difieren, pues captan diferentes aspectos del


problema de flujo de costo mínimo:
• Ruta corta modela el costo en los arcos, pero no sus capacidades.

• Flujo máximo modela las capacidades de los arcos, pero no los


costos.
Aplicaciones

• Distribution network:
• Aceite necesita ser transportado de una refinería a un depósito a
través de una red de tuberías, donde:
• s es la refinería

• t el depósito
• cij la capacidad de cada arco, que indica la cantidad máxima de aceite por
unidad de tiempo que puede fluir por el.
• Telecommunications networks.
Modelo

• Datos:
– G = (N, A);

– xij = Flujo sobre el arco (i,j); max v = ∑ x


{ ( ) }
j: s , j ∈A
sj

s.a.
– uij = capacidad del arco (i,j);
∑ x − ∑x ij ji = 0, ∀i ∈ N − {s, t}
{ ( ) } { ( ) }
j: i , j ∈A j: j ,i ∈A
– s = Nodo fuente (origen);
0 ≤ xij ≤ uij , ∀(i, j ) ∈ A
– t = Nodo sumidero (destino);
El modelo anterior equivale a:

max v = ∑ x
{ ( ) }
j: s , j ∈ A
sj

s.a.
⎧v , i=s

∑ x ij − ∑ x ji = ⎨ 0, i ∈ N − {s , t }
{ j :(i , j )∈ A } { j :( j ,i )∈ A } ⎪ − v, i=t

0 ≤ xij ≤ u ij , ∀ (i , j ) ∈ A
c 20 f

100 60 70
60

a
d g
50
40

b 50
70
20
e

c 20 f

80 60 60
40

a
d g
50
30

b 50
70
20
e
Problema flujo de costo mínimo

(minimum cost flow problem)


Problema de flujo de costo mínimo

z Dos casos especiales de este problema son:


z Problema de la ruta corta.

z Problema de flujo máximo.

z Es fácil entender la naturaleza de estos dos casos especiales.


z Interrogantes:
z ¿Qué tan difícil es solucionar el problema de flujo de costo
mínimo?.

z ¿Se pueden usar estrategias básicas para solucionar el problema


de flujo de costo mínimo?.

z ¿Cómo combina el problema de flujo de costo mínimo, los


ingredientes de los casos especiales?.
z Algoritmos:
z Cycle-Cancelling algorithms.
z Successive Shortest path algorithm.
z Primal-dual algorithm.
z Out-of-Kilter algorithm.
z Relaxation algorithm.

z Capacity Scaling algorithm.


z Cost Scaling algorithm.
z Minimum Mean Cycle-Canceling algorithm.
z Etc.
Aplicaciones
Modelo

• uij = capacidad del arco (i, j).


• cij = costo de flujo de trasbordo del nodo i hacia el nodo j en (i, j).
• xij = cantidad transbordada sobre arco (i, j).

• Costo, oferta/ demanda son enteros.


• La red es dirigida.
• Ofertas/ demandas satisfacen ∑i ∈N bi = 0.
• La red G tiene un path no capacitado (cada arco del path tiene
capacidad infinita).
• El valor de los arcos son no negativos.
Modelo

Min ∑c x
( i , j )∈ A
ij ij

s.a. b(i ) > 0 Restricción oferta

∑x −∑x
j
ij
k
ki = bi b(i) = 0 Restricción equilibrio

0 ≤ xij ≤ uij , ∀(i, j ) ∈ A b (i ) < 0 Restricción demanda