Вы находитесь на странице: 1из 71

Investigacion Operativa

Licenciatura en Ciencias Estadsticas

Curso 2008-2009

Profesor: Sergio Garca Quiles


Indice general

1. Programacion Lineal Entera 1

1.1. Introduccion .....................................................................................................1

1.2. Ejemplos..............................................................................................................2

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

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

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

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

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

2. Optimizacion 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


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

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

3. Programacion 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

Programacion Lineal Entera

1.1. Introduccion

La Programacion u Optimizacion (Lineal) Entera o Discreta es la parte de la


Pro- gramacion 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 mu-


cha facilidad: diseno de horarios para companas de transporte (son de
particular importancia y poseen una tremenda complejidad los horarios de compan
as aereas), planificacion de la produccion, localizacion de centros de servicio.
. . No solo apare- cen ligados a aspectos economicos o industriales, sino tambien
a ambitos estadsticos (analisis de datos), fsicos (determinacion de estados
mnimos de energa) o crip- tograficos (diseno 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 (numero de productos a fabricar, plantas industriales
a localizar, ciudades a visitar. . . ). De especial interes son las variables binarias, de-
nominadas 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 tamano de los problemas que podan resolverse
era bastante pequeno pese a poderse resolver problemas lineales (sin restricciones
de integridad) de tamano 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
2 Investigacion
Operativa

embargo, en los ultimos quince anos 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 1 2 3 4 5 6 7
Peso 2.5 1.2 2.1 3.2 4.3 0.5 0.6
Utilidad 3 2 5 4 6 3 8

Sabiendo que no estamos dispuestos a cargar con mas de 8 kilos, cual es la


mejor seleccion de objetos?
Solucion:
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 .


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:

Max. 3x1 + 2x2 + 5x3 + 4x4 + 6x5 + 3x6 + 8x7
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 s
olo 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
xj = .1 si el j-esimo artculo se toma,
0 en caso contrario,
entonces el problema a resolver
es el siguiente:
.n
.nj=1 cj xj
Max.

s.a
j=1 aj xj b,

x
B n.

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


Localiza- cion Discreta:
Ejemplo 3 (Problema de localizacion 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,
respec- tivamente, para satisfacer las demandas de n clientes. Cada cliente
necesita que le
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 = .numero de unidades que sirve la planta i al cliente j,
1 si la planta i esta abierta,
yi =
0 en caso contrario,

el problema .la siguiente


puede ser formulado de forma:
fi yi + m n
.m Min. cij xij
.m
i=1
s.a i=1 .j=1
xij = dj , j = 1, . . . , n,
i=1
yi {0, 1}, i = 1, . . . , m,

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

1.3. Conceptos iniciales

Definicion 4 (Problema de optimizacion lineal)


Se llama Problema (de optimizacion) Lineal (P L) a un problema de la forma

Min. ctx
(PL) s.a Ax b,

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


minimi- zacion multiplicando el vector de costes por -1;
- las desigualdades de mayor o igual se multiplican por -1 para obtener desigual-
dades de menor o igual;
- cualquier igualdad tx = 0 es equivalente al par de desigualdades
.
t x 0,
tx 0;

- si una variable xt es negativa, se puede realizar el cambio de variable xt = x


t

,
con x t 0;

- si una variable xt es libre (es decir, puede tomar valores tanto positivos como
negativos), se puede hacer el cambio de variable xt = x x , con x , x 0.
t t t t

Definicion 5 (Problema lineal entero mixto)


Un problema de la forma

Min. ctx
s.a
Ax b,
(PLEM )
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 restricci
on de integridad se sustituye por xj {0, 1}, j J , se habla de problema
binario o problema cero-uno (mixto).

Definicion 6 (Relajacion lineal)


Dado un problema entero (P E), su relajacion lineal (P EL ) consiste en eliminar las
restricciones de integridad de (PE).

De aqu en adelante, generalmente se usara el termino problema lineal para


re- ferirse 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 P E
el problema original, su relajacion lineal se suele representar mediante PL . Los
valores
optimos de estos problema se denotan, respectivamente, zE y zL .
Proposicion 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 ser
a muy util a la hora de resolver problemas enteros.
Definicion 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
.
+. ). Sin embargo,
que buscamos: optimizar la funcion objetivo sobre conv( PL
Zn
obtener explcitamente este conjunto es a su vez una tarea realmente compleja.

Como la region factible del problema entero es mucho mas pequena 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,
x 1 , x2 Z2+ .

Soluci
on:
La solucion optima de la relajacion lineal, (x , x ) = (1.9, 100), tiene valor
opti-
1 2
mo zL = 100.

Si redondeamos al valor entero mas cercano, (2,100), estamos en un punto infac-


tible.

De hecho, la solucion optima se encuentra muy lejos: es el punto (1,0),


con
valor optimo E =
z 0. 100

L = 100,
(x, xz) = (1.9, 100)
1 2

El redondeo a (2,100)
50
no es factible.

zE)==0(1, 0)
(x, x
1 2
Definicion 10 (Formulacion)
1,0 1,5 2,0 2,5
Un poliedro P R es una formulacion para el subconjunto X de Z R
n p np
si
. p .
X = P Z Rnp .
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

P2

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 anadido una
tercera P3 . Esta ultima 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

P2

P3

Figura 1.2: La formulacion ideal

Lo deseable sera que todos los puntos extremos del poliedro que se usa como
formulacion fuesen enteros.
Definicion 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 formu- lacion ideal no es posible en la practica, pues normalmente es
necesario un numero exponencial de restricciones. Esto motiva la siguiente definici
on:

Definicion 13 (Mejor formulacion)


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 anadiendo al problema


original desigualdades que delimiten la region factible entera lo mejor posible.

Definicion 14 (Desigualdad valida)


Una desigualdad t x 0 se dice que es una desigualdad valida para un
proble- ma (P ) si es satisfecha por todos los puntos factibles del problema.

Definicion 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.

Definicion 16 (Corte)
Una desigualdad tx 0 se dice que es un corte para un problema entero (PE)
si, ademas de ser desigualdad valida, existe algun 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 tecnica de ramificacion y acotacion

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 pequenos y mas sencillos
de resolver. Despues, nos quedaremos con la mejor de las soluciones de esos
subproblemas.
La pregunta que se plantea es: como dividir el problema
. .
z = mn ct x : x S
en un conjunto de problemas mas pequenos y faciles, solucionarlos y despues
reunir la informacion obtenida para resolver el problema original?

La siguiente proposicion da una primera idea sencilla para conseguirlo.

Proposicion 17 (Divide y venceras)


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 venceras es mediante


un arbol de enumeracion. Por ejemplo, para S = B3 , se puede construir el arbol de
la figura 1.3.

x3

Figura 1.3: A rbol de enumeracion binario

Aqu, en primer lugar se ha divido el conjunto S en

S0 = {x S : x1 = 0}
y despu S1 = {x S : x1 = 1};

es, S00 = {x S0 : x2 =
0}, S01 = {x S0 : x2
= 1},
10 Investigacion
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. Obs
ervese que, por convenio, el arbol se dibuja de arriba a abajo con la raz en lo m
as alto.

Para la mayora de los problemas es totalmente imposible una enumeracion


com- pleta de todas las soluciones factibles. Por lo tanto, es necesario hacer algo m
as 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 informa- cion sobre las cotas?
Proposicion 18
Sea S = S1 . . . SK una descomposicion de S, y sean z k = mn {ct x : x Sk },
zk
una cota superior de zk y zk una cota inferior para cada k. Se verifica:

i) z = mn es una cota superior de z;


. k .K k=1
z

ii) z = mn es una cota inferior de z.


