You are on page 1of 87

Optimizacin Lineal

Braulio Gutirrez Pari


Universidad Peruana Unin-Juliaca
Facultad de Ingeniera y Arquitectura
Ingenieria
Enero del 2013
Chullunquiani-Per

ii

ndice general
Introduccin

1. Preliminares

1.1. El Problema de Programacin Lineal . . . . . . . . . . . . . . . . . . . . . . .

1.2. El Mtodo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1. Criterio de Optimalidad . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2. Criterio de la Razn . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3. Finalizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1. El Algoritmo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.4. Teoremas de convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.5. Dualidad y Condiciones de Optimalidad . . . . . . . . . . . . . . . . . . . . .

17

1.5.1. Dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

1.5.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

1.5.3. Condiciones de Optimalidad de Karush-Kuhn-Tucker (KKT ) . . . . .

19

1.6. El Mtodo de Newton, Lagrange y Penalizacin Interna . . . . . . . . . . . . .

20

1.6.1. Mtodo de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

1.6.2. Mtodo de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

1.6.3. Mtodo de Barrera Logarmica . . . . . . . . . . . . . . . . . . . . . . .

32

2. Puntos Interior para programacin lineal

39

2.1. Puntos Interior Basado en Barrera Logartmica . . . . . . . . . . . . . . . . .

43

2.1.1. Construccin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . .

44

2.1.2. El Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

2.1.3. Implementacin y Experimentos . . . . . . . . . . . . . . . . . . . . .

52

3. Experimentos Computacionales

63

Conclusiones

74

Apndice A

76

Apndice B

79
iii

iv
Bibliografa

NDICE GENERAL
80

Introduccin
Los algoritmos de Puntos interiores surgen, con el trabajo de Karmarkar, como una alternativa de complejidad polinomial al bien establecido mtodo simplex para el caso de programacin lineal. En 1987 Kojima-Misuno-Yoshise presentan un algoritmo de Puntos interiores,
llamado Primal-Dual, que seguido del trabajo de Mehrotra en 1992, fundamentan las bases de
algunos de los algoritmos existentes ms eficientes para programacin lineal.
El mtodo de Puntos interiores Primal-Dual para programacin lineal (1994). Este mtodo
es el ms eficiente y elegante dentro de la gran variedad de mtodos que surgieron despus de la
publicacin formal del primer mtodo de puntos interiores que es, el mtodo de las Elipsoides
(1978).
La literatura sobre los algoritmos de puntos interiores tipo Primal-Dual es extensa y
variada, existen diferentes formulaciones, diversos resultados de convergencia y complejidad.
Adems de las buenas propiedades tericas, los algoritmos Primal-Dual han demostrado poseer
buen comportamiento prctico y se han utilizado en distintas aplicaciones de manera satisfactoria.
Dentro de la optimizacin, es indiscutible que el Mtodo Simplex (1947) representa un
clsico en la resolucin de problemas de programacin lineal. Ms an, el Simplex ha servido
como fuente en la construccin de mtodos especializados en la resolucin de otros problemas, tales como programacin entera. No obstante, cuando se realiza un anlisis terico con
respecto a su eficiencia, el Mtodo Simplex es considerado de tiempo de ejecucin en el orden
exponencial1 , y por tanto, tericamente ineficiente. Por otro lado, los resultados obtenidos en
la prctica han mostrado que este mtodo tiene un desempeo razonable y, frecuentemente,
apenas requiere pocas iteraciones para resolver problemas de la vida real con un nmero de
variables no muy grande.
El motivo para el mal comportamiento del mtodo Simplex frente a pro-blemas particulares, tales como los propuestos por V. Klee y J. Minty, es que se desplaza por los vrtices del
poliedro definido por la regin de factibilidad. A esto se le suman algunas otras desventajas,
1

Es decir, que para problemas de programacin lineal en espacios n dimensionales, puede realizar en el peor
de los casos, alrededor de 2n iteraciones.

vi

INTRODUCCIN

tales como la implementacin computacional sofisticada, peligro de ciclaje ante degeneracin


e ineficiencia ante problemas de gran tamao.
En los ltimos treinta aos surgieron otros tipos de mtodos con una filosofa diferente,
desplazarse por el interior de la regin factible. Los resultados tericos fueron sorprendentes,
pues mostraron que el problema de programacin lineal poda ser resuelto en un tiempo de
ejecucin polinomial. Dentro de los ms representativos estn el Mtodo de las Elipsoides de
Khachian y el Mtodo de Karmarkar.
Por los aos noventa surgieron mtodos con la misma estrategia, des-plazarse por el interior
del poliedro de factibilidad, pero con la diferencia que stos usaban tanto el primal como el
dual para resolver el problema de programacin lineal. Estos mtodos estaban fundamentados
adems en el Mtodo de Newton, el Mtodo de Barrera y el Mtodo de Lagrange, estas
herramientas matemticas fusionadas produjeron lo que hoy en da se denomina Mtodo de
Puntos Interiores Primal-Dual, y actualmente, es considerada la manera ms eficiente que
se conoce para resolver el problema de programacin lineal. Existen varias versiones de este
mtodo, una de ellas constituir justamente el motivo de esta exposicin.

Captulo 1
Preliminares
1.1.

El Problema de Programacin Lineal

El problema de programacin lineal en la forma estndar corresponde al siguiente modelo


matemtico.
minimizar ct x
(1.1)
Ax = b
x0
donde A Rmn es de rango m, b Rm y c Rn . La expresin ct x se llama funcin objetivo,
Ax es el producto de la matriz A con el vector x, Ax = b y x 0 si y slo si xi 0,
i = 1, ...n, se denominan las restricciones y las condiciones de no negatividad respectivamente.
Los problemas de programacin lineal se estudian normalmente en esta forma. Tpicamente,
n > m. En resumen un problema de programacin lineal se dice que est en forma estndar
si y slo si.
Es de minimizacin.
Slo incluye restricciones de igualdad.
El vector b es no negativo.
Las variables x son no negativas.
Existen otras formas de escribir el problema de programacin lineal, por ejemplo, la forma
cannica.
Minimizar ct x
(1.2)
Ax b
x0
1

CAPTULO 1. PRELIMINARES

Es posible transformar el problema (3.1) en uno de la forma (1.1) mediante la introduccin de


un vector cuyas componentes son denominados variables auxiliares, del siguiente modo:
Minimizar ct x
Ax s = b
x, s 0

(1.3)

donde s Rm , tal que s = Ax b, estas variables auxiliares se denominan variables de exceso.


Debemos resaltar aqu que con la introduccin de variables auxiliares, el problema original
dado en (3.1) es transformado en otro problema de mayor dimensin, pues fueron aadidas
m nuevas variables, que corresponden a las componentes del vector s. En estas condiciones,
resolver (1.3) no es lo mismo que resolver (3.1), pero si conseguimos resolver y encontrar una
solucin [x s]t para el problema en (1.3), entonces x ser una solucin para (3.1).
En los prrafos anteriores asumimos que fueron introducidas exactamente m variables
auxiliares de exceso al problema (3.1), pero en realidad no siempre es necesario tal nmero de
variables, pudindose aadir variables auxi-liares slo donde se requiera, es decir, donde las
restricciones sean de desigualdad.
Por otro lado, para transformar un problema del tipo
Minimizar ct x
Ax b
x0

(1.4)

a la forma estndar, podemos introducir un vector auxiliar de variables de holgura, del siguiente
modo:
Minimizar ct x
(1.5)
Ax + h = b
x, h 0
Finalmente, debemos aclarar que la funcin objetivo en el problema (1.5) es diferente a la funcin objetivo del problema original, debido a que ahora es de la forma ct x + 0h. Anlogamente
para el problema dado en (1.3).
Cuando formulamos un problema de programacin lineal, algunas veces las variables pueden
no satisfacer las condiciones de no negatividad, entonces podemos reemplazar por otras variables no negativas mediante las siguientes sustituciones:
Si xi es una variable de tipo irrestricta (xi R), entonces podemos cambiarla por
xi = x0i x00i , donde, x0i , x00i 0.
Si xj lj , entonces hacemos xj = xj lj , claramente ahora xj 0.

1.1. EL PROBLEMA DE PROGRAMACIN LINEAL

Si xj uj , entonces hacemos xj = uj xj , observe que xj 0.


En lo sucesivo y por defecto, asumiremos tambin que siempre trabajamos con un problema
lineal en la forma estndar, salvo se aclare lo contrario.
Conjunto convexo: Un conjunto K es convexo, si la combinacin convexa de dos elementos
cualesquiera del conjunto est en K. Es decir, si dados x1 , x2 K, para todo [0, 1] ,
se verifica que
[x1 , x2 ] = x1 + (1 )x2 K

Figura 1.1: Conjunto convexo y no convexo

Regin Factible: Para el problema de programacin lineal en la forma estndar, la regin


factible es el conjunto P = {x Rn : Ax = b, x 0} . La definicin es anloga para
problemas en otros formatos. En programacin lineal, la regin factible es un poliedro
convexo
Solucin Factible: Es un punto situado en la regin factible. Es decir, x es solucin factible
si x P.
Poliedro: Regin definida por la interseccin de un conjunto finito de semiespacios. Un
poliedro es un conjunto convexo.
Politopo: Poliedro no vaco y acotado

Figura 1.2: Poltopo

CAPTULO 1. PRELIMINARES

Hiperplano: Un hiperplano en Rn es un conjunto de la forma

h = x Rn : pt x = k

donde p Rn , p 6= 0, es un vector columna y k es una constante escalar. Un hiperplano


es la extensin de lo que significa una recta en R2 o un plano en R3 . Debemos notar que
el vector p es normal al hiperplano h
Restriccin Activa: Dada la desigualdad pt x k, donde p Rn y k es un escalar. Si
x0 Rn es tal que satisface pt x0 = k, entonces se dice que x0 hace activa la desigualdad
pt x k. En programacin lineal, estas desigualdades constituyen las restricciones, en
esas condiciones, se dice entonces que x0 hace activa dicha restriccin. Para el caso de una
restriccin de igualdad pt x = k, es claro que cualquier x que satisfaga dicha restriccin
har activa sta.
Semiespacio: Un hiperplano divide el espacio Rn en dos subregiones, llamadas semiespacios.
As, un semiespacio es el conjunto

h1 = x Rn : pt x k

donde p es un vector columna diferente de cero y k es un escalar. El otro semiespacio es


el conjunto de puntos

h2 = x Rn : pt x k
donde h1 h2 = Rn

Punto extremo: Consideremos una regin factible en programacin lineal. Un punto extremo x Rn es la interseccin de n hiperplanos linealmente independientes. Es decir, x
es un punto extremo si hace activa n restricciones linealmente independientes. Si x fuera
tambin factible, entonces se dice que es un punto extremo factible.
Punto Extremo No Degenerado: Un punto extremo no degenerado x se dice no degenerado, si exactamente hace activa n restricciones. Cuando ms de n restricciones son
activas con respecto a x,
entonces el punto se denomina extremo degenerado.
Solucin Bsica: Consideremos el problema de programacin lineal en la forma estndar
definida en (1.1) donde existe n variables y m restricciones, con m < n, adems asumiremos inicialmente que el rango de A es m.
Minimizar z = ct x

(1.6)

Ax = b

(1.7)

1.1. EL PROBLEMA DE PROGRAMACIN LINEAL

x0

(1.8)

Una solucin bsica ndimensional se obtiene eligiendo desde A una submatriz cuadrada B de rango m, a esta submatriz cuadrada e inversible se le llama matriz bsica.
Reordenando las columnas de A, si fuera necesario, y tambin las componentes de x,
particionamos la matriz A y el vector de x de modo que se mantenga la compatibilidad:
A = [B
x=

"

N]

(1.9)

(1.10)

xB
xN

Al vector xN se le denomina vector no bsico y a sus n m componentes se les llama


variables no bsicas. y a sus m componentes se les llama variables bsicas. Reemplazando
(1.9) y (1.10) en (1.7) y despejando xB en funcin de xN , desde
[B

N]

"

xB
xN

=b

obtenemos
BxB
B 1 BxB
xB

+
NxN
+ B 1 NxN
+ B 1 NxN

= b
= B 1 b
= B 1 b

xB = B 1 b B 1 NxN

(1.11)

Obsrvese que si damos valores "arbitrarios


a las variables del vector xN , y evaluamos
#
xB
xB segn (1.11), el vector x =
satisface automticamente (1.7), pero an no
xN
satisface (1.8). Si hacemos xN = 0 y calculamos nuevamente xB segn (1.11), el vector
x=

"

xB
xN

"

xB
0

"

B 1 b
0

adems ser un punto extremo, pues n restricciones linealmente independientes son activas en x. Esto es, n m restricciones activas a causa de xN = 0 y m restricciones activas
a causa de Ax = b. Este ltimo vector x, calculando de ese modo, se denomina solucin
bsica. Es decir, en programacin lineal, una solucin bsica es un punto extremo.
Solucin Bsica Factible (SBF ): Haciendo xN = 0 y calculando xB segn (1.11), si xB =
B 1 b 0, entonces la solucin bsica
x=

"

xB
xN

"

B 1 b
0

CAPTULO 1. PRELIMINARES
ser adems factible, pues satisface (1.7) pero ahora tambin (1.8). En este caso, la solucin bsica se denomina solucin bsica factible. En programacin lineal, una solucin
bsica factible es un extremo factible.

Solucin Bsica Factible No degenerada: Es una solucin bsica factible donde xB > 0.
Observe que una solucin bsica factible no degenerada hace exactamente n restricciones
activas, por lo que es un punto extremo no degenerado. Cuando una o ms variables
bsicas toman el valor de cero, la solucin bsica factible se denomina degenerada. Note
que una solucin bsica factible degenerada hace ms de n restricciones activas, lo que
significa que es un punto extremo degenerado.
Direccin Extrema: Una direccin extrema de un conjunto convexo es una direccin factible,
la cual no puede ser representada como una combinacin lineal positiva de dos direcciones factibles distintas (linealmente independientes). Por lo tanto, en programacin
lineal podemos decir que el conjunto de direcciones extremas generan todas las direcciones factibles.
Direccin de Decrecimiento: Dado x factible y d Rn , d 6= 0, d es una direccin de
decrecimiento partiendo de x, si existe > 0 tal que, para todo h0, ]
ct (x + d) < ct x
Para el caso de minimizacin, una direccin es de decrecimiento si, y slo si, ct d < 0. Obviamente, si para un x factible no existe direcciones de decrecimiento d, tal que el punto
x + d
sea
factible,
entonces
x
es
una
solucin
ptima.
t
Claramente, podemos verificar que el vector d = (c x) = c 6= 0, obtenido de la
funcin objetivo, es una direccin de decrecimiento. Esto se debe a que.
ct d = ct (c) = kck2 < 0
El vector c no slo es un vector de decrecimiento, sino que es el vector que proporciona

el mximo decrecimiento. Es decir, si consideramos otra direccin de decrecimiento d,



tal que kck = d , entonces partiendo de un punto factible x y desplazndonos en las
el punto x c es mejor que el punto x + d,
en otras palabras
direcciones c y d,

ct (x d) ct (x + d)
Funcin Convexa: Si K conjunto convexo no vaco y f : K Rn R es una funcin, se
dice que f es convexa si:
f (x1 + (1 )x2 ) f (x1 ) + (1 )f (x2 )

1.2. EL MTODO SIMPLEX

f(x1 )

f(x1)+(1-)f(x2)

f(x2 )

x1

x=x1+(1-)x2
Figura 1.3: funcin convexa

1.2.

El Mtodo Simplex

Existen muchas variantes del mtodo Simplex, aunque todas ellas se basan en la misma
idea central. En esta seccin se describe una de tales versiones. El mtodo Simplex inicia con
una solucin bsica factible, y a cada paso, se desplaza hacia una solucin bsica factible que
es un mejor candidato que la anterior, al menos no peor, esto se repite hasta una solucin
bsica factible ptima.
Dada un problema de Programacin lineal en su forma estndar
Minimizar z = ct x

Ax = b

(1.12)

x 0
A Rmn de rango m, (m < n), b Rm y c, x Rn

Supongamos que tenemos una base B y una matriz N, ambas asociadas a la matriz A.
Adems"las variables
bsicas y no bsicas
#
" xB#y xN , respectivamente.
cB
xB
, A = [B N] y c =
, esto en (1.12) obtenemos
x=
xN
cN
xB = B 1 b B 1 NxN
= B 1 b

X
B 1 aj xj

(1.13)

jR

X
yj xj
= b
jR

donde R es el conjunto de los ndices de las variables no bsicas, donde aj representa las

CAPTULO 1. PRELIMINARES

jcolumna de A. Adems yj = B 1 aj y b = B 1 b, si hacemos xN = 0, el punto x se convierte


en la solucin bsica con valor objetivo
z0 = [ctB

ctN ]

"

B 1 b
0

= ctB B 1 b

Usando (1.13), la funcin objetivo en (1.12) puede ser expresado por


z = ct x
= ctB xB + ctN xN

!
X
X
= ctB B 1 b
B 1 aj xj +
cj xj
jR

= ctB B 1 b

jR

X
X
ctB B 1 aj xj +
cj xj
jR

(1.14)

jR

X
X
ctB B 1 aj
cj xj
= ctB B 1 b
jR

ctB B 1 b

= z0

jR

ctB B 1 aj cj xj

X
jR

jR

(zj cj ) xj

donde zj = ctB B 1 aj , j R, se observa que z = z0 cuando x es una solucin bsica (xN = 0).
Usando (1.13) y (1.14), el problema (1.12) puede ahora ser visto como
Minimizar z = z0

xB +

X
yj xj = b

X
jR

(zj cj ) xj

(1.15)

jR

xj 0, j R, xB 0

de (1.15). los coeficientes zj cj de las variables no bsicas xj , j R. se denominan costos


reducidos.

1.2.1.

Criterio de Optimalidad

El mtodo simplex reconoce que la actual solucin bsica factible es ptima, cuando todos
los costos reducidos a las variables no bsicos son menores o iguales a cero, es decir. zj cj 0,

1.3. FINALIZACIN

j R

1.2.2.

Criterio de la Razn

Si existe k R tal que zk ck > 0, incrementando el valor de la variable no bsica xk


obtendremos una reduccin en la funcin objetivo, que es justamente lo que deseamos en un
problema de minimizacin. Pero, esto puede ocasionar que alguna de las variables bsicas se
torne negativa (infactible). Cuando la actual solucin bsica factible no es ptima, el mtodo
simplex slo modifica una variable no bsica en cada paso. Para eso, calcula el costo reducido
zk ck = max {zj c : j R} > 0, elige la variable xk para incrementarla desde su nivel cero
y hace xj = 0, j R {k} . Ahora, seleccionada xk y haciendo xj = 0, la funcin objetivo y
las restricciones de (1.15) pueden ser vistas del siguiente modo:

z = z0 (zk ck )xk
xB1
xB2
..
.

x
Br
.
..

xBm

b1
b2
..
.
br
..
.
bm

y1,k
y2,k
..
.

y
r,k
.
..

ym,k

(1.16)

xk

(1.17)

para evitar que alguna variable bsica se torne negativa, el valor de xk debe ser elegido mediante
el criterio de la razn

br
bi
= mn
: yi,k > 0,
i = 1, ..., m
xk =
yr,k
yi,k

1.3.

Finalizacin

El simplex finaliza reconociendo que:


Una nica solucin ptima: si zj cj < 0
Existen soluciones ptimas alternativas: Si zj cj 0, j R, pero alguna variable no
bsica, digamos xq , q R, tiene su correspondiente costo reducido zq cq = 0,
El problema tiene solucin ptima ilimitada: Dada una solucin bsica factible, si zk
ck > 0 y yk 0, para alguna variable no bsica xk , entonces la solucin ptima, y por
consecuencia, el valor objetivo ptimo, sern ilimitados.

10

CAPTULO 1. PRELIMINARES

1.3.1.

El Algoritmo Simplex

Elegir una matriz bsica B tal que x =

"

B 1 b
0

sea una solucin bsica factible.

Paso 1: Calcular xB = B 1 b = b. hacer xN = 0 y calcular z = ctB xB .


Paso 2: Calcular w = ctB B 1 y hallar zk ck = max {zi cj } , donde zj cj = waj cj
jR

1. Si zk ck 0, detenerse, la SBF ptima es

x=

"

B 1 b
0

2. Caso contrario, ir al paso 3.


Paso 3: Calcular yk = B 1 ak
1. Si yk 0, detenerse. Existe soluciones ptimas ilimitadas
2. Caso contrario, ir al paso 4.
Paso 4: Calcular

br
bi
xk =
= mn
: yi,k > 0,
yr,k
yi,k

i = 1, ..., m

1. Actualizar la base B. cambiando aBr por ak .


2. Actualizar R. cambiando k por el ndice Br .
3. Volver al paso 1.

1.4.

Teoremas de convergencia

Teorema 1.1 La regin factible P = {x Rn : Ax = b, x 0} , de soluciones de un problema


de programacin lineal, es un conjunto convexo
Prueba. Sea P la regin factible del problema (1.1), sea x1 , x2 P arbitrarios, definamos
x = x1 + (1 )x2 con [0, 1] , queremos probar que x P y x 0.
i) Como Ax1 = b y x1 0, Ax2 = b y x2 0, entonces.
Ax = A(x1 + (1 )x2 ) = Ax1 + (1 )Ax2 = b + (1 )b = b
ii) Ahora, x1 0, x2 0. El hecho de que [0, 1] implica que 0 y que (1 ) 0, de
aqu se tiene que x1 0, (1 )x2 0, por lo que x = x1 + (1 )x2 0. Por lo
tanto P es un conjunto convexo.

1.4. TEOREMAS DE CONVERGENCIA

11

Definicin 1.1 Sea P Rn un conjunto convexo y f : Rn R una funcin convexa. La


siguiente formulacin matemtica dada por.
Minimizar f (x)
xP

(1.18)

se denomina problema de programacin convexa.

El problema de programacin convexa tiene importantes propiedades que lo distingue de


problemas ms generales, uno de los resultados ms interesantes est dado en el siguiente
teorema.

Teorema 1.2 En un problema de programacin convexa.


a) Todo minimizador local es minimizador global.
b) El conjunto de minimizadores es convexo.
c) Si f es estrictamente convexa, no puede haber ms de un mininizador.
Prueba. Para mostrar (a) supongamos que x sea un minimizador local pero no global del
problema de programacin convexa dada en (1.18), entonces existe un x P , x 6= x , tal que
f (x) < f (x ). Ahora, para [0, 1] , consideremos la combinacin convexa x = (1)x +x,
por la convexidad de P , tenemos que x P , y por la convexidad de f
f (x )

= f ((1 )x + x) (1 )f (x ) + f (x)

= f (x ) + (f (x) f (x )) < f (x )

Ahora, para > 0 suficientemente prximo de 0, x se torna arbitrariamente prximo pero


diferente de x , pero adems f (x ) < f (x ). Esto significa que para cualquier vecindad
V (x , ) es posible encontrar un x V (x , ) tal que f (x ) < f (x ), lo cual contradice el
hecho que x es un minimizador local.
Para mostrar (b) nosotros llamamos de S al conjunto de todos los minimizadores del
problema de programacin convexa. sea x, y S, entonces
f (x) = f (y) f (x + (1 )y), [0, 1]

12

CAPTULO 1. PRELIMINARES
Por la convexidad de f tenemos
f (x + (1 )y) f (x) + (1 )f (y)
= f (y) + (f (x) f (y))

(f (x) = f (y))

= f (y) + (0) = f (y), [0, 1]


Entonces f (x) = f (y) f (x + (1 )y) f (x) = f (y), [0, 1] , este ltimo significa
que x + (1 )y tambin es un minimizador y por tanto x + (1 )y S, de donde S es
convexo.
Para la parte (c), supongamos que existe x, y S con x 6= y, entonces para [0, 1]
se tiene que f (x) = f (y) f (x + (1 )y), debido a que x, y son minimizadores globales.
Ahora, como f es estrictamente convexa se verifica
f (x + (1 )y) < f (x) = f (y)
con lo que tenemos la contradiccin deseada y la prueba est concluida.

Teorema 1.3 El problema de programacin lineal en la forma estndar es un problema de


programacin convexa.
Prueba. Dado el siguiente problema de programacin lineal
Minimizar f (x) = ct x
sujeto a

Ax = b
x 0

debido a la linealidad de f , satisface la siguiente condicin


ct (x + (1 )y) = ct x + (1 )ct y,

x, y Rn ,

[0, 1]

Luego, f es una funcin convexa. Falta slo verificar que la regin de factibilidad es un conjunto
convexo. Para esto, definamos = {x Rn : Ax = b, x 0} . Dado x1 , x2 , luego Ax1 = b,
x1 0, Ax2 = b, x2 0. Sea x = x1 + (1 )x2 y [0, 1]
Ax = A(x1 + (1 )x2 ) = Ax1 + Ax2 Ax2 = b
Adems
x1 + (1 )x2 0
Por lo tanto x , y es convexo.

1.4. TEOREMAS DE CONVERGENCIA

13

Consideremos ahora el problema de programacin lineal en la forma estndar


Minimizar ct x
xP

(1.19)

donde P = {x Rn : Ax = b, x 0} , b Rm , A Rmn es de rango m, con m < n.


Teorema 1.4 Un extremo factible x de P es una solucin bsica factible para (1.19). Inversamente, si x es una solucin bsica factible de (1.19), entonces x es un punto extremo factible
de P.
Prueba. Como x es un punto extremo de P , existe n hiperplanos linealmente independientes
pasando por x. Ahora, como x es factible, satisface Ax = b, de donde ya existen m restricciones
linealmente independientes y activas en x, pues hemos asumido que el rango de la matriz A
es m.
Naturalmente, los restantes n m hiperplanos linealmente independientes pasando por
x deben ser del tipo xi = 0, donde xi es una componente del vector x. Denotemos tales
componentes xi como parte del vector xN , y las columnas i de A asociadas a cada xi por la
matriz N. Mientras que las dems componentes xj de x la hacemos parte del vector xB , y las
respectivas columnas j de A por la matriz B. Reordenando, si fuera necesario, de modo que
no se altere el problema (1.19), particionamos x de A de modo tal que:
x =

"

xB
xN

A = [B N]
Por hiptesis, el vector x pertenece a P y satisface Ax = b y x 0. Es decir, satisface el
sistema de n n :
(1.20)
BxB + NxN = b
IxN = 0
donde I R(nm)(nm) es la matriz identidad. El sistema (1.20) implica que xN = 0 y
Bmm inversible, debido a la independencia lineal de las ecuaciones. Luego, xB = B 1 b. como
x es factible, se tiene que B 1 b > 0, esto significa que
x=
es una solucin bsica factible.

"

B 1 b
0

14

CAPTULO 1. PRELIMINARES

Inversamente, si x es una solucin bsica factible, considerando (1.20), x satisface Ax = b,


es decir, hace m restricciones linealmente independientes activas, pues B 1 existe. Adems,
n m restricciones linealmente independientes son activas debido a xN = 0, lo cual nos dice
que x, definido de ese modo, hace n restricciones linealmente independientes activas.
Podemos concluir con respecto al problema dado en (1.19) que: La coleccin de puntos
extremos factibles corresponde a la coleccin de soluciones bsicas factibles. Ambos son no
vacos desde que la regin factible sea no vaca.
Para resolver el problema de programacin lineal en la forma estndar, basta analizar
los puntos estremos del poliedro de factibilidad, pues si una solucin ptima existe, entonces
existir un extremo ptimo. Adems, slo tenemos que verificar que tal punto extremo es un
minimizador local.
Ejemplo 1.1 Considere el siguiente problema de programacin lineal
Minimizar x1 + x2
4x1 x2 2
2x1 + 3x2 8
3x1 + 5x2 15
x1 x2 3
10x1 + 7x2 70
x1 , x2 0

(1.21)

El grfico de la regin de factibilidad y una curva de nivel de la funcin objetivo estn representadas en la figura adjunta

x2

x1
0

Figura 1.4: Regin factible y una curva de nivel

1.4. TEOREMAS DE CONVERGENCIA

15

t
Vemos que la curva de
" nivel
# asociada a c x = 0 es la recta que pasa por el origen, note
1
que f (x1 , x2 ) = c =
. Adems, se sabe que f (x1 , x2 ) es un vector que apunta en
1
la direccin donde la funcin objetivo ms crece. Por lo tanto, c estar apuntando hacia la
direccin en la cual la funcin objetivo alcanza su mejor decrecimiento.

Para minimizar el problema grficamente, tenemos que partir de un punto factible y desplazarnos en la direccin c sobre R, pues en esa direccin la funcin objetivo decrecer,
pero adems el punto al cual nos desplacemos debe ser tambin factible.
Tambin podemos observar del grfico que la curva de nivel asociado a ct x = 3, es la recta
que pasa por el punto [1 2]t . El nico modo de mantener la factibilidad y al mismo tiempo
obtener el menor valor de la funcin objetivo ct x, est relacionado en este punto [1 2]t , pues
en ese punto la funcin objetivo vale 3, si continuamos desplazndonos en la direccin c
caeremos en infactibilidad.

Figura 1.5: Curvas de nivel de f sobre R


Podemos concluir entonces que la solucin ptima es x = [1 2]t y el valor objetivo ptimo
es
ct x = x1 + x2 = 1 + 2 = 3

16

CAPTULO 1. PRELIMINARES

del grfico se puede observar que la solucin ptima es un extremo, un vrtice del poliedro
factible. Llevando a su forma estndar, para ello introduciendo las variables auxiliares, tenemos
Minimizar x1 + x2 + 0x3 + 0x4 + 0x5 + 0x6 + 0x7
4x1 x2 x3 = 2
2x1 + 3x2 x4 = 8
3x1 + 5x2 + x5 = 15
x1 x2 + x6 = 3
10x1 + 7x2 + x7 = 70
x1 , x2 , x3 , x4 , x5 , x6 , x7 0
Los datos a introducir en el computador son

A=

4 1 1 0 0 0 0
2
3
0 1 0 0 0
3 5
0
0 1 0 0
1 1 0
0 0 1 0
10 7
0
0 0 0 1

b=

2
8
15
3
70

c=

1
1
0
0
0
0
0

colB = [1 2 3 4 5];
Donde colB : vector de ndices bsicos iniciales. (SIMP LEX(A, b, c, colB) se encuentra en
el apndice), llamando SIMP LEX(A, b, c, colB) nos otorga:

x=
1.00
2.00
0
0
8.00
4.00
46.00
iter=
3.00
z=
3.00

1.5. DUALIDAD Y CONDICIONES DE OPTIMALIDAD

17

despus de 3 iteraciones principales ejecutadas por el programa, [z, x, iter] = SIMP LEX(A, b, c, co
Ahora proyectando x3 sobre el x1 x2 -espacio, podemos ver lo que sucedi en el problema original. As, la solucin aproximada de (1.21) es
"

x1
x2

"

1.00
2.00

el valor ptimo es: z =3.00, y la solucion ptima es x = [1 2]t

1.5.

Dualidad y Condiciones de Optimalidad

Por lo general, la dualidad y las condiciones de optimalidad son usadas para la construccin
de mtodos que son variaciones del Simplex, tal como veremos en el captulo 4, el mtodo
Primal-Dual de Puntos Interiores para programacin lineal.

Uno de los aspectos tericos ms importantes asociado a la programacin lineal es la


dualidad. Mediante esto, es posible caracterizar el problema de programacin lineal desde otro
punto de vista.

1.5.1.

Dualidad

Dado el problema de programacin lineal en la forma estndar


Minimizar ct x
Ax = b
x0

(1.22)

Definiendo el dual de un problema de programacin lineal en la forma estndar


Maximizar bt y
At y + z = c
z0

(1.23)

donde z Rn .
Dado un problema de programacin lineal, denominado problema primal, existe otro problema de programacin lineal, denominado problema dual, intimamente relacionado con l. Se
dice que ambos problemas son mutuamente duales.

18

CAPTULO 1. PRELIMINARES

Problema de Minimizacin
[coeficientes]
nmero de variables
nmero de restricciones
Variable
0
0
Irrestricta

Problema de Maximizacin

[coeficientes]t
nmero de restricciones
nmero de variables

Restriccin

Restriccin

Variable

0
0
Irrestricta

Relacin variable - restriccin entre el primal y su dual


Ejemplo 1.2

1.5.2.

Primal

Dual

Maximizar 3x1 + 5x2


x1 4
2x2 12
3x1 + 2x2 18
x1 , x2 0

Minimizar 4y1 + 12y2 + 18y3


y1 + 2y3 3
2y2 + 2y3 5
y1 , y2 , y3 0
.

Primal

Dual

Minimizar 3x1 + 5x2 4x3


x1 + 2x2 4x3 6
3x1 2x2 + x3 = 10
x1 0, x2 0, x3 irrestricta
.

Maximizar 6y1 10y


y1 + 3y2 3
2y1 2y2 5
4y1 + y2 = 4
y1 0, y2 irrestricto

Propiedades

Estas propiedades en [YZH] pgina 34, se describen como proposiciones y en [LDG] como
Lema y corolario
Lema 1.1 Si x, y son soluciones factibles del problema de minimizacin y maximizacin,
respectivamente, entonces bt y ct x

1.5. DUALIDAD Y CONDICIONES DE OPTIMALIDAD

19

Prueba. Consideremos la forma cannica de dualidad, sean x e y soluciones factibles del


problema de minimizacin y maximizacin, respectivamente. Veamos que
A
x b,

x 0

(1.24)

At y c,

y 0

(1.25)

Adems

Multiplicando por y 0 en (1.24) y por x 0 en (1.25), obtenemos


yt A
x yt b = bt y
y
xt At y xt c = ct x
de donde bt y yt A
x xt At y xt c ct x
Corolario 1.1 Si x e y son soluciones factibles del problema de minimizacin y maximizacin, respectivamente, tal que ct x = bt y , entonces x e y son soluciones ptimas de
sus respectivos problemas asociados.
Prueba. Supongamos que x no sea una solucin ptima del problema de minimizacin,
entonces ct x < ct x para algn x factible de este problema. Usando el lema anterior, tendramos
que bt y ct x < ct x , y en consecuencia bt y 6= ct x

1.5.3.

Condiciones de Optimalidad de Karush-Kuhn-Tucker (KKT )

Ya que en este trabajo hemos dado ms importancia al problema de programacin lineal


en su forma estndar. Consideremos el problema de programacin lineal en esta forma, al cual
denominaremos primal:
Minimizar ct x
(1.26)
Ax = b
x0
Por lo que estas condiciones KKT para el problema (1.26) estn definidas por. Si x Rn
es una solucin ptima del problema de programacin lineal estndar si, y slo si, existen
vectores w Rm y v Rn tales que:
Ax = b,
At w + v = c,

x0

w irrestricto,
vtx = 0

(Factibilidad Primal)
v0

(Factibilidad Dual)
(Complementariedad)

20

CAPTULO 1. PRELIMINARES

Estas condiciones de Karush Kunh Tucker representan condiciones necesarias y suficientes


para un minimizador global del problema (1.26).
Estas tres condiciones de ptimalidad tienen suma importancia, tanto terico como en la
prctica, pues nos permiten enfocar el problema de programacin lineal desde otro punto de
vista. Ms an, juegan un rol importante en la construccin del mtodo de puntos interiores
primal-dual. Dada una solucin ptima del problema (1.26) x Rn , entonces, existen vectores
v Rn y w Rm tales que (x , v , w ) satisface estas condiciones. Inversamente, si existen
x, v y w,
tal que (
x, v, w)
satisfacen tambin las condiciones, entonces x es una solucin ptima
del problema (1.26).

1.6.

El Mtodo de Newton, Lagrange y Penalizacin Interna

En esta seccin describiremos el mtodo de Newton, en el estudio de sistemas de ecuaciones


no lineales. Este mtodo tiene un lugar importante dentro de la optimizacin, los cuales sern
empleados en la construccin del mtodo Primal-Dual para programacin lineal.
El mtodo de Newton. Este mtodo numrico es aplicado para resolver sistemas de ecuaciones no lineales y es aplicado en la resolucin de problemas de optimizacin sin la presencia
de restricciones.
El mtodo de Lagrange. Este mtodo numrico es aplicado frecuentemente para resolver
problemas de optimizacin con restricciones de igualdad.
El mtodo de Penalizacin interna. Este mtodo numrico es aplicado frecuentemente para
resolver problemas de optimizacin con restricciones de desigualdad.
los cuales nos permitirn construir el mtodo de Puntos interiores Primal dual para programacin lineal.

1.6.1.

Mtodo de Newton

Este mtodo numrico es aplicado con mayor frecuencia en la resolucin de problemas de


optimizacin sin restricciones. y ser modificado antes de poderlo utilizar en puntos lejanos
de la solucin, aadiendo en un inicio una longitud de paso .
Recordemos inicialmente el mtodo de Newton para hallar un cero de una funcin de una
variable, es decir resolver f (x) = 0 con primera derivada contnua f C 1 (R). Dado un punto
inicial xk , con f 0 (xk ) 6= 0 para todo k = 0, 1, 2, 3, ..., .

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

21

Partiendo de un punto xk , como en la figura adjunta, trazamos la recta tangente a la curva


y = f (x) recordemos la ecuacin punto pendiente y y0 = m(x x0 ) en el punto inicial
(xk , f (xk ).La cual es f (x) f (xk ) = f 0 (xk )(x xk ) despejando f (x) tenemos
f (x) = f (xk ) + f 0 (xk )(x xk )

(Recta tangente a la curva)

El prximo punto,xk+1 , est definido como la solucin de f (x) = 0


0 = f (xk ) + f 0 (xk )(xk+1 xk )
que corta al eje x1 en el punto xk+1 = xk

1
f (xk ),
f 0 (xk )

se observa que debe ser f 0 (xk ) 6= 0

Por lo que el mtodo consiste en construir una sucesin definida por


xk+1 = xk

f (xk )
f 0 (xk )

k = 0, 1, 2, 3, ...

cuando f (xk ) < , donde es un parmetro de precisin, entonces xk ser una buena aproximacin a un cero de f : I R R

Figura 1.6: Newton para hallar raices de ecuaciones f (x) = 0

Pero el mtodo de Newton no slo est orientado hacia ecuaciones involucrando una funcin
real de variable real, sino que su verdadero potencial surge cuando es utilizado en la resolucin
de sistemas de ecuaciones no lineales, uno de los problemas de clculo fundamental en ciencia
e ingenieria.

22

CAPTULO 1. PRELIMINARES

Sea x Rn , F : Rn Rn , es decir hay n variables y n restricciones la cul acepta primera


derivada contnua. F C 1 (Rn ):

x=

x1
x2
..
.
xn

, F (x) =

f1 (x)
f2 (x)
..
.
fn (x)

f1 (x1 , x2 , ...xn )
f2 (x1 , x2 , ...xn )
..
.
fn (x1 , x2 , ...xn )

Las funciones fi : Rn R fi C 1 (Rn ), para i = 1, 2, ..., n son las funciones componentes.


La ecuacin F (x) = 0 representa un sistema de n ecuaciones con n variables:
f1 (x) = 0
f2 (x) = 0
..
.
fn (x) = 0
El Jacobiano de F en el punto x, denotado por F 0 (x) o J(x) es definido como la matriz cuyas
componentes (i, j) son:
fi
(x),
1 i, j n
xj
explcitamente

F (x) = F (x) = J(x) =

f1
x1
f2
x1

f1
x2
f2
x2

...

f1
xn
f2
xn

fn
x1

fn
x2

fn
xn

..
.

..
.

..
.

Rnn

El mtodo de Newton es de caracter iterativo y est basado en la aproximacin lineal de la


funcin F en torno al punto actual xk
F (x) Lk (x) = F (xk ) + J(xk )(x xk )
siguiendo el principio descrito anteriormente, el siguiente punto xk+1 es una solucin de
Lk (x) = 0
Si J(xk ) es no singular de (1.27), entonces tiene solucin nica, esto es
0 = F (xk ) + J(xk )(xk+1 xk )

(1.27)

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

23

despejando el punto actual xk+1


xk+1 = xk

1
F (xk )
J(xk )

xk+1 = xk J 1 (xk )F (xk )

(1.28)

Empezando de un punto inicial x0 . Si x0 est suficientemente cerca a la solucin x satisfaciendo


F (x ) = 0, entonces bajo las condiciones apropiadas, podemos esperar que la sucesin converga
a la solucin x ; es decir
lm xk = x
k

Obtener xk+1 directamente de (1.28) debera ser evitado para fines computacionales, ya que
calcular J 1 (xk ) es considerado costoso. Entonces una i-teracin de Newton consiste en resolver
un sistema lineal:
(1.29)
J(xk )dk = F (xk )
xk+1 = xk + dk

(1.30)

lo que nos indica (1.30) es que una vez conocido el paso de newton dx , es posible calcular xk+1 .
Aunque el mtodo de Newton es muy atractivo en funcin de sus propiedades de convergencia cerca de la solucin, ha de modificarse antes de poderlo utilizar en puntos ms lejados
de la solucin, una primera modificacin es aadir una longitud de paso ().a la direccin de
newton.
Vale recalcar que el mtodo de newton elige como direccin de bsqueda
dx = J(xk )1 F (xk )
Es importante notar que la direccin dx no se puede calcular si J(xk ) es una matriz singular.
Incluso en el caso de que no lo fuese, dx no sera necesariamente una direccin de descenso
cuando la matriz J(xk ) no es definida positiva. La programacin convexa es un caso importante
para que la direccin de newton sea de descenso.
Resumiendo este mtodo ms popular para resolver sistemas de ecuaciones no lineales.
Dada una funcin Fn : Rn 7 Rn y un sistema Fn (x) = 0. El Mtodo de Newton consiste en

repetir consecutivamente, para k = 0,1,2,.., hasta que Fn (xk ) < , donde > 0, la siguiente
regla:
Fn (xk )
xk+1 = xk 0 k
Fn (x )
Note que xk denota un vector de aproximacin de la solucin del sistema de ecuaciones
Fn (x) = 0, adems, x0 es el vector inicial y Fn0 (xk ) es el Jacobiano de Fn en xk .

24

CAPTULO 1. PRELIMINARES

El siguiente programa en Matlab resuelve el sistema F (x) = 0, si prec representa el


parmetro de presicin, J = F 0 (x) como el Jacobiano del sistema de ecuaciones. y x0 un
punto inicial.
function x=newton(x)
iter=0; prec=0.000001;
while norm(Fn(x))>prec
iter=iter+1;
x=x-inv(Jn(x))*Fn(x);
fprintf(iter= %2i; x = [ %7.4f %7.4f]\n, iter,x);
if iter>1000
error(parece que newton no converge);
end
end
Veamos algunos ejemplos

Ejemplo 1.3 Se quiere resolver el sistema de ecuaciones no lineales


x + 2y 4 = 0
(x 6)2 y + 4 = 0
Ejecutando Newton, con los siguientes puntos iniciales

"

1
2

"

6
10

tenemos, pero primero

definamos el sistema de ecuaciones y el Jacobiano


F (x) =

Fn0 (xk )

= J(x) =

"

"

x1 + 2x2 4
(x1 6)2 x2 + 2
df
dx1
dg
dx1

df
dx2
dg
dx2

"

1
2
2(x1 6) 1

Despus de ingresar la funcin y la matrz


" #Jacobiana en el coputador, ejecutamos el programa
1
newton, primero con el punto inicial
con un parmetro de precisin 0,000001 tenemos:
2

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

>> x =
iter =
iter =
iter =
iter =
iter =

newton([1
1 ; x
2 ; x
3 ; x
4 ; x
5 ; x

2]0 )
= [ 3.3333
= [ 4.2667
= [ 4.4863
= [ 4.4999
= [ 4.5000

25

3.6667]
4.1333]
4.2431]
4.2500]
4.2500]

x=

"

4.5000
4.2500
#

4,5000
proyectando en el plano x1 x2 podemos observar todo los puntos
4,2500
de iteracin, desde el punto inicial, hasta la raz
Converge a la raz

Figura 1.7: Newton con punto inicial x0 = [1 2]t

26

CAPTULO 1. PRELIMINARES
Ahora ejecutando newton con el otro punto inicial

"

9
3

>> x = newton([9 3]0 )


iter = 1 ; x = [8.1818
iter = 2 ; x = [8.0086
iter = 3 ; x = [8.0000
iter = 4 ; x = [8.0000

tenemos:

6.0909]
6.0043]
6.0000]
6.0000]

x=
8,0000
6,0000
"

8,0000
que tambin converge a otra raz
6,0000
iteracin.hacia la raz en el grfico adjunto

, y tambin podemos observar los puntos de

Figura 1.8: Newton con punto inicial x0 = [9 3]t


Problema 1.1 Se quiere resolver el sistema de ecuaciones no lineales
5x21 + 6x1 x2 + 5x22 4x1 + 4x2 4 = 0
x21 + x22 1 = 0
Ejecutando el programa newton con punto inicial

"

1
1

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA


Sean

"

F (x) =

J(x) =

"

df
dx1
dg
dx1

27

#
5x21 + 6x1 x2 + 5x22 4x1 + 4x2 4
x21 + x22 1
# "
#
df
10x
+
6x

4
6x
+
10x
+
4
1
2
1
2
dx2
=
dg
2x2
2x1
dx2

ejecutando el programa de newton, se puede hallar una raz en cinco iteraciones.


>> x = newton([1 1]0 )
iter= 1 ; x = [1.2500
iter= 2 ; x = [0.9917
iter= 3 ; x = [0.9575
iter= 4 ; x = [0.9569
iter= 5 ; x = [0.9569

0.2500]
0.2917]
0.2904]
0.2903]
0.2903]

x=
0.9569
0.2903
Ejemplo 1.4 Considere el sistema de ecuaciones no lineales
x22 (x1 1)3 = 0
ln(1 + x22 ) + ex1 3x1 + 2x2 = 0
Observe que:
F (x) =
y

"

x22 (x1 1)3 = 0


ln(1 + x22 ) + ex1 3x1 + 2x2 = 0

J(x) =

"

3(x1 1)2
ex1 3
0

2x1
2x1
+2
1+x2
2

Al ejecutar Newton con punto inicial x = [1 1] y con un parmetro de precisin = 0,000001


nos otorga:

x(1) =

0.57273607817503
0.50000000000000

x(2) =

0.15438003883215
-0.05711721521426

x(3) =

0.41714604428871
0.33025949727142

28

CAPTULO 1. PRELIMINARES

3.40954932017067
4.48252254203493

x(5) =

3.30977931047506
3.60789101090839

x(6) =

3.41941663803305
3.75489556515174

x(7) =

3.41233877698485
3.74673397345497

x(8) =

3.41230437719520
3.74669341650677

(4)

Ejemplo 1.5 Se requiere resolver el sistema


x31 + x32 2x23 + x24 + 3 = 0
x1 x2 x3 x4 + 2 = 0
x1 + x22 + x3 + x4 = 0
x1 x3 + x2 x4 = 0
Al ejecutar Newton con punto inicial x0 = [1 2 3 4]t y con un parmetro de precisin =
0,000001 nos otorga:

x(15)

-1.68820905394305
1.40864292542700
=
-0.78048646281991
0.48442062541582

Al ejecutar Newton con punto inicial x0 = [1 1 1 1]t y con un parmetro de precisin


= 0,000001 nos otorga:
0.30104099749255
-1.49799619587565
x(6) =
-1.00745590938951
-1.53757769093631

1.6.2.

Mtodo de Lagrange

Este mtodo numrico transforma un problema de optimizacin con restricciones de igualdad en un problema irrestricto.

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

29

Si intentamos resolver el problema


Minimizar f (x)
Sujeto a:
gi (x) = 0, i = 1, ..., m
He aqu tenemos un problema de optimizacin con restricciones de igualdad, formando la
funcin Lagrangiana tenemos.
m
X
yi gi (x)
L(x, y) = f (x)
i=1

y entonces teniendo esta funcin irrestricta nos toca minimizar la funcin L(x, y), para ello
podemos utilizar el mtodo de Newton expuesta anteriormente.
L
xj

X gi
f
=
(x)
yi
(x) = 0
xj
xj
i=1
m

L
= gi (x) = 0
xi

j = 1, ..., n

i = 1, ..., m

Este sistema de ecuaciones constituye las condiciones de optimalidad de primer orden para
el problema de minimizacin con restricciones de igualdad (Karush Kuhn Tucker), las cuales
son necesarias para un minimizador local. Pero cuando este problema es un problema de
programacin convexa, es decir, que tanto la funcin objetivo como el conjunto definido por las
restricciones son convexos, entonces las condiciones son adems suficientes y un minimizador
local es global. O sea, resolver el ltimo sistema nos otorga un minimizador global del problema
de optimizacin con restricciones de igualdad.

Figura 1.9: Curvas de niveles, (f ) y g(x)

30

CAPTULO 1. PRELIMINARES

Ilustracin de las condiciones de Karush-Kuhn-Tucker para el caso de una restriccin de igualdad y dos variables, y tambin podemos observar que el mnimo se alcanza en un punto en
el que el gradiente de la funcin objetivo y el de la restriccin son linealmente dependientes.
Esto es lo que representa las condiciones de optimalidad de primer orden. Recordando adems
que las variables de Lagrange son irrestrictas en el signo.

Ejemplo 1.6
Minimizar
s.a

f (x1 , x2 ) = x1 + 2x2
g(x1 , x2 ) = x21 6x1 + x22 8x2 + 20 = 0

formando la funcin Lagrangiana

L(x1 , x2 , ) = x1 + 2x2 + x21 6x1 + x22 8x2 + 20

entonces el sistema a resolver es:

L
= 1 + (2x1 6) = 0
x1
L
= 2 + (2x2 8) = 0
x2
L
= x21 6x1 + x22 8x2 + 20 = 0

donde es la variable lagrangiana asociada a la restriccin del problema. Definimos

1 + (2x1 6)

F (x, ) = 2 + (2x2 8)

x21 6x1 + x22 8x2 + 20

y calculando su respectivo Jacobiano

2
0
2x1 6

J(x, ) =
0
2
2x2 8
0
2x1 6 2x2 8

Para resolver este problema haremos una modificacin al programa de newton, e implementaremos en el lenguaje de programacin (Matlab) a la que denominamos newton_2. Teniendo en
cuenta que x es la variable, y que es la variable lagrangiana irrestricta en signo, que lo

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

31

denotaremos por y.
function [x,iter]=newton_2(x,y)
n=length(x);m=length(y);iter=0;
while norm(Fn(x,y))>0.0001
d=-inv(Jn(x,y))*Fn(x,y);
dx=d(1:n); dy=d(n+1:n+m);
a=-1/min(min(dx./x),-1);
x=x+0.95*a*dx; y=y+0.95*a*dy;
iter=iter+1;
end
a es el criterio de la razn
Ejecutando el programa de newton_2, para un punto inicial de [1 2 ]t y variable lagrangiana
=3

>> x = [1 2 ]t , y = 3,
Obtenemos
x(1) =
x(2) =
x(3) =
x(4) =
x(5) =
x(6) =

"
"
"
"
"
"

1.4354
2.2771
1.6967
2.1546
1.9563
1.9981
1.9979
1.9994
1.9999
2.0000
2.0000
2.0000

#
#
#
#
#
#

y (1) =

y (2) =

y (3) =

y (4) =

y (5) =

y (6) =

h
h
h
h
h
h

1.0406
0.5294
0.4964
0.4997
0.5000
0.5000

i
i
i
i
i
i

Despus de 6 iteraciones principales ejecutadas por el programa, proyectando x(6) sobres


x1 x2 espacio, podemos ver lo que sucedi en el problema original. Asi como la solucin es
"

x1
x2

"

2.0000
2.0000

32

CAPTULO 1. PRELIMINARES

Figura 1.10: Lagrangiano


Del grfico podemos observar que el mnimo se alcanza en un punto en el que, gradiente
de la funcin objetivo y el de la restriccin son linealmente dependientes.

1.6.3.

Mtodo de Barrera Logarmica

Este mtodo numrico transforma un problema de optimizacin con restricciones de desigualdad en un problema irrestricto.
Dada un problema de la forma.
Minimizar f (x)
Sujeto a: xj 0
aadiendo la funcin barrera

n
P

j = 1, 2, ...n

(1.31)

log(xj ) a la funcin objetivo. El problema equivalente e

j=1

irrestricto asociado a (1.31) est dado por


n
X
log(xj )
Minimizar B(x | ) = f (x)

(1.32)

j=1

mientras que si 0, entonces x() x . Aadiendo log(xj ) a la funcin objetivo


ocasionar que la funcin objetivo se incrementar infinitamente cuando xj 0 (Cuando
xj se aproxima a la frontera de ). Pero la solucin ptima est justamente sobre el vrtice
de la regin factible, por eso se hace necesario la introduccin del parmetro de penalizacin
R+ que equilibre la verdadera condicin de la funcin objetiva contra el de la funcin
barrera.

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

33

El conjunto de minimizadores x() es llamado trayectoria central. La siguiente figura adjunta muestra el comportamiento de la funcin logartmica cuando decrece el parmetro . Se
puede observar que a medida que este parmetro tiende a cero, la funcin se acerca cada vez
ms a los ejes.

Figura 1.11: El parmetro 1 < 2


La siguiente figura muestra el comportamiento de la barrera logartmica en relacin a
varias restricciones cuando 0. A medida que esto ocurre la pared que forma la barrera
logartmica se asemeja cada vez ms a las paredes del poltopo, de modo que en el lmite,
coincidirn.

Figura 1.12: Barrera logartmica con vrias restricciones


Ejemplo 1.7 Considere el siguiente problema.
Minimizar (x1 + 2)2 + (x2 3)2
x1 , x2 0

(1.33)

El minimizador irrestricto debera ser (2,3), pero el minimizador para (1.33) es (x1 , x2 ) =

34

CAPTULO 1. PRELIMINARES

(0,3) como se ve el siguiente grfico

Figura 1.13: Punto ptimo en [0 3]t


Para resolver el problema (1.33) aplicamos barrera logartmica para > 0 tenemos
B(x | ) = (x1 + 2)2 + (x2 3)2 (log(x1 ) + log(x2 ))
Para minimizar B(x | ), derivamos parcialmente con respecto a x1 y x2

B
= 2(x1 + 2)
=0
x1
x1
B

= 2(x2 3)
=0
x2
x2
Resolviendo el sistema obtenemos
x1 () =
x2 () =

r
r

+11
2
9 3
+ +
2 4 2

Observamos adems:
lm x1 () = 0

lm x2 () = 3

n
X
lm
log(xj ) = 0

j=1

(1.34)

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA


En (1.34), si hacemos = 18 345 obtenemos los puntos
x1 () = 94,7784
x2 () = 97,2849
el cual esta muy alejado de x . y si disminuimos , como por ejemplo, = 100, tenemos
x1 () = 6,1414
x2 () = 8,7284
el cual se acerca a x = (0,3)

500
400
300
200
100
0
-100
-200
-300
-400
4
3
2
1
0

0.5

1.5

2.5

3.5

Figura 1.14: Con = 100


Ahora para un = 0,01, entonces tendremos que los nuevos puntos
x1 () = 0,0025
x2 () = 3,0017

35

36

CAPTULO 1. PRELIMINARES

se encuentran muy prximos a la solucin ptima x .= (0,3)

40
35
30
25
20
15
10
5
0
4
3
2
1
0

0.5

1.5

2.5

3.5

Figura 1.15: Con = 000, 1

Ejemplo 1.8 dada el problema

2
Minimizar x1 52 + 2 (x2 2)2
3x1 + 2x2 6

(1.35)

podemos observar que el minimizador irrestricto debera ser ( 52 , 2) aplicando barrera logartmica
al problema (1.35) para > 0 se tiene
2

5
+ 2 (x2 2)2 log(6 3x1 2x2 )
B(x | ) = x1
2
los puntos estacionarios de B(x | ) en funcin de son:
B
5
3
= 2(x1 ) +
=0
x1
2
6 3x1 2x2
B
2
= 2(x2 2) +
=0
x2
6 3x1 2x2
y resolviendo este sistema de ecuaciones obtenemos:
p
99(11 + 8)
x1 () =
p 44
77 11(11 + 8)
x2 () =
44
77

(1.36)

1.6. EL MTODO DE NEWTON, LAGRANGE Y PENALIZACIN INTERNA

37

donde (x1 (), x2 ()) se aproximan a (1, 32 ) a medida que 0.

Figura 1.16: Punto ptimo en [1 3/2]t


En general, no podemos dar una solucin directa para (1.33) y (1.35) como en los dos ejemplos
anteriores, pero podemos usar el siguiente algoritmo:
Dados x0 > 0, 0 > 0, > 0 y k = 0
Paso 1. Hallar xk (k ), el minimzador de B(x | )
Paso 2. Parar si k < . Caso contrario, elegir un k+1 , tal que
0 < k+1 < k
Paso 3. Hacer k = k + 1 y volver al paso 1.
Entonces xk (k ) x cuando k 0
El parmetro de penalizacin k debe aproximarse iterativamente hacia cero, en general
consiste en hacer 0 = 1 y k+1 = 10k para k = 1, 2, ...
En el paso 1, para hallar x() usamos el mtodo de Newton para resolver el sistema de n
ecuaciones con n variables:
f (x)

B
(x | ) =

= 0,
xj
xj
xj

j = 1, ..., n

38

CAPTULO 1. PRELIMINARES

Captulo 2
Puntos Interior para programacin
lineal
Desde su publicacin por George B Dantzig en 1947 el mtodo simplex ha demostrado
sobradamente ser altamente eficaz para resolver todo tipo de problemas de programacin
lineal, el hecho de que en determinadas circuns-tancias su complejidad sea exponencial ha
motivado en los ltimos aos un elevado nmero de intentos, tanto tericos como prcticos,
de obtener otros procedimientos con mejor convergencia computacional.
El primero de gran transcendencia terica es debido a L. G. Khachiyan en 1979. Este autor
recopilando una serie de trabajos e ideas de los autores rusos Shor, Yudin y Nemirovskii sobre
un mtodo basado en la generacin de una sucesin de elipsoides para resolver problemas de
programacin no lineal, los aplic e hizo extensivo a programacin lineal dando lugar al conocido como mtodo de las elipsoides. Su principal ventaja terica sobre el mtodo simplex radica
en que resuelve problemas de programacin lineal en tiempo polinmico; es decir, posee una
convergencia computacional terica polinmica. Las implementaciones prcticas, sin embargo,
han demostrado su desventaja res-pecto al mtodo simplex ya que, por un lado, el nmero de
iteraciones que requiere para llegar al ptimo es muy grande y, por otro, el trabajo que implica
cada una de ellas es mucho ms costoso que el requerido por el mtodo simplex, pues no se
pueden aplicar las tcnicas de matrices dispersas tan ca-ractersticas de las implementaciones
en ordenador de este ltimo. En el ao de 1 984, N. K. Karmarkar, de los laboratorios Bell
de la compaa AT&T, propuso un nuevo algoritmo de complejidad polinmica para resolver
pro-blemas de programacin lineal. Lo contrario que el mtodo de las elipsoides, las implementaciones prcticas a que ha dado lugar en los ltimos aos los presentan como un gran rival
del mtodo simplex en cualquier tipo de pro-blemas y especialmente en los de gran tamao
que surgen de aplicaciones del mundo real.
El mtodo propuesto por Karmarkar es bastante diferente del simplex. Considera el problema lineal dentro de una estructura geomtrica de tipo simplicial y una estrategia de movimien39

40

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

tos para obtener los distintos puntos del proceso iterativo en el interior del poltopo o poliedro
que definen las condiciones. Este poltopo se transforma de tal manera que el punto del proceso iterativo en el que est en cada procedimiento sea el centro del poltopo o poliedro en
el espacio transformado. Este nuevo concepto o enfoque de tratar el problema es decir, llegar
al ptimo a travs de puntos interiores de la regin factible, ha motivado numerosas nuevas
ideas dentro del apartado genrico de algoritmos o mtodos de puntos interiores, tanto para
programacin lineal como no lineal.
Mtodo de Punto interior para Programacin lineal:
Se denominan mtodos de punto interior precisamente porque los puntos generados por estos
algoritmos se hallan en el interior de la regin factible. Esta es una clara diferencia
respecto del mtodo simplex, el cul avanza por la frontera de dicha regin movindose
de un punto extremo a otro.
En la figura adjunta se muestra la trayectoria seguida para alcanzar el punto ptimo x
desde el punto inicial x0 .
a) El mtodo del simplex
b) El mtodo de punto interior

Figura 2.1: Simplex y Punto interio


Los procedimientos numricos de puntos interiores para resolver problemas de programacin lineal basan su estrategia en.
Encontrar un punto de partida factible en el interior de la regin factible del problema
Definir una direccin de movimiento tal que, conservando la factibilidad del problema,
movindose a lo largo de ella, se avance hasta un punto en el que se deduzca el valor de
la funcin objetivo.

41
Cundo pararse. Es decir, cuntas veces se debe realizar la operacin descrita en el punto
2 y cmo identificar que se ha alcanzado el ptimo del problema.
La direccin de movimiento d calculada en cada iteracin del algoritmo no puede ser una
direccin cualquiera. Concretamente, d debe verificar dos condiciones para ser considerada
una buena direccin: Una que preserve la factibilidad del nuevo punto y la otra debe mejorar
el valor de la funcin objetivo, la direccin de mxima pendiente: en este caso c , por ser
lineal la funcin objetivo.

Desventajas del Mtodo Simplex


Puede realizar un nmero exponencial de iteraciones, pues se desplaza por los vrtices de
un poliedro. Para ciertos problemas en espacios de dimensin n, puede tomar alrededor
de 2n iteraciones
Implementacin computacional sofisticada
Peligro de ciclaje ante degeneracin
Ineficiencia para problemas de gran tamao.

Ventajas y Desventajas del MPIPD


Desventajas
No converge a un vrtice como lo hace el Simplex

Ventajas
Rpido, aproximadamente nL iteraciones
Fcil de implementar.
Teorema 2.1 Sea K Rn abierto y convexo, f : K 7 R, f C 1 (K). Entonces f es
convexa si, y slo si f (y) f (x) + f (x)t (y x), para todo x, y K.
Prueba. Sea f convexa como en la hiptesis del teorema, x, y K, [0, 1] . Luego, f (y +
(1 )x) f (y) + (1 )f (x). Por lo tanto,
f (x + (y x)) f (x) (f (y) f (x))
Entonces

f (x + (y x)) f (x)
f (y) f (x)
0

lm

42

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

Luego,
f (x)t (y x) f (y) f (x)
Por lo que tenemos
f (x) + f (x)t (y x) f (y)

para todo x, y K.

Reciprocamente, si f (y) f (x) + f (x)t (y x), para todo x, y K, al hacer x = z =


y + (1 )x, [0, 1] y tambin y = x o y = y tenemos:
f (x) f (z ) + f (z )t (x z )
f (y) f (z ) + f (z )t (y z )

Multiplicando por (1 ) a la primera y por al segundo, y sumando se tiene


(1 )f (x) + f (y) (1 )(f (z ) + f (z )t (x z ))
+(f (z ) + f (z )t (y z ))

= f (z ) + f (z )t (x z x + z + y z )
= f (z ) + f (z )t (y + (1 )x z )

= f ((1 )x + y).

Teorema 2.2 Si el problema de minimizacin con restricciones de igualdad y desigualdad es


un problema de programacin convexa, y en x son vlidas las condiciones generales de KKT,
entonces x es minimizador global.

Prueba. Definamos = {x Rn : h(x) = 0, g(x) 0} y tomamos x con x 6= x . Si


Rn y Rp son los multiplicadores lagrangianos respectivamente, entonces
m
X
i hi (x ) + i gi (x ) = 0
f (x ) +

(2.1)

i=1

h(x ) = 0
i gi (x ) = 0,
i 0,
gi (x ) 0,

i = 1, ..., p

i = 1, ..., p
i = 1, ..., p

(2.2)
(2.3)
(2.4)
(2.5)

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

43

Ahora, (2.2), (2.4) y (2.5) implican


m
P
X
X
f (x) f (x) +
i hi (x) +
i gi (x)
i=1

(2.6)

i=1

ya que hi (x) = 0 para i = 1, ..., m, gi (x) 0, i = 1, ..., p, y vale (2.4).


Aplicando la desigualdad del teorema anterior sobre f, hi y gi , vemos que
f (x) f (x ) + f (x )t (x x )

hi (x) = hi (x ) + hi (x )t (x x ) i = 1, ..., m
gi (x) gi (x ) + gi (x )t (x x ) i = 1, ..., p

Reemplazando en (2.6)
m
X
i (hi (x ) + hi (x )t (x x ))
f (x) f (x ) + f (x ) (x x ) +
t

i=1

P
X

i=1

i (gi (x ) + gi (x )t (x x )).

Usando las condiciones (2.1) - (2.5) vemos que f (x) f (x ). Por lo tanto, x es minimizador
global de un problema convexo.

2.1.

Puntos Interior Basado en Barrera Logartmica

Se denomina mtodos de puntos interiores precisamente porque los puntos generados por
estos algoritmos se hallan en el interior de la regin factible. Esta es una clara diferencia
respecto del mtodo Simplex, el cual avanza por la frontera de dicha regin movindose de un
punto extremo a otro
Un punto interior para problemas de programacin lineal en la forma estndar en un vector
que satisface las restricciones de igualdad, pero sus componentes deben ser estrictamente
positivas.
Si = {x Rn : Ax = b, x 0} denota la regin de factibilidad para un problema de
programacin lineal en la forna estndar, entonces ,nosotro decimos que el punto x es un punto
interior de , o que se encuentra en el interior de , si x 0 = {x Rn : Ax = b, x 0} .
La construccin de este mtodo est soportada por tres tcnicas numricas muy utilizadas
en optimizacin: Penalizacin interna, Lagrange y el mtodo de Newton. Un Newton para
minimizacin irrestricta, y los mtodos de Penalizacin interna y de Lagrange para convertir
problemas con restricciones en problemas irrestrictos..

44

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

2.1.1.

Construccin del mtodo

Consideremos los problemas Primal y Dual para programacin lineal en forma estndar
Minimizar ct x
Sujeto a:
Ax = b
x0

(P)

Donde c, x Rn , b Rm y A Rmn (m < n)


Maximizar bt y
Sujeto a:
At y + z = c
z0

(D)

Donde z Rn , y Rm .irrestricta. Pero debemos tener en cuenta lo siguiente


H1. El conjunto P = {x Rn : Ax = b,

x > 0} no vaco

H2. El conjunto T = {y Rm , z Rn : At y + z = c,

z > 0} no vaco

H3. La matriz A es de rango m


En estas condiciones, de acuerdo con el teorema de la adualidad, los problemas (P) y (D)
tienen solucin ptima, coincidiendo los valores de sus funciones objetivo Adems el
conjunto de soluciones ptimas de ambos problemas estn acotados..
La estratgia de este mtodo resuelve ambos problemas en forma simultnea.
Para x factible y (y, z), el duality gap (intervalo de dualidad)
duality gap = ct x bt y

= xt c xt At y

(Ax = b)

= xt z

(c At y = z)

(x, z 0)

= xt (c At y)

duality gap es cerrado en el ptimo x


ct x bt y = (x )t z = 0

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

45

por lo que las condiciones de complementaridad son:


xj zj = 0,

j = 1, 2, ..., n

Las condiciones de no negatividad sern manejadas por el mtodo de Ba-rrera logaritmica, y


las restricciones de igualdad por Lagrange. La funcin irrestricta resultante por el mtodo de
Newton.

Introduciendo primeramente la funcin Barrera a los (P) y (D)


Minimizar ct x

n
P

log(xj )

j=1

(2.7)

Ax b = 0
Maximizar bt y +

n
P

log(zj )

j=1
t

(2.8)

A y+zc=0
Vale recalcar que las barreras,

n
P

log(xj ) y +

j=1

n
P

log(zj ), no permiten que los puntos in-

j=1

teriores de (P) y (D) se aproximen a la frontera de la regin factible. Las barreras al estar
presentes en la funcin objetivo del problema de minimizacin aumentan la funcin objetivo
infinitamente a medida que el punto x se acerca a la frontera. Pero en programacin lineal el
ptimo x esta en un extremo, y aparentemente la barrera nos impedira de llegar a x . Para
contrarrestar este efecto usamos un parmetro de penalizacin equilibrante > 0.

A continuacin formando las funciones lagrangianas correspondiente de (2.7) y (2.8) tenemos:


n
X
t
log(xj ) y t (Ax b)
(2.9)
LP (x, y) = c x
j=1

LD (x, y) = bt y +

n
X
j=1

log(zj ) xt (At y + z c)

(2.10)

Calculando las derivadas parciales respectivas de (2.9) y (2.10), tenemos:


LP
x
LP
y

= c

At y = 0
xj

= b Ax = 0

(2.11)
(2.12)

46

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL


LD
= At y + z c = 0
x
LD
= b Ax = 0
y
LD

=
x = 0; xj zj =
z
zj

(2.13)
(2.14)
(2.15)

De (2.13) despejamos c = At y + z y sustituimos en (2.11) se tiene


At y + z

At y = 0
xj
xj zj =

j = 1, ..., n

estas expresiones despus de simplificar las expresiones algebraicas tenemo


Ax = b
A y+z =c
xj zj = ,
t

(2.16)
j = 1, ...n

Se observa que cuando = 0, las condiciones de OPtimalidad son satisfechas, pero por cuestiones numricas debemos fijar un > 0 y aproximarlo iterativamente hacia cero

Dados los puntos x, z Rn . definamos e = [1 1 1 ... 1]t Rn (n-vector de unos) y

X=

x1
0
..
.

0
x2
..
.

...

0
0
..
.

xn

1
x1

0
..
.

1
x2

...

0
0
..
.

1
xn

Z=

z1
0
..
.

0
z2
..
.

...

0
0
..
.

zn

notando que

X 1

..
.
0

Z 1

1
z1

0
..
.

1
z2

..
.
0

...

0
0
..
.

1
zn

Es decir, las condiciones de optimalidad simultneas, para un mismo de los problemas (P)
y (D) estn dadas por:
Ax = b
(2.17)
At y + z = c
XZe = e

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

47

Si la solucin del problema del sistema de ecuaciones lineales (2.17) se designa mediante
[x(), y(), z()]t , para cada > 0. El duality gap es
g() = ct x() bt y()

= xt ()c xt ()Ay()

= xt () (c Ay())

= xt ()z()
=

(Ax() = b)

c At y() = z()

Al tender 0, g () converge a cero, lo que implica que x() y y() converge a la solucin
de los problemas (P) y (D), respectivamente.

es una aproximacin del intervalo de dualidad, y debemos aclarar, que si su valor decrece muy rpidamente se puede perder convergencia. El intervalo de dualidad puede incluso
aumentar. Si su valor disminuye muy lentamente se requiere muchas iteraciones.

Pero, por cuestiones numricas, nosotros debemos comenzar fijando un > 0 inicial y
aproximarlo iterativamente hacia cero.

Definamos la trayectoria central como:


C = {(x , y , z ); > 0}
La trayectoria central C es un arco de puntos estrctamente factibles, que juegan un rol
importante en la teoria de algoritmos Primal-Dual. Para cada > 0 se tiene los puntos (x ,
y , z ) C.
Otra manera de definir C es

F (x , y , z ) =
0
,
XZe-e

(x , z ) > 0

48

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

Se muestra de manera intuitiva la trayectoria central

x*

x0
x
Figura 2.2: Trayectoria central
El mtodo de puntos interiores Primal-Dual, encuentra soluciones ptimas (x , y , z ), aplicando variantes del mtodo de Newton a las tres condiciones de igualdad (2.17) y modificando
las direcciones de bsqueda y longitud de paso, de manera que las desigualdades (x, z) 0
sean satisfechas estrictamente en cada iteracin.

Clculo de la direccin de movimiento (Paso de Newton)

El mtodo Primal-Dual se basa en tomar como direcciones de movimiento las de Newton,


resultantes de resolver el sistema (2.17). Dada los puntos iniciales x0 , z 0 Rn , y 0 Rm , donde
x0 > 0 y z 0 > 0. Fijemos adecuadamente un valor inicial para el parmetro de penalizacin
= 0 . El sistema (2.17) lo podemos respresentar por F (x0 , y 0 , z 0 ) = 0.

Ax0 b

F (x0 , y 0 , z 0 ) = At y 0 + z 0 c = 0
XZe 0 e
La matriz Jacobiana de F (x0 , y 0 , z 0 ) es

A 0

0 0 0
J(x , y , z ) = 0 At
Z 0

I
X

(2.18)

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

49

para realizar una iteracin de Newton, resolvamos el sistema J(x0 , y 0 , z 0 )dw = F (x0 , y 0 , z 0 )
donde dw = [dx, dy, dz]t es el paso de Newton.

A 0

0 At
Z 0

dx
Ax0 b
0

I dy = At y 0 + z 0 c
X
XZe 0 e
dz

b Ax0

= c At y 0 z 0
0 e XZe

definamos los vectores residuales Primal y Dual


rp = b Ax0

rd = c At y 0 z 0
rc = 0 e XZe
Es decir, se resuelve el sistema

A 0

0 At
Z 0

0
dx
rp

I dy = rd
rc
X
dz

(2.19)

t
Obsrvamos que si xk P y y k , z k T. k = 0, 1, 2, ...., entonces rp = 0 y rd = 0.
El sistema (2.19) puede ser resuelto indirectamente, y puede ser visto como
Adx = rp

(2.20)

At dy + dz = rd

(2.21)

Zdx + Xdz = rc

(2.22)

multiplicando (2.21) por X y restando con (2.22), obtenemos


XAt dy Zdx = Xrd rc

(2.23)

multiplicando la ecuacin (2.23) por AZ 1 e involucrando (2.20) llegamos a un sistema


cuadrado para dy esto es
AZ 1 XAt dy = AZ 1 (Xrd rc ) + rp
calculada dy se puede calcular fcilmente dz y dx,de (2.21) y (2.22), en conjunto tenemos.

50

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

dy = (AZ 1 XAt )1 (AZ 1 (Xrd rc ) + rp )


dz = rd At dy
dx = Z 1 (rc Xdz)

(2.24)

Amplitud de movimiento (Longitud de paso)


El algoritmo bsico seguido por el mtodo de Puntos interiores consiste en, comenzando
por xo , generar una sucesin de puntos {xk } que nos lleve hasta el punto ptimo x
Cada nuevo punto se obtendr del anterior, siguiendo el procedimiento iterativo.
x(k+1) = x(k) + dx
Mediante (2.24) tenemos calculada el paso de Newton (dx, dy, dz)t . Ahora usamos dx como
una direccin en el xespacio y (dy, dz) como una direccin en el (y, z)espacio. Seguidamente
debemos elegir la longitud de los pasos en los dos espacios de modo que podamos desplazarnos
prudentemente, manteniendo x > 0, z > 0, esto es posible utilizando:
P
D

xj
= mn
:
1jn
dxj

zj
= mn
:
1jn
dzj

dxj < 0

dzj < 0

Ahora podemos dezplazarnos prudentemente, el siguiente punto (x1 , y 1 , z 1 ) ser calculado


mediante
x1 = x0 + P dx
y 1 = y 0 + D dy
z 1 = z 0 + D dz
donde h0, 1i es un parmetro que nos permite controlar que las posibles soluciones no
lleguen a la frontera de la regin factible, ni mucho menos salgan de la regin. En la prctica
se obtuvieron buenos resultados usndo = 0.95 y/o = 0.98, esto completa una iteracin
de Newton. La tcnica slo resuelve el sistema (2.17) con respecto a un 0 , para obtener una
aproximacin a la solucin ptima, deberamos reducir 0 , en cada iteracin.
Los puntos (x1 , y 1 , z 1 )t son utilizados como iniciales
para la
segunda iteracin de newton,
n
o
k k k t
que converge slo hacia una
al repetir esto, el mtodo genera una sucesin
x ,y ,z
solucin del sistema (2.17).
Ajuste del Parmetro Penalizador ()

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

51

Ahora debemos establecer un criterio para determinar cuando el punto actual x(k) est
lo suficientemente prximo a x . Penalizacin sugiere la disminucin iterativa de con la
finalidad de obtener una solucin para el problema de programacin lineal estndar, y nada
impide la disminucin del parmetro de penalizacin en cada iteracin de newton, dado k , el
siguiente parmetro penalizador es elegido mediante:
k+1

t k
c x bt y k
=
,
n2

k = 0, 1, 2, ..

donde n es el nmero de variables, esto produce una reduccin substancial en a cada paso
de newton, las iteraciones continan hasta que la diferencia
t k

c x bt y k

sea suficientemente pequea, esto se consigue controlando el error relativo

t k
c x bt y k
<
1 + |bt y k |

(2.25)

de (2.25), el denominador 1 + bt y k nos permite mantener una proporcin acerca de la aproximacin entre los valores objetivos primal y dual, se le sum 1 para evitar problemas de
precisin cuando el costo ptimo se acerca a cero. Por ejemplo, si para cada cierta iteracin k,
ct xk = 100000001 y bt y k = 100000000, el error absoluto es ct xk bt y k = 1. Sin embargo, el
t xk bt y k
tendr una aproximacin con una precisin de 8 dgitos, con lo cual ya
error relativo c 1+b
t yk
es razonable parar el algormo. Donde > 0 es la precisin deseada. En la prctica se utiliza
valores = [106 , 108 ] .

2.1.2.

El Algoritmo

Inicializacin: Dados y Rm y x, z Rn , donde x, z > 0. Definir la precisin requerida


> 0, el nvector columna e = [1 1..,1]t y el valor inicial de > 0.
Paso 1: Mientras

|ct x(k) bt y(k) |


< , no satisface, HACER
1+|bt y(k) |

Paso 2: Definir las matrices diagonales X = diag(x) y Z = diag(z)

rp = b Ax
Paso 3: Calcular
rd = c At y z

rc = 0 e XZ

1
t 1
1

dy = (AZ XA ) (AZ (Xrd rc ) + rp )


Paso 4: Calcular
dz = rd At dy

dx = Z 1 (rc Xdz)

52

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL


P = min

Paso 5: Calcular

1jn

D = min

1jn

Paso 6: Asignar

Paso 7: Hacer

2.1.3.

xj
dxj

zj
dzj

o
: dxj < 0
o
: dzj < 0

x x + (0.95)(P )dx
y y + (0.95)(D )dy

z z + (0.95)(D )dz
k+1 =

|ct xbt y|
n2

y volver al paso 1.

Implementacin y Experimentos

La implemetacin est hecha de un modo particular y con fines experimentales. hemos


utilizado Matlab 6.0, esto se justifica debido a la interface grfica y matricial que Matlab
otorga

Mtodo de puntos interiores Primal-Dual


function [x,v,iter]=MPInterior(A,b,c)
[m,n]=size(A); x=ones(n,1); y=ones(m,1); z=x; u=100; e=x iter=0;
while abs(c*x-b*y)/(1+abs(b*y)) > 0.000001;
X=diag(x); Z=diag(z);
rp=b-A*x; rd=c-A*y+z; rc=u*e-X*Z*e;
dy=(A*inv(Z)*X*A)\(A*inv(Z)*(X*rd-rc)+rp);
dz=rd-A*dy;
dx=Z\(rc-X*dz);
aP=-1/min(min(dx./x),-1); aD=-1/min(min(dz./z),-1);
x=x+0.95*aP*dx; y=y+0.95*aD*dy; z=z+0.95*aD*dz;
u=abs(c*x-b*y)/n^2; iter=iter+1;
end
v=c*x;
El programa resuelve problemas de programacin lineal en la forma estndar .
Minimizar ct x
Ax = b
x0
debemos advertir que P =aP y D =aD, ambos ejecutan el criterio de la razn. El parmetro
con que inicimos es =100, para reducir a cada iteracin se us u = abs(c0 x b0 y)/n2.

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

53

Con un parmetro de precisin de = 0,000001, y los puntos iniciales x = [1 1 . . .1]t , y = [0


0 . . .0]t y z = [1 1 . . .1]t , en la fila siete se tiene dx=Z\(rc-X*dz); que es equivalente a
Zdx=(rc-X*dz). Una vez ingresada la matriz A y los vectores b y c, llamamos MPInterior

Ejemplo 2.1 Considere el siguiente ejemplo de programacin lineal


Minimizar x1 + x2 + x3
x1 + 2x2 + 3x3 10
2x1 + x2 x3 20
x3 4
x1 , x2 , x3 0
llevando a su forma estndar tenemos
Minimizar x1 + x2 + x3
x1
2x1

+2x2
+x2

+3x3 x4
x3
x5
x6
x3
x1 , x2 , x3 , x4 , x5 , x6 0

= 10
= 20
=4

1 2 3 -1 0 0
10

A = 2 1 -1 0 -1 0 , b = 20 , c =

0 0 1 0 0 -1
4

La solucin factible para este problema dado por (puntos iniciales):

x(0)

30
5
15
75
30
11

1/4

, y (0) = 1/4 , z (0) =

1/4

1/4
1/4
1/4
1/4
1/4
1/4

1
1
1
0
0
0

con estos vectores iniciales se procede a aplicar el algoritmo para una i-teracin.
Iteracin 1
dado el vector de solucin, x(0) y z (0) , y las matrices, X y Z, para la primera iteracin

54

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

estn disponibles a travs de:

X=

Z=

30
0
0
0
0
0

0 0 0 0 0
5 0 0 0 0
0 15 0 0 0
0 0 75 0 0
0 0 0 30 0
0 0 0 0 11

1/4 0
0
0
0
0
0 1/4 0
0
0
0
0
0 1/4 0
0
0
0
0
0 1/4 0
0
0
0
0
0 1/4 0
0
0
0
0
0 1/4

1

1

1

e=
1

1

1

Las funciones objetivo del primal y dual, as como la brecha de dualidad (duality gap) y la
barrera de parmetros para estos vectores de inicio estn dados por
ct x = 50.00 ; bt y = 8.50;
MIENTRAS

c x bt y = 41.50

|ct x bt y|
= 4,3684 < ,
1 + |bt y|

HACER

calculando
dy =

1
1
(AZ 1 (Xrd rc ) + rp )
AZ XAt

dz = rd At dy

dx = Z 1 (rc Xdz)

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

55

Pues

rp = b Ax(0)

0

= 0
0

rd = c At y (0) z (0)

tenemos

-2.83

dy = 0.31 ; dz =

5.11

2.21
5.35
3.68
-2.83
0.31
5.11

; dx =

0
0
0
0
0
0

104.59
288.06
164.17
1173.23
333.06
164.17

Usando el criterio de la razn, se encuentra el tamao del paso del vector primal

xj (k)
p = min
: dxj (k) < 0, 1 j n
dxj (k)
p = mn {1.00} = 1.00
de igual manera para el vector dual.

zj (k)
d = min
: dzj (k) < 0, 1 j n
dzj (k)

d = mn {0.09} = 0.09

Usando un factor de tamao de paso del 95 %, para las nuevas iteraciones al final de la
primera iteracin, para el vector primal x, el vector dual y, y el vector reduccin de costo z

56
se obtiene

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL



129.36
104.59
30



288.06 278.66
5



164.17 170.97
15



x(1) = + (0.95) (1)

=
1173.23 1189.57
75



333.06 346.41
30



166.97
164.17
11

0.25
-2.83
0.01

y (1) = 0.25 + (0.95) (0.09) 0.31 = 0.28


0.25

5.11

0.25

0.25

0.25

z (1) =
+ (0.98) (0.09)

0.25

0.25

0.25

104.59
288.06
164.17
1173.23
333.06
164.17

reduciendo el valor del parmetro u

0.68

0.44


0.70


0.56

=
0.01


0.28


0.68

ct x =578.98 , bt y =8.36
(1) = 0,1

|ct xbt y|
n2

=0.1 570.62
=1.59
36

Con las nuevas iteraciones disponibles para el vector de costo reducido z, y el vector dual y,
un nuevo ciclo de iteracin se puede empezar. Las primeras diez iteraciones se muestran en
las siguientes tablas. El resumen para el vector dual y, y el valor objetivo del dual se muestra
en la tabla 1; para el vector solucin del primal y el valor objetivo del primal se muestra en la
tabla 2; y para el vector de costo reducido z, y el parmetro de barrera, , se muestra en la
tabla 3.

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA


iteracin

y1

y2

y3

57

Objetivo

0.01 0.28

0.68 8.36

0.01 0.28

0.69 8.53

0.01 0.37

0.84 10.89

0.01 0.49

1.23 14.79

0.00 0.50

1.44 15.77

0.00 0.50

1.50 15.98

0.00 0.50

1.50 16.00

0.00 0.50

1.50 16.00

0.00 0.50

1.50 16.00

10

0.00 0.50

1.50 16.00

Tabla 1

iter.

x1

x2

x3

x4

x5

x6

objt.

129.36 278.66 170.97 1189.57 346.41 166.97 578.98

14.88

21.41

13.84

89.24

17.32

9.84

50.13

8.99

8.02

5.13

30.42

0.87

1.13

22.14

10.00

4.22

4.06

20.62

0.17

0.06

18.28

11.78

0.47

4.00

14.04

0.00

0.00

16.02

11.99

0.00

4.00

14.00

0.00

0.00

16.00

12.00

0.00

4.00

14.00

0.00

0.00

16.00

12.00

0.00

4.00

14.00

0.00

0.00

16.00

12.00

0.00

4.00

14.00

0.00

0.00

16.00

10

12.00

0.00

4.00

14.00

0.00

0.00

16.00

Tabla 2

58

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL


iter

z1

z2

z3

z4

z5

z6

0.44 0.70 0.56 0.01 0.28

0.68 1.59

0.42 0.69 0.55 0.01 0.28

0.69 0.12

0.25 0.60 0.49 0.01 0.37

0.84 0.03

0.01 0.49 0.23 0.01 0.49

1.23 0.01

0.00 0.49 0.04 0.00 0.50

1.44 0.00

0.00 0.50 0.00 0.00 0.50

1.50 0.00

0.00 0.50 0.00 0.00 0.50

1.50 0.00

0.00 0.50 0.00 0.00 0.50

1.50 0.00

0.00 0.50 0.00 0.00 0.50

1.50 0.00

10

0.00 0.50 0.00 0.00 0.500 1.50 0.00


Tabla 3

de la tabla 2, despus de 10 iteraciones se tiene el punto ptimo y el valor ptimo


x = [12

14

0]0

v = 16

Ejemplo 2.2 Considere el siguiente problema


Minimizar
2x1 7x2
s.a
4x1 + 5x2 40
2x1 + x2 8
2x1 + 5x2 20
x1 , x2 0

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA

59

su forma estndar, dada por


Minimizar 2x1 7x2 + 0x3 0x4 0x5
s.a
4x1 + 5x2 + x3
= 40
x4
=8
2x1 + x2
x5 = 20
2x1 + 5x2
x1 , x2 , x3 , x4 , x5 0
y su correspondiente Dual del problema es
Maximizar
s.a

40y1 + 8y2 + 20y3


4y1 + 2y2 + 2y3 + z1
+z2
5y1 + y2 + 5y3
+z3
y1
+z4
y2
+z5
y3
z1 , z2 , z3 , z4 , z5 0

Comencemos tomando un punto inicial factitible

-4

0
0
y = 1 yz =

rd = 0.

10
7
4
1
1

0
x =

5
3
5
5
5

= 2
= 7
=0
=0
=0

en esta condicin tambin se puede observar que rp = 0 y

A partir de esta solucin factible, la figura adjunta muestra la sucesin generada por el

60

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL

algoritmo hasta llegar a la solucin ptima factible, el punto [0 8]t .

0
0

Punto inicial factible [5 3]t

iter
1
2
3
4
5
6

x0
x1
x2
x3
x4
x5
x6

=
=
=
=
=
=
=

5
2.35
2.27
1.18
0.12
0.01
0.00

3
6.07
6.12
7.02
7.90
7.99
8.00

0
Observamos ahora que, dada otro punto inicial infactible x =

1
1
1
1
1

10

2.1. PUNTOS INTERIOR BASADO EN BARRERA LOGARTMICA


0
0
y = 1 yz =

estos residuos son rp = 0

61

1
, Aqu se observ que rp 6= 0 y rd 6= 0, pero en el punto ptima

1
1
y rd = 0.

Se observ aqu, a pesar que el punto inicial es infactible [1 1]t , tambin el algoritmo hace
converge a la misma solucin ptima del problema la cual es [0 8]t , veamos la figura adjunta

0
0

punto inicial infactible [1 1]t

10

62

CAPTULO 2. PUNTOS INTERIOR PARA PROGRAMACIN LINEAL


iter
1
2
3
4
5
6
7
8

x0
x1
x2
x3
x4
x5
x6
x7
x8

=
=
=
=
=
=
=
=
=

1
0.93
3.14
2.99
1.13
0.09
0.01
0.00
0.00

1
1.77
5.16
5.53
7.07
7.93
8.00
8.00
8.00

ser puede observar que x0 y x1 corresponden a puntos an infactible, mientras que xk , k =


2, 3, 4, ..., estn" asociados
a puntos dentro de la regin de factibilidad. La solucin ptima en
#
0
el punto x =
8

Captulo 3
Experimentos Computacionales
Al ejecutar el programa con los ejemplos siguientes y ver su comportamiento de estos,
hemos usado el sistema operativo Windows-XP (Pentium-III), con un PC compatible y usando
procesador celeron(R) cpu 2.40 GHz, con 256 MB de memoria RAM.
Usamos el Matlab 6.0 para windows, Matlab es el nombre abreaviado de "MATrix LABoratory". MATLAB es un programa para realizar clculos numricos con vectores y matrices.
Como caso particular puede tambin trabajar con nmeros escalares, tanto reales como complejos. Una de las capacidades ms atractivas es la de realizar una amplia variedad de grficos
de dos y tres dimensiones. Matlab tiene tambin un lenguaje de programacin propio.
Cada resultado obtenido fu comparado con la ejecucin del algoritmo Simplex, utilizando
la tcnica M-grande.

Experimentos
Experimento 1:
Un carpintero hace sillas y mesas solamente. Las utilidades proyectadas para los dos productos son S/. 20 por silla y S/. 30 por mesa respectivamente. La demanda proyectada es
400 sillas y 100 mesas, cada silla requiere 2 pies cbicos de madera, mientras que cada mesa
requiere 4 pies cbicos.
El carpintero tiene un total de 1 000 pies cbicos de madera en stock. Cuntas sillas y
mesas debe construir para aumentear al mximo sus utilidades?
Sean
x1 el nmero de sillas
x2 el nmero de mesas
estas son las variables desconocidas, para ste problema.
63

64

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES


El carpintero quiere aumentar al mximo sus utilidades, esto es
20x1 + 30x2

sujeto a las restricciones que:

El importe total de madera para los dos productos no puede exceder los 1 000 pies
cbicos disponibles

Los nmeros de sillas y mesas a ser hechas, no deben exceder las demandas,

El nmero de sillas y mesas necesitan ser no negativos.


por lo que tenemos:
Maximizar 20x1 + 30x2
2x1 + 4x2 1 000
0 x1 400
0 x2 100
aadiendo las variables auxiliares x3 , x4 , x5 y llevando a su forma estandar, tenemos.
Minimizar 20x1 30x2 + 0x3 + 0x4 + 0x5
2x1 + 4x2 + x3 + 0x4 + 0x5 = 1 000
x1 + 0x2 + 0x3 + x4 + 0x5 = 400
0x1 + x2 + 0x3 + 0x4 + x5 = 100
x1 , x2 , x3 , x4 , x5 0
Al introducir los datos en el computador

2 4 1 0 0

A= 1 0 0 1 0
0 1 0 0 1

1000

b = 400 ; c =

100

-20
-30
0
0
0

65
y ejecutando el programa de punto interior se obtuvo

x=

400.00
50.00
0.00
0.00
50.00

con valor ptimo v = -9499.99, como el problema es de maximizacin v = 9499.99


Experimento 2
Supongamos que un carpintero fabrica tres tipos de puertas en diferentes medidas: pequeas, medianas y grandes. La utilidad que obtiene por cada una de ellas es de 100, 130 y
150 nuevos soles, respectivamente. El tiempo de elaboracin es de 5h, 7h y 10h por cada tipo
de puerta en el orden en que se menciona. Adems, el consumo em m2 de madera es de 2,4,
2,8 y 3,2 para cada una de las puertas, en el mismo orden antes mencionado. Finalmente, el
carpintero estima que puede vender a lo mucho 3 puertas pequeas, 5 medianas y 5 grandes
semanalmente. Por ltimo, l dispone de 40h a la semana y de 30m2 de madera por semana.
Encuentre el modelo de programacin lineal que maximice la utilidad del carpintero.
Solucin: Sean
x1 : numro de puertas pequeas
x2 : numro de puertas medianas
x3 : numro de puertas grandes

max 100x1 + 130x2 + 150x3


5x1 + 7x2 + 10x3 40
2,4x1 + 2,8x2 + 3,2x3 30
x1 3
x2 5
x3 5
x1 , x2 , x3 0
aadiendo las variables auxiliares x3 , x4 , x5 ,x6 y llevando a su forma estandar, tenemos.
mn 100x1 130x2 150x3 + 0x4 + 0x5 + 0x6 + 0x7 + 0x8

66

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES


5x1 + 7x2 + 10x3 + x4 = 40
2,4x1 + 2,8x2 + 3,2x3 + x5 = 30
x1 + x6 = 3
x2 + x7 = 5
x3 + x8 = 5
x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 0

5
7
10 1 0 0

2,4 2,8 3,2 0 1 0

A=
0
0 0 0 1
1

1
0 0 0 0
0
0
0
1 0 0 0

0
0
0
1
0

0
0
0
0
1

40

30

;
b=
3

y ejecutando el programa de punto interior se obtuvo

x(11)

3
4
0
0
13
0
1
5

c=

100
130
150
0
0
0
0
0

Experimento 3
Una compaia produce 2 tipos de fertilizantes: HI-Fosfato y LO-Fosfato. Tres materias
primas son utilizadas para manufacturar estes fertilizantes de acuerdo con la tabla.
Cantidad disponible
Materia Prima HI-fosfato LO-fosfato
(En toneladas)
1

1500

1200

500

Lucro lquido

S/. 15

S/. 10

Observamos en las columnas HI-Fosfato y LO-Fosfato indican las toneladas de materia


prima que son necesarios para producir una tonelada del respectivo fertilizante. Por ejemplo,

67
necesitamos de 2 toneladas de la materia 1 para producir 1 tonelada de HI-Fosfato. Se desea
saber cuanto de fertilizante debemos producir para obtener una mxima ganancia.
Solucin: Sean
x1 :

toneladas de HI-fosfato producido

x2 :

toneladas de LO-fosfato producido

max 15x1 + 10x2


2x1 + x2 1500
x1 + x2 1200
x1 500
x1 , x2 0
aadiendo las variables auxiliares x3 , x4 , x5 y llevando a su forma estandar, tenemos.
mn 15x1 10x2 + 0x3 + 0x4 + 0x5
2x1 + x2 + x3 + 0x4 + 0x5 = 1500
x1 + x2 + 0x3 + x4 + 0x5 = 1200
x1 + 0x2 + 0x3 + 0x4 + x5 = 500
x1 , x2 , x3 , x4 , x5 0

2 1 1 0 0

A = 1 1 0 1 0 ;
1 0 0 0 1

1500

b = 1200 ;
500

y ejecutando el programa de punto interior se obtuvo

x(7)

300
900
0
0
200

c=

15
10
0
0
0

Experimento 4 (Un problema de planificacin)


Supongamos que tenemos que escribir un trabajo en un tiempo mximo de 40 horas, el
trabajo consta de 200 pginas de texto, 62 tablas y 38 figuras. Para realizar este trabajo

68

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES

fueron consultados 4 trabajadores diferentes (tipeadores), los detalles de la rapidez, tarifa y


disponibilidad de cada trabajador son dados en la tabla adjunta. Cul ser la estrategia para
distribuir el trabajo entre los cuatro trabajadores de modo que el costo sea lo mnimo posible.
Tipo

Trabajador 1

texto

tabla

figura

Disponibilidad

Trabajador 2

Trabajador 3

Trabajador 4

0.50

10

0.55

0.60

14

0.65

pg/h

sol/pg

pg/h

sol/pg

pg/h

sol/pg

pg/h

sol/pg

12

0.60

11

0.60

10

0.50

11

0.55

tab/h

sol/tab

tab/h

sol/tab

tab/h

sol/tab

tab/h

sol/tab

1.20

0.90

1.00

0.80

fig/h

sol/fig

fig/h

sol/fig

fig/h

sol/fig

fig/h

sol/fig

14 horas

16 horas

12 horas

10 horas

Para formular matemticamente este problema, es decir para construir un modelo que
represente este problema, debemos primeramente definir las variables, esto es fundamental,
pues la complejidad de la formulacin depende de esta definicin. Debemos aclarar que no
existe una frmula explcita para el proceso de modelacin, sino que depende de la prctica,
sentido comn y habilidad.
La variable. Sea xi,j la cantidad de unidades de trabajo del tipo i a ser realiza por el
trabajador j. Claramente, i = 1, 2, 3 y j = 1, 2, 3, 4.
La funcin objetivo. Note que 0,5x1,1 + 0,6x2,1 + 1,2x3,1 representa el costo que demanda
el trabajador 1 se le es encargado realizar x1,1 pginas de texto, x2,1 tablas y x3,1 figuras. El
mismo razonamiento vale para el trabajador 2, el trabajador 3 y el cuarto trabajador. Asi, el
costo total debido a los cuatro trabajadores estar dado por
0,5x1,1 + 0,6x2,1 + 1,2x3,1 + 0,55x1,2 + 0,6x2,2 + 0,9x3,2 +
|
{z
} |
{z
}
Trabajador 1

Trabajador 2

+0,6x1,3 + 0,5x2,3 + x3,3 + 0,65x1,4 + 0,55x2,4 + 0,8x3,4


|
{z
} |
{z
}
Trabajador 3

Trabajador 4

Esta funcin (objetivo) debemos minimizar tanto como sea posible.

Las restricciones. Como son 200 pginas de texto, entonces el total de pginas de texto
digitadas por los cuatro trabajadores debe satisfacer
x1,1 + x1,2 + x1,3 + x1,4 = 200
Como son 62 tablas, la suma total de tablas realizada por los cuatro trabajadores debe satisfacer
x2,1 + x2,2 + x2,3 + x2,4 = 62

69
Por otro lado, como son 38 figuras, el total de figuras hechas por los cuatro trabajadores debe
satisfacer
x3,1 + x3,2 + x3,3 + x3,4 = 38
Adems, cada trabajador no debe exceder su disponibilidad. As, si el primer trabajador escribe
8 pginas de texto en una hora, l realizar una pgina en 1/8 de hora, entonces digitar x1,1
pginas de texto le tomar 18 x1,1 horas (el mismo razonamiento vale para las tablas y figuras),
como su disponibilidad es 14 horas, debemos tener
1
1
1
x1,1 + x2,1 + x3,1 14
8
12
5
Anlogamente para el segundo trabajador
1
1
1
x1,2 + x2,2 + x3,2 16
10
11
2
Para el tercer trabajador

1
1
1
x1,3 + x2,3 + x3,3 12
9
10
3

Para el cuarto trabajador

1
1
1
x1,4 + x2,4 + x3,4 10
14
11
2
Finalmente, como la ejecucin del trabajo no debe exceder las 40 horas, entonces la suma de
todas las horas utilizadas por los cuatro trabajadores no debe exceder esta cantidad, es decir
1
1
1
1
1
1
x1,1 + x2,1 + x3,1 + x1,2 + x2,2 + x3,2 +
12{z
5 } |10
11{z
2 }
|8
Trabajador 1

Trabajador 2

1
1
1
1
1
1
+ x1,3 + x2,3 + x3,3 + x1,4 + x2,4 + x3,4 40
10{z
3 } |14
11{z
2 }
|9
Trabajador 3

Trabajador 4

Las condiciones de no negatividad. Observe que las variables no pueden ser negativas, es
decir
i = 1, 2, 3 j = 1, 2, 3, 4
xi,j 0,
La formulacin matemtica. La funcin objetivo, las restricciones y las condiciones de no
negatividad, producen un modelo particular de problema de programacin lineal, una de las
representaciones que usaremos en en este ejemplo corresponde a:

Minimizar 0,5x1,1 + 0,6x2,1 + 1,2x3,1 + 0,55x1,2 + 0,6x2,2 + 0,9x3,2 + 0,6x1,3 + 0,5x2,3 + x3,3 +
0,65x1,4 + 0,55x2,4 + 0,8x3,4

70

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES

x1,1 + x1,2 + x1,3 + x1,4 = 200


x2,1 + x2,2 + x2,3 + x2,4 = 62
x3,1 + x3,2 + x3,3 + x3,4 = 38
1
1
x + 12
x2,1 + 15 x3,1 14
8 1,1
1
1
x + 11
x2,2 + 12 x3,2 16
10 1,2
1
1
x + 10
x2,3 + 13 x3,3 12
9 1,3
1
1
x + 11
x2,4 + 12 x3,4 10
14 1,4
1
x
8 1,1

1
1
1
+ 12
x2,1 + 15 x3,1 + 10
x1,2 + 11
x2,2 + 12 x3,2 +
1
1
1
x2,3 + 13 x3,3 + 14
x1,4 + 11
x2,4 + 12 x3,4 40
+ 19 x1,3 + 10
i = 1, 2, 3 j = 1, 2, 3, 4
xi,j 0,

Llevando a su forma estndar se resolvi este problema, tenemos:

x(13)

88
0
15
112
0
0
0
62
17,4
0
0
5,6
0
4,8
0
7,2
0

(3.1)

71
interpretando estos resultados
x1,1 = 88 :

Al trabajador 1 se le encarga 88 pginas de texto

x3,1 = 15 :

Al trabajador 1 se le encarga 15 figuras

x1,2 = 112 : Al trabajador 2 se le encarga 112 pginas de texto


x2,3 = 62 :

Al trabajador 3 se le encarga 62 tablas

x3,3 = 17,4 : Al trabajador 3 se le encarga 17 figuras


x3,4 = 5,6 : Al trabajador 4 se le encarga 6 figuras

Experimento 5 ( un problema de alimentacin)


Una fbrica agrcola produce comida para ganado, oveja, y pollos. Esto se hace mezclando
los siguientes ingredientes bsicos: maz, cal, soya, y harina de pescado. Esos ingredientes
contienen los siguientes nutrientes: vitaminas, protenas, calcio, y grasa. Los contenidos de los
nutrientes en cada kilogramo de ingredientes son resumidos en la tabla.
Nutrientes
Vitaminas Proteinas Calcio Grasa

Ingredientes
Maz

10

Cal

10

Soya

10

12

Harina de pescado

La fbrica debe producir 10, 6 y 8 toneladas de comida para ganado, comida para oveja,
y comida para pollo. Debido al desabastecimiento, una suma limitada de los ingredientes
est disponible, a saber: 6 toneladas de maz, 10 toneladas de cal, 4 toneladas de soya, y 5
toneladas de harina de pescado. Los precios por kilogramo de ingredientes son respectivamente
0.20, 0.12, 0.24 y 0.12 dlares. La cantidad de nutrientes mnimo y mximo que son permitidos
por kilogramo de comida de ganado, comida de oveja, y comida de pollo, estn resumidos a
seguir:
Nutrientes
producto

vitaminas

proteinas

calcio

Grasa

minimo

mximo

minimo

mximo

minimo

mximo

minimo

mximo

comida-ganado

comida-oveja

comida-pollo

6
6

6
6

4
4

72

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES

El objetivo de esta fbrica es adoptar una poltica la cual sea la ms ptima posible. Es decir,
que el costo de produccin sea minimizado, determinando la cantidad de kilogramos de los
ingredientes bsicos para alimentar el ganado, ovino y pollos, y cumplir adems con todas las
restricciones.
Solucin: El modelo matemtico correspondiente es
mn z = 0,20x11 + 0,20x12 + 0,20x13 + 0,12x21 + 0,12x22 + 0,12x23 + 0,24x31
0,24x32 + 0,24x33 + 0,12x41 + 0,12x42 + 0,12x43
Sujeto a:
x11 + x21 + x31 + x41 = 1000
x12 + x22 + x32 + x42 = 6000
x13 + x23 + x33 + x43 = 8000
x11 + x12 + x13 6000
x21 + x22 + x23 10000
x31 + x32 + x33 4000
x41 + x42 + x43 5000
2x11 + 0x21 + 4x31 2x41 0
4x11 x21 + 6x31 + 2x41 0
x11 + 3x21 x31 x41 0
4x11 + 2x21 + 2x31 + 5x41 0
2x12 + 0x22 + 4x32 2x42 0
4x12 x22 + 6x32 + 2x42 0
2x12 + 4x22 + 0x32 + 0x42 0
4x12 + 2x22 + 2x32 + 5x42 0
4x13 + 2x23 + 6x33 + 0x43 0
x13 2x23 + 6x33 + 2x43 0
0x13 + 4x23 + 0x33 + 0x43 0
4x13 + 2x23 + 2x33 + 5x43 0
Cuya solucin ptima aproximada fu
x = [3894,2 4273,65 1313,187 518,6 662,6 4077,8240 873,3 386,256
1443,17 1648,5 813,5 4094,8]t
Interpretando x1,1 = 3894,2. x1,2 = 4273,65 y x1,3 = 1313,187 son los kilogramos de
maz para ser incluidos en los alimentos para ganado, ovejas y pollos, respectivamente.
Los dems valores se pueden interpretar anlogamente.
Observacin 3.1 A partir del experimento 6, para generar problemas inmensos se construy

73
un programa en Matlab, a lo que llamamos generaPL_1 al ingresar las dimensiones m y n,
el programa produce un ejemplar de programacin lineal.

function [A,b,c]=generaPL_1(m,n)
A=round(100*rand(m,n)-100*rand(m,n));
x=round(100*rand(n,1));
b=A*x;
c=round(100*rand(n,1)-100*rand(n,1));

Experimento 6:
Aqu se gener un problema de programacin lineal con 90 restricciones y 110 variables,
resumiendo de estos resultados se tiene el siguiente cuadro.
m

Simplex 90 110
MPIPD

90 110

iteraciones tiempo (seg.) Valor Objetivo


164

8.03

1597.36

15

0.437

1597.40

Aqu se observa tambin que el algoritmo Simplex necesita aproximadamente 11 veces ms


de iteraciones, que las iteraciones de MPIPD, el cual solo realiz 15 iteraciones. En cuanto al
tiempo de ejecucin, la diferencia es de 7.59 segundos
Experimento 7:
Aqu se gener un problema de programacin lineal con 220 restricciones y 320 variables
y se obtuvo los siguientes resultados,
m

Simplex 220 320


MPIPD

220 320

iteraciones tiempo (seg.) Valor Objetivo


762

692.28

-185790

21

8.656

-185791.78

En este problema se muestra la eficacia del MPIPD respecto al Simplex, en cuanto al tiempo
de ejecucin y las respectivas iteraciones

74

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES

Conclusiones
En este trabajo se construy, detalladamente, el mtodo ms eficiente en la actualidad
que nos permite resolver el problema de programacin lineal a gran dimensin: El Mtodo de
puntos interiores Primal-Dual para programacin lineal.
Podemos concluir entonces que:

1. El mtodo de puntos interiores Primal-Dual es relativamente nuevo, y constituye una alternativa al mtodo Simplex.
2. Los mtodos de puntos interiores son mecanismos que abordan el problema de un modo
diferente: crean una sucesin de puntos por el interior de la regin de factibilidad, la
cual converge hacia un ptimo.
3. El mtodo de puntos interiores Primal-Dual est basado en tres estrategias numricas, El
mtodo de Newton, Lagrange y Penalizacin interna.
4. El mtodo de puntos interiores Primal-Dual es de fcil implementacin computacional. En
este caso usamos el Matlab.
5. En la parte experimental, cuando el Mtodo es sometido a problemas de grandes dimensiones, result tener un buen desempeo.

75

76

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES


.

Apndice A

Simplex:
Una Implementacin en Matlab del algoritmo simplex
function [z,x,iter] = SIMPLEX(A,b,c,colB)
format compact; format bank;
[m,n]=size(A);rmin=inf;iter=0;
parar=no;
while parar==no
iter=iter+1;
Bv=[ ];cBv=[ ];Nv=[ ];cNv=[ ];Rv=[ ];
for j=1:m
Bv=[Bv,A(:,colB(j))];
cBv=[cBv;c(colB(j))];
end
for j=1:n
repite=max(colB==j);
if repite==0
Nv=[Nv,A(:,j)];
cNv=[cNv;c(j)];
Rv=[Rv;j];
end
end
if abs(det(Bv))<1.e-9
error(Matriz B probablemente sea singular);
elseif inv(Bv)*b>-1.e-9
B=Bv;N=Nv;cB=cBv;cN=cNv;R=Rv;
else
error(B no define SBF);
end

77
Zj_Cj=cB*inv(B)*N-cN;
b_=inv(B)*b;
z0=cB*inv(B)*b;
[valor,k]=max(Zj_Cj);
yk=inv(B)*N(:,k);
x=zeros(n,1);
x(colB)=b_;
if valor<=1.e-9
parar=si; z=z0;
elseif yk<=1.e-9
parar=si; z=-inf;
else
rmin=inf;
for i=1:m
if yk(i)>1.e-9 & b_(i)/yk(i)<rmin
rmin=b_(i)/yk(i);r=i;
end
end
colB(r)=R(k);
end
end

78

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES

problema 1.6
Minimizar
x21

x1 + 2x2
6x1 + x22 8x2 + 20 = 0

function F = func (x,y)


F = [1+(2*x(1)-6)*y
2+(2*x(2)-8)*y
x(1)^2+x(2)^2-6*x(1)-8*x(2)+20];

function J = Jacobian(x,y)
J=[2*y 0 2*x(1)-6
0 2*y 2*x(2)-8
2*x(1)-6 2*x(2)-8 0];

Los valores iniciales


>> x = [1 2 ]t , y = 3,
Al resolver en el computador se observa despus de 6 iteraciones :
x(6) =

"

2.0000
2.0000

79

Apndice B
Notacin
En este apndice se lista la notacin principal usada en este trabajo.

A
x(k)
x
xi
X, Z
k
n
L
SBF
MP IP D
PL
KKT

Matriz m n
Diferentes puntos obtenidos por el algoritmo
Denotarn puntos ptimos o punto solucin
Componente de vectores
Matrices
Se reserva para indicar el nmero de iteraciones
Nmero de variables
Tamao de un ejemplar
Solucin bsica factible
Mtodo de puntos interiores Primal-Dual
Programacin Lineal
Condiciones de optimalidad de Karush-Kuhn-Tucker

80

CAPTULO 3. EXPERIMENTOS COMPUTACIONALES

Bibliografa
[BSS] Bazaraa M. S., Sherali H. D.,Shetty C. M. Nonlinear Programming, theory and Algorithms. Second Edition John Wiley & Sons, pp. 129-406, 1993
[ECP] E. Castillo,A. J. Conejo, P. Pedregal. R. Garca Alguacil. Formulacin y Resolucin de
Modelos de Programacin Matemtica en Ingeniera y Ciencia. Edicin Internet, pp.
193-287, 2002
[JGJ] Javier Garca de Jaln, Aprenda Matlab 6.5 como si estuviera en primero, Madrid
Agosto 2004
[HMM] Hern Morales Marchena, Matlab 7,primera edicin Marzo 2005
[MJS] Martinez J., Santos A., Mtodos Computacionales de Optimizao. IMECC-UNICAMP,
pp. 73-124, pp. 171-178, 1995
[LEL] Lima E. L. Curso de Anlise, Volume 2. Terceira Edio. IMPA, 1989
[LDG] Luenberger D. G., Programacin Lineal y no lineal. ADDISON-WESLEY
IBEROAMERICANA, 1 989
[TCP] Ticona Centeno Percy A., Optimizacin no Lineal-parte I. Escuela de matemticasUNSA, pp. 91-113, 2005
[YZH] Yin Zhang, A quick Introduction to Linear Programming, DRAFT, September 24, 2007.
pp. 33-52.

81

You might also like