Está en la página 1de 53

CAPITULO 1

MINIMIZACI

ON DE COSTOS DE FLUJO EN REDES


1.1 Introduccion
Este capitulo presenta un algoritmo especializado para el problema de ujo en redes. El prob-
lema de ujo en redes es un tipo especial de problemas de PL y presenta una estructura muy
especial que puede ser aprovechada para desarrollar un algoritmo simple especializado llamado
simplex.
Cuando este algoritmo es adecuadamente implementado puede ser de 200 a 300 veces mas
rapido que otro algoritmo simplex que no lleve en cuenta esta estructura especializada.
Logicamente, un problema de ujo en redes puede ser resuelto con el algoritmo simplex
convencional, sin embargo seria mucho mas lento que el algoritmo especializado descrito en
este capitulo.
En este capitulo inicialmente se presentan los problemas de PL que presentan la estructura
de red y los conceptos basicos de la teora de grafos. Seguidamente es incluido en detalle la
matriz de coecientes de las restricciones de A del problema, especialmente la estructura y las
propiedades fundamentales, as como la submatriz de A, llamada matriz B, que dene la matriz
basica en terminos de redes. Despues es desarrollado el algoritmo simplex especializado, que
contempla dos versiones, la primera cuando las variables deben se no negativas y la segunda
version, cuando considera que el problema incluye variables canalizadas. Finalmente se analiza
la estructura de los datos del problema que permite representar de manera eciente los pasos
fundamentales del algoritmo simplex.
1.2 El problema de ujo en redes con costo mnimo
Consideramos como ujo en redes a todo problema que puede ser caracterizado de la siguiente
forma:
Considere una red orientada G, denominada grafo G, formada por un n umero nito de
nodos (vertices) N = 1,2,3,.....,m y un conjunto de arcos orientados (ramas o arestas) A =
1
2
(i,j),(k,l),.......,(s,t), las cuales son obtenidas juntando pares de nodos. Los arcos pueden ser
denominados de arcos incidentes si, un arco (i,j) esta orientado de i para j, as, la red presente
n nodos y m arcos.
Para cada nodo i en G, esta asociado un n umero b
i
, que representa generacion o abastec-
imiento o tambien llamados de nodos fuente, si b
i
0, y nodos de demanda, o tambien llamados
sumidero, si b
i
0. Si b
i
= 0, entonces ese nodo es llamado de nodo intermediario. Asociado
con cada arco existe una variable x
ij
que representa el ujo que pasa por el arco (i,j)en la ori-
entacion especiocada para el arco, por lo tanto, x
ij
.Tambien asociado a cada arco (i,j),existe
el parametro c
ij
, que representa el costo de una unidad de producto, enviado por el arco (i,j).
En la formulaci n tradicional la generacion total debe ser igual a la demanda total, esto es,
en la red debera existir un balance entre la generacion y la demanda:
m

i=1
b
i
= 0
Cuando
m

i=1
b
i
0 , se debera adicionar al sistema un nodo articial de demanda, el nodo (m+1)
con b
m+1
=
m

i=1
b
i
y arcos con costo cero, desde cada nodo de generacion al nodo articial. En
este contexto puede ser formulado el problema de ujo en redes de costo mnimo.
En el problema de ujo en redes de costo mnimo, se desea enviar productos de los centros
de generacion para los centros de demanda usando caminos especicados y a un costo mnimo.
Matematicamente el problema asume la siguiente forma:
min z(x
ij
) =
m

i=1
m

j=1
c
ij
x
ij
s.a.
m

j=1
x
ij

k=1
x
ki
= b
i
i = 1, 2, ....., m
x
ij
0 i, j = 1, 2, ..., m
(1.1)
Las restricciones solo representan el principio de conservacion del ujo en cada nodo de la
red. As,
m

j=1
x
ij
representa el ujo saliendo del nodo i y
m

k=1
x
ki
representa el ujo llegando al
nodo i. Si b
i
0 entonces existe mas ujo entrando en el nodo i.
El problema (1.1) es tambien llamado problema de ujo en redes sin lmite de capacidad de
transmision. Cuando existe lmite de ujo maximo a traves de los arcos, entonces el problema
es llamado de ujo en redes con lmite de capacidad de transmision.
El problema de ujo en redes esta presente como un subproblema en muchos problemas de
la vida real, especicamente en todos los problemas relacionados con transporte de productos
de centros de generacion a centros de demanda.
El problema de ujo en redes puede ser resuelto por el algoritmo simplex convencional.
3
En este capitulo se presenta un algoritmo simplex especializado que tiene en cuenta las carac-
teristicas especicas del problema de ujo en redes.
En la siguiente gura 10.1 se muestran los datos para un problema de ujo en redes.
1
3
2
4
4
2
-5
-1
2
-5
6 -1
4
3
cij
bi
7
Figura 10.1: Informacion para un problema de ujo en redes
1.3 Deniciones basicas y terminologa de teora de grafos
Se asume como base que se existe un grafo orientado G(N,A) con m nodos agrupados en N y
n arcos agrupados en A. Se utilizaran ejemplos para ilustrar las deniciones.
1.3.1 Grafo propio
Si la cardinalidad de N y A satisfacen |N| 2 ( 2 elementos) y |A| 1 (una aresta). As un
grafo propio debe tener por lo menos un arco y dos nodos.
i j
Figura 10.2: Grafo propio mnimo
1.3.2 Nodos adyacentes
Un nodo es adyacente de otro nodo si estos nodos estan conectados por un arco. En la gura
10.1, el nodo 1 es adyacente a los nodos 2, 3 y 4.
4
1.3.3 Caractersticas de un arco orientado
i j
Figura 10.3: Grafo orientado
Para el arco (i,j), los nodos i y j son referidos de la siguiente forma: del nodo i y para el
nodo j. Para un nodo i, el conjunto de nodos j, en que existen arcos (i,j), son llamados nodos
de destino directo del nodo i. En el ejemplo, los nodos 2 y 3 son nodos de destino directo del
nodo 1, ya que existen los arcos (1,2) y (1,3).
Tambien para el nodo i, el conjunto de nodos j en que existen arcos del tipo (j,i) son llamados
nodos de destino inverso del nodo i. En el ejemplo, el nodo 4 es un nodo de destino inverso del
nodo 1, ya que existe el arco (4,1).
1.3.4 Arco orientado o grafo
Todos los arcos son arcos orientado
1.3.5 Grafo no orientado
Todos los arcos no son orientado
1.3.6 Grafo mixto
Existen en el grafo arcos orientados y no orientados. En este caso, desde el punto de vista
del problema de ujo en redes, los arcos no orientados pueden ser transformados en dos arcos
orientados de sentido opuesto, cada uno de estos con un costo c
ij
y con c
ij
0. Cuando existe
un arco no orientado con c
ij
0, el proceso de transformacion es mas complicado.
1.3.7 Camino
Un camino del nodo i
o
para el nodo i
p
es una secuencia de arcos orientados en el sentido del
nodo i
o
para el nodo i
p
, de forma que el nodo nal de un arco, es el nodo inicial del arco
siguiente. As, el camino P esta especicado de la siguiente forma:
P = {(i
o
, i
1
), (i
1
, i
2
), ............., (i
p1
, i
p
)}
Ejemplo:
5
1
2
4
3
Figura 10.4: Camino P = {(1,2),(2,3),(3,4)}
1.3.8 Cadena
Es semejante a un camino, sin embargo en este caso los arcos no necesariamente deben estar
orientados en el sentido de i
o
para i
p
. As, un camino es un tipo especial de cadena
1
2
4
3
1
2
4
3
Figura 10.5: Camino y cadena P = {(1,2),(2,3),(3,4)} Cadena C = {(1,2),(2,3),(3,4)}
1.3.9 Circuito
Un circuito es un camino de i
o
a i
p
con la adicion del arco (i
p
, i
o
), conformando as un camino
cerrado. As tenemos:
CI = {(i
o
, i
1
), (i
1
, i
2
)........, (i
p1
, i
p
)
. .
, (i
p
, i
o
)}
Ejemplo:
1
2
4
3
Figura 10.6: Circuito CI = {(1,2),(2,3),(3,4),(4,1)}
6
1.3.10 Ciclo o lazo
Un ciclo o lazo es una cadena cerrada. As, un circuito es un tipo especial de lazo
1
2
4
3
Figura 10.7: Ciclo o lazo L = {(1,2),(2,4),(1,3),(3,4)}
Observaci on: En este capitulo se asumen caminos, cadenas, circuitos y lazos simples,
quiere decir que no tienen repeticion de nodos. Tambien se asume que el grafo es conectado.
Un grafo conectado posee una cadena entre cada par de nodos del grafo.
1.3.11 Grafo fuertemente conectado
Cuando existe un camino de cada nodo para cada uno de los otros nodos
1.3.12 Grafo completo
Es un grafo en que cada nodo esta conectado por un arco a cada uno de los nodos del grafo.
Por lo tanto un digrafo completo de m nodos, tiene m(m-1) arcos.
Figura 10.8: Grafo completo
1.3.13 Subgrafos
Un subgrafo G