. k .K k=1
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 z1 coinciden, por lo que no es necesario
seguir examinando S1 . As, la rama S1 del arbol de enumeracion se puede podar
por optimalidad.

25 25
15 15

Figura 1.4: Poda por optimalidad


Tema 1. Programacion Lineal 11
Entera
Ejemplo 20 (Poda por acotacion)
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.


26
21

Figura 1.5: Poda por acotacion

Ejemplo 21 (Poda por infactibilidad)


Consideremos que una restriccion del problema es x1 + x2 + x3 1, siendo las
20 tres variables binarias. En el nodo al que se llega mediante la ramificacion x1 = 1,
27
SS 15 x2 = 1 no hay puntos factibles. Por lo tanto, queda descartado automaticamente.
13

S 20 S2 As pues, las siguientes razones permiten podar una rama del arbol de busqueda:
S11 S2
20

i) Poda por optimalidad: el problema zr = mn {ctx : 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 ramificacion 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 ramificacion que esta restringida de distinto modo segun la rama
del
arbol de ramificacion 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 solucion
incum- bente. Su valor objetivo es el valor incumbente.

x1 = 0 x1 = 1

S0 S1

x2 = 0

S00 S01 S10 S11

=0

S000 S001 S010 S011 S100 S101 S110 S111


Seleccion 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. Busqueda en horizontal (breadth-first search): se elige el nodo de menor


pro- fundidad.
2. Busqueda en profundidad (depth-first search): se elige el nodo de mayor
pro- fundidad.
3. Busqueda 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

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

11x1 6x2 +3x4 3x5
3, x1, x2, x3, x4, x5
{0, 1}.

Soluci
on:
Comenzamos por resolver la relajacion lineal. Para ello, reemplazamos las
res- tricciones 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
ramifica- cion.

N1 7
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.

7
N1

x4 = 0 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:

. .
x2 = (0.94, 1, 0, 0, 0.46), x3 = (1, 0, 0, 1, 1),
(P2) (P3)
z2 = 6.22, z3 = 4.

Al resolver el nodo N2 , vemos que la solucion es fraccional y el valor de


la re- lajacion 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.

xI = (1, 0, 0, 1, 1), zI = 4.
7
N1

x4 = 0 x4 = 1
6 4
N2 N3
4

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


nodo raz.
xI = (1, 0, 0, 1, 1), zI = 4.
7
N1
4
x4 = 0 x4 = 1
6
N2 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:
. .
x4 = (1, 1, 0, 0, 0), x5 = (0.71, 0.31, 0, 0, 0),
(P4) (P5)
z4 = 5, z5 = 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.

x5

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. Generacion 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.
1.5.1. Metodo de Dakin

En la seccion anterior, hemos visto como se trabaja con un arbol de ramificaci


on, 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 [x ] y xk [x ] + 1,
k k

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
.
xk + ykj xj = xk .
jN

Al introducir la restriccion xk k[x ], anadimos la variable de para


holgura x
obtener

xk + x = [x
k ].

Reemplazado xk en la primera igualdad por como se expresa en la


segunda, se tiene que .
[x ] x + ykj xj = x .
k k
jN

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


.
ykj xj + x = fk .
jN

Ahora anadimos 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.

20
27
S
S 18
13

20
S1 S2
18
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 [x
k] + 1

De modo analogo, puesto que xk es una variable basica, su fila asociada


de la base optima es de la forma .
xk + ykj xj = xk .
jN

Al introducir la restriccion xk [x
k ] + 1, anadimos la variable de holgura x

para
obtener
xk x = [x ] + 1.
k

Equivalentemente,

xk + x = [x
k ]
1.

Combinando ambas igualdades, obtenemos que


.
ykj xj x + x = [x ] 1;
k k
jN
.
ykj xj + x = fk 1.
xI = (1, 1, 0, 0, 0), zjN
I = 5.
7
N1
4
Al anadir esta nueva igualdad como una fila adicional a la tabla optima de la
x4 = 0 que hemos
x4 = 1partido, nuevamente sucede que tenemos una tabla optima pero no
6 factible primal. Por lo tanto, es necesario aplicar el metodo dual del smplex
N2 para N 3
obtener factibilidad.
=0 xEjemplo
5= 1 23
5 5
N4 N5 Min. 4x1 + 5x2
5
s.a x1 4x 5,
(P1)
3x21 2x2 7,
x1, x2 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:
x3 0 -1 -4 1 0 -5
x4 0 -3 -2 0 1 -7
zj cj -4 -5 0 0 0

Iteracion 2:

x3 0 0 - 10
3
1 - -
1 8
2 7
x1 4 1 3
0 31 3
28
zj cj 0 37 0 34 3

Iteracion 3:

1 4
x2 5 0 1 3
10 10 5
1 9
x1 4 1 0 5 52 5
56
zj cj 0 0 7
10 11
10 5

Como la solucion optima de este problema relajado es fraccional, hay que rami-
ficar. Para ello, elegimos la variable mas fraccional. Al haber empate, tomamos una
cualquiera de ellas. Por ejemplo, x1.

Ramificamos y obtenemos los


problemas .
.
(P1 ), (P3) (P1 ),
(P2) x1 2.
x1 1,

N1 56
5

x1 1 x1 2

N2 N3

Resolvemos (P2):

1 4
x2 5 0 1 3
10 10 0 5
1 9
x1 4 1 0 5 52 0 5
2
x5 0 0 0 - 51 5 1 -
4
56
zj cj 0 0 7
-10 11 0
10 5

x2 5 0 1 0 - 21 - 23 2
x1 4 1 0 0 0 1 1
x3 0 0 0 1 -2 -5 4
zj cj 0 0 0 - 25 - 27 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), zI = 14.


