Está en la página 1de 55

Investigaci

on Operativa
Licenciatura en Ciencias Estadsticas

Curso 2008-2009

Profesor: Sergio Garca Quiles

Indice general

1. Programaci
on Lineal Entera

1.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3. Conceptos iniciales . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4. La tecnica de ramificacion y acotacion . . . . . . . . . . . . . . . . .

1.5. Generacion de cortes . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.5.1. Metodo de Dakin . . . . . . . . . . . . . . . . . . . . . . . . .

15

1.6. Cortes de Gomory puros . . . . . . . . . . . . . . . . . . . . . . . . .

20

2. Optimizaci
on en redes

25

2.1. Total unimodularidad . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.2. El problema del transporte . . . . . . . . . . . . . . . . . . . . . . . .

27

2.3. El problema de la asignacion . . . . . . . . . . . . . . . . . . . . . . .

29

2.4. Conceptos basicos de grafos . . . . . . . . . . . . . . . . . . . . . . .

30

2.4.1. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.4.2. Representacion matricial de grafos

. . . . . . . . . . . . . . .

32

2.5. El problema del arbol de union de peso mnimo . . . . . . . . . . . .

34

Investigaci
on Operativa

2.6. El problema del camino mas corto . . . . . . . . . . . . . . . . . . . .

37

2.7. El problema del flujo de coste mnimo . . . . . . . . . . . . . . . . . .

40

3. Programaci
on Lineal Multiobjetivo

45

3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

3.2. Metodos de resolucion . . . . . . . . . . . . . . . . . . . . . . . . . .

48

3.2.1. Metodo de las ponderaciones . . . . . . . . . . . . . . . . . . .

48

3.2.2. Metodo de las restricciones . . . . . . . . . . . . . . . . . . . .

48

3.2.3. Metodo de programacion por metas . . . . . . . . . . . . . . .

49

Tema 1
Programaci
on Lineal Entera

1.1. Introducci
on
La Programacion u Optimizaci
on (Lineal) Entera o Discreta es la parte de la Programacion Lineal en la que algunas (o la totalidad) de las variables que intervienen
en los problemas tienen restricciones de integridad.
Los problemas de variables enteras aparecen en problemas cotidianos con mucha facilidad: dise
no de horarios para compa
nas de transporte (son de particular
importancia y poseen una tremenda complejidad los horarios de compa
nas aereas),
planificacion de la produccion, localizacion de centros de servicio. . . No solo aparecen ligados a aspectos economicos o industriales, sino tambien a ambitos estadsticos
(analisis de datos), fsicos (determinacion de estados mnimos de energa) o criptograficos (dise
no de codigos seguros), por citar solo unos pocos.
Las variables enteras aparecen en estos problemas de manera natural a la hora de
modelar elementos indivisibles (n
umero de productos a fabricar, plantas industriales
a localizar, ciudades a visitar. . . ). De especial interes son las variables binarias, denominadas tambien variables 0-1, que reflejan decisiones logicas (s/no) en compras,
inversiones, asignaciones, etc.
Hasta finales de la decada de los ochenta, la resolucion de problemas enteros
estaba muy limitada: el tama
no de los problemas que podan resolverse era bastante
peque
no pese a poderse resolver problemas lineales (sin restricciones de integridad)
de tama
no mucho mayor. Esto es consecuencia del gran incremento en la dificultad
de resolucion que supone el (aparentemente simple) hecho de exigir que las variables
tomen sus valores sobre un conjunto discreto en lugar de sobre uno continuo. Sin

Investigaci
on Operativa

embargo, en los u
ltimos quince a
nos han podido resolverse problemas bastante mas
difciles y grandes gracias a una combinacion de:
- mejores modelizaciones de los problemas,
- ordenadores mas potentes,
- mejores programas informaticos de Programacion Lineal,
- nuevos algoritmos y teoras de planos de corte,
- algoritmos de ramificacion y corte y de descomposicion de problemas enteros.
En esta primera parte de la asignatura nos centraremos en familiarizarnos con
los conceptos basicos de los planos de corte.

1.2. Ejemplos
Desde el momento que nos planteamos resolver un problema real, vemos que las
variables restringidas a tomar valores enteros aparecen de un modo natural.
Ejemplo 1
Ante la proximidad de un viaje, estamos preparando la maleta de mano y decidiendo
que vamos a llevar. Tenemos los siguientes 7 objetos, i = 1, . . . , 7, cada uno con su
peso wi (en kilogramos) y su utilidad ui (en unidades de beneficio esperado):
Objeto
Peso
Utilidad

1
2.5
3

2
1.2
2

3
2.1
5

4
3.2
4

5
4.3
6

6
0.5
3

7
0.6
8