(A

, N

) de un grafo G(A,N) es un grafo que satisface la condicion N

N y
A

A, con la suposicion de que si (i,j) A

entonces i y j pertencen a N

.
7
Si G

= G entonces G

es un subgrafo propio de G. Si N

= N entonces G

es un subgrafo
que genera (spanning) el grafo G, esto es, G

genera todos los nodos de G.


1
3
2
4
1
3
2
4
Figura 10.9: Grafo G Figura 10.10: Subgrafo propio de G
Un subgrafo G

(N

, A

) de G(N,A) es un subgrafo inducido por el conjunto de nodos de


N

si A

incorpora todos los arcos en A que relacionen todos los nodos que estan presentes
en N

. En la gura 10.12 se presenta un subgrafo inducido por los nodos N

= {1, 2, 4}
A

= {(1, 2), (2, 4), (4, 1)}.


1
3
2
4
1
2
4
Figura 10.11: Grafo G Figura 10.12: Subgrafo Inducido
Un componente de un grafo G es un subgrafo conectado y que no es un subgrafo propio
de otro subgrafo conectado. En otras palabras, es un subgrafo u nico y conectado. Son partes
separables de un grafo. Un tipo de subgrafo muy importante es un arbol.
8
1
3
2
4
1
3
2
4
3
2
Componente Componente
Componente
Figura 10.13: Grafo G Figura 10.14: Componentes del Grafo
1.3.14

Arbol de un grafo

Arbol es un grafo conectado que no tiene lazos y que contiene todos los nodos. Un arbol
generado (spanning tree) de un grafo G, es un arbol que contiene todos los nodos del grafo.
En otras palabras es un subgrafo generado de G conectado y sin lazos. El concepto de arbol es
fundamental en el algoritmo de ujo en redes.
1
3
2
4 1
3
2
4
Figura 10.15: Grafo G Figura 10.16: Un arbol de G
Observacion: Si se tiene un grafo sin lazos, entonces ese grafo tiene un arbol con cada uno
de sus componentes. Ese tipo de grafo es llamado oresta (forest).
9
1
3
2
4
1
2
4
1
2
2
4
Figura 10.17: Grafo G Figura 10.18: Componentes de G
1.3.15 Rank (degree) de un nodo
El rank o grado de un nodo es igual al n umero de arcos incidentes en el. El grado de entrada
(in-degree) de un nodo i, es el n umero de arcos que tiene el nodo i y que llevan para el nodo
(to-node), y el grado de salida (out-degree) del nodo i, es el n umero de arcos que tiene el nodo
i, y que llegan de (from-node). As se tiene: degree de i = (in-degree de i) + (out-degree de i).
As, por ejemplo en la gura 10.1, el nodo 1 tiene un grado de entrada (in-degree) = 1 y
un grado de salida (out-degree) = 2. El nodo 2 tiene un grado de entrada (in-degree) = 2 y
un grado de salida (out-degree) = 2. Un nodo con un grado igual a 0 o 1, es un nodo nal
(end-node).
1.3.16 Propiedad 1: P
1
Sea T un arbol de un grafo con m( 2) nodos y con el arco (i,j) T. Cuando removemos el
arco (i,j), de tal forma que se mantengan los nodos i, j en T, entonces T queda separado en 2
arboles T
1
y T
2
. En la gura 10.19 y 10.20 se observa el procedimiento de separacion del arbol
al retirar el arco (2-3).
1
3
2
4
1
3
2
4
Figura 10.19: arbol T Figura 10.20: arboles T
1
y T
2
Prueba Retirar el arco (i,j) implica que aparecen r 2 componentes, y cada componente
debe ser un arbol ya que la inclusion de (i,j) producira un lazo en T que seria una contradiccion.
10
Como la inclusion del arco (i,j) puede conectar no mas de 2 componentes por denicion, y como
T es conectado, entonces se debera tener que r = 2.
1.3.17 Propiedad 2: P
2
Un arbol de un grafo tiene por lo menos 2 nodos nales (end-nodes). Nodo nal nodo
terminal.
Prueba Si el arbol tiene apenas 2 nodos, la propiedad es trivialmente verdadera. Para
m 3 se prueba por induccion. Para m = 2, la propiedad es verdadera. Ahora se supone que
la propiedad es verdadera para (m-1) nodos, y se prueba que eso implica que la propiedad debe
ser verdadera para m nodos.
Para m nodos: Seleccionar un arco (i,j) T, retirar ese arco y generar 2 arboles T
1
y T
2
,
sabiendo que cada uno de ellos no tiene mas que (m-1) nodos. Si T
1
o T
2
tiene solamente un
nodo, entonces por la hipotesis de induccion, el n umero total de nodos nales es por lo menos 3,
ya que el nodo que quedo aislado era un nodo terminal y el restante es un arbol de (m-1) nodos
que tiene 2 nodos terminales por la hipotesis de induccion. Ademas de eso, incorporando un
arco (i,j) solo se pierde un nodo terminal, por lo tanto T tiene por lo menos 2 nodos terminales.
Por otro lado si T
1
y T
2
tienen por lo menos 2 nodos, entonces ellos tienen por lo menos 4 nodos
terminales en total, y recolocando el arco(i,j) perdemos como maximo 2 nodos nales. As otra
vez, T tiene por lo menos 2 nodos terminales. En el ultimo caso en que T
1
y T
2
tienen por lo
menos 2 nodos terminales, entonces T
1
y T
2
tienen por lo menos 4 nodos terminales ya que el
arbol con (m-1) nodos, ya tiene por lo menos 2 nodos terminales y la retirada de (i,j) genera 2
nodos terminales, ya que i,j no son nodos terminales.
1.3.18 Propiedad 3: P
3
Un arbol con m nodos, tiene (m-1) arcos.
Prueba Para m = 1 o 2 la propiedad es trivial. El resto de la prueba se realiza por induccion.
Considerar que la propiedad es verdadera para (m-1) nodos y consideramos un arbol con m 3
nodos y denominado T. Por P
2
sabemos que existe un nodo terminal i. Retirando el unico arco
que llega al nodo i, podemos separar el llamado arbol T en 2 arboles T
1
y T
2
(Propiedad P
1
),
en que T
1
= {i}. As T
1
no tiene arcos y T
2
tiene (m-1) nodos. Por induccion se supone que T
2
tiene (m-2) arcos. Por lo tanto, T tiene (m-2) + 1 = (m-1) arcos.
Las 3 propiedades son fundamentales para determinar varias caractersticas equivalentes de
un arbol de un grafo.
1.3.19 Caractersticas equivalentes de un arbol de un grafo
Sea T un grafo de un arbol y por lo tanto sus caractersticas son las siguientes:
11
(a.) T es un grafo conectado y no tiene lazos
(b.) T es un grafo conectado y tiene (m-1) arcos
(c.) T es un grafo con (m-1) arcos y no tiene lazos
(d.) T es un grafo conectado, sin embargo retirando cualquiera de los arcos de T se generan
dos subgrafos.
(e.) T es un grafo sin lazos, sin embargo si se adiciona un arco em T, se tiene un grafo que
tiene exactamente un lazo.
(f.) T tiene una unica cadena, conectando cada par de sus nodos.
Observaciones
Las armaciones (a),(b) y (c) muestran que si 2 de las 3 caractersticas (grafo conectado,
no se tiene lazos y tiene (m-1) arcos) son verdaderas, entonces la tercera tambien es
verdadera.
Las armaciones (d) y (f) son fundamentales para calcular y actualizar adecuadamente
los valores de las variables duales de la solucion basica.
La armacion (e) permite representar variables no basicas en funcion de variables basicas.
Pruebas
Prueba 1: Equivalencia entre las armaciones (a) y (b) (a) (b) Como T es un arbol,
entonces por la propiedad 3, T tiene (m-1) arcos (b) es verdadero.
(b) (a) Suponer que T es un grafo conectado con (m-1) arcos y tiene un lazo. Entonces
podemos retirar un arco del lazo y no destruir la conectividad ya que seria generado apenas
una cadena. De esta forma seria posible obtener un grafo conectado sin lazos con menos
de (m-1) arco, contradiciendo la propiedad 3 y por lo tanto, T no debe tener lazos. As
esta probado que (a) Y (b) son equivalentes.
Prueba 2: Equivalencia entre las armaciones (a) y (c) (a) (c) Es verdadero, ya que si
(a) es un arbol, entonces por la propiedad 3, el arbol T tiene (m-1) arcos.
(c) (a) Es verdadero ya que si no fuese verdadero, entonces tendramos un grafo T
con (m-1) arcos y sin lazos que no es conectado. As, adicionando un arco que una 2
componentes, podemos reducir el n umero de componentes sin generar lazos, ya que 2
componentes unidos no estan conectados. Continuando de esta forma podemos tener un
grafo conectado y sin lazos, pero con mas de (m-1) arcos, siendo esto una contradiccion
para la propiedad 3. Por lo tanto (a) y (c) deben ser equivalentes.
12
1.4 Propiedad de la Matriz A
El problema 1.1 puede ser representado de una manera compacta en la siguiente forma:
min z(x) = cx
s.a.
Ax = b
x 0
(1.2)
La matriz A tiene una la para cada nodo y una columna para cada arco de la red. Cada
columna de la matriz A tiene 2 valores diferentes de cero,uno con valor +1 y otro con valor -1.
As la columna correspondiente el arco (i,j) tiene un valor de +1 en la la i y un valor de -1 en
la la j. Por lo tanto esas columnas son escritas de la siguiente forma:
a
ij
= e
i
e
j
(1.3)
Donde e
i
es un vector unitario con un +1 en la posicion i
La matriz A asume una estructura especial y es denominada matriz de incidencia nodo-arco
o tambien nodo-rama (node-arc incidence matrix).
Ejemplo
1
3
2
4
Figura 10.21: Formacion de la matriz incidencia nodo-arco
(1,2)(1,3)(2,3)(2,4)(3,2)(3,4)(4,1)
A =
1 1 1
1 1 1 1
1 1 1 1
1 1 1
1
2
3
4
1.4.1 Rango de la Matriz A
Sea A la matriz de incidencia nodo-rama de un grafo orientado y conectado, con m nodos y n
arcos. En estas condiciones, el rango de la matriz A es (m-1), lo que signica que la matriz A
13
no es de rango completo.
El rango de A se determina describiendo un arbol del grafo G y ordenando las columnas
adecuadamente, de tal forma que se conforme una matriz triangular inferior, con los elementos
de la diagonal iguales a 1. Previamente debera ser eliminada una la de la matriz A.
Ejemplo
Seleccionar un arbol del grafo del ejemplo anterior. Como m= 4 y n = 7, se debe mostrar
que el rango de la matriz es igual a 3.
1
3
2
4
Figura 10.22:

Arbol del grafo de la gura 10.21
Se conforma la matriz A
T
, posteriormente se elimina de esta la ultima la para conformar
la matriz B
T
. As, se puede observar que el rango de (A
T
) = rango (B
T
) = 3
(1,3)(2,3)(3,4) (1,3)(2,3)(3,4)
A
T
=
_

_
1 0 0
0 1 0
1 1 1
0 0 0
_

_
1
2
3
4
B
T
=
_

_
1 0 0
0 1 0
1 1 1
_

_
1
2
3
Ejemplo
Sera seleccionado otro arbol, en este se puede observar que el rango A
T
= el rango B
T
= 3.
1
3
2
4
Figura 10.23:

Arbol del grafo de la gura 10.21
14
(1,2)(2,3)(2,4) (1,2)(2,3)(2,4)
A
T
=
_

_
1 0 0
1 1 1
0 1 0
0 0 1
_

_
1
2
3
4
B
T
=
_

_
1 0 0
0 1 0
0 0 1
_

_
1
2
3
1.4.2 Empleo de variables articiales
Una base del metodo simplex debe ser una matriz cuadrada de rango completo. Como la matriz
A tiene rango (m-1), se usa una variable articial que corresponde a un nuevo arco que sale del
nodo m para el espacio. Ese tipo de arco es denominado arco raz (root arc), y el nodo asociado
a ese arco es denominado nodo raz (root node). El nuevo arco genera una nueva columna e
m
y por lo tanto, la matriz A es ampliada (A,e
m
) y su rango es completo.
La gura 10.24 presenta el grafo transformado.
1
3
2
4
Nodo Raz
Arco Raz
Figura 10.24: Grafo ampliado con arco y nodo raz
La nueva columna e
m
es la unica que permite generar una submatriz de rango completo, de
la matriz (A,e
m
). Por lo tanto, cualquier base simplex del problema, debera tener siempre la
columna e
m
como una columna basica. En otras palabras, la nueva variable x
T
(variable arti-
cial), siempre debe permanecer en la base, y con valor cero, para cualquier SBF del problema
original. Si la variable articial es diferente de cero, se presenta un desequilibrio en la red, (la
demanda mayor que la generacion o viceversa). Por lo tanto, cualquier forma de solucion debe
mantener la variable articial en la base y con valor actual igual a cero.
1.4.3 Caracterizacion de la matriz basica B
Existe correspondencia entre la matriz basica del problema de ujo en redes y el arbol generado.
Un arbol con arco raz es llamado de arbol generado con raz (rooted spanning tree). Con lo
anterior se presenta el siguiente teorema.
15
Teorema 10.1
Considere el problema de ujo en redes con costo mnimo, representado por un grafo orientado
y conectado G y con una raz. Entonces B es una matriz basica para ese problema la matriz
B es una matriz de incidencia nodo-arco, generada del arbol con raz.
Prueba Si B es una matriz basica, entonces es una matriz de incidencia nodos arco, de un
arbol generado.
Sea B una matriz basica m.m de (A,e
m
) y G
B
un grafo cuya matriz de incidencia nodo arco
es una matriz B. Debemos probar que G
B
es un arbol generado. Como la columna articial hace
parte de B
m.m
entonces G
B
es un subgrafo generado con raz de G, esto es, G
B
es un subgrafo
generado, ademas del arco raz. De no tenerse en cuenta el arco raz, G
B
tiene (m-1) arcos.
Ademas de lo anterior, G
B
debe ser conectado o en caso contrario, se tendria un componente
sin arco raz. Ademas esa componente sera de tal forma que las las de B que corresponden a
los nodos de tal componente debe sumar cero, ya que cada arco basico con valores diferentes
de cero, tendra en esas las U
m
+ 1 y U
m
1 y ceros en otros lugares. Por lo tanto, G
B
tiene
m nodos, un arco raz, es conectado y tiene (m-1) arcos. Entonces por la caracterizacion del
arbol G
B
, es un aarbol generado con raz.
Si G
B
es una arbol generado con raz, entonces B es una matriz basica. La prueba es trivial
ya que la matriz generada por G
B
sin el arco raz tiene rango (m-1). Con el arco raz se genera
una colummna linealmente independiente, entonces el rango de b es m, y por lo tanto, B puede
representar una base. Un arbol generado con raz es mostrado en la gura 10.25.
1
3
2
4
raz
Figura 10.25:

Arbol generado con raz
Unimodularidad de la matriz basica B
Fue vericado para el problema de ujo en redes representado por un grafo orientado G con un
arco raz, que una matriz basica para ese problema, B, corresponde a un abol generado con raz.
Tambien, la matriz B puede ser ordenada de forma que forme una estructura triangular inferior,
con elementos 1 en la diagonal. Se debe recordar que los elementos de B y de (A,e
m
) son
iguales a 1 o 0. Esas caractersticas de la matriz B conducen a dos hechos muy importantes:
16
El siguiente sistema de ecuaciones puede ser resuelto de forma trivial:
Bx
B
= b wB = c
B
Que se resuelve en cada paso de un algoritmo simplex para determinar x
B
y w. La
solucion trivial es posible ya que B es triangular inferior (se puede implementar procesos
ecientes forward y backward) y se facilita su proceso por os coecientes especiales de B.
As, ese sistema de ecuaciones puede ser resuelto directamente de la red.
Si los b
i
son enteros, entonces todos los x
B
son enteros. En este contexto, todos los puntos
extremos del problema son enteros y por lo tanto, la solucion optima siempre es entera.
Esa propiedad es consecuencia de que det B = 1 y todos los componentes de B son
enteros.
Propiedad de la matriz A: Unimodular
Una matriz A es llamada totalmente unimodular, si cada submatriz cuadrada de a tiene deter-
minante 1, o 0.
Propiedad La matriz de incidencia nodo arco de A del problema de ujo en redes es
unimodular.
Prueba: Por induccon.
Como la matriz A tiene solamente elementos 1, o 0, entonces el determinante de cualquier
submatriz de tama no 11 es 1, o 0. Se supone ahora que el determinante de cualquier
submatriz cuadrada (k-1)(k-1) es 1, o 0. Aceptando esta hipotesis como verdadera, se
demuestra que la propiedad tambien es verdadera para una submatriz de tama no kk
Sea A
k
una submatriz de A con k 2. Se debe probar que el det A
k
= 1 o 0. UNa
columna de A
k
puede tener una de las siguientes caractersticas: (1) todos los elementos son
iguales a cero, (2) un unico elemento es igual a +1 o -1 y los otros son iguales a cero o (3)
solamente dos elementos son diferentes de cero, uno igual a +1 y el otro igual a -1.
Si existe una columna de A
k
con todos los elementos iguales a cero, entonces det A
k
= 0.
De otro lado, si existe una columna con unico elemento diferente de cero, entonces podra ser
expandido el determinante de A
k
usando esa columna como base, y probar facilmente que det
A
k
= det A
k1
y como el det A
k1
= 1 o 0, entonces det A
k
= 1 o 0. Finalmente, si todas
las columnas de A
k
tienen dos elementos diferentes de cero, y por lo tanto, la suma de las las
de A
k
es igual a un vector cero, ( la matriz A
k
no tiene rango completo), entonces det A
k
= 0,
por lo tanto la matriz A es totalmente unimodular.
Se debe observar que la propiedad sigue siendo verdadera a pesar de que sean eliminadas
las o columnas de la matriz A. Tambien la propiedad sigue siendo verdadera, si adicionamos
a la matriz A vectores columna, en los cuales cada una de estas tiene un elemento igual a 1.
Esas columnas pueden representar variables de holgura o variables articiales. Las propiedad
de unimodularidad de A implica que una submatriz B que represente una base del problema
de ujo en redes, tiene las siguientes caractersticas:
17
det B = 1 para todas las bases del problema y cada punto extremo es entero si el vector
b tiene solamente elementos enteros.
Para cada base B, la inversa B
1
tambien tiene solamente elementos 1 o 0.
Para cada base B, la columna actualizada de una columna de la matriz A, tiene elementos
1 o 0. Recordando que la columna actualizada de la matriz A (a
ij
) es igual a y
ij
=
B
1
a
ij
, entonces un elemento de y
ij
es calculado de la siguiente forma:
y
ij
K
=
detB
k
detB
Donde B
k
es obtenido de B, sustituyendo la k-esima columna por a
ij
. Como a
ij
tiene
apenas uno o dos elementos unitarios, ( uno +1 y el otro -1), entonces el det B
k
= 1

