Está en la página 1de 13

Formulaci

on del problema de la ruta m


as corta en programaci
on
lineal
En esta seccion se describen dos formulaciones de programacion lineal
para el problema de la ruta mas corta. Las formulaciones son generales, en
el sentido que se pueden usar para determinar la ruta mas corta entre dos
nodos cualquiera de la red.
Suponga que la red de ruta mas corta tiene n nodos, y que se desea determinar la ruta mas corta entre dos nodos cualesquiera s y t de la red.
Formulaci
on 1: En esta formulacion se supone que entra a la red una unidad externa de flujo en el nodo s y sale en el nodo t, siendo s y t dos nodos
entre los que se busca determinarla ruta mas corta.
Se definen
xij = cantidad de flujo en el arco (i, j) para toda i y j factibles
cij = longitud del arco (i, j) para toda iy j factibles
Como solo puede haber una unidad de flujo en alg
un arco en cualquier momento, la variable xij debe asumir solamente valores binarios (0 o 1). As, la
funcion objetivo del programa lineal se vuelve:
X
Minimizar z =
cij xij
todos los arcos definidos (i,j)

Hay una restriccion que representa la conservacion de flujo en cada nodo;


esto es, en cualquier nodo j,
Flujo total que entra = Flujo total que sale
Formulaci
on 2: La segunda formulacion es en realidad el problema dual del
programa lineal en la formulacion 1. Como la cantidad de restricciones en la
formulacion 1 es igual a la cantidad de nodos, el problema dual tendra tantas variables como cantidad de nodos haya en la red. Tambien, las variables
duales no deben estar restringidas, porque todas las restricciones de la formulacion 1 son ecuaciones. Sea

yj = la restriccion dual asociada al nodo j


Como s y t son los nodos inicial y terminal de la red, el problema dual se
define como sigue:
Maximizar z = yt ys
sujeta a
yj yi cij para toda i y j factibles (yi , yj R, i, j).
Ejemplo 6.3-6
Se tiene la red de ruta de la figura 1. Suponer que se desea determinar la ruta
mas corta del nodo 1 al nodo 2; esto es, s = 1 y t = 2. La figura 1 muestra
como entra el flujo unitario en el nodo 1 y sale en el nodo 2.

Figura 1: Insercion de un flujo unitario para determinar la ruta mas corta


entre el nodo s = 1 y t = 2. El n
umero junto a cada camino corresponde a
su largo respectivo.

La lista del programa lineal asociado, usando la formulacion 1, se ve a continuacion:


Minimizar z =
Nodo 1
Nodo 2
Nodo 3
Nodo 4
Nodo 5

x12 x13 x23 x34 x35 x42 x45


100 30 20 10 60 15 50
1 1
0
0
0
0
0 = 1
1
0 1
0
0
1
0 =
1
0
1
1 1 1
0
0 =
0
0
0
0
1
0 1 1 =
0
0
0
0
0
1
0
1 =
0

Las restricciones representan la conservacion de flujo en cada nodo. Por ejemplo, en el nodo 2 flujo que entra = flujo que sale es x12 + x42 = 1 + x23 .
Notese que una de las restricciones siempre es redundante. Por ejemplo, si se
suman las u
ltimas cuatro restricciones er forma simultanea se obtiene x12 +x13
= 1, que es igual que la restriccion 1.
La solucion optima es
z = 55, x13 = 1, x34 = 1, x42 = 1.
Esta solucion expresa la ruta mas corta del nodo 1 al nodo 2 como 1342,
y la distancia asociada es z = 55 (millas).
Para aplicar la formulacion 2, el problema dual asociado con el programa
lineal anterior es
Maximizar z = y2 y1
sujeta a
y2 y1
y3 y1
y3 y2
y4 y3
y5 y3
y2 y4
y5 y4
yk

R,
3

100
30
20
10
60
15
50
k.

Aunque el problema dual anterior es una definicion matematica pura derivada