Sabiendo que no estamos dispuestos a cargar con mas de 8 kilos, cual es la mejor
seleccion de objetos?
Soluci
on:
Comenzamos definiendo la variable
(
1, si llevamos el objeto i,
xi =
0, en caso contrario,
i = 1, . . . , 7.
La funcion a maximizar es 3x1 + 2x2 + 5x3 + 4x4 + 6x5 + 3x6 + 8x7 .

Tema 1. Programaci
on Lineal Entera

Por otra parte, como no podemos exceder un cierto peso lmite, debe cumplirse
la siguiente desigualdad:
2.5x1 + 1.2x2 + 2.1x3 + 3.2x4 + 4.3x5 + 0.5x6 + 0.6x7 8.
Ademas, las variables xi deben ser binarias: xi {0, 1}, i = 1, . . . , 7.
En consecuencia, nuestra problema puede representarse mediante el siguiente
modelo:

3x1 + 2x2 + 5x3 + 4x4 + 6x5 + 3x6 + 8x7


Max.
s.a
2.5x1 + 1.2x2 + 2.1x3 + 3.2x4 + 4.3x5 + 0.5x6 + 0.6x7
8,

x1 , x2 , x3 , x4 , x5 , x6 , x7 {0, 1}.

El ejemplo que acabamos de ver es un caso particular con datos concretos del
siguiente problema:
Ejemplo 2 (El problema de la mochila)
En el Problema de la Mochila (Knapsack Problem) hay n artculos o bienes y se
debe decidir cuales tomar. El j-esimo bien tiene un peso aj y un valor cj en caso de
tomarse. Cada bien, o se coge entero o se deja, pero no es posible tomar solo una
fraccion del mismo. Ademas, tampoco se puede exceder una capacidad b disponible
para guardar los objetos tomados (como puede ser una mochila). Si definimos las
variables
(
1 si el j-esimo artculo se toma,
xj =
0 en caso contrario,
entonces el problema a resolver es el siguiente:

Pn
Max. Pj=1 cj xj
n
s.a
j=1 aj xj b,

x Bn .

En una version mas general del problema, la restriccion x Bn se sustituye por


las acotaciones xj uj , j = 1, . . . , n, con los uj enteros positivos. Otra variante del
problema consiste en incluir una variable continua que represente la posibilidad de
adquirir espacio adicional a cierto coste.

El siguiente modelo es uno de los problemas mas clasicos del campo de Localizacion Discreta:
Ejemplo 3 (Problema de localizaci
on de plantas sin capacidades)
En el Problema de Localizacion de Plantas sin Capacidades, se pueden instalar o
abrir plantas de servicio en m puntos posibles con costes fi , i = 1, . . . , m, respectivamente, para satisfacer las demandas de n clientes. Cada cliente necesita que le

Investigaci
on Operativa

sean servidas dj unidades, j = 1, . . . , n. Ademas, el coste de servir una unidad de


producto desde la planta i al cliente j es de cij unidades monetarias.
Definiendo las variables de decision
xij =
yi

n
umero de unidades que sirve la planta i al cliente j,
(
1 si la planta i esta abierta,
=
0 en caso contrario,

el problema puede ser formulado de la siguiente forma:

Pm
Pm Pn
Min.
f
y
+

i
i
j=1 cij xij
i=1

Pi=1

m
s.a
x
=
d
,
j = 1, . . . , n,
j
i=1 ij
yi {0, 1}, i = 1, . . . , m,

xij
Z+ , i = 1, . . . , m, j = 1, . . . , n.

1.3. Conceptos iniciales


Definici
on 4 (Problema de optimizaci
on lineal)
Se llama Problema (de optimizacion) Lineal (P L) a un problema de la forma

Min. ct x
Ax b,
(P L) s.a

x 0,

donde c Rn es el vector de costes, A Mmn (R) es la matriz de restricciones,


b Rm es el vector de recursos y x Rn es el vector de variables de decision.
Esta definicion no es en absoluto restrictiva, pues:
- todo problema lineal de maximizacion puede transformarse en uno de minimizacion multiplicando el vector de costes por -1;
- las desigualdades de mayor o igual se multiplican por -1 para obtener desigualdades de menor o igual;
- cualquier igualdad t x = 0 es equivalente al par de desigualdades

tx
0 ,
t x 0 ;
- si una variable xt es negativa, se puede realizar el cambio de variable xt = xt ,
con xt 0;

Tema 1. Programaci
on Lineal Entera

- si una variable xt es libre (es decir, puede tomar valores tanto positivos como
negativos), se puede hacer el cambio de variable xt = xt xt , con xt , xt 0.
Definici
on 5 (Problema lineal entero mixto)
Un problema de la forma

Min.
ct x

s.a
Ax b,
(P LEM )
x 0,

xj Z+ , j J,

con J N , se dice que es un Problema Lineal Entero Mixto, PLEM.


Si J = lo que en realidad se tiene es un problema lineal. Si J = N se dice que
es un problema entero puro o simplemente un problema entero. Si la restriccion
de integridad se sustituye por xj {0, 1}, j J, se habla de problema binario o
problema cero-uno (mixto).
Definici
on 6 (Relajaci
on lineal)
Dado un problema entero (P E), su relajacion lineal (P EL ) consiste en eliminar las
restricciones de integridad de (P E).
De aqu en adelante, generalmente se usara el termino problema lineal para referirse a problemas lineales sin restricciones de integridad, omitiendose el adjetivo
lineal en los problemas enteros y binarios (puros o mixtos).
La relajacion lineal de un problema entero es ese mismo problema pero sin las
restricciones de integralidad. Normalmente, si representamos mediante P o PE el
problema original, su relajacion lineal se suele representar mediante PL . Los valores
optimos de estos problema se denotan, respectivamente, zE y zL .
Proposici
on 7
En un problema de minimizacion, se cumple que zL zE . En un problema de
maximizacion, zL zE .
Este resultado es trivial, pues toda solucion factible entera es factible para la
relajacion lineal. Sin embargo, no toda solucion factible de la relajacion lineal es
factible del problema entero original. Mas adelante, esta propiedad nos sera muy u
til
a la hora de resolver problemas enteros.
Definici
on 8
La envolvente convexa de un conjunto A es el menor conjunto convexo que contiene
a dicho conjunto A.
Cuando tenemos un problema entero, la region factible es un conjunto discreto
de puntos: PL Zn+ . Existe un problema continuo cuya solucion coincide con la

Investigaci
on Operativa


que buscamos: optimizar la funcion objetivo sobre conv( PL Zn+ ). Sin embargo,
obtener explcitamente este conjunto es a su vez una tarea realmente compleja.
Como la region factible del problema entero es mucho mas peque
na que la de su
contrapartida continua, cabra esperar que los problemas enteros fuesen mucho mas
faciles de resolver. Sin embargo, la realidad es diametralmente opuesta: son bastante
mas difciles. Esto es consecuencia del caracter discreto del conjunto de soluciones.
Cabe ahora preguntarse si redondear es o no una buena alternativa para pasar
de una solucion optima continua a una solucion optima discreta. La respuesta es que
no, pues las soluciones optimas del problema entero y de la relajacion lineal pueden
distar mucho entre s, como muestra el siguiente ejemplo.
Ejemplo 9
Resuelve graficamente el siguiente problema:

Max.
x2

s.a
x1 0.9x2
1,
x1
1.9,

x1 , x2
Z2+ .

Soluci
on:
La solucion optima de la relajacion lineal, (x1 , x2 ) = (1.9, 100), tiene valor optimo zL = 100.
Si redondeamos al valor entero mas cercano, (2,100), estamos en un punto infactible.
De hecho, la solucion optima se encuentra muy lejos: es el punto (1,0), con
valor optimo zE = 0.
100
zL

(x1 , x2 )

= 100,
= (1.9, 100)

El redondeo a (2,100)
50
no es factible.
zE = 0
(x1 , x2 ) = (1, 0)
1,0

1,5

2,0

2,5


Definici
on 10 (Formulaci
on)
n
Un poliedro P R es una formulacion para el subconjunto X de Zp Rnp si

X = P Zp Rnp .

Tema 1. Programaci
on Lineal Entera

Observese que un mismo conjunto admite formulaciones distintas.


Ejemplo 11
En la figura 1.1 se muestra dos formulaciones distintas para el conjunto
X = {(1, 1), (2, 1), (3, 1), (1, 2), (2, 2), (3, 2), (2, 3)}.

P1
bc

bc

bc

bc

bc

P2

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

Figura 1.1: Dos formulaciones distintas de un mismo problema entero



Geometricamente, se ve rapidamente que hay innumerables formulaciones para
un mismo problema. Entonces, como elegir la mejor?
De nuevo, la geometra nos da la respuesta. Observese la figura 1.2, en la que se
han repetido las dos formulaciones mostradas en la figura 1.1 y se ha a
nadido una
tercera P3 . Esta u
ltima formulacion es ideal, porque si se resuelve un problema lineal
sobre P3 , la solucion optima es un punto extremo. En este caso, cada punto extremo
es entero, por lo que el problema entero puede resolverse como un simple problema
lineal (sin necesidad de incluir condiciones de integridad).
P1
bc

bc

bc

bc

bc

P2

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

P3

Figura 1.2: La formulacion ideal


Lo deseable sera que todos los puntos extremos del poliedro que se usa como
formulacion fuesen enteros.

Investigaci
on Operativa

Definici
on 12 (Poliedro entero)
Un poliedro se dice que es entero si todos sus puntos extremos son enteros.
Sin embargo, pocas veces sucede que la formulacion de la que se parte sea la
formulacion ideal. Ademas, tratar de encontrar todas las restricciones de esta formulacion ideal no es posible en la practica, pues normalmente es necesario un n
umero
exponencial de restricciones. Esto motiva la siguiente definicion:
Definici
on 13 (Mejor formulaci
on)
Dadas dos formulaciones P1 y P2 de un conjunto X Rn , se dice que P1 es mejor
formulacion que P2 si P1 P2 .
Para lograr una buena formulacion, habra que ir a
nadiendo al problema original
desigualdades que delimiten la region factible entera lo mejor posible.
Definici
on 14 (Desigualdad v
alida)
Una desigualdad t x 0 se dice que es una desigualdad valida para un problema (P ) si es satisfecha por todos los puntos factibles del problema.
Definici
on 15 (Dominancia)
Dadas dos desigualdades validas t x 0 y
t x 0 para un mismo problema, se
dice que la primera desigualdad domina a la segunda si existe un valor > 0 tal que

y 0
0 ,

con al menos una de las dos desigualdades estricta.


Definici
on 16 (Corte)
Una desigualdad t x 0 se dice que es un corte para un problema entero (P E) si,
ademas de ser desigualdad valida, existe alg
un punto de la relajacion lineal (P EL )
de este problema que no la satisface. En ese caso, se dice que la desigualdad corta
dichos puntos.

1.4. La t
ecnica de ramificaci
on y acotaci
on
Hemos visto que si somos capaces de encontrar la formulacion de la envolvente
convexa de nuestro problema original, basta optimizar sobre esa nueva formulacion
para obtener la solucion de nuestro problema entero inicial. Sin embargo, hallar dicha
descripcion de la region factible entera, en el mejor de los casos, es tan difcil como
resolver el problema. Por lo tanto, es necesario recurrir a otras tecnicas de resolucion.
Una, cuya idea es simple, pero que es muy eficaz, consiste en dividir el problema en
subproblemas mas peque
nos y mas sencillos de resolver. Despues, nos quedaremos
con la mejor de las soluciones de esos subproblemas.

Tema 1. Programaci
on Lineal Entera

La pregunta que se plantea es: como dividir el problema




z = mn ct x : x S

en un conjunto de problemas mas peque


nos y faciles, solucionarlos y despues reunir
la informacion obtenida para resolver el problema original?
La siguiente proposicion da una primera idea sencilla para conseguirlo.
Proposici
on 17 (Divide y vencer
as)
Sea S = S1 SK una descomposicion de S. Si


z k = mn ct x : x Sk , k = 1, . . . , K,

 K
entonces z = mn z k k=1 .

Un modo habitual de representar este metodo de divide y vencer


as es mediante
un arbol de enumeracion. Por ejemplo, para S = B3 , se puede construir el arbol de
la figura 1.3.
S
x1 = 0

x1 = 1

S0

S1

x2 = 0
S00

S01

S10

S11

x3 = 0
S000

S001

S010

S011

S100

S101

Figura 1.3: Arbol


de enumeracion binario
Aqu, en primer lugar se ha divido el conjunto S en
S0 = {x S : x1 = 0}
y
S1 = {x S : x1 = 1};
despues,
S00 = {x S0 : x2 = 0},
S01 = {x S0 : x2 = 1},

S110

S111

10

Investigaci
on Operativa

S10 = {x S1 : x2 = 0},
S11 = {x S1 : x2 = 1};
y as sucesivamente. De este modo, las hojas del arbol son precisamente los puntos
de B3 que uno examinara si hiciese una enumeracion completa. Observese que, por
convenio, el arbol se dibuja de arriba a abajo con la raz en lo mas alto.
Para la mayora de los problemas es totalmente imposible una enumeracion completa de todas las soluciones factibles. Por lo tanto, es necesario hacer algo mas que
dividir hasta tener enumerados todos los puntos. Como se pueden utilizar cotas de
los valores {z k }k de modo inteligente? Primero, como puede unificarse la informacion sobre las cotas?
Proposici
on 18
Sea S = S1 . . . SK una descomposicion de S, y sean z k = mn {ct x : x Sk }, zk
una cota superior de z k y zk una cota inferior para cada k. Se verifica:
 K
i) z = mn zk k=1 es una cota superior de z;
 K
ii) z = mn zk k=1 es una cota inferior de z.

En los siguientes ejemplos se muestra como se usa la informacion de las cotas de


los subproblemas para podar (eliminar) nodos.
Ejemplo 19 (Poda por optimalidad)
En primer lugar, z = mn{20, 25} = 20, z = mn{20, 15}. En segundo lugar, se
observa que las cotas inferior y superior para z 1 coinciden, por lo que no es necesario
seguir examinando S1 . As, la rama S1 del arbol de enumeracion se puede podar por
optimalidad.

S1

20
20

27
13

S2

25
15

S1

20
15

S2

25
15

Figura 1.4: Poda por optimalidad


Ejemplo 20 (Poda por acotaci
on)
Como el valor optimo es menor o igual que 20, no hay ninguna solucion optima
en la rama S2 . As, esta rama se puede podar por acotacion.


Tema 1. Programaci
on Lineal Entera

S1

20
18

11

27
13

S2

26
21

S1

20
18

20
18

S2

Figura 1.5: Poda por acotacion


Ejemplo 21 (Poda por infactibilidad)
Consideremos que una restriccion del problema es x1 + x2 + x3 1, siendo las tres
variables binarias. En el nodo al que se llega mediante la ramificacion x1 = 1, x2 = 1
no hay puntos factibles. Por lo tanto, queda descartado automaticamente.

As pues, las siguientes razones permiten podar una rama del arbol de b
usqueda:

i) Poda por optimalidad: el problema zr = mn {ct x : x S} se ha resuelto;