N14
1 56
5
x1 2

14
N2 N3
14

Resolvemos (P3):

1 4
x2 5 0 1 3
10 10
0 5
1 9
x1 4 1 0 5 52 0 5
1
x5 0 0 0 5 - 52 1 -
1
56
zj cj 0 0 7
-10 11
10 0 5

1 3
x2 5 0 1 - 0 4 4
1
x1 4 1 0 0 0 -1 2
1
x4 0 0 0 - 1 - 25 2
1
47
zj cj 0 0 - 0 - 11
4 4
5

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


Antes, actualizamos el arbol.

xI = (1, 2), zI = 14.


N14
1 47
4
x1 2

14
N2 N3
14
x2 = 0 x2 1

N4 N5
Para resolver (P4 ), en lugar de anadir el corte x2 0, nos vamos a la
formulacion original. Como el problema tiene unicamente dos variables, ahora es
un problema de una variable. Es inmediato resolverlo por inspeccion.

Min. 4x1

s.a x1 5,
3x1
7,
x1 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.

xI = (1, 2), zI = 14.


N14
1 47
4
x1 2

14
N2 N3
14
x2 1

N4 N5

Ahora, resta resolver (P5): .(P3 ),


x2 1.
(P5)

1 3
x2 5 0 1 - 41 0 4
0 4
x1 4 1 0 0 0 -1 0 2
1
x4 0 0 0 - 21 1 - 25 0 2
1
x6 0 0 0 - 41 0 4
1 -
1
47
zj cj 0 0 - 45 0 - 11
4
0 4