0
y por lo tanto, y
ij
k
= 1 o 0. Finalmente, cualquier columna a
ij
podra ser obtenida con
operaciones de suma y sustitucion de las columnas de las variables basicas.
1.5 Representacion de un vector no basico, en funcion
de vectores basicos
Considere un grafo G
B
de un arbol generado con raz. Como G
B
es un arbol, entonces existe
una unica cadena entre los nodos p y q. As, el arco (p,q) no basico, forma un unico lazo.
Ellazo permite encontrar una relacion entre el vector a
pq
no basico y las columnas basicas de
la matriz B que dene G
B
. La gura 10.26 muestra el lazo.
p
q
r
z
k j
i
t
h
Orientacin
ra z
Figura 10.26: Conformacion de un lazo
Dando una orientacion al lazo igual a la del arco (p,q) tenemos lo siguiente:
a
pq
a
pj
+ a
qt
+ a
kj
a
kh
+ ....... = e
p
e
q
e
p
+ e
j
+ e
q
e
t
+ e
k
e
j
e
k
+ e
h
+ .......
18
a
pq
= a
pj
a
kj
+ a
kh
+ ... a
qt
La relacion anterior permite representar columnas no basicas (a
pq
) en la gura 10.26 en
funcion de columnas basicas. De esta forma, una vez se identique un ciclo y una orientacion
que concuerda con el arco no basico, las columnas basicas cuyo arco tienen la misma orientacion
del arco no basico, tienen un coeciente igual a -1, y en caso contrario, tienen un coeciente igual
a +1. Las columnas no basicas que no estan el lazo, tienen coeciente igual a cero. Recordando
que los coecientes que permiten representar una columna no basica a
pq
en funcion de las
columnas basicas es el vector y
pq
, tal como se lleva encuenta en el cuadro simplex en el PL.
Por lo tanto del lazo correspondiente a cada arco no basico, podemos identicar directamente
el vector y
pq
, fundamental en la identicacion de la variable basica que debe salir de la base.
Tambien se debe observar que en este tipo de lazo nunca aparece el arco raz (arco articial) y
por lo tanto, la variable articial siempre permanece en la base con valor igual a cero. Por lo
tanto puede ser especicado un costo c
a
= 0 para la variable articial.
Ejemplo
Se presenta un arbol con raz, determinar la matriz B, la columna no basica a
12
y el vector
y
12
1
3
2
4
raz
Figura 10.27: Conformacion de una trayectoria cerrada en un arbol
(1,3)(2,3)(3,4) (r)
B =
_

_
1 0 0 0
0 1 0 0
1 1 1 0
0 0 1 1
_

_
1
2
3
4
La columna a
12
puede ser representada de la siguiente forma:
a
12
= a
13
a
23
= e
1
e
3
e
2
+ e
3
= e
1
e
2
a
12
=
_

_
1
1
0
0
_

_
19
y
12
= B
1
a
12
=
_

_
1
1
0
0
_

_
1.6 El metodo simplex para el problema de ujo en redes
Los pasos basicos del metodo simplex son:
Encontrar una SBF inicial
Calcular los coecientes de costo relativo de las varibales no basicas c
j
= z
j
c
j
, si la SBF
es optima, pare. En caso contrario, seleccionar la variable no basicas que debera entrar
en la base.
Si ha sido vericado que el problema no es limitado, determinar la variable basica que
debe salir de la base y pivotar el cuadro simlex.
Ejemplo
Utilizando el siguiente ejemplo sera analizado cada de los pasos para el problema de ujo
en redes descrito anteriormente.
1
2
4
3
5
b
1
= 2
b
2
= 5
b
3
= 1
b
4
= -4
b
5
= -4 r
5 6
4
3
0 -2
2
-4
c
ij
Figura 10.28: Ejemplo de aplicacion en la solucion del problema de ujo en redes
a) Encontrar la SBF inicial
Conocida una base B o un arbol generado con su correspondiente raz, entonces el valor de
las variables basicas es encontrado facilmente. Esto es vericado a traves de un ejemplo.
20
Para el ejemplo de la gura 10.28, se supone que x
15
, x
23
, x
34
y x
45
son variables basicas
originales y x
5
es una varible basica articial. Sea B la matriz basica del sistema, as el
modelo puede plantearse de la siguiente manera: Bx
B
= b,y escrito como sigue:
B =
_

_
1 0 0 0 0
0 1 0 0 0
0 1 1 0 0
0 0 1 1 0
1 0 0 1 1
_

_
x
15
x
23
x
34
x
45
x
5
2
5
1
4
4
La estructura triangular inferior permite encontrar facilmente los valores de las variables
basicas, as del ejemplo tenemos:
x
15
= 2
x
23
= 5
x
23
+ x
34
= 1 5 + x
34
= 1 x
34
= 6
x
34
+ x
45
= 4 6 + x
45
= 4 x
45
= 2
x
15
x
45
+ x
5
= 4 2 2 + X
5
= 4 X
5
= 0(Existe balance demanda generacion)
El mismo proceso puede ser realizado directamente en el arbol generado con raz. En la
gura 10.29 se observa el procedimiento.
1
2
4
3
5
b
1
= 2
b
2
= 5
b
3
= 1
b
4
= -4
b
5
= -4 r
Figura 10.29: Conformacion del arbol del ejemplo anterior
Los ujos a traves de los arcos pueden ser calculados haciendo un barrido iniciando en los
nodos terminales y terminando el proceso en el nodo raz. Para esto se debe contar con un
proceso de ordenamiento nodal y con base en este poder llevar a cabo una sistematizacion
en los calculos. As en este caso se sigue el siguiente procedimiento de calculo:
Nodo 1 : x
15
= 2
Nodo 2 : x
23
= 5
Nodo 3 : x
13
+ b
3
= x
34
x
34
= 5 + 1 x
34
= 6
Nodo 4 : x
34
b
4
= x
45
x
45
= 6 4 x
45
= 2
Nodo 5 : x
15
+ x
45
+ b
5
= x
5
x
5
= 2 + 2 4 x
5
= 0
21
b) Encontrar el coeciente de costo relativo de las variables no basicas
Para calcular los coecientes de costo relativo de las variables no basicas se usa la relacion
c
ij
= z
ij
c
ij
= w a
ij
c
ij
. Para encontrar las variables duales, usamos la relacion:
w B = c
B
. Desde el punto de vista algebraico, esta ecuacion es resuelta de la siguiente
manera:
Para el ejemplo anterior se tiene el siguiente sistema:
[ w
1
w
2
w
3
w
4
w
5
]
_

_
1 0 0 0 0
0 1 0 0 0
0 1 1 0 0
0 0 1 1 0
1 0 0 1 1
_