ii) Poda por acotacion: zr z;
iii) Poda por infactibilidad: Sr = .

Un modo de obtener cotas inferiores es resolver las relajaciones lineales de los


problemas. Por otro lado, cualquier punto factible del problema proporciona una
cota superior.
Este modo de trabajar se denomina ramificaci
on y acotacion (branch-and-bound ).
Un nodo activo es aquel que todava no ha sido procesado. Cuando ya ha sido
procesado se denomina inactivo. Un nodo podado es un nodo que se ha descartado.
El nodo raz es el nodo del que parte el arbol. Cuando se ramifica, se elige una
variable de ramificaci
on que esta restringida de distinto modo seg
un la rama del
arbol de ramificaci

on en la que estemos. De cada nodo, salen dos o mas nodos hijos.


El nodo del que se originan se denomina nodo padre.
En el proceso, la mejor solucion entera almacenada se denomina soluci
on incumbente. Su valor objetivo es el valor incumbente.

12

Investigaci
on Operativa

Selecci
on de nodo y variable
A la hora de trabajar en un algoritmo de ramificacion cabe preguntarse como se
elige en que variable ramificar y que nodo analizar (sondear).
En general, para elegir la variable de ramificacion, escogeremos aquella que sea
mas fraccional, esto es, cuya parte decimal este mas cerca de 0.5.
Para elegir el siguiente nodo activo a analizar, hay varias alternativas:
1. B
usqueda en horizontal (breadth-first search): se elige el nodo de menor profundidad.
2. B
usqueda en profundidad (depth-first search): se elige el nodo de mayor profundidad.
3. B
usqueda en calidad (best-first search): se elige el nodo con mejor relajacion
lineal. En el caso de un problema de minimizacion, el de menor relajacion
lineal; equivalentemente, el de menor cota inferior. En el caso de un problema
de maximizacion, el de mayor relajacion lineal; equivalentemente, el de mayor
cota superior.
El tercer criterio suele ser el mas popular.
Veamos como aplicar el algoritmo.
Ejemplo 22
Resuelve el siguiente problema:

Max.
3x1 + 2x2 5x3 2x4 + 3x5

x1 +x2 +x3 +2x4 +x5


4,
s.a
7x1
+3x3 4x4 +3x5
8,
(P )

11x1 6x2
+3x4 3x5
3,

x1 , x2 , x3 , x4 , x5 {0, 1}.

Soluci
on:
Comenzamos por resolver la relajacion lineal. Para ello, reemplazamos las restricciones de binaridad por 0 xi 1, i = 1, . . . , 5.

Como solucion optima, obtenemos el punto (0.97, 1, 0, 0.45, 1), que tiene valor
optimo zL = 7.02. Al no ser entera la solucion, debemos crear un arbol de ramificacion.
N1

Tema 1. Programaci
on Lineal Entera

13

Observemos que, como el valor optimo debe ser entero (pues la funcion objetivo
tiene coeficientes enteros y variables binarias), la cota superior inicial de 7.02 puede
refinarse inmediatamente a z = 7.
Ahora, para ramificar, elegimos las variable x4 , que es la mas fraccional.

N1
x4 = 0

7
x4 = 1

N2

N3

Resolvemos ahora los problemas asociados a los nodos N2 y N3 , respectivamente.


Esto es, el problema (PL ) al que se le agrega x4 = 0 y x4 = 1, respectivamente. Sus
soluciones son:

(P2 )

x2 = (0.94, 1, 0, 0, 0.46),
z 2 = 6.22,

(P3 )

x3 = (1, 0, 0, 1, 1),
z 3 = 4.

Al resolver el nodo N2 , vemos que la solucion es fraccional y el valor de la relajacion lineal no mejora la cota superior que ya se tiene en la raz. Sin embargo,
por el mismo razonamiento que antes, para este nodo, la cota superior de 6.22 puede
refinarse a 6.
Cuando solucionamos el nodo N3 , obtenemos una solucion entera (la primera que
encontramos). Este punto pasar a ser la solucion incumbente xI = (1, 0, 0, 1, 1) y su
valor optimo pasa a ser el valor incumbente z I = 4, que es una cota inferior de la
solucion optima.

N1
x4 = 0
N2

xI = (1, 0, 0, 1, 1),
z I = 4.

7
x4 = 1

N3

4
4

Podamos el nodo N3 por optimalidad y actualizamos la cota inferior del nodo


raz.

14

Investigaci
on Operativa

xI = (1, 0, 0, 1, 1),
z I = 4.

7
N1
4
x4 = 0
N2

x4 = 1
6

N3

Nos situamos en el nodo N2 y recordamos que la solucion relajada era (0.94, 1, 0, 0, 0.46).
Ramificamos en x5 y resolvemos los problemas asociados:
(P4 )

x4 = (1, 1, 0, 0, 0),
z 4 = 5,

(P5 )

x5 = (0.71, 0.31, 0, 0, 0),


z 5 = 5.76.

El nodo N4 proporciona una solucion entera mejora que la incumbente, por lo


actualizamos esta. Tambien se actualiza la cota inferior de los nodos ascendientes.
Se poda por optimalidad el nodo N4 .
La cota superior de N5 puede refinarse a 5, que coincide con la cota inferior del
problema (acabamos de obtener una solucion entera con ese valor). El nodo N5 se
poda por acotacion.
xI = (1, 1, 0, 0, 0),
z I = 5.

7
N1
4
x4 = 1

x4 = 0
N2
x5 = 0
N4

N3
x5 = 1

5
5

N5

Como ya no nos quedan nodos por explorar, hemos acabado: la solucion optima
es x = (1, 1, 0, 0, 0) y el valor optimo z = 5.

1.5. Generaci
on de cortes
Como se ha dicho anteriormente, un corte es una desigualdad valida que elimina
una solucion fraccional del problema, pero que no modifica el conjunto de soluciones
del problema entero.

Tema 1. Programaci
on Lineal Entera

15

1.5.1. M
etodo de Dakin
En la seccion anterior, hemos visto como se trabaja con un arbol de ramificacion,
pero no hemos abordado de modo especfico como se trabaja con esas desigualdades
que aparecen cuando se crean las distintas ramas.
Supongamos que la variable xk tiene un valor optimo fraccional xk . En los nodos
hijos obtenidos al ramificar mediante las desigualdades
xk [xk ] y xk [xk ] + 1,
los problemas que queremos resolver tienen las mismas desigualdades que el nodo
con una salvedad: aparece una desigualdad adicional.
Resolver estos problemas desde cero no sera eficiente. Vamos a ver que, gracias
al metodo dual del smplex, es posible usar la base optima del nodo padre para
aprovechar el trabajo ya hecho.

Introduciendo xk [xk]
Como xk es una variable basica, su fila asociada de la base optima es de la forma
X
xk +
ykj xj = xk .
jN

Al introducir la restriccion xk [xk ], a