x2 5 0 1 0 0 0 -1 1
x1 4 1 0 0 0 -1 0 2
x4 0 0 0 0 1 -3 -2 1
x3 0 0 0 1 0 -1 -4 1
zj cj 0 0 0 0 -4 -5 13
20 Investigacion
Operativa

Esta tabla es optima, con solucion entera y mejor valor que la incumbente. Ac-
tualizamos la incumbente y podamos el nodo.

Al no quedar nodos por explorar, ya tenemos resuelto el problema: su soluci


on
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


proble- ma 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
numero 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.
.
xk + ykj xj = xk .
jN

So separamos partes enteras y partes fraccionales:


.
xk + ([ykj ] + fkj ) xj = [xk ] + fk ;
jN
. .
xk + [ykj ]xj [xk ] = fk fkj xj .
jN 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
.
fk fkj xj fk < 1.
Tema 1. Programacion Lineal 21
Entera jN
Luego, necesariamente, ser .
a fk fkj xj 0.
jN

El corte de Gomory ser .


fkj xj fk.
a
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.
.
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 anade 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.
Ejemplo 24

Max. 3x1 + 4x2

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

Comenzamos resolviendo el problema relajado:

Iteracion 1:

x3 0 3 1 1 0 6
x4 0 2 3 0 1 9
zj cj -3 -4 0 0 0

Iteracion 2:

7
x3 0 3
0 1 - 3
1
2 1
x2 4 3
1 0 3
3
4
zj cj - 0 0 3 12
1

Iteracion 3:

3 9
x1 3 1 0 7 - 7
1
3 15
x2 4 0 1 - 7 7
2
1 9 87
zj cj 0 0 7 7 7

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


anadiremos un corte de Gomory en la variable mas fraccional (x1 ). El corte que
usamos es
3 6 2
x3 x4 .
7 7 7

Resolvamos ahora el problema ampliado:

3 9
x1 3 1 0 7 - 0 7
1
3 15
x2 4 0 1 - 72 7
0 7
x5 0 0 0 - 73 - 1 -
6 2
1 9 87
zj cj 0 0 7 7
0 7