_
= [ 2 4 0 3 0 ]
Las lneas de la matriz estan ordenadas en forma consecutiva, 1,2,3,4 y 5, y es por este
motivo que las variables duales estan en el orden w
1
, w
2
, w
3
, w
4
y w
5
y calculadas de la
siguiente manera:
Lnea 5 : w
5
= 0 w
5
= 0
Lnea 4 : w
4
w
5
= 3 w
4
= 3
Lnea 3 : w
3
w
4
= 0 w
3
= 3
Lnea 2 : w
2
w
3
= 4 w
2
= 1
Lnea 1 : w
1
w
5
= 2 w
1
= 2
Estos calculos de las variables duales tambien pueden ser llevados a cabo directamente
usando el arbol generado. En este, el proceso se inicia en el nodo raz hasta llegar a los
nodos extremos, usando la relacion w
i
w
j
= c
ij
y asumiendo que el nodo raz es la base
referencial, con valor de cero. As de la gura 10.29 tenemos:
Arco 15 : w
1
w
5
= c
15
w
1
= 2
Arco 45 : w
4
w
5
= c
45
w
4
= 3
Arco 34 : w
3
w
4
= c
34
w
3
= 3
Arco 23 : w
2
w
3
= c
23
w
2
= 1
Los coecientes de costo relativo de las variables (arcos) no basicas, son enontradas usando
la relacion:
c
ij
= z
ij
c
ij
= w a
ij
c
ij
= w(e
i
e
j
) c
ij
c
ij
= w
i
w
j
c
ij
22
Para el ejemplo tenemos los siguientes calculos de costos relativos:
c
12
= w
1
w
2
c
12
= 2 (1) 5 = 2
c
13
= w
1
w
3
c
13
= 2 3 (2) = 1
c
34
= w
3
w
4
c
34
= 3 3 0 = 0 Resultado logico, ya que es parte de la base
c
42
= w
4
w
2
c
42
= 3 (1) 6 = 2
c
53
= w
5
w
3
c
53
= 0 3 4 = 7
Por lo tanto, x
13
(arco 13), es candidato a entrar en la base.
c) Determinacion de la variable que debe salir de la base y ejecutar el pivotaje
La variable que debe salir de la base es aquella que primero llegue al valor de cero, con el
incremento en el valor de la variable no basica. En terminos de grafos, se debe identicar
el lazo denido por el arco que entra en la base y vericar el maximo incremento permitido
para el ujo en ese arco. Aquel arco que tiene sentido opuesto al arco que esta entrando
en la base y llega primero a cero, debe salir de la base.
En el ejemplo analizado, la variable x
13
debe entrar en la base y debe aumentar de valor
hasta un cuyo valor es encontrado en el lazo denido por el arco 1-3.
1
2
4
3
5
x
23
= 5
x
34
= 6
x
45
= 2
x
15
= 2
x
5
= 0


+
+
+
-
Figura 10.30: Conformacion de un lazo denido por la entrada de un arco
En la gura 10.30, la unica variable que puede llegar a cero es x
15
, la otras variables (x
34
y x
45
) aumentan de valor y otras permanecen inalteradas (x
5
= 0 y x
23
= 5). As, cuando
+ = 2, x
15
= 0. Dado lo anterior, x
15
sale de la base y entra x
13
. Los nuevo valores
de los ujos son los siguientes:
x
13
= 2
x
34
= 6 + x
34
= 8
x
45
= 2 + x
45
= 4
x
23
= 5 Inalterado
x
15
= 0 Sale de la base
23
Con el ingreso de una arco y la salida de otro, el arbol cambia de topologa, tal como se
observa en la gura 10.31
1
2
4
3
5
x
23
= 5
x
34
= 8
x
5
= 0
x
13
= 2
x
45
= 4
Figura 10.31: Cambio de topologa radial, por intercambio de arcos
El proceso de actualizacion presentado anteriormente, equivale al pivotaje que se efectua
en el cuadro simplex.
d) Actualizacion de las variables duales
En cada paso del algoritmo, las variables duales pueden ser actualizadas en la forma
tradicional, para esto se calculan los valores de w a partir del nodo raz. Sin embargo,
estos valores podran ser calculados de una forma eciente.
Suponer que x
pq
es la variable que debe entrar en la base y x
uv
es la variable que debe
salir de la base. Retirando el arco (uv), se obtiene 2 arboles T
1
y T
2
y se considera que el
nodo raz hace parte del el arbol T
1
.
T
1
T
2
v
q p
r
u
Figura 10.32: Actualizacion de las variables duales
En estas condiciones, las variables duales de los nodos que pertenecen al arbol T
1
no
requieren de actualizacion (recordar que las variables duales dependen solamente de la
topologa del arbol, iniciando en el nodo raz y de los valores de c
ij
, que para este caso no
cambian para el arbol T
1
). Para los nodos del arbol T
2
podran presentarcen 2 situaciones:
24
d.1 Cuando T
2
contiene el nodo q q T
2
El nodo q es denominado nodo de conexion (leading node) del arco (p,q). Logicamente
para cada arco de T
2
la relacion w
i
w
j
= c
ij
se cumple para todo (i, j) T
2
, antes
y despues del cambio de base. De esta forma es evidente que los valores de los w
i
del arbol T
2
deben cambiar de valor en una constante. Por lo tanto, conociendo la
variacion de w en el nodo q, es posible calcular todos los w
i
en T
2
. As, por cada w
i
tenemos lo siguiente:
w

i
= w
i
+ (w
q
nuevo
w
q
) (1.4)
Para el arco que esta entrando de la base se tiene:
Antes del cambio de la base c
pq
= w
p
w
q
c
pq
0 (1.5)
Despues del cambio de la base c

pq
= w
p
w
q
nuevo
c
pq
= 0 (1.6)
De 1.6: w
p
= w
q
nuevo
+ c
pq
De 1.5: c
pq
= w
q
nuevo
+ c
pq
w
q
c
pq
= w
q
nuevo
w
q
De 1.4: w

i
= w
i
+ c
pq
Los valores de w

i
son los nuevos valores de las variables duales de T
2
, w
i
son os
valores antiguos y . c
pq
son los coecientes de costo relativo del arco (p,q) en la
base de trabajo y disponibles porque fue calculada en el momento de seleccionar la
variable que entra en la base.
Observacion: En el texto es usado
pq
= c
pq
d.2 Cuando p T
2
p es nodo de conexion
En este caso solamente cambia el signo de un termino de la relacion anterior, as se
tiene lo siguiente:
w

i
= w
i
+ (w
p
nuevo
w
p
) (1.7)
c
pq
= w
p
w
q
c
pq
0 (1.8)
c

pq
= w
p
nuevo
w
q
c
pq
= 0 (1.9)
De 1.9: w
q
= w
p
nuevo
c
pq
De 1.8: c
pq
= w
p
w
p
nuevo
+c
pq
c
pq
= (w
p
nuevo
w
p
) (w
p
nuevo
w
p
) = c
pq
De 1.7: w

i
= w
i
c
pq
25
1.7 Resumen del Algoritmo Simplex para Redes
1.7.1 Paso inicial
Encontrar una SBF inicial, representada por un arbol con raz (rooted spanning tree), donde
r es el nodo raz. Encontrar el ujo correspondiente a las variables basicas x
B
y las variables
duales w relacionadas con el arbol basico.
1.7.2 Paso principal
Encontrar
pq
= z
pq
c
pq
= w
p
w
q
c
pq
= max{z
ij
c
ij
= w
i
w
j
c
ij
: (i, j) arco no basico}
As, se estan encontrando las variables no basicas con mayor coeciente de costo relativo.
Si z
pq
c
pq
0 Stop el valor actual es la solucion optima.
Nota: Debe observarse si alguna variable articial es positiva en la optimalidad, en ese caso
el problema es infactible.
En caso contrario, seleccionar el arco (pq) que debe entrar en el arbol basico, con este se
identica el lazo formado por la cadena donde esta conectado el arco (pq).
Encontrar el ujo maximo 0, que puede ser enviado por el lazo formado en el sentido
del arco (pq) que esta entrando.
Si stop, el problema es ilimitado.
Si es nito determinar la variable correspondiente que debe salir del arbol basico
(u, v).
Ajustar los ujos recalculando adecuadamente los ujo en el lazo y usando el valor del .
Retirar el arco (u, v) y actualizar el arbol basico adicionando el arco (p,q).
Actualizar la variables duales aumentando o disminuyendo los valores duales de los nodos
en T
2
, por el valor
pq
, teniendo en cuenta que el nodo p o q estan en el arbol T
2
.
T
2
, es obtenido al descomponer el arbol base en dos (T
1
yT
2
) y en que el nodo raz esta en
T
1
.
Este paso principal se repetira.
1.7.3 Ejemplo
Resolver el siguiente sistema de 4 nodos y 7 arcos usando el metodo de ujo en redes.
26
1
3
2
4
4
2
-5
-1
2
-5
6 -1
4
3
bi
cij
7
Figura 10.33: Ejemplo de ujo en redes
Paso inicial
Seleccionar la base inicial (arbol). Se selecciona un arbol formado por los arcos: (1,2),(2,3) y
(2,4). Se calculan los valores de las variables basicas y de las variables duales.
1
3
2
4
4
1
5
Figura 10.34:

Arbol base
Entonces: x
12
= 4, x
23
= 1, x
24
= 5. Calcular las variables duales. Recordar que w
i
w
j
=
c
ij
, para las variables basicas y w
4
= 0.
1
3
2
4
w
4
= 0
4
6
5
Figura 10.35: Variables duales
27
Inicializacion
Calculo de la variable (arco) que debe entrar en el arbol basico
Se usa la formula de costo relativo: c
ij
= w
i
w
j
c
ij
c
13
= w
1
w
3
c
13
= 6 5 (5) = 6
c
41
= w
4
w
1
c
41
= 0 6 (7) = 13
c
32
= w
3
w
2
c
32
= 5 4 (6) = 5
c
34
= w
3
w
4
c
34
= 5 0 (3) = 2
Del calculo de los costos relativos se tiene que x
13
debe entrar en la base, por lo
tanto, el arco (13) formara parte de la estructura del arbol basico.
Determinar la variable (arco) que debe salir de la base (arbol basico).
1
3
2
4
4
1

Figura 10.36: Determinacion de


= mn {1,4} = 1 seg un se observa en la gura 10.36, x
23
debe salir de la
base y por lo tanto el arco(23) debe salir del arbol basico.
Actualizacion de ujos
1
3
2
4
3 5
1
Figura 10.37: Actualizacion de ujos
De la anterior actualizacion de ujos se tiene: x
12
= 3, x
13
= 1,x
24
= 5
28
Recalcular las variables duales
1
3
2
4
T
1
T
2
Figura 10.38: Actualizacion de las variables duales
w

3
= w
3
+
13
= 5 + 6 = 11 w

3
= 11
Otra forma de hacer este calculo es:
w
1
w
3
= 5 w
3
= w
1
+ 5 = 6 + 5 = 11 w
3
= 11
Nuevas variables duales:
1
3
2
4
w
4
= 0 w
1
= 6
w
2
= 4
w
3
= 11
Figura 10.39:

Arbol con las nuevas variables duales
Iteracion 2
Calculo de la variable que debe entrar en la base: c
ij
= w
i
w
j
c
ij
c
41
= w
4
w
1
c
41
= 0 6 (7) = 13
c
23
= w
2
w
3
c
23
= 4 11 (1) = 6
c
32
= w
3
w
2
c
32
= 11 4 (6) = 1
c
34
= w
3
w
4
c
34
= 11 0 (3) = 8
x
34
entra en la base el arco (3,4) formara parte del arbol basico y
34
= 8
Encontrar la variable que debe salir de la base
29
1
3
2
4
3
5
1

+ +
Figura 10.40: Determinacion de la variable que sale de la base
Cuanto debe variar 0 para uno de los ujo dentro de la malla llegue al valor de
cero ?
= min {3,5 } = 3 x
12
debe salir de la base el arco (1,2) debe salir
del arbol basico.
Actualizacion de ujos
1
3
2
4
2
4
3
Figura 10.41: Actualizacion de ujos
Nuevos ujos: x
13
= 3, x
24
= 2, x
34
= 3
Calculo de las nuevas variables duales
1
3
2
4
w
4
= 0
T
2
T
1
Figura 10.42: Calculo de las variables duales
30
(p,q) = (3,4) p = 3 esta en T
2
disminuye.
w

1
= w
1

34
= 6 8 = 2
w

3
= w
3

34
= 11 8 = 3
1
3
2
4
w
1
= -2
w
2
= 4
w
3
= 3
w
4
= 0
Figura 10.43: Nuevas variables duales
Iteracion 3
Calcular la variable que debe entrar en la base: c
ij
= w
i
w
j
c
ij
c
41
= w
4
w
1
c
41
= 0 (2) (7) = 5
c
23
= w
2
w
3
c
23
= 4 3 (1) = 2
c
32
= w
3
w
2
c
32
= 3 4 (6) = 7
c
12
= w
1
w
2
c
12
= 2 4 (2) = 8
x
23
entra en la base el arco (2,3) formara parte del arbol basico y
23
= 2
Variable que debe salir de la base
1
3
2
4

2
3
4
Figura 10.44: Variable que debe salir de la base
x
24
es el unico candidato a salir de la base.
= min { 2} x
24
debe salir de la base.
31
Actualizacion de los ujos
1
3
2
4
5
4
2
Figura 10.45: Variable que debe salir de la base
Calculo de las variables duales
1
3
2
4
T
2
T
1
w
4
= 0 w
1
= -2
w
3
= 3
Figura 10.46: Calculo de las variables duales
(p,q) = (2,3) P = 2 esta en T
2
disminuir.
w

2
= w
2

23
= 4 2 = 2 w

2
= 2
Las nuevas variables duales son:
1
3
2
4
w
4
= 0 w
1
= -2
w
3
= 3
w
2
= 2
Figura 10.47: Nuevas variables duales
32
Iteracion 4
Calculo de la variable que debe entrar en la base:
c
12
= w
1
w
2
c
12
= 2 2 (2) = 6
c
24
= w
2
w
4
c
24
= 2 0 (4) = 2
c
32
= w
3
w
2
c
32
= 3 2 (6) = 5
c
41
= w
4
w
1
c
41
= 0 (2) (7) = 5
_

_
La solucion optima fue encontrada
1
3
2
4
2
4
1
5
0
4
2
5
Figura 10.48: Solucion encontrada
Solucion: x
13
= 4, x
23
= 2, x
34
= 5, z(x) = 7
1.8 Determinacion de una SFB inicial
Se supone que se tiene la matriz A
o
de dimension mn, sus elementos son vectores columna,
con elementos iguales a cero, excepto un elemento +1 o un elemento -1 o ambos. En este
contexto se implementa una base articial llena, sin embargo es posible aprovechar algunas
columnas (arcos) de A
o
.
Supongace que adicionamos una variable articial en cada la o linea de A
o
y en la cual la
i-esima columna articial es igual a e
i
dependiendo del signo de b
i
as: e
i
si b
i
0 y e
i
si
b
i
0. Tambien es adicionada una lnea redundante como el negativo de las suma de las las
o las lneas de la matriz A
o
. Este sistema asume la siguiente forma:
A
o
nuevo
x

= b
nuevo

1
A
o
1
.
.
.
1
1A
o
1 1 1
_
x
x
a
_
=
b
1b
33
Donde x son las variables originales y x
a
las variables articiales.
A
nuevo
puede ser vista como la matriz de un grafo modicado, en el cual existe un nodo
adicional (m+1). Dado lo anterior, se tendra entonces m arcos conectados a un nuevo nodo
(m+1). Finalmente es adicionado un nodo raz (r) al nodo (m+1), en la matriz es adicionada
una nueva columna e
m+1
. Por lo tanto una base para el problema modicado es un arbol
generador con raz que puede ser conformado de manera trivial con los m arcos articiales y el
arco raz.
El sistema anterior permite resolver el problema de ujo en redes usando el metod de las
dos fases. Si es encontrada una SBF del problema original, entonces eliminamos todos los arcos
articiales que no estan en la base.
Logicamente en la fase I los coecientes de costo de las variables originales deben ser cero,
y los coecientes de las variables articiales deben asumir un valor diferente de cero (podran
ser coecientes unitarios como en el pl convencional).
1.8.1 Ejemplo
Resolver el ejemplo anterior usando el metodo de las dos fases.Los coecientes de costo de la
fase I son denominados d
ij
y para la fase II c
ij
.
1
3
2
4
4
2
-5
-1
0
0
0 0
0
0
0
5
1
1
1
1
Figura 10.49: Ejemplo del metodo de las dos fases
d
15
= 1, d
25
= 1, d
53
= 1, d
54
= 1, otros d
ij
= 0.
Iteracion 1


Arbol generado con raz, formado por los arcos articiales
34
1
3
2
4
4
2
-5
-1
5
r
Figura 10.50:

Arbol inicial formado por los arcos articiales
Flujos por las ramas del arbol: x
15
= 4,x
25
= 2, x
53
= 1, x
54
= 5.
Funcion objetivo: x
0
= 12.
Calculo de las variables duales: w
i
w
j
= d
ij
, iniciando en el nodo raz
w
5
= 0 Base
w
1
w
5
= d
15
w
1
= 1
w
2
w
5
= d
25
w
2
= 1
w
5
w
3
= d
53
w
3
= 1
w
5
w
4
= d
54
w
4
= 1
Vector de variables duales : w =
_
1 1 1 1 0
_
Calculo de coecientes de costo relativo:

d
12
= w
1
w
2
d
12
= 1 1 0 = 0

d
13
= w
1
w
3
d
13
= 1 (1) 0 = 2

d
23
= w
2
w
3
d
23
= 1 (1) 0 = 2

d
24
= w
2
w
4
d
24
= 1 (1) 0 = 2

d
32
= w
3
w
2
d
32
= 1 (1) 0 = 2

d
34
= w
3
w
4
d
34
= 1 (1) 0 = 0

d
41
= w
4
w
1
d
41
= 1 (1) 0 = 2
Variable que entra en la base: x
13
Arco que debe salir de la base
35
1
3
2
4 5
r
4
2
5
1

Figura 10.51: Arco que sale de la base


= min {1,4 } = 1, por lo tanto el arco (5,3) sale de la base.
Actualizacion de los ujos
1
3
2
4 5
r
3
2
5
1
Figura 10.52: Actualizacion de ujos
Flujos actualizados: x
15
= 3, x
25
= 2,x
13
= 1 x
54
= 5
Funcion objetivo : x
0
= 10
Calculo de las variables duales
1
3
2
4 5
r
Figura 10.53: Calculo de las variables duales
36
w

3
= w
3
+ c
13
w