del problema primal, en realidad se puede interpretar el problema en una
forma logica. Se define
yi = Distancia al nodo i.
Con esta definicion, la distancia mas corta del nodo inicial 1 al nodo terminal 2 se determina maximizando y2 y1 . La restriccion asociada con la ruta
(i, j) indica que la distancia del nodo i al nodo j no puede ser mayor que
la longitud directa de esa ruta. Puede ser menor si se puede llegar al nodo j
desde el nodo i pasando por otros nodos que formen una ruta mas corta. Por
ejemplo, la distancia maxima del nodo 1 al nodo 2 es 100. Con la definicion
de yi como distancia al nodo i, se puede suponer que todas las variables son
no negativas (en lugar de no tener restriccion). Tambien se puede suponer
que y1 = 0 es la distancia al nodo 1.
Con base en la explicacion anterior, y suponiendo que todas las variables son
no negativas, la solucion optima es

z = 55, y1 = 0, y2 = 55, y3 = 30, y4 = 40, y5 = 0.


El valor de z = 55 expresa la distancia mas corta del nodo 1 al nodo 2, que
tambien es igual a y2 y1 = 55 0 = 55.
La determinacion de la ruta misma, a partir de esta solucion, es algo ingenioso. Se ve que la solucion satisface en forma de ecuaci
on a las restricciones
de las rutas 1-3, 3-4 y 4-2, porque sus holguras son igual a cero; esto es,
y3 y1 = 30, y4 y3 = 10, y2 y4 = 15. Este resultado identifica que la ruta
mas corta es la 1342.
Otra forma de identificar las restricciones que se satisfacen en forma de ecuacion es consultar la solucion del programa lineal de la formulacion 2. Toda
restriccion que tenga un valor dual distinto de cero debe estar satisfecha en
forma de ecuacion. La tabla siguiente aparea las rutas (restricciones) con sus
valores duales asociados.
Ruta (restriccion)
Valor dual asociado

1-2 1-3
0
1
4

2-3 3-4
0
1

3-5
0

4-2 4-5
1
0

Formulaci
on del problema de flujo m
aximo con programaci
on lineal
Se define xij como la cantidad de flujo en el arco (i, j) y sea cij la capacidad
del mismo arco. Se supone que s y t son los nodos inicial y terminal entre
los cuales se debe determinar el flujo maximo en la red capacitada (es decir,
con sus capacidades).
Las restricciones del problema conservan el flujo de entrada y salida en cada
nodo, con excepcion de los nodos inicial y terminal. La funcion objetivo maximiza el flujo total que sale del nodo inicial s, o el flujo total que entra
al nodo terminal t.
Ejemplo 6.4-3
En el modelo de flujo maximo de la figura 2, s = 1 y t = 5. La tabla siguiente
es un resumen del programa lineal correspondiente con dos funciones objetivo distintas, que dependen de si se maximiza la entrada del nodo 1 (= z1 ) o
la salida al nodo 5 (= z2 ).
x12
Maximizar z1 =
1
Maximizar z2 =
0
Nodo 2
1
Nodo 3
0
Nodo 4
0
Capacidad
20

x13 x14 x23 x25 x34 x35 x43 x45


1
1
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
0 1 1
0
0
0
0 = 0
1
0
1
0 1 1
1
0 = 0
0
1
0
0
1
0 1 1 = 0
30 10 40 30 10 20
5 20

La solucion optima, usando cualquiera de las funciones objetivo, es


x12 = 20, x13 = 30, x14 = 10, x25 = 20, x34 = 10, x35 = 20, x45 = 20
El flujo maximo asociado es z1 = z2 = 60.

Figura 2: Red del ejemplo 6.4-3.

Programaci
on lineal avanzada
En esta seccion veremos una version matricial de la programacion lineal que
permite el desarrollo de varios algoritmos computacionalmente eficientes: el
metodo smplex modificado, el algoritmo de Karmarkar, de punto interior,
totalmente distinto, que parece bastante eficiente al manejar programas lineales muy grandes.
Fundamentos del m
etodo simplex
En la programacion lineal, se dice que el espacio de soluciones factibles forma
un conjunto convexo si el segmento de recta que une dos puntos factibles
distintos cualquiera tambien esta en el conjunto. Un punto extremo del
conjunto convexo es un punto factible que no puede estar en un segmento de
recta que una a dos puntos factibles distintos en el conjunto. En realidad, los
puntos extremos son lo mismo que los puntos de esquina (vertices), nombre
mas adecuado desde el punto de vista geometrico que se uso anteriormente.

La figura 1 ilustra dos conjuntos. El conjunto (a), que es caracterstico del


espacio de soluciones de un programa lineal, es convexo (con cinco puntos
extremos), mientras que el conjunto (b) es no convexo.

Figura 3: Ejemplos de un conjunto (a) convexo y (b) no convexo.

En la solucion grafica del programa lineal, demostramos que la solucion optima siempre se puede asociar con un punto extremo factible (vertice) del
espacio de soluciones. Este resultado tiene sentido, intuitivamente, porque
en programacion lineal todo punto factible se puede determinar como funcion de los puntos extremos. Por ejemplo, en el conjunto convexo (a) de la
figura 3, dados los puntos extremos X1 , X2 , X3 , X4 y X5 , un punto factible
X se puede expresar como combinaci
on convexa de los puntos extremos
mediante
X = 1 X1 + 2 X2 + 3 X3 + 4 X4 + 5 X5 ,
en donde
5
X

i 0 i.

i = 1,

i=1

Esta observacion demuestra que los puntos extremos contienen todo lo necesario para definir por completo el espacio de soluciones.
Ejemplo 7.1-1
Demostrar que el siguiente conjunto es convexo:
C = {(x1 , x2 )| x1 2, x2 3, x1 0, x2 0}
Sean X1 = (x11 , x12 ) y X2 = (x21 , x22 ) dos puntos distintos cualquiera en C. Si
C es convexo, entonces X = (x1 , x2 ) = 1 X1 + 2 X2 tambien debe estar en
C. Para demostrar que eso es cierto se necesita demostrar que se satisfacen
todas las restricciones de C en el segmento de recta X; esto es
x1 = 1 x11 + 2 x21 1 (2) + 2 (2) = 2,
x2 = 1 x12 + 2 x22 1 (3) + 2 (3) = 3.
Por consiguiente, x1 2 y x2 3 porque 1 + 2 = 1. Ademas, se satisfacen
las condiciones de no negatividad, porque 1 y 2 son no negativos.
Conviene expresar el problema lineal general en forma de ecuacion matricial.
Se define X como un n-vector que representa las variables; A como matriz de
(m n) que representa los coeficientes de restriccion, y C como un n-vector
que representa los coeficientes de la funcion objetivo. Entonces el programa
lineal se escribe como sigue:
Maximizar o minimizar z = CX
sujeta a

AX = b, X 0
Al usar el formato de la tabla simplex, siempre se puede hacer que las m
columnas de la extrema derecha de A representen la matriz identidad I mediante arreglos adecuados de las variables de holgura y artificiales asociadas

con la solucion basica de arranque.


Una soluci
on b
asica de AX = b se determina igualando n m variables
a cero, y resolviendo las m ecuaciones resultantes con las m incognitas que
quedan, siempre que la solucion obtenida sea u
nica. Dada esta definicion, la
teora de la programacion lineal establece la siguiente relacion entre la definicion geometrica de puntos extremos, y la definicion algebraica de soluciones
basicas:
Puntos extremos de {X| AX = b} Soluciones basicas de AX = b
La relacion indica que los puntos extremos del espacio de soluciones del programa lineal estan totalmente definidos por las soluciones basicas del sistema
AX = b, y viceversa. Se llega entonces a la conclusion de que las soluciones
basicas de AX = b contienen toda la informacion necesaria para determinar
la solucion optima del problema lineal. Ademas, si se impone la restriccion
de no negatividad X 0, la b
usqueda de la solucion optima se confina solo
a las soluciones basicas factibles.
Para formalizar la definicion de una solucion basica, se puede expresar el
sistema AX = b en forma vectorial como sigue:
n
X

Pj x j = b

j=1

El vector Pj es la j-esima columna de A. Se dice que un subconjunto de m


vectores forma una base B, si y solo si esos m vectores son linealmente
independientes. En este caso, la matriz B es no singular (determinante
no nulo). Si XB es el conjunto de m variables asociado con los vectores de B
no singular, entonces XB debe ser una soluci
on b
asica. En este caso,
BXB = b
Dada la inversa de B 1 que es B, se obtiene la solucion basica correspondiente:

XB = B 1 b
9

Si B 1 b 0, entonces XB es factible. Naturalmente, la definicion supone que


las n m variables restantes son no b
asicas de valor cero.
El resultado anterior demuestra que en un sistema de m ecuaciones y n
incognitas, la cantidad maxima de soluciones basicas (factibles y no factibles)
es
n!
n
=
Cm
m!(n m)!
Ejemplo 7.1-2
Determinar y clasificar (en factible y no factible) todas las soluciones basicas
del siguiente sistema de ecuaciones:

1
3 1
2 2 2

 
x1
x2 = 4
2
x3

En la tabla siguiente se resumen los resultados.


B

BXB = b

(P1 , P2 )

1
2

(P1 , P3 )

3
2

x1
x2

Soluci
on

4
2

x1
x2

1/4
1/4

3/8
1/8

1/4
1/4

1/8
3/8

Estado
4
2

4
2

7/4
3/4

Factible

No es base

(P2 , P2 )

3
2

1
2

x2
x3

4
2

x2
x3

3/4
7/4

Tabla smplex generalizada en forma matricial


En esta seccion se usaran matrices para desarrollar la tabla smplex general. Esta representacion sera la base para desarrollos posteriores. Se tiene la
programacion lineal en forma de ecuacion:
Maximizar z = CX, sujeta a AX = b, X 0
El problema se puede escribir en forma equivalente como sigue:
10

No factible

1 C
O
A



z
X


=

0
b

Supongamos que B es una base factible del sistema AX = b, X 0, y sea


XB el conjunto correspondiente de variables basicas, con CB como su vector
objetivo asociado. Entonces, la solucion correspondiente se puede calcular
como sigue:


z
XB


=

1 CB
O
B

1 

0
b


=

1 CB B 1
O
B 1



0
b


=

CB B 1 b
B 1 b

La tabla general smplex en forma matricial se puede derivar de las ecuaciones


originales como sigue:


1 CB B 1
O
B 1



1 C
O
A



z
X


=

1 CB B 1
O
B 1



0
b

Con manipulaciones matriciales se llega al siguiente conjunto de ecuaciones:




 

1 CB B 1 A C
z
CB B 1 b
=
O
B 1 A
X
B 1 b
Como Pj es el j-esimo vector de A, la columna de la tabla smplex asociada
con la variable Xj se puede representar como sigue:
Basica
z
XB

xj
CB B 1 Pj cj
B 1 Pj

Solucion
CB B 1 b
B 1 b

De hecho, esta tabla es la misma que se presento en el desarrolo del metodo


simplex primal. Una propiedad importante de esta tabla es que la inversa
B 1 , es el u
nico elemento que cambia de un cuadro al siguiente, y que todo
el cuadro se puede generar una vez conocido B 1 . Este punto es importante,
porque se puede controlar el error computacional de redondeo en cualquier
cuadro, si se controla la exactitud de B 1 . Este resultado fue la razon principal del desarrollo del metodo smplex modificado que veremos mas adelante.

11

Ejemplo 7.1-3
Se tiene la siguiente programacion lineal:
Maximizar z = x1 + 4x2 + 7x3 + 5x4
sujeta a:
2x1 + x2 + 2x3 + 4x4 =
10
3x1 x2 2x3 + 6x4 =
5
xk 0, k.
Se debe generar el tabla smplex asociada con la base B = (P1 , P2 ).
Dado B = (P1 , P2 ), entonces XB = (x1 , x2 )T y CB = (1, 4). As,
B


=

2
1
3 1

1


=

1/5
1/5
3/5 2/5

Entonces se obtiene




  
x1
1/5
1/5
10
3
1
XB =
=B b=
=
x2
3/5 2/5
5
4
Para calcular las columnas de restriccion en el cuerpo de la tabla,


B (P1 , P2 , P3 , P4 ) =

1/5
1/5
3/5 2/5



2
1
2 4
3 1 2 6


=

1 0 0 2
0 1 2 0

A continuacion se calcula el renglon objetivo como sigue:

CB [B (P1 , P2 , P3 , P4 )]C = (1, 4)

1 0 0 2
0 1 2 0


(1, 4, 7, 5) = (0, 0, 1, 3)

Por u
ltimo, se calcula el valor de la funcion objetivo como sigue:
 
3
1
z = CB B b = CB XB = (1, 4)
= 19
4
As, toda la tabla se puede resumir como sigue:

12

Basica x1 x2 x3 x4 Solucion
z
0 0 1 3
19
x1
1 0 2
0
3
x2
0 1 0
2
4
La conclusion principal de este ejemplo es que una vez conocida la inversa
B 1 , se puede generar toda la tabla smplex a partir de B 1 y los datos
originales del problema.

13

También podría gustarte