x1 3 1 0 0 -1 1 1
7
x2 4 0 1 0 1 - 32 3
2
x3 0 0 0 1 2 - 37 3
1 37
zj cj 0 0 0 1 3 3

Como x2 es fraccional, anadimos un nuevo corte para esta variable:


1 1
x5 .
3 3

Resolvemos el nuevo problema:

x1 3 1 0 0 -1 1 0 1
7
x2 4 0 1 0 1 - 32 0 3
2
x3 0 0 0 1 2 - 37 0 3
x6 0 0 0 0 0 - 31 1 -
1
1 37
zj cj 0 0 0 1 3
0 3

x1 3 1 0 0 -1 0 3 0
x2 4 0 1 0 1 0 -2 3
x3 0 0 0 1 2 0 -7 3
x5 0 0 0 0 0 1 -3 1
zj cj 0 0 0 1 0 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

Optimizacion en redes

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


campo de la Programacion Entera. Estos problemas tienen en comun que se
pue- den representar mediante una red (un grafo). Antes, no obstante, estudiaremos
un concepto muy util: el de matriz totalmente unimodular.

2.1. Total unimodularidad

Definicion 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 Min. ctx
(P=) s.a Ax = b,

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 Investigacion
Operativa

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


invertible y de rango maximo.

Recordemos que B1 (Adj(B))t


|B|
. Por lo tanto, si A es totalmente unimodular,
=
entonces |B| {1, 0} y xB tiene todas sus componentes enteras. Eso significa que
la relajacion lineal del problema tendra solucion optima entera.

Proposicion 26
Si A y b tienen todas sus componentes enteras y la matriz A es totalmente
unimo- dular, 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

Min. ctx
(P) s.a Ax b,

x 0.

Proposicion 27
Si A y b tienen todas sus componentes enteras y la matriz A es totalmente
unimo- dular, 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 polie- dro,
podemos determinar facilmente si la matriz de las desigualdades es totalmente
unimodular? La respuesta es afirmativa y viene dada por el siguiente resultado:

Proposicion 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
corres- pondientes filas estan en conjuntos distintos.

2. Si los elementos de una columna tienen distinto signo, entonces las


correspon- dientes filas pertenecen al mismo conjunto.

Bajo estas hipotesis, la matriz A es totalmente unimodular.


Figura 2.1: Problema de transporte

2.2. El problema del transporte

Como su propio nombre indica, se trata de transportar unidades de un produc-


to 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 numeros 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.
. .
ai = dj .
iI jJ

Para cada arco (i, j), i I, j J , tenemos asociado un coste unitario de


trans- porte 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
. . cij xij .
iI jJ

Ahora nos queda establecer las distintas restricciones:

1. Deben satisfacerse todas las demandas:


.
xij = dj j J.
iI
2. Debe mandarse todo lo almacenado:
.
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:
.
Min. cij xij

jJ

iI
.
s.a xij = dj j J,
iI
=
. xij i I,

jJ
ai
xij Z+ i I, j J.

Veamos las restricciones de modo detallado:


x11
1 1 ... 1 0 0 ... 0 0 0 ... 0 ... 0 0 ... 0 1
a
..
0 0 ... 0 1 1 ... 1 0 0 ... 0 ... 0 0 ... 0

. ... . ..

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


... .
x1n .
. . .
. . . . . . . . .


0 0 . . . . 0. 0 . 0 . . . 0 0 0 . . . 0 . . . 1 1 . . . 1 am

.
1 0 ... 0 1 0 ... 0 1 0 ... 0 ... 1 0 ... 0 .. =
d1
m1

x
0 1 ... 0 0 1 ... 0 0 1 ... 0 ... 0 1 ... 0 ..
. .

. .. . . .. .. . . . .. .. . . . . . . .. . . . .. . d
. . . . .. . . . .. . .. . . . .
. .
0 0 ... 1 0 0 ... 1 0 0 ... 1 ... 0 0 ... 1 xmn n

Tomando como I1 las m primeras filas y como I2 las n ultimas, 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, E cija 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:

Destinos
Orgenes Fuenlabrada Mataro E Vigo
Madrid 1 6 cija
4 7
Barcelona 7 1 12 14
Sevilla 5 11 2 13
Encuentra como deben enviarse los televisores para que el coste de transporte total
sea mnimo.

