Professional Documents
Culture Documents
ii
ndice general
Introduccin
1. Preliminares
1.3. Finalizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
10
17
1.5.1. Dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
1.5.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
19
20
20
28
32
39
43
44
2.1.2. El Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
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
Captulo 1
Preliminares
1.1.
CAPTULO 1. PRELIMINARES
(1.3)
(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.
CAPTULO 1. PRELIMINARES
h = x Rn : pt x = k
h1 = x Rn : pt x k
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)
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
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)
"
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
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 )
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
ctN ]
"
B 1 b
0
= ctB B 1 b
!
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
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
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
10
CAPTULO 1. PRELIMINARES
1.3.1.
El Algoritmo Simplex
"
B 1 b
0
x=
"
B 1 b
0
br
bi
xk =
= mn
: yi,k > 0,
yr,k
yi,k
i = 1, ..., m
1.4.
Teoremas de convergencia
11
(1.18)
= f ((1 )x + x) (1 )f (x ) + f (x)
= f (x ) + (f (x) f (x )) < f (x )
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))
Ax = b
x 0
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.
13
(1.19)
"
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
(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
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.
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
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
1.5.
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.
1.5.1.
Dualidad
(1.22)
(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
1.5.2.
Primal
Dual
Primal
Dual
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
19
x 0
(1.24)
At y c,
y 0
(1.25)
Adems
1.5.3.
x0
w irrestricto,
vtx = 0
(Factibilidad Primal)
v0
(Factibilidad Dual)
(Complementariedad)
20
CAPTULO 1. PRELIMINARES
1.6.
1.6.1.
Mtodo de Newton
21
1
f (xk ),
f 0 (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
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
x=
x1
x2
..
.
xn
, F (x) =
f1 (x)
f2 (x)
..
.
fn (x)
f1 (x1 , x2 , ...xn )
f2 (x1 , x2 , ...xn )
..
.
fn (x1 , x2 , ...xn )
f1
x1
f2
x1
f1
x2
f2
x2
...
f1
xn
f2
xn
fn
x1
fn
x2
fn
xn
..
.
..
.
..
.
Rnn
(1.27)
23
1
F (xk )
J(xk )
(1.28)
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
"
1
2
"
6
10
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
>> 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
26
CAPTULO 1. PRELIMINARES
Ahora ejecutando newton con el otro punto inicial
"
9
3
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
"
1
1
"
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
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
"
J(x) =
"
3(x1 1)2
ex1 3
0
2x1
2x1
+2
1+x2
2
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)
x(15)
-1.68820905394305
1.40864292542700
=
-0.78048646281991
0.48442062541582
1.6.2.
Mtodo de Lagrange
Este mtodo numrico transforma un problema de optimizacin con restricciones de igualdad en un problema irrestricto.
29
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.
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
L
= 1 + (2x1 6) = 0
x1
L
= 2 + (2x2 8) = 0
x2
L
= x21 6x1 + x22 8x2 + 20 = 0
1 + (2x1 6)
F (x, ) = 2 + (2x2 8)
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
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
x1
x2
"
2.0000
2.0000
32
CAPTULO 1. PRELIMINARES
1.6.3.
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)
j=1
(1.32)
j=1
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.
(1.33)
El minimizador irrestricto debera ser (2,3), pero el minimizador para (1.33) es (x1 , x2 ) =
34
CAPTULO 1. PRELIMINARES
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)
500
400
300
200
100
0
-100
-200
-300
-400
4
3
2
1
0
0.5
1.5
2.5
3.5
35
36
CAPTULO 1. PRELIMINARES
40
35
30
25
20
15
10
5
0
4
3
2
1
0
0.5
1.5
2.5
3.5
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)
37
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
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
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.
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
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.
= f (z ) + f (z )t (x z x + z + y z )
= f (z ) + f (z )t (y + (1 )x z )
= f ((1 )x + y).
(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)
43
(2.6)
i=1
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.
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
2.1.1.
Consideremos los problemas Primal y Dual para programacin lineal en forma estndar
Minimizar ct x
Sujeto a:
Ax = b
x0
(P)
(D)
x > 0} no vaco
H2. El conjunto T = {y Rm , z Rn : At y + z = c,
z > 0} no vaco
= xt c xt At y
(Ax = b)
= xt z
(c At y = z)
(x, z 0)
= xt (c At y)
45
j = 1, 2, ..., n
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
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.
LD (x, y) = bt y +
n
X
j=1
log(zj ) xt (At y + z c)
(2.10)
= c
At y = 0
xj
= b Ax = 0
(2.11)
(2.12)
46
=
x = 0; xj zj =
z
zj
(2.13)
(2.14)
(2.15)
At y = 0
xj
xj zj =
j = 1, ..., n
(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
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
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.
F (x , y , z ) =
0
,
XZe-e
(x , z ) > 0
48
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.
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)
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
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)
(2.23)
50
(2.24)
xj
= mn
:
1jn
dxj
zj
= mn
:
1jn
dzj
dxj < 0
dzj < 0
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
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
rp = b Ax
Paso 3: Calcular
rd = c At y z
rc = 0 e XZ
1
t 1
1
dx = Z 1 (rc Xdz)
52
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
53
+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
x(0)
30
5
15
75
30
11
1/4
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
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)
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
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
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
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.
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.
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
z1
z2
z3
z4
z5
z6
0.68 1.59
0.69 0.12
0.84 0.03
1.23 0.01
1.44 0.00
1.50 0.00
1.50 0.00
1.50 0.00
1.50 0.00
10
14
0]0
v = 16
59
-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
A partir de esta solucin factible, la figura adjunta muestra la sucesin generada por el
60
0
0
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
0
0
y = 1 yz =
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
10
62
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
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
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,
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
66
5
7
10 1 0 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
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
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 :
x2 :
2 1 1 0 0
A = 1 1 0 1 0 ;
1 0 0 0 1
1500
b = 1200 ;
500
x(7)
300
900
0
0
200
c=
15
10
0
0
0
68
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
Trabajador 4
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
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
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,
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 :
x3,1 = 15 :
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
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
8.03
1597.36
15
0.437
1597.40
220 320
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
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
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
problema 1.6
Minimizar
x21
x1 + 2x2
6x1 + x22 8x2 + 20 = 0
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];
"
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
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