3
= 1 + 2 = 1
Vector de variables duales : w =
_
1 1 1 1 0
_
El arco (p,q) = (1,3) que entra en el arbol, tiene q = 3 en T
2
(que corresponde al
arbol que no tiene el nodo raz.
Observacion: Los arcos son eliminados despues de que cada uno de ellos son reti-
rados de la base.
Segunda iteracion
Calculo de coecientes de costo relativo

d
12
= w
1
w
2
d
12
= 1 1 0 = 0

d
23
= w
2
w
3
d
23
= 1 1 0 = 0

d
24
= w
2
w
4
d
24
= 1 (1) 0 = 2

d
32
= w
3
w
2
d
32
= 1 1 0 = 0

d
34
= w
3
w
4
d
34
= 1 (1) 0 = 2

d
41
= w
4
w
1
d
41
= 1 1 0 = 2
x
24
es candidato a entrar en la base (d
24
) = 2
Identicacion del arco que debe salir de la base
1
3
2
4
5
r

2
5
3
1
Figura 10.54: Arco que sale de la base
= min {2,5} = 2 arco(2,5) - (x
25
) debe salir de la base
Actualizacion de ujos
37
1
3
2
4
5
r
3
3
1
2
2
4
1
5
Figura 10.55: Actualizacion de ujos
Flujos en la red: x
13
= 1, x
15
= 3, x
24
= 2, x
54
= 3
Funcion objetivo: x
o
= 6
Calculo de las variables duales
1
3
2
4
5
r
2
4
1
5
Figura 10.56: Calculo de la variables duales
(2,5) p = 2 T
2
w

2
= w
2


d
24
= 1 - 2 w

2
= 1
w =
_
1 1 1 1 0
_
Tambien puede ser calculada como: w

2
w

4
= d
24
w

2
= w

4
= w
4
= 1
Tercera iteracion
Calculo de los coecientes de costo relativo
38

d
12
= w
1
w
2
d
12
= 1 (1) 0 = 2

d
23
= w
2
w
3
d
23
= 1 1 0 = 2

d
32
= w
3
w
2
d
32
= 1 (1) 0 = 2

d
34
= w
3
w
4
d
34
= 1 (1) 0 = 2

d
41
= w
4
w
1
d
41
= 1 1 0 = 2
x
12
es candidato a entrar en la base:

d
12
= 2
El arco que debe salir de la base
1
3
2
4
5
r
3
3
1
2
2
4
1
5

Figura 10.57: Arco que debe salir de la base


= min{3,3,} = 3, el arco (1,5) debe salir de la base
Actualizacion de ujos
1
3
2
4
5
r
0
1
5
2
4
1
5
3
Figura 10.58: Actualizacion de ujos
w = 0, x
12
= 3, x
13
= 1, x
24
= 5, x
54
= 0 (variable articial)
El proceso de optimizacion se puede continuar con el nodo 5 como nodo raz o podra
se eliminado y redenir el nodo raz como el nodo 4.
39
1
3
2
4
r
1
5
2
4
1
5
3
Figura 10.59: Redenicion del nodo articial
Valor de los ujos: x
12
= 3, x
13
= 1, x
24
= 5
Funcion objetivo: v(x) = 21
1.9 Flujo en redes con variables canalizadas
Es posible desarrollar un algoritmo de ujo en redes cuando el ujo que pasa por lo arcos
tiene limite inferior y superior. Se aprovecha las mismas caractersticas del algoritmo simplex
estandar con variables canalizadas.
a) Determinacion de una base inicial y ujos
El problema despues de adicionar m variables articiales asume la siguiente forma:
min f(x) = cx
s.a.
A
o
x = b
l x u
A
o
es una matraiz de incidencia nodo-arco de dimension (m+1)n de un gafo orientado
y conectado, incluyendo m arcos articiales y el arco raz.
Tambien se tiene que:

b
i
= 0 y l
J
u
J
j = 1, 2, ....., n
En la forma tradicional podemos encontrar una base inicial usando los arcos articiales
en la base y colocando los arcos originales en sus limites inferior y superior. As, se puede
determinar facilmente los ujos a traves de los arcos. Logicamente los arcos articiales
deben ser adicionados con una orientacion adecuada. El resto del proceso es realizado en
la forma tradicional de forma trivial, teniendo en cuenta loa ujos a traves de los arcos no
basicos. A pesar de esto, en cualquier paso del proceso, los ujos pueden ser calculados
facilmente, actualizando el vector independiente, empleando la relacion:
b

= b N
1
l
N1
N
2
u
N2
40
y resolviendo el sistema:
Bx
B
= b

b) Calculo de las variables duales y de los coecientes de costo relativo


Los limites inferior y superior no modican el calculo de las variables duales y por lo
tanto no cambian la manera como son calculados los coecientes de costo relativo de
las variables (arcos) no basicos c
ij
. Logicamente cambia el criterio de optimalidad. As,
cuando se tienen variables canalizadas, el criterio de optimalidad es el siguiente:
Si x
ij
= u
ij
c
ij
= w
i
w
j
c
ij
0
Si x
ij
= l
ij
c
ij
= w
i
w
j
c
ij
0
c) Variable que debe entrar en la base:
Puede entrar en la base cualquier variable que este en el LS con c
ij
0 o cualquier
variable que este en el LI con c
ij
0. Cuando existen varias cantidades, podemos
seleccionar aquella variable que puede entrar en la base y tiene el mayor valor de | c
ij
|.
d) Variable que debe salir de la base y pivotaje:
Para identicar la variable que debe salir de la base, debemos identicar el unico lazo que
aparece en el arbol generado con raz, despues de adicionar el arco que debe entrar en la
base. De esta forma, la variacion del ujo en el arco que entra en la base debera llevar
en cuenta tres tipos de variacion de ujo en el lazo para identicar la mayor variacion de
ujo en el lazo. As, debe tenerce en cuenta los siguientes casos:
Una variable basica que esta en su lmite inferior (LI) El ujo en el arco esta en
el mnimo permitido.
Una variable basica que esta en su lmite superior (LS) El ujo en el arco esta en
el maximo permitido.
El ujo en el arco no basico que esta entrando (o pretende entrar) en la base, llega al
otro extremo. En este caso no existe cambio de base (el arbol generado no cambia).
En todos los casos deben ser recalculados los ujos solamente en el lazo.
Tambien debe observarse que la variacion de ujo en el arco y que pretende entrar en
el arbol, puede ser positivo o negativo dependiendo el lmite inferior o superior en se
encuentra.
Si el arbol no cambia, la variables duales no cambian. En el caso en que exista cambio
en el arbol, deben ser recalculadas las variables duales de una parte del nuevo arbol, de
la misma manera en que fue calculado el ujo en redes en el algoritmo basico.
41
1.9.1 Ejemplo
Resolver el siguiente sistema usando el algoritmo de ujo en redes con variables canalizadas.
1
3
2
4
0
5
8 3
( 0,4,2 )

(l ,u, c)
( 0,6,1 )
( 0,3,4 )
( 1,5,6 )
( 1,8,-1 )
Figura 10.60: Solucion al ejemplo con variables canalizadas
Fase I
1
3
2
4
0
5
8
3
( 0,4,0 )
( 0,6,0 )
( 0,3,0 )
( 1,5,0 )
( 1,8,0 )
5
( 0,

,1 )
( 0,

,1 )
( 0,

,1 )
( 0,

,1 )
r
Figura 10.61: Fase I del ejemplo con variables canalizadas
d
ij
= 1 para los arcos articiales
Iteracion 1
arbol inicial formado por los arcos articiales. Todas las variables no basicas en el
LI
42
1
3
2
4
0
5
8
3
5
r
0
0
1
1
1
0
7
5
1
Figura 10.62:

Arbol inicial formado por los arcos articiales
Base inicial:
Basicas
_

_
x
15
= 5
x
25
= 1
x
35
= 1
x
54
= 7
No basicas
_

_
x
12
= 0 LI
x
13
= 0 LI
x
24
= 0 LI
x
32
= 1 LI
x
34
= 1 LI
Funcion objetivo : x
o
= 14
Calculo de las variables duales
w
5
= 0 Nodo de referencia
w
1
w
5
= d
15
w
1
0 = 1 w
1
= 1
w
2
w
5
= d
25
w
2
0 = 1 w
2
= 1
w
3
w
5
= d
35
w
3
0 = 1 w
3
= 1
w
5
w
4
= d
54
0 w
4
= 1 w
4
= 1
w =
_
1 1 1 1 0
_
Calculo de los coecientes de costo relativo

d
12
= w
1
w
2
d
12
= 1 1 0 = 0

d
13
= w
1
w
3
d
13
= 1 1 0 = 0

d
24
= w
2
w
4
d
24
= 1 (1) 0 = 2

d
32
= w
3
w
2
d
32
= 1 1 0 = 0

d
34
= w
3
w
4
d
34
= 1 (1) 0 = 2
x
34
es seleccionado como candidato para entrar en la base,

d
34
= 2
43
Variable que debe salir de la base
3 4
5
r
1
1
7

Figura 10.63: Variable que debe salir de la base


= min { (5,-1); (7-0); (1-0)} = min {4; 5 ; 1} = 1
= 1
x
34
pasa a su limite superior
x
54
pasa a su limite inferior
x
35
pasa a su limite inferior
, x
35
variable que sale de la base y pasa a su limite inferior. (Por ser variable articial
es retirada del problema)
Iteracion 2
Calculo de ujos
1
3
2
4
0
5
8
3
5
r
0
0
1
2
0
6
5
1
Figura 10.64: Calculo de los ujos en la red
Basicas
_

_
x
15
= 5
x
25
= 1
x
54
= 6
x
34
= 2
No basicas
_

_
x
12
= 0 LI
x
13
= 0 LI
x
24
= 0 LI
x
32
= 1 LI
Funcion objetivo : x
o
= 12
44
Calculo de las variables duales
1
3
2
4
5
r
T
2
T
1
Figura 10.65: Calculo de las variables duales
Solamente w
3
debe ser actualizado:
(p,q) = (3,5); p = 3 T
2
(-)
w

3
= w
3


d
34
= 1 - 2 = -1 w

3
= 1
w =
_
1 1 1 1 0
_
Calculo de los coecientes de costo relativo

d
12
= w
1
w
2
d
12
= 1 1 0 = 0

d
13
= w
1
w
3
d
13
= 1 (1) 0 = 2

d
24
= w
2
w
4
d
24
= 1 (1) 0 = 2

d
32
= w
3
w
2
d
32
= 1 1 0 = 2
x
24
entra en la base o es candidata a entrar en la base

d
24
= 2
Variable que sale de la base
2
4
5
r
0
6
1

Figura 10.66: Identicacion de la variable que sale de la base


45
= min {(4-0); (6-0); (1-0) } = min {4;6;1} = 1 = 1
El arco (2,5) debe salir de la base x
25
sale de la base y pasa al limite inferior.
Iteracion 3
Calculo de los nuevos ujos
1
3
2
4
0
5
8
3
5
r
0
0
1
2
1
5
5
Figura 10.67: Calculo de los ujos en la red
Basicas
_

_
x
15
= 5
x
24
= 1
x
54
= 5
x
34
= 2
No basicas
_

_
x
12
= 0 LI
x
13
= 0 LI
x
32
= 1 LI
Funcion objetivo : x
o
= 10
Calculo de las variables duales
1
3
2
4
5
r
T
1
T
2
Figura 10.68: Calculo de las variables duales
Solamente w
2
debe ser actualizado:
(p,q) = (2,4); p = 2 T
2
(-)
46
w

2
= w
2


d
24
= 1 - 2 = -1 w

2
= 1
w =
_
1 1 1 1 0
_
Calculo de los coecientes de costo relativo

d
12
= w
1
w
2
d
12
= 1 (1) 0 = 2

d
13
= w
1
w
3
d
13
= 1 (1) 0 = 2

d
32
= w
3
w
2
d
32
= 1 (1) 0 = 0
x
12
entra en la base o es candidata a entrar en la base

d
12
= 2
Variable que debe salir de la base
1 2
4
5
5
r
0
1
5
5

Figura 10.69: Variable que debe salir de la base


= min {(6-0); (4-1); (5-0); (5-0) } = min {6;3;5;5} = 3 = 3
El arco (2,4) debe salir de la base x
24
sale de la base y pasa al limite superior
iteracon 4
Calculo de los nuevos ujos
1
3
2
4
0
5
8
3
5
r
0
3
1
2
4
2
2
Figura 10.70: Calculo de los ujos en la red
47
Basicas
_

_
x
12
= 3
x
34
= 2
x
15
= 2
x
54
= 2
No basicas
_

_
x
13
= 0 LI
x
32
= 1 LI
x
24
= 4 LS
Funcion objetivo : x
o
= 4
Calculo de las variables duales
1
3
2
4
5
r
T
1
T
2
Figura 10.71: Calculo de las variables duales
Solamente w
2
debe ser actualizado:
(p,q) = (1,2); q = 2 T
2
(+)
w

2
= w
2
+

d
12
= -1 + 2 = 1 w

2
= 1
w =
_
1 1 1 1 0
_
Calculo de los coeentes de costo relativo

d
13
= w
1
w
3
d
13
= 1 (1) 0 = 2

d
32
= w
3
w
2
d
32
= 1 1 0 = 2

d
24
= w
2
w
4
d
24
= 1 (1) 0 = 2
x
13
unico candidata a entrar en la base

d
13
= 2
Variable que debe salir de la base
48
1
3 4
5
r
0
2
2
2

Figura 10.72: Variable que debe salir de la base


= min { (3-0); (2-0); (2-0); (5-2) } = min {3; 2; 2; 3} = 2 = 2
El arco (1,5) debe salir de la base x
15
sale de la base y pasa al limite inferior
Iteracion 5
Calculo de los nuevos ujos
1
3
2
4
0
5
8
3
5
r
2
3
1
4
4
0
Figura 10.73: Calculo de los ujos en la red
Basicas
_

_
x
12
= 3
x
13
= 2
x
34
= 4
x
54
= 0
No basicas
_
x
32
= 1 LI
x
24
= 4 LS
Funcion objetivo : x
o
= 0
Fin de la fase I
49
Fase II


Arbol generado
1
3
2
4
0
5
8
3 r
2
3
1
4
4
Figura 10.74:

Arbol generado
Caculo de ujos
Basicas
_

_
x
12
= 3
x
13
= 2
x
34
= 4
No basicas
_
x
32
= 1 LI
x
24
= 4 LS
Funcion objetivo : f(x) = 42
Calculo de variables duales
w
4
= 0
w
3
w
4
c
34
w
3
= 0 + 6 w
3
= 6
w
1
w
3
c
13
w
1
= 6 + 4 w
1
= 10
w
1
w
2
c
12
w
2
= 10 1 w
2
= 9
w =
_
10 9 6 0
_
Calculo de los coecientes de costo relativo
c
24
= w
2
w
4
c
24
= 9 0 2 = 7 Limite superior
c
32
= w
3
w
2
c
32
= 6 9 (1) = 2 Limite superior
Solucion optima, el arbol optimo es el siguiente:
50
1
3
2
4
0
5
8
3 r
2
3
1
4
4
Figura 10.75:

Arbol optimo
Los ujos optimos y funcion objetivo:
Flujos optimos :
_
x
12
= 3, x
13
= 2, x
24
= 4, x
32
= 1, x
34
= 4
_
Funcion objetivo : f(x) = 42
1.9.2 Ejemplo
Resolver el problema del ejemplo anterior con la informacion de que existe una base disponible
con los arcos (1,2), (3,2) y (3,4). En el arbol basico los ujos en los arcos no basicos (1,3) y
(2,4) estan en el limite superior.
Iteracion 1
Flujos por los arcos
1
3
2
4
0
5
8
3 r
3
2
2
4
4
Figura 10.76: Flujos por los arcos
Variables basicas =
_

_
x
12
= 2
x
32
= 2
x
34
= 4
Variables no basicas =
_
x
13
= 3 Lmite superior
x
24
= 4 Lmite superior
51
Funcion objetivo : f(x) = 44
Calculo de las variables duales
w
4
= 0
w
3
w
4
c
34
w
3
= 0 + 6 w
3
= 6
w
3
w
2
c
32
w
2
= 1 + 6 w
1
= 7
w
1
w
2
c
12
w
1
= 1 + 7 w
2
= 8
w =
_
8 7 6 0
_
Calculo de los coecientes de costo relativo
c
13
= w
1
w
3
c
13
= 8 6 4 = 2
c
24
= w
2
w
4
c
24
= 7 0 2 = 2
_
x
13
es candidata a entrar en la base
Variable candidata a salir de la base
1
3
2
2
2
3

Figura 10.77: variable candidata a salir de la base


= min { (3-0), (6-2), (2-1) } = 1 x
32
sale de la base y pasa a su LI
Iteracion 2
Flujos por los arcos
1
3
2
4
0
5
8
3 r
2
3
1
4
4
Figura 10.78: Flujos por los arcos
52
Variables basicas =
_

_
x
12
= 3
x
13
= 2
x
34
= 4
Variables no basicas =
_
x
24
= 4 Lmite superior
x
32
= 1 Lmite inferior
Funcion objetivo : f(x) = 42
Calculo de las variables duales
1
3
2
4
r
T
1
T
2
Figura 10.79: Calculo de las variables duales
(p,q) = (1,3) p = 1 T
2
(-)
w

2
= w
2
c
13
= 7 (2) = 9 w

2
= 9
w

1
= w
1
c
13
= 8 (2) = 10 w

1
= 10
w =
_
10 9 6 0
_
Calculo de los coecientes de costo relativo
c
24
= w
2
w
4
c
24
= 9 0 2 = 7
c
32
= w
3
w
2
c
32
= 6 9 (1) = 2
_

c
24
= 7 esta en LS
c
32
= 2 esta en LI
La solucion actual es optima.
1
3
2
4
0
5
8
3 r
2
3
1
4
4
Figura 10.80: Solucion optima
Flujos por la red optima:
53
Flujos por los arcos :
_

_
x
12
= 3
x
13
= 2
x
24
= 4
x
32
= 1
x
34
= 4
f(x) = 42

También podría gustarte