Solucion:
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 + 12x2314x24 + 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 soluci
on 14 21 22 31 33
optima dada por 11 = 30, x = 70, x = 30, x = 90, x = 10 y x = 50.
x

2.3. El problema de la asignacion


Se tiene n operarios, cada uno capaz de realizar una unica tarea de modo
multaneo, y n tareas que deben hacerse. si-

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 Investigacion
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
Max. . . xij

ij

i=1 j=1
r

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

.
i=1
n
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 basicos 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).

1 2

3 4

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
Tema 2. Optimizacion en 31
redes
ejes sino de arcos. El conjunto de arcos de un grafo se suele representar mediante
A.

O1

D1

O2 ...

...
Om Dn
2

1 4

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

1 4

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 ningun eje. La
cadena se dice elemental si no se repite ningun vertice.

Un ciclo es una cadena en la que los vertices inicial y final coinciden. Un


ciclo simple no presenta repeticion de ningun eje. En un ciclo elemental no se
repite ningun 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 ningun arco. En un camino elemental no se
repite ningun vertice.
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 v
ertice 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 uni


on es un subgrafo parcial conexo sin ciclos (es decir, un arbol en el que aparecen
todos los vertices del grafo).

N1

N2 N3

N4 N5

2.4.2. Representacion matricial de grafos

Dado un grafo no dirigido (V, E), se define la matriz de incidencia v


ertice-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:
1 2

3 4

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 0 0
1 0 1 1 0

0 1 1 0 1 .
0 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:

1 4

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
0 1 1 0
1 .
0 1 1 0 1
0 0 0 1 1


Proposicion 32
La matriz de incidencia vertice-arco es totalmente unimodular.
Proposicion 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 union 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 al-


goritmo 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 numero 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. Anadase 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 compana 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?
Solucion:
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:

6
2
El eje de1menor longitud es (1,2). Hacemos V1 = {1, 2} y V2 = {3, 4, 5, 6}.
Vamos repitiendo el proceso hasta tener cinco ejes.
8
1 3

7
5

4
2

6
4 6
8
1 3

7
5

6
4 6
8
1 3

7
5
8

24

6
6
8
1 3 3

5
8

4
El arbol final tiene longitud mnima: 16.

1 3

2.6. El problema del camino mas 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 anaden 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 .
(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.
2 Para un vertice cualquiera i, la longitud del camino mas corto desde r hasta i la
representa- remos como di .
6
8
1 3

5
Algoritmo 37 (Algoritmo de Dijsktra)
4 1: Se hace
Paso
dr = 0,
di = ri , i (r), i = 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 = , 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.

Solucion:
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.
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 = , 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 = , 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 = , repetimos el paso


2. P2: mn {d5, d6} = d5. T =
{6}.
P3: (5) T = .

P4: Como T = , 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 Investigacion
Operativa

Si quisiesemos determinar las distancias entre todos los pares de vertices, podr
amos aplicar el algoritmo de Dijkstra tantas veces como nodos tiene el grafo. No
obstan- te, 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:

2
el arco (i, j) tiene una capacidad maxima uij ;

por el arco (i, j) debe circular un flujo mnimo lij .


6
1 6
4 10 arco (i, j) tiene asociado un coste unitario de transporte cij , el
Sabiendo que cada
objetivo es encontrar un flujo que satisfaga las demandas y cuyo coste total sea lo
8 menor posible.
1 3
9 3 el problema, comenzamos definiendo las variables xij , (i, j)
Para formular
A, que representan el flujo que circula por el arco (i, j).

7 As, la funcion objetivo a 5minimizar es . cij xij .


5
(i,j)A
8
En cuanto a las restricciones, por una parte, no deben excederse los lmites de
capacidad de los arcos:
4
xij uij (i, j) A,
xij lij (i, j) A.
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 xji = bi i N.
{j / (i,j)A} {j /
(j,i)A}

Estas igualdades se denominan restricciones de balance de flujo.

As, el modelo resultante es:

3
2 4 Min. .
3 2 cij xij

(i,j)A
. xji = bi i N,
6 s.a . xij
1 6 1 {j /
{j / (i,j)A} (j,i)A}


5 7 lij xij uij (i, j)

35 A, xij 0 (i, j)
A.

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

2
2 4
3 4 3 5

2
1 5 7
5 6 2 3

6
3 6

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).
Solucion:
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 + = 150,