nadimos la variable de holgura x para
obtener
xk + x = [xk ].
Reemplazado xk en la primera igualdad por como se expresa en la segunda, se
tiene que
X
[xk ] x +
ykj xj = xk .
jN

Si fk denota la parte fraccional del valor de xk , entonces


X

ykj xj + x = fk .
jN

Ahora a
nadimos esta nueva igualdad como una fila adicional a la tabla optima
de la que hemos partido y observamos que:
1. La tabla sigue siendo optima: puesto que la variable de holgura x tiene coste
reducido nulo, los costes reducidos no varan.

16

Investigaci
on Operativa

2. El lado derecho vale fk , por lo que es estrictamente negativo.


En consecuencia, se trata de una tabla optima pero no factible primal. Hay que
aplicar el metodo dual del smplex.

Introduciendo xk [xk] + 1
De modo analogo, puesto que xk es una variable basica, su fila asociada de la
base optima es de la forma
X
xk +
ykj xj = xk .
jN

Al introducir la restriccion xk [xk ] + 1, a


nadimos la variable de holgura x para
obtener
xk x = [xk ] + 1.
Equivalentemente,
xk + x = [xk ] 1.
Combinando ambas igualdades, obtenemos que
X
ykj xj xk + x = [xk ] 1;
jN

ykj xj + x = fk 1.

jN

Al a
nadir esta nueva igualdad como una fila adicional a la tabla optima de la que
hemos partido, nuevamente sucede que tenemos una tabla optima pero no factible
primal. Por lo tanto, es necesario aplicar el metodo dual del smplex para obtener
factibilidad.
Ejemplo 23

Min.
4x1 + 5x2

s.a
x1 4x2 5,
(P1 )
3x1 2x2 7,

x 1 , x 2 Z+ .

Comenzamos resolviendo el problema relajado (es decir, todas las variables se


suponen continuas). Para ello, podemos aplicar el metodo dual del smplex, pues la
tabla siguiente de partida es optima, pero no factible primal.
Iteracion 1:

Tema 1. Programaci
on Lineal Entera

x3 0
x4 0
zj cj

-1
-3
-4

17

-4 1
-2 0
-5 0

0
1
0

-5
-7
0

Iteracion 2:
0

0 - 10
3

zj cj

2
3
37

x3
x1

- 13

- 83

13
43

7
3
28
3

Iteracion 3:
x2

3
0 1 10

x1

1 0

zj cj

0 0

1
10
52
11
10

1
5
7
10

4
5
9
5
56
5