x + x x =

24 25 13
12 20,

x35 + x36 x13 = 30,

x x x = 50,
47 24 54
x54 + x56 + x57 x25 x35 = 40,
x67 x36 x56 = 60,


x47 x57 x67 = 30,

x 90,


12
x 13 90,
xij 0 (i, j)

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

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 Mx
= 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 numeros 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 actuan como nodos que ofrecen producto
y los destinos son nodos que demandan producto.

El problema del camino mas 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
el siguiente vector de ofertas y demandas:

1 si i = s,

bi = 1 si i = t,

0 si i = 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. Adem
as, 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

Programacion Lineal Multiobjetivo

En la Programacion Lineal clasica, buscamos optimizar una funcion lineal de


va- rias variables sujeta a un conjunto de restricciones lineales. Sin embargo, es
habitual que, para esas mismas restricciones, haya que optimizar simultaneamente
varias fun- ciones, pudiendo incluso ser conflictivas entre s. Es entonces cuando
aparecen los problemas de Programacion Lineal Multiobjetivo.

3.1. Introduccion

Un problema lineal multiobjetivo


es de la forma
Max. {ct x, . . . , ct x}
1 p

(PLM ) s.a Ax b,

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:

ct t
i x c i y i {1, . . . , p};
j {1, . . . , p} / ct x < ct
y.
j j

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 Investigacion
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 pun- to (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)


s.a 3x1 +x2 200,
2x1 +3x2 300,
x1 +x2 80,


x1 , x2 0.
Solucion:

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).

A C
b

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


poliedro asociado:

(x1, x2)(z1, z2)


(0, 80)(160, 240)
(0, 100)(200, 300) (300/7, 500/7)(1300/7, 3000/7) (60, 20)(100, 360)

z(C
)
b
z(D)

z(B)

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}.



3.2. Metodos de resolucion

3.2.1. Metodo de las ponderaciones

Dado un vector de pesos w = (w1, . . . , wp), wi > 0 i, consideramos el siguiente


problema:
Max. w1c1t x + + wppct x
(PL w ) s.a Ax b,

x 0.

Proposicion 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


s.a 3x1 +x2 200,
2x1 +3x2 300,
x1 +x2 80,


x1 , x2 0.

Su optimo es x = (0, 80). Este punto es solucion eficiente del problema


multiob- jetivo.

Si ahora consideramos otros pesos, podemos tratar de obtener otros puntos efi-
cientes. Por ejemplo, w = (2, 1) da lugar a la solucion eficiente (0,100).

3.2.2. Metodo de las restricciones

Se selecciona un objetivo y el resto pasan a ser restricciones acotadas inferior-


mente por unas exigencias mnimas:

Max. ct x
k
(PLk ) s.a x M,

j cx Lj , j = k.
t

Proposicion 44
Si x es la unica solucion optima de (P Lk ), entonces es solucion eficiente de
(P LM ).
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,
x 1 , x2 0.
Como optimo, obtenemos x = (0, 90). Es una solucion eficiente del problema
mul- tiobjetivo que cumple las exigencias impuestas.

3.2.3. Metodo de programacion 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, respectiva-


mente.

Dada la restriccion ct x ? ti , la transformamos en ct x + ni pi ? ti . Si k:


i i

? = , 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 hect
area de hojiblanca necesita 3. La cooperativa estima que dispondra cada ano de
44 m3 de agua. Ademas, se ha fijado las siguientes metas:
50 Investigacion
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/ano.


Hojiblanca: 300 l/ano.

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


ex- clusivamente 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.


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

Min. 250x1 + 125x2 (



Max. 500x1 + 300x2 (

Max. 6x1 + 8x2 ( 48)

3x1 + 3x2 (= 30)
s.a x1 + x2 13,

0 x1 8,

0 x2 10,

4x1 + 3x2
Usando el metodo de programacion por metas, nuestro problema ser
a

Min. p1 + n2 + n3 + p4 + n4


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

500x1 + 300x2 + n2 p2 =
5000,
6x1 + 8x2 + n3 p3
= 48,
3x1 + 3x2 + n4 p4 = 30,
x 1 + x2 13,
x1 8,

x 2 10,

4x1 + 3x2 44,
x 1 , 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.

Вам также может понравиться