Como la solucion optima de este problema relajado es fraccional, hay que ramificar. Para ello, elegimos la variable mas fraccional. Al haber empate, tomamos una
cualquiera de ellas. Por ejemplo, x1 .
Ramificamos y obtenemos los problemas
(
(
(P1 ),
(P1 ),
(P2 )
(P3 )
x1 1,
x1 2.

N1
x1 1

56
5

x1 2

N2

N3

Resolvemos (P2 ):
x2

3
1 10

x1

x5

zj cj

1
5
1
-5
7
- 10

1
10
52
2
5
11
10

0
0
1
0

4
5
9
5
- 45
56
5

18

Investigaci
on Operativa

x2 5
x1 4
x3 0
zj cj

0
1
0
0

1
0
0
0

- 21 - 23
0 1
-2 -5
- 25 - 27

0
0
1
0

2
1
4
14

Esta tabla es optima y tiene solucion entera. Como es la primera, pasa a ser la
incumbente. Actualizamos las cotas del arbol y podamos este nodo.
xI = (1, 2),
z I = 14.

14

N1

56
5

x1 2
N2

14
14

x2

3
1 10

x1

x5

zj cj

N3

Resolvemos (P3 ):

1
5
1
5
7
- 10

1
10
52
- 52
11
10

0
0
1
0

4
5
9
5
- 15
56
5

5
4
0

0
1
0

1 - 14 0
0 0 0
0 - 12 1

zj cj

0 - 45

x2
x1
x4

1
4

3
4

-1
- 52

- 11
4

1
2
47
4

Esta tabla es optima, pero la solucion es fraccional. Ramificamos en x2 . Antes,


actualizamos el arbol.

N1

xI = (1, 2),
z I = 14.

14
47
4

x1 2
N2

14
14

x2 = 0
N4

N3
x2 1
N5

Tema 1. Programaci
on Lineal Entera

19

Para resolver (P4 ), en lugar de a


nadir el corte x2 0, nos vamos a la formulacion
original. Como el problema tiene u
nicamente dos variables, ahora es un problema de
una variable. Es inmediato resolverlo por inspeccion.

Min.
4x1

s.a
x1 5,
3x

1 7,

x 1 Z+ .

El optimo de este problema es x = (5, 0), con valor optimo z = 20. Como esta
solucion es peor que la incumbente, podemos podar el nodo.

N1

xI = (1, 2),
z I = 14.

14
47
4

x1 2
N2

14
14

N3
x2 1

N4

N5

Ahora, resta resolver (P5 ):


(
(P3 ),
(P5 )
x2 1.
- 41 0
0 0
- 21 1

x2
x1
x4

5
4
0

0 1
1 0
0 0

x6

0 0 - 41

zj cj

- 45

0 0

1
4

0
-1 0
- 25 0
1
4
11
-4

1
0

3
4

2
1
2
1
-4
47
4

x2 5
x1 4
x4 0
x3 0
zj cj

0
1
0
0
0

1
0
0
0
0

0
0
0
1
0

0
0
1
0
0

0 -1
-1 0
-3 -2
-1 -4
-4 -5

1
2
1
1
13

20

Investigaci
on Operativa

Esta tabla es optima, con solucion entera y mejor valor que la incumbente. Actualizamos la incumbente y podamos el nodo.
Al no quedar nodos por explorar, ya tenemos resuelto el problema: su solucion
optima es x = (2, 1) y su valor optimo es z = 13.


1.6. Cortes de Gomory puros


Los metodos de hiperplanos de corte consisten en, una vez solucionado el problema relajado, si este muestra solucion fraccional, introducir un hiperplano (es decir,
una nueva restriccion) cumpliendo las siguientes propiedades:
el punto optimo del problema relajado no verifica la condicion del hiperplano;
todas las soluciones enteras del problema satisfacen las condiciones impuestas
por el hiperplano.
Estudiaremos el caso en que todas las variables son enteras.
Estos cortes fueron introducidos por Ralph Gomory hacia 1960. A pesar de ser
bastante simples, a nivel teorico tienen una gran ventaja: es posible demostrar que
un algoritmo de hiperplanos de corte de Gomory converge siempre en un n
umero
finito de pasos.
Partimos de una tabla optima para el problema relajado. Esta solucion x tiene
alguna componente fraccional. Sea xk una variable basica fraccional.
X
xk +
ykj xj = xk .
jN

So separamos partes enteras y partes fraccionales:


X
xk +
([ykj ] + fkj ) xj = [
xk ] + fk ;
jN

xk +

[ykj ]xj [
xk ] = fk

jN

fkj xj .

jN

En las soluciones enteras, el termino de la izquierda es entero. Por la igualdad,


el termino de la derecha tambien sera entero.
Por otro lado, puesto que 0 < fk < 1 y fkj 0, podemos deducir que
X
fk
fkj xj fk < 1.
jN

Tema 1. Programaci
on Lineal Entera

21

Luego, necesariamente, sera


fk

fkj xj 0.

jN

El corte de Gomory sera

fkj xj fk .

jN

Resta ver que satisface las condiciones de hiperplano de corte.


En primer lugar, veamos que la solucion relajada x no cumple la desigualdad del
corte.
X
Como xN = 0, entonces
fkj xj = 0. Por otra parte, fk < 0. As que
jN

fkj xj  fk .

jN

En segundo lugar, veamos que, si x es una solucion factible entera del problema,
entonces esta solucion satisface la desigualdad de corte.
Puesto que todas las coordenadas de x son enteras, entonces

fkj xj 0 = fk .

jN

Luego, x cumple la desigualdad de corte.


Para introducir este corte

fkj xj fk ,

jN

se a
nade una variable de holgura entera x con coste cero:

fkj xj + x = fk .

jN

Estaremos en una tabla optima que no es factible primal. En consecuencia,


habra que aplicar el dual del smplex.

22

Investigaci
on Operativa

Ejemplo 24

Max.
3x1 + 4x2

s.a
3x1 +x2
6,
2x1 +3x2
9,

+
x1 , x2 Z .

Comenzamos resolviendo el problema relajado:


Iteracion 1:
x3 0
x4 0
zj cj

3 1 1 0
2 3 0 1
-3 -4 0 0

6
9
0

Iteracion 2:
x3

7
3
2
3
- 13

x2 4
zj cj

- 31

1
0

0
0

1
3
4
3

3
12

Iteracion 3:
x1

x2

zj cj

3
7
- 27
1
7

- 71
3
7
9
7

9
7
15
7
87
7

Esta tabla es optima, pero tiene solucion fraccional. En consecuencia, a


nadiremos
un corte de Gomory en la variable mas fraccional (x1 ). El corte que usamos es
6
2
3
x3 x4 .
7
7
7
Resolvamos ahora el problema ampliado:
x1

x2

x5

zj cj

3
7
- 27
- 37
1
7

- 71

3
7
- 67
9
7

0
1
0

9
7
15
7
- 27
87
7

Tema 1. Programaci
on Lineal Entera

23

x1
x2

3
4

1
0

0
1

0 -1
0 1

x3

zj cj

- 23
- 73
1
3

7
3
2
3
37
3

Como x2 es fraccional, a
nadimos un nuevo corte para esta variable:
1
1
x5 .
3
3
Resolvemos el nuevo problema:
x1
x2

3
4

1 0
0 1

0
0

-1
1

x3

0 0

- 73

- 13
1
3

x6

0 0

zj cj

0 0

1 0
- 23 0

1
7
3
2
3
- 13
37
3

x1 3
x2 4
x3 0
x5 0
zj cj

1
0
0
0
0

0
1
0
0
0

0
0
1
0
0

-1
1
2
0
1

0
0
0
1
0

3
-2
-7
-3
1

0
3
3
1
12

Esta tabla es optima y tiene solucion entera. Por lo tanto, ya hemos resuelto el
problema: x = (0, 3) y z = 12.


Tema 2
Optimizaci
on en redes

En este tema, estudiaremos ciertos problemas que tienen gran importancia en el


campo de la Programacion Entera. Estos problemas tienen en com
un que se pueden representar mediante una red (un grafo). Antes, no obstante, estudiaremos un
concepto muy u
til: el de matriz totalmente unimodular.

2.1. Total unimodularidad


Definici
on 25
Se dice que una matriz A de orden m n es totalmente unimodular si para toda
submatriz cuadrada B de A se tiene que |B| {1, 0, 1}.
Obviamente, si A es totalmente unimodular, entonces aij {1, 0} ij.
Consideremos el problema

ct x
Min.
Ax = b,
(P= ) s.a

x 0.

Supongamos, ademas, que el vector b tiene todas sus componentes enteras.


Sabemos que existe un vertice del poliedro asociado a (P= ) que es solucion optima.
Ademas, tambien sabemos que cualquier vertice x se puede representar como x =
(xB , xN ), siendo xB las coordenadas basicas y xN las no basicas para una matriz
basica B.

26

Investigaci
on Operativa

En particular, xB = B 1 b y xN = 0, siendo B una submatriz cuadrada de A,


invertible y de rango maximo.
t

. Por lo tanto, si A es totalmente unimodular,


Recordemos que B 1 = (Adj(B))
|B|
entonces |B| {1, 0} y xB tiene todas sus componentes enteras. Eso significa que
la relajacion lineal del problema tendra soluci
on optima entera.
Proposici
on 26
Si A y b tienen todas sus componentes enteras y la matriz A es totalmente unimodular, entonces los vertices del poliedro asociado P= tienen todas sus componentes
enteras.
Observemos que el resultado anterior para el poliedro (P )= se refiere a un poliedro
en el que todas las restricciones son de igualdad. Sin embargo, el resultado puede
extender al problema mas general

ct x
Min.
Ax b,
(P ) s.a

x 0.

Proposici
on 27
Si A y b tienen todas sus componentes enteras y la matriz A es totalmente unimodular, entonces los vertices del poliedro asociado P tienen todas sus componentes
enteras.
Ahora bien, a la vista de una serie de restricciones que nos definen un poliedro, podemos determinar facilmente si la matriz de las desigualdades es totalmente
unimodular? La respuesta es afirmativa y viene dada por el siguiente resultado:
Proposici
on 28
Sea A = (aij ) tal que aij {1, 0}. Supongamos que en cada columna de la matriz A
hay un maximo de dos elementos no nulos y que las filas de dicha matriz admiten
una particion en dos subconjuntos de ndices I1 e I2 tales que:

1. Si los elementos no nulos de una columna tiene igual signo, entones las correspondientes filas estan en conjuntos distintos.
2. Si los elementos de una columna tienen distinto signo, entonces las correspondientes filas pertenecen al mismo conjunto.

Bajo estas hipotesis, la matriz A es totalmente unimodular.

Tema 2. Optimizaci
on en redes

27

O1

c11
c1

c21

O2
..
.

..
.

c2n
c m1

D1

cmn

Dn

Om

Figura 2.1: Problema de transporte

2.2. El problema del transporte


Como su propio nombre indica, se trata de transportar unidades de un producto desde m orgenes O1 , . . . , Om , hasta n destinos D1 , . . . , Dn . Por comodidad de
notacion, definimos I = {1, . . . , m} y J = {1, . . . , n}.
Cada origen dispone de ai unidades de producto, i I, y cada destino demanda
dj unidades, j J. Estas cantidades son n
umeros enteros.
Supondremos que la oferta iguala a la demanda. De no ser as, introduciremos
un origen o un destino ficticio para que ambos valores sean iguales.
X
X
ai =
dj .
iI

jJ

Para cada arco (i, j), i I, j J, tenemos asociado un coste unitario de transporte cij y una variable xij que representa cuantas unidades se transportan desde el
origen i hasta el destino j.
Como hay que servir todo lo que se demanda a coste mnimo, la funcion objetivo
a minimizar es
XX
cij xij .
iI jJ

Ahora nos queda establecer las distintas restricciones:


1. Deben satisfacerse todas las demandas:
X
xij = dj j J.
iI

28

Investigaci
on Operativa

2. Debe mandarse todo lo almacenado:


X
xij = ai i I.
jJ

Esto, junto con el hecho de que las variables son enteras, nos da la siguiente
formulacion para el problema del transporte:

XX

Min.
cij xij

iI
jJ

s.a
xij = dj j J,
iI
X

xij = ai i I,

jJ

xij Z+ i I, j J.

Veamos las restricciones de modo detallado:


1 1 ... 1 0 0 ... 0 0 0 ... 0 ...
0 0 ... 0 1 1 ... 1 0 0 ... 0 ...
.. .. . . .. .. .. . . .. .. .. . . .. . .
. . . .
. . . .
. .
.
. .

0
0
..
.

0
1
0
..
.

1
1
0
..
.

0
0
1
..
.

...
...
...
...

0
0
0
..
.

0
1
0
..
.

0
0
1
..
.

...
...
...
...

0
0
0
..
.

0
1
0
..
.

0
0
1
..
.

...
...
...
...

0
0
0
..
.

...
...
...
...

0 ... 0
0 ... 0
.. . . ..
. .
.
1 ... 1
0 ... 0
1 ... 0
.. . . ..
. .
.

0 0 ... 1 0 0 ... 1 0 0 ... 1 ... 0 0 ... 1

x11

.
..

x1n

..
=

xm1

..
.

xmn

a1
..
.

am

d1
..
.
dn

Tomando como I1 las m primeras filas y como I2 las n u


ltimas, vemos que la
matriz del problema es totalmente unimodular. Como, ademas, las ofertas y las
demandas son valores enteros, concluimos que la relajacion lineal del problema de
transporte tiene solucion optima entera.
Hay que destacar que nada se dice de los costes cij ; estos pueden ser fraccionales
y el resultado sigue siendo cierto.
Ejemplo 29
Una empresa de televisores tiene tres fabricas en Madrid, Barcelona y Sevilla. Dada
un partida de 100, 120 y 60 aparatos, debe enviarlos a cuatro distribuidores ubicados

en Fuenlabrada, Mataro, Ecija


y Vigo, con demandas 70, 90, 50 y 70, respectivamente.
La tabla de costes de transporte para cada unidad de producto (en euros) es la
siguiente:

Orgenes
Madrid
Barcelona
Sevilla

Destinos

Fuenlabrada Mataro Ecija


1
6
4
7
1
12
5
11
2

Vigo
7
14
13

Tema 2. Optimizaci
on en redes

29

Encuentra como deben enviarse los televisores para que el coste de transporte total
sea mnimo.
Soluci
on:
En este caso, tenemos un problema de transporte con 3 orgenes (i = 1, 2, 3) y
4 destinos (j = 1, 2, 3, 4).
La funcion objetivo a minimizar es
x11 + 6x12 + 4x13 + 7x14 + 7x21 + x22 + 12x23 14x24 + 5x31 + 11x32 + 2x33 + 13x34 .

Las restricciones que imponen que se satisfagan las demandas son:
x11 + x21 + x31 = 70,
x12 + x22 + x32 = 90,
x13 + x23 + x33 = 50,
x14 + x24 + x34 = 70.
Las siguientes restricciones impiden enviar mas de lo disponible:
x11 + x12 + x13 + x14 100,
x21 + x22 + x23 + x24 120,
x31 + x32 + x33 + x34 .
Ademas, todas variables xij deben ser enteras.
Cuando juntamos las distintas condiciones que hemos establecido y resolvemos
la relajacion lineal del problema, obtenemos un valor optimo de 970 para la solucion
optima dada por x11 = 30, x14 = 70, x21 = 30, x22 = 90, x31 = 10 y x33 = 50.


2.3. El problema de la asignaci


on
Se tiene n operarios, cada uno capaz de realizar una u
nica tarea de modo simultaneo, y n tareas que deben hacerse.
Si el operario i realiza la tarea j, se obtiene un rendimiento rij . Hay que repartir
las tareas de modo que el rendimiento total sea maximo.

30

Investigaci
on Operativa

Si definimos las variables


(
1, si el operario i realiza la tarea j,
xij =
0, en caso contrario,
el problema puede formularse mediante el siguiente modelo:

n
n X
X

rij xij
Max.

j=1
i=1

s.a
xij =
1 j = 1, . . . , n,
i=1

xij =
1 i = 1, . . . , n,

j=1

xij {0, 1} i, j = 1, . . . , n.
Ahora bien, es inmediato ver que se trata de un caso particular del problema del
transporte: tenemos n orgenes, n destinos y demandas y ofertas todas iguales a la
unidad.

2.4. Conceptos b
asicos de grafos
2.4.1. Definiciones
Un grafo G es un par (V, E) donde V es el conjunto de vertices y E V V
es el conjunto de ejes. Los vertices tambien se conocen como nodos. Usualmente, N
representa el conjunto de nodos del grafo.
Dados dos vertices i y j, representaremos el eje que los une como (i, j).

Si (i, j) = (j, i) para todo (i, j) E, se dice que es un grafo no dirigido. En caso
contrario, se trata de un grafo dirigido. En los grafos dirigidos no se habla de ejes
sino de arcos. El conjunto de arcos de un grafo se suele representar mediante A.

Tema 2. Optimizaci
on en redes

31

2
1

4
3

Un grafo mixto es un grafo que contiene tanto ejes como arcos.

2
1

4
3

Dado un grafo dirigido G = (V, A), se dice que un vertice j V es sucesor de


otro vertice i V si existe un arco desde i hasta j, es decir, si (i, j) A. Se dice que
j es predecesor de i si (j, i) A.
Una red es una terna (V, A, ), donde (V, A) es un grafo y : A R es una
funcion de longitud.
Un eje (o un arco) es incidente en un vertice i si este es uno de sus extremos.
Dado un grafo G = (V, E), se dice que G = (V , E ) es un subgrafo de G si
V V y E E. Dado un subconjunto B V , se llama subgrafo inducido por B
al grafo GB = (B, EB ), siendo
EB = {(i, j) E / i, j B}.
Un subgrafo parcial de G = (V, E) es un grafo G = (V, E ), con E E.
Una cadena es una secuencia alternante de vertices y ejes que comienza y acaba
en vertices. La cadena se dice simple si no se repite ning
un eje. La cadena se dice
elemental si no se repite ning
un vertice.
Un ciclo es una cadena en la que los vertices inicial y final coinciden. Un ciclo
simple no presenta repeticion de ning
un eje. En un ciclo elemental no se repite ning
un
vertice salvo el primero.
Un camino es una secuencia alternante de vertices y arcos que empiezan y acaban
en vertice y cumplen que el vertice final de cada arco es vertice inicial del siguiente (y
coincide con el vertice intermedio entre ambos arcos). Un camino simple no presenta
repeticion de ning
un arco. En un camino elemental no se repite ning
un vertice.

32

Investigaci
on Operativa

Un circuito es un camino en el que coinciden los vertices inicial y final. Un circuito


simple no tiene arcos repetidos. Un circuito elemental no tiene vertice repetidos
(salvo el primero).
Un grafo completo presenta al menos un eje o arco para cada par de vertices.
Un grafo bipartito es aquel que admite una particion {V1 , V2 } del conjunto de
vertices V (V = V1 V2 , V1 V2 = ) tal que para todo eje (i, j) E cada uno de
los extremos esta en uno de los conjuntos de la particion:
(i V1 , j V2 )

(i V2 , j V1 ).

Un grafo se dice conexo si para todo par de vertices existe una cadena que los
une.
Dado un grafo dirigido, un vertice j se alcanzable desde otro vertice i si existe
un camino desde i hasta j. En ese caso, se dice que j es descendiente de i.
Dado un grafo, un arbol es un subgrafo conexo sin ciclos. Un arbol de union es
un subgrafo parcial conexo sin ciclos (es decir, un arbol en el que aparecen todos los
vertices del grafo).

N1

N2

N4

N3

N5

2.4.2. Representaci
on matricial de grafos
Dado un grafo no dirigido (V, E), se define la matriz de incidencia vertice-eje
como aquella que tiene tantas filas como vertices y tantas columnas como ejes. En
cada columna, todos los elementos son nulos excepto los dos que se corresponden con
extremos del eje de la misma; estos tiene valor uno.
Ejemplo 30
Consideremos el siguiente grafo:

Tema 2. Optimizaci
on en redes

33

Definamos los ejes e1 = (1, 2), e2 = (1, 3), e3 = (2, 3), e4 = (2, 4) y e5 = (3, 4).
La matriz de incidencia vertice-eje es:

1 1 0
1 0 1

0 1 1
0 0 0

0
1
0
1

0
0
.
1
1

Dado un grafo dirigido (V, A), se define la matriz de incidencia vertice-arco como
aquella que tiene tantas filas como vertices y tantas columnas como arcos. En cada
columna, todos los elementos son nulos excepto los dos que se corresponden con
extremos del arco de la misma; estos tienen valor uno si se trata del vertice inicial y
valor menos uno si se trata del vertice final.
Ejemplo 31
Consideremos el siguiente grafo:
2
1

4
3

Definamos los ejes e1 = (1, 2), e2 = (1, 3), e3 = (2, 3), e4 = (2, 4) y e5 = (3, 4).
La matriz de incidencia vertice-arco es la siguiente:

1
1
0
0
0
1
0
1
1
0

.
0 1 1
0
1
0
0
0 1 1
Proposici
on 32
La matriz de incidencia vertice-arco es totalmente unimodular.

34

Investigaci
on Operativa

Proposici
on 33
La matriz de incidencia vertice-eje es totalmente unimodular si, y solo si, el grafo es
bipartito.

2.5. El problema del


arbol de uni
on de peso mnimo
Dada una red conexa R = (V, E, ), definimos el peso del arbol P = (V, E ) como
(P ) =

(e).

eE

Nuestro problema es encontrar dentro del grafo un arbol de union cuyo peso total
sea mnimo, es decir, resolver el problema


Min. (P )
s.a
P es arbol de union en G.

Para resolver el problemas, disponemos de dos algoritmos muy populares: el algoritmo de Kruskal y el algoritmo de Prim.
Algoritmo 34 (Algoritmo de Kruskal)
1. Ordenense de forma creciente los ejes.
2. Eljanse en ese orden hasta tener n 1 vertices (n es el n
umero de nodos), pero
omitiendo aquellos que produzcan ciclos.
Algoritmo 35 (Algoritmo de Prim)
1. Eljase arbitrariamente un vertice r V .
2. Sean V1 = {r} y V2 = V \{r}.
3. Eljase el eje (r, s) de menor longitud de entre aquellos que unen V1 con V2 .
4. A
nadase el vertice s a V1 y elimnese de V2 . Si se tiene menos de n 1 ejes,
reptase el paso anterior. En caso contrario, finalcese el algoritmo.
Ejemplo 36
La compa
na MCC TV se encuentra en proceso de proporcionar el servicio de cable
a cinco nuevas areas urbanizadas. La figura representa los enlaces potenciales de
television entre las cinco areas y los kilometros de cable necesarios para unirlas.
Cual es el cableado mas corto?

Tema 2. Optimizaci
on en redes

35

10

3
9

3
5

5
8
4

Soluci
on:
Aplicamos el metodo de Prim.
Comenzamos seleccionando un nodo al azar: el nodo 1. Hacemos V1 = {1} y
V2 = {2, 3, 4, 5, 6}. A continuacion, consideramos los ejes que unen elementos de V1
con los de V2 y elegimos el de menor longitud:

2
1
1

6
8

3
9

5
4

El eje de menor longitud es (1,2). Hacemos V1 = {1, 2} y V2 = {3, 4, 5, 6}. Vamos


repitiendo el proceso hasta tener cinco ejes.

36

Investigaci
on Operativa

3
6

4
1

9
7

5
4
2
6

4
1

8
4
2

6
8

6
3
8

9
5

4
2
6
8

Tema 2. Optimizaci
on en redes

37

El arbol final tiene longitud mnima: 16.


2
6
1

3
5
4


2.6. El problema del camino m


as corto
Dada una red conexa R = (V, A, ) e identificando los costes de los nodos como
distancias, se trata de encontrar el recorrido de menor longitud desde un nodo origen
hasta un nodo destino.
Asumiremos que existe un camino entre cada par de vertices distintos. En caso
contrario, se a
naden los arcos que sean necesarios con longitud + para que as sea.
Si P es un camino entre dos vertices de la red, se define la longitud del camino
como
X
(P ) =
(a).
aP

Si a = (i, j), usaremos la notacion ij = (a). Dado un vertice i, (i) sera el


conjunto de sucesores de i, es decir,
(i) = {j V / (i, j) A}.
Nos centramos en el caso en que todos los arcos tienen longitud positiva. Cuando
este es el caso, podemos usar un metodo especfico denominado algoritmo de Dijsktra.
Fijado un vertice de partida r, el siguiente algoritmo nos permite obtener los
caminos mas cortos que parten de r y llegan a los demas vertices del grafo. Para un
vertice cualquiera i, la longitud del camino mas corto desde r hasta i la representaremos como di .

38

Investigaci
on Operativa

Algoritmo 37 (Algoritmo de Dijsktra)


Paso 1: Se hace

dr = 0,
di = ri , i (r), i 6= r,

di = +, i
/ (r).
Ademas, definimos los siguientes predecesores:
(
pi = r, i (r),
pi = 0, i
/ (r).

(El valor 0 representa un predecesor ficticio.)


Sea T = V \{r}.
Paso 2: Se calcula dj = mn {di }iT y se hace T = T \{j}.
Paso 3: Para cada i (j) T , se calcula ti = dj + ji .
Si ti < di , entonces se hace di = ti y pi = j.
Paso 4: Si T 6= , se va al Paso 2. En caso contrario, finaliza el algoritmo.
Ejemplo 38
Dado el siguiente grafo la distancia entre seis ciudades, determina cual es la ruta de
menor longitud entre las ciudades 1 y 6.
2

3
1

6
5

Soluci
on:
Usaremos el algoritmo de Dijkstra fijando r = 1.
P1: d1 = 0, d2 = 3, d3 = 5, d4 = +, d5 = +, d6 = +;
p2 = 1, p3 = 1, p4 = 0, p5 = 0, p6 = 0; T = {2, 3, 4, 5, 6}.
P2: mn {d2 , d3 , d4 , d5 , d6 } = d2 . T = {3, 4, 5, 6}.
P3: (2) T = {3, 4}.
t3 = d2 + 23 = 3 + 6 = 9;
t4 = d2 + 24 = 3 + 3 = 6.
Actualizamos: d4 = 6, p4 = 2.

Tema 2. Optimizaci
on en redes

39

As:
d1 = 0, d2 = 3, d3 = 5, d4 = 6, d5 = +, d6 = +;
p2 = 1, p3 = 1, p4 = 2, p5 = 0, p6 = 0; T = {3, 4, 5, 6}.
P4: Como T 6= , repetimos el paso 2.
P2: mn {d3 , d4 , d5 , d6 } = d3 . T = {4, 5, 6}.
P3: (3) T = {5}.
t5 = d3 + 35 = 5 + 2 = 7.
Actualizamos: d5 = 7, p5 = 3.
As:
d1 = 0, d2 = 3, d3 = 5, d4 = 6, d5 = 7, d6 = +;
p2 = 1, p3 = 1, p4 = 2, p5 = 3, p6 = 0; T = {4, 5, 6}.
P4: Como T 6= , repetimos el paso 2.
P2: mn {d4 , d5 , d6 } = d4 . T = {5, 6}.
P3: (4) T = {5, 6}.
t5 = d4 + 45 = 6 + 1 = 7.
t6 = d4 + 46 = 6 + 2 = 8.
Actualizamos: d6 = 8, p6 = 4.
As:
d1 = 0, d2 = 3, d3 = 5, d4 = 6, d5 = 7, d6 = 8;
p2 = 1, p3 = 1, p4 = 2, p5 = 3, p6 = 6; T = {5, 6}.
P4: Como T 6= , repetimos el paso 2.
P2: mn {d5 , d6 } = d5 . T = {6}.
P3: (5) T = .
P4: Como T 6= , repetimos el paso 2.
P2: mn {d6 } = d6 . T = .
P3: (6) T = .
P4: Como T = , finalizamos el algoritmo.
Por lo tanto, el camino mas corto desde 1 hasta 6 tiene longitud d= 86 y es
6 p6 = 4 p4 = 2 p2 = 1,
es decir 1 2 4 6.

40

Investigaci
on Operativa

Si quisiesemos determinar las distancias entre todos los pares de vertices, podramos
aplicar el algoritmo de Dijkstra tantas veces como nodos tiene el grafo. No obstante, existe un algoritmo especializado que lo hace simultaneamente: el algoritmo de
Floyd. No obstante, dicho la descripcion del mismo queda fuera de los objetivos de
este curso.

2.7. El problema del flujo de coste mnimo


Tenemos un grafo conexo G = (N, A), siendo N = {1, . . . , n} los nodos y A el
conjunto de arcos que unen pares de nodos.
Para un determinado producto, cada nodo i ofrece o requiere una cierta cantidad
del producto (flujo) bi , i = 1, . . . , n. As, podemos distinguir tres tipos de nodos:
si bi > 0, es un nodo origen o de servicio;
si bi = 0, es un nodo de transbordo;
si bi < 0, es un nodo destino o de demanda.
Ademas, asumiremos que el balance total es nulo, es decir,

bi = 0.

iN

Asimismo, puede que haya restricciones adicionales:


el arco (i, j) tiene una capacidad maxima uij ;
por el arco (i, j) debe circular un flujo mnimo lij .
Sabiendo que cada arco (i, j) tiene asociado un coste unitario de transporte cij ,
el objetivo es encontrar un flujo que satisfaga las demandas y cuyo coste total sea lo
menor posible.
Para formular el problema, comenzamos definiendo las variables xij , (i, j) A,
que representan el flujo que circula por el arco (i, j).
X
As, la funcion objetivo a minimizar es
cij xij .
(i,j)A

En cuanto a las restricciones, por una parte, no deben excederse los lmites de
capacidad de los arcos:
xij uij (i, j) A,
xij lij (i, j) A.

Tema 2. Optimizaci
on en redes

41

Por otra, debe haber un equilibrio entre lo que llega al nodo, lo que el nodo
oferta/demanda y lo que sale del nodo:

xij

{j / (i,j)A}

xji = bi i N.

{j / (j,i)A}

Estas igualdades se denominan restricciones de balance de flujo.


As, el modelo resultante es:

Min.

s.a

cij xij

(i,j)A

xij

{j / (i,j)A}

xji = bi i N,

{j / (j,i)A}

lij xij uij (i, j) A,


xij 0 (i, j) A.

Ejemplo 39
Resuelve el problema del flujo de coste mnimo sobre el siguiente grafo:

2
3

5
5

2
6

7
3

Las ofertas y demandas son: b1 = 150, b2 = 20, b3 = 30, b4 = 50, b5 = 40,


b6 = 60, b7 = 30. Los arcos que salen del nodo 1 no pueden dejar pasar mas de
90 unidades (cada uno).
Soluci
on:

42

Investigaci
on Operativa

Analizando el problema, el modelo que se obtiene es el siguiente:

Min. 3x12 + 5x13 + 2x24 + 4x25 + 6x35 + 7x36 + 5x47 + 3x54 + 2x56 + 2x57 + 3x67

s.a
x12 + x13 =
150,

x24 + x25 x12 =


20,

x35 + x36 x13 =


30,

x47 x24 x54 =


50,

x54 + x56 + x57 x25 x35 =


40,

x
=
60,

67
36
56

x
30,

47
57
67 =

x12
90,

90,

13

xij 0 (i, j) A.

La solucion del problema es la siguiente: x12 = 90, x13 = 60, x24 = 50, x25 = 20,
x36 = 30, x56 = 30, x57 = 30. El coste de esta solucion es 1080.


Observemos que, si M es la matriz de incidencia vertice-arco para la red, entonces


el conjunto de restricciones de balance de flujo pueden escribirse como M x = b. En
particular, esto tiene como consecuencia que, si el vector de demandas b tiene todas
sus componentes enteras y las capacidades inferiores la y superiores ua son todas
n
umeros enteros, entonces la relajacion lineal del problema de flujo a coste mnimo
tiene solucion entera.
Si todas las capacidades inferiores son nulas, existe un metodo especfico para
resolver el problema: el algoritmo de Busacker-Gowen (que no detallaremos).

Casos particulares
Ahora veremos que algunos de los problemas previamente estudiados son, en
realidad, casos particulares del problema del flujo de coste mnimo.

El problema del transporte


En este caso, tenemos que los orgenes act
uan como nodos que ofrecen producto
y los destinos son nodos que demandan producto.

El problema del camino m


as corto
Vamos a ver enseguida que se trata de un caso particular del problema del flujo
de coste mnimo. Para ello, sea s el nodo origen y sea t el nodo destino. Consideramos

Tema 2. Optimizaci
on en redes

43

el siguiente vector de ofertas y demandas:

si i = s,
1
bi = 1 si i = t,

0
si i =
6 s, t.
Prescindiendo de restricciones sobre las capacidades de los arcos, se trata de un
problema de flujo de coste mnimo con unos costes muy especficos. Ademas, las
variables de decision se pueden reinterpretar del siguiente modo:
(
1 si se usa el arco (i, j) en la ruta,
xij =
0 en caso contrario.

Tema 3
Programaci
on Lineal Multiobjetivo

En la Programacion Lineal clasica, buscamos optimizar una funcion lineal de varias variables sujeta a un conjunto de restricciones lineales. Sin embargo, es habitual
que, para esas mismas restricciones, haya que optimizar simultaneamente varias funciones, pudiendo incluso ser conflictivas entre s. Es entonces cuando aparecen los
problemas de Programacion Lineal Multiobjetivo.

3.1. Introducci
on
Un problema lineal multiobjetivo es de la forma

Max. {ct1 x, . . . , ctp x}


Ax b,
(P LM ) s.a

x 0.

Se dice que un punto x {x / Ax b, x 0} es eficiente (en el sentido de


Pareto) si no existe otro punto factible y tal que se den las dos condiciones siguientes:
cti x cti y i {1, . . . , p};
j {1, . . . , p} / ctj x < ctj y.
Esta claro que distintas soluciones eficientes proporcionan distintas ventajas y
desventajas. Es trabajo del decisor elegir una solucion de compromiso entre todas
ellas. Nuestro objetivo sera aprender a calcular el conjunto eficiente.

46

Investigaci
on Operativa

Representaremos mediante E el conjunto de soluciones eficientes.


Definimos el espacio de soluciones como
F = {x / Ax b, /x 0}
y el espacio de objetivos como
Z = {(z1 (x), . . . , zp (x))}xF .
Es importante observar que los vertices de F se corresponden con vertices de Z.
Lo mismo vale para las aristas.
Ejemplo 40
Consideremos el siguiente conjunto Z:

Los vertices de Z son el conjunto


{(0, 0), (1, 3), (4, 3), (5, 2), (3, 0)}.
Un rapido analisis nos hace ver que la region de puntos eficientes (asumiendo que
estamos maximizando todas las funciones objetivo) es el segmento que une el punto (4,3) con (5,2). Ambos extremos estan incluidos en dicho conjunto de puntos
eficientes.

Hay que tener claro que, puesto que un problema multiobjetivo consta de varios
problemas lineales, son mas complejos de resolver que la simple resolucion de los
problemas individuales. No obstante, en problemas biobjetivo (solo dos objetivos),
podemos usar la propiedad anterior que relaciona vertices y aristas la region de
soluciones con vertices y aristas de la region de objetivos.
Ejemplo 41

Min. z = (z1 , z2 ) = (x1 2x2 , 5x1 + 3x2 )

3x1 +x2 200,


s.a
2x1 +3x2 300,

x1 +x2 80,

x1 , x2 0.

Tema 3. Programaci
on Lineal Multiobjetivo

47

Soluci
on:
Si representamos la region factible, vemos que es el poliedro de vertices A = (0, 80),
B = (0, 100), C = (300/7, 500/7) y D = (60, 20).

B
A

b
b

Ahora, calculamos los valores objetivos de los vertices y representamos el poliedro


asociado:
(x1 , x2 )
(0, 80)
(0, 100)
(300/7, 500/7)
(60, 20)

(z1 , z2 )
(160, 240)
(200, 300)
(1300/7, 3000/7)
(100, 360)

z(C)
b

z(B)

z(D)

z(A)

Vemos que la region eficiente es el segmento z(B)z(A). Por lo tanto, el conjunto de


soluciones eficientes es el segmento AB. As,
E = {(0, 100 20) / 0 1}.


48

Investigaci
on Operativa

3.2. M
etodos de resoluci
on
3.2.1. M
etodo de las ponderaciones
Dado un vector de pesos w = (w1 , . . . , wp ), wi > 0 i, consideramos el siguiente
problema:

Max. w1 ct1 x + + wp ctp x


Ax b,
(P Lw ) s.a

x 0.
Proposici
on 42
Un punto x es solucion eficiente de (P LM ) si, y solo si, existe un vector w > 0 tal
que x es solucion optima de (P Lw ).

Ejemplo 43
Para el ejemplo anterior, vamos a calcular un punto eficiente. Consideramos pesos
w1 = w2 = 1. El problema que tenemos que resolver es:

Min.
4x1 + x2

3x1 +x2 200,


s.a
2x1 +3x2 300,

x1 +x2 80,

x1 , x2
0.
Su optimo es x = (0, 80). Este punto es solucion eficiente del problema multiobjetivo.
Si ahora consideramos otros pesos, podemos tratar de obtener otros puntos eficientes. Por ejemplo, w = (2, 1) da lugar a la solucion eficiente (0,100).


3.2.2. M
etodo de las restricciones
Se selecciona un objetivo y el resto pasan a ser restricciones acotadas inferiormente por unas exigencias mnimas:

Max. ctk x
x M,
(P Lk ) s.a

ctj x Lj , j 6= k.

Proposici
on 44

Si x es la u
nica solucion optima de (P Lk ), entonces es solucion eficiente de (P LM ).

Tema 3. Programaci
on Lineal Multiobjetivo

49

Ejemplo 45
Para el ejemplo 41, vamos a buscar una solucion eficiente cuyo valor para la segunda
funcion objetivo sea, a lo sumo, 270.
Para ello, planteamos el problema:

Min.
4x1 + x2

s.a
3x1 +x2 200,

2x1 +3x2 300,


x1 +x2 80,

5x1 +3x2 270,

x1 , x2
0.

Como optimo, obtenemos x = (0, 90). Es una solucion eficiente del problema multiobjetivo que cumple las exigencias impuestas.


3.2.3. M
etodo de programaci
on por metas
Dados varios objetivos, establecemos una medida que nos indica lo lejos que
estamos de cumplirlos. Buscaremos minimizar la desviacion total respecto de estas
expectativas.
Para cada objetivo:
se tiene un valor ti que representa su nivel de aspiracion y una meta (menor o
igual, mayor o igual, igual);
se definen las variables pi y/o ni de desviacion positiva y negativa, respectivamente.
Dada la restriccion cti x ? ti , la transformamos en cti x + ni pi ? ti . Si k:
? = , interesa minimizar ni ;
? = , interesa minimizar pi ;
? = = , interesa minimizar tanto ni como pi .
Ejemplo 46
Una cooperativa posee un terreno de 13 hectareas en el que pretende cultivar dos
tipos de olivos: picual y hojiblanca. Por normas legislativas, no puede cultivar mas
de 8 hectareas del primero ni mas de 10 del segundo. Se estima que cada hectarea
cultivada con olivo picual necesita 4 m3 de agua anuales y cada hectarea de hojiblanca
necesita 3. La cooperativa estima que dispondra cada a
no de 44 m3 de agua. Ademas,
se ha fijado las siguientes metas:

50

Investigaci
on Operativa

1. Inversion inicial:
Picual: 250 um/h.
Hojiblanca: 125 um/h.
Se desea que la inversion inicial no supere las 2000 um.
2. Litros de aceite:
Picual: 500 l/a
no.
Hojiblanca: 300 l/a
no.
Se desea un mnimo de 5000 l.
3. Produccion de desechos (posteriormente pueden utilizarse para fines varios):
Picual: 6 t/h.
Hojiblanca: 8 t/h.
Habra que obtener, por lo menos, 48 t.
4. Contratacion de operarios: son necesarios 3 por hectarea. Se desea usar exclusivamente los 30 que ya hay con contrato en vigor (y no tener a ninguno
ocioso).

Formula el modelo que optimiza los objetivos de la cooperativa.


Soluci
on:
Sean x1 y x2 , respectivamente, las hectareas destinadas al cultivo de las variedades
picual y hojiblanca. El problema multiobjetivo es

Min.

Max.

Max.

s.a

250x1 + 125x2 ( 2000)


500x1 + 300x2 ( 5000)
6x1 + 8x2 ( 48)
3x1 + 3x2 (= 30)
x1 + x2 13,
0 x1 8,
0 x2 10,
4x1 + 3x2 44.

Tema 3. Programaci
on Lineal Multiobjetivo

51

Usando el metodo de programacion por metas, nuestro problema sera

Min.
p 1 + n2 + n3 + p 4 + n4

s.a
250x
+
125x2 + n1 p1 = 2000,

500x1 + 300x2 + n2 p2 = 5000,

6x
=
48,

1 + 8x2 + n3 p3

3x1 + 3x2 + n4 p4
=
30,
x1 + x2

13,

8,

x2

10,

4x
+
3x

44,

1
2

x1 , x2
0.

La solucion optima es x = (6, 20/3), n = (0, 0, 0, 0), p = (1000/3, 0, 124/3, 8). Por
lo tanto:
Se excede el nivel de inversion deseado.
Se produce exactamente el mnimo de aceite.
Se producen mas desechos de los mnimamente requeridos.
Hace falta contratar mas empleados.


También podría gustarte