Vous êtes sur la page 1sur 15

Universidad de Chile

Facultad de Ciencias Fsicas y Matematicas


Departamento de Ingeniera Matematica

Algoritmo del Pivote Complementario


(o M
etodo de Lemke)

Curso:
MA-5701: Optimizacion No lineal
Alumnos:
Arnold Garca
Emanuel Berrocal

Profesores de Catedra:
Jorge Amaya
Abderrahim Hantoute
Profesores Auxiliares:
Francisco Santiban
ez
Carlos Flores G.

2 de julio de 2012

Indice
1. Introducci
on y Motivaci
on

2. Problema Cuadr
atico
2.1. transformacion del problema cuadratico . . . . . . . . . . . . . . . . . . . . . . . . . .

2
3

3. Problema Complementario
3.1. Soluciones Complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4

4. Algoritmo del pivote complementario

5. Aplicaciones del Algoritmo


5.1. Ejemplo 1: Solucion Complementaria basica factible . . . . . . . . . . . . . . . . . . .
5.2. Ejemplo 2: Solucion Casi Complementaria basica factible . . . . . . . . . . . . . . . .
5.3. Propiedades del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
6
7

6. Algunos resultados acerca del M


etodo de Lemke.
6.1. Matrices copositivas y copositivas-plus. . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Acerca de la convergencia del metodo de Lemke. . . . . . . . . . . . . . . . . . . . . .

7
7
8

7. Conclusiones

11

8. Anexo
12
8.1. Codigo matlab del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.2. Pruebas realizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.

Introducci
on y Motivaci
on

En este informe se estudiara una manera de resolver el problema cuadratico a traves de un problema complementario a el, el cual surge de haber aplicado KKT a el problema cuadratico, donde
luego introduciremos el metodo de Lemke para resolver este problema y mostrar su convergencia en
un numero finito de iteraciones, bajo supuestos adecuados, veremos que el algoritmo o bien para con
una solucion complementaria basica o bien concluiremos que el sistema original es inconsistente.
Es interesante notar como un problema que es cuadratico, se puede llevar en la practica a un
problema lineal, y mas aun, como aquellas restricciones de desigualdades que a veces son incomodas
de trabajar, las podemos ver en el problema lineal (que llamaremos el problema complementario al
problema cuadratico), como restricciones de igualdad, luego de haber aplicado KKT.
Tambien lo interesante que veremos, es que el algoritmo que en una cantidad finita de pasos es
capaz de resolver aquel problema complementario, lo hara usando una tecnica parecida a Simplex
aplicado a un tableau, metodo que fue visto en el curso de Optimizacion.

2.

Problema Cuadr
atico
A continuacion el problema cuadratico:

Definici
on 2.1. Problema Cuadr
atico:
1 t
x Qx + ct x
2
s.a Ax b
x 0.

(P ) min

Donde:
Q: es una matriz simetrica de n x n.
A: es una matriz de m x n.
= Q+Qt la cual es simetrica
Observaci
on 2.1. Si Q no es simetrica, entonces podemos definir Q
2
= xt Qx+xt Qt x = 2xt Qx = xt Qx Por lo que siempre podremos considerar Q como
y ademas xt Qx
2
2
simetrica.
Dado que las restricciones son lineales podemos aplicar kkt a este problema.
sea
1

L(
x ,
u ,
v ) = xt Qx + ct x + (Ax b)u xv
2
tenemos:

x L = x L(
x,
u,
v ) = Qx + c + At u v = 0


Ax b
t t
(u , v )
=0
x

2.1.

transformaci
on del problema cuadr
atico

Como las restricciones son lineales por KKT, tendremos lo siguiente:


Qx + c + At u v = 0
ut (Ax b) = 0
vtx = 0
u, v 0
t
Qx + c + A u v = 0
ut (Ax b) = 0
vtx = 0
u, v 0
y = b Ax
y 0

o bien
y + Ax = b
v A u Qx = c
ytu = 0
vtx = 0
u, v 0
x, y 0
t

o bien


y
v

    
0 A
u
b

=
At Q
x
c
 t  
u
y

=0
x
v
   
y
u
,
0
v
x

()

3.

Problema Complementario
A partir de lo anterior Definimos el siguiente problema:

Definici
on 3.1.
(P C) w M z = q
wt z = 0
w, z 0

M :p p
q:p 1
w, z Rp

(1)
(2)
(3)

Se dice que wj y zj para cada j = 1, . . . , p es un par de variables complementarias.


Observaci
on 3.1. para el problema anterior (), tendramos los siguiente:
 
 
y
b
w=
, q=
v
c
 


u
0 A
z=
, M=
x
At Q
Donde:
x: Variable primal
y: Holgura primal
u: Variable dual
v: Holgura dual

3.1.

Soluciones Complementarias

Definici
on 3.2. Una solucion de (1)-(2)-(3) se llama soluci
on complementaria b
asica factible
si y solo si (w, z) es soluci
on b
asica factible de (1) a (3) y ademas una variable de cada par (wj , zj )
es basica.
Observaci
on 3.2. Si q 0 entonces basta tomar w = q z = 0 y se tiene una solucion de (1), (2),
(3). Con lo que ademas significa que x = 0, y = b, w = 0, v = c, es decir la solucion de (P ) es x=0.
Si q 0 entonces se agrega una nueva columna a la ecuacion (1):
w M z z0 e = q
(4)
wj zj = 0
j = 1, . . . p
(5)
wj , z j , z 0 0
j = 1, . . . p
(6)
donde e = (1, . . . , 1)t
As este nuevo problema posee solucion a traves de iteraciones,
pues tomamos z0 = max{qj : 1 j z}, z = 0, y w = q + ez0 , haciendo esto obtenemos una
solucion inicial para el sistema expuesto en (4), (5) y (6), las cuales son(solucion trivial):
z=0
w = q + z0 e
z0 = max{qj : j = 1, . . . , p}
La idea es partir de la solucion trivial y luego iterar hasta lograr una solucion de (4)-(5)-(6) con
z0 = 0, ie, una solucion de (P C)
Definici
on 3.3. Consideremos (4)-(5)-(6).
Una solucion factible (w, z, z0 ) de este sistema se llama solucion basica factible casi complementaria
si y solo si:
i) (w, z, z0 ) es solucion basica de (4), (6).
ii) Para alg
un s = 1, . . . , p, ws , zs son no basicas.
iii) z0 es basica
iv) Exactamente una variable del par (wj , zj ) es basica, para todo j = 1, . . . , p, j 6= s.

4.

Algoritmo del pivote complementario

Ya sabemos que si q 0 basta con tomar (w, z) = (q, 0) para que sea la solucion de (P C), por
lo que esta algoritmo sirve para el caso cuando q 0, por lo que tomamos el sistema de ecuaciones
entre (4) y (5). Y se procede:
hw
i
z
z0
Definici
on 4.1. Formamos el siguiente tableau I | M | 1 | q
Paso de Inicializaci
on: Sea qr = min{qi / i = 1, . . . , p} y pivotear en la columna z0 con fila r, para
hacer entrar z0 a la base.
Se define ys = zs y entramos al algoritmo:
Definici
on 4.2.

1 paso Sea ds la columna actualizada en el tableau bajo la variable ys , si ds 0, ir al paso 4. En otro caso, determinar el ndice r para la minima proporcion siguiente: dqersr =
n
o
min1ip dqeisi : dis > 0 donde qe es la actualizacion de la columna del lado derecho. finalmente si la variable basica en la fila r es z0 , ir al paso 3. En otro caso, ir al paso 2.
2 paso La variable basica en la fila r o es wl o zl , para alg
un l 6= s. La variable ys entra a la base y
el tableau es actualizado pivoteando en la fila r y en la columna ys . Si la variable que solo
deja la base es zl , entonces dejar ys = wl . Ir al paso 1
3 paso Aqu ys entra a la base, y z0 deja la base. Se pivotea en la columna ys y en la fila z0 ,
produciendo una solucion complementaria basica factible. Entonces parar
4 paso Se encontro un rayo extremo. Un rayo R = {(w, z, z0 ) + d / 0}, donde

en la posicion de la variable que entraria(fila ys )


1,
ds , en la fila de las actuales variables basicas
d=

0,
en todos los demas

5.

Aplicaciones del Algoritmo

A continuacion veremos los dos casos posible de solucion que nos puede dar el algoritmo del pivote
complementario.

5.1.

Ejemplo 1: Soluci
on Complementaria b
asica factible

Para este ejemplo, encontraremos una solucion complementaria basica factible. Tomaremos los
siguientes datos:


0 1 1
1
M = 1 2 1
q = 2
1 1 1
0
ahora empezamos la iteracion:
tendremos que en la 1 iteracion entrara z0 en la posicion r = 2, pues es el mnimo qr
variables
basicas
w1
w2
w3

|w1 w2 w3 | z1 z2 z3 | z0 | q
| 1 0 0| 0 1 1| 1| 1
| 0 1 0|1 2 1| 1 |2
| 0 0 1|1 1 1| 1| 0

sale w2 y entra z0

y por tanto saldra w2 de la base, quedando ys = z2 , lo que ademas implica que ds = z2 , luego el
tableau, queda de la siguiente forma, ademas se indica lo que entrara y saldra de la base:

variables
basicas
w1
z0
w3

|w1 w2 w3 |z1
| 1 1 0| 1
| 0 1 0| 1
| 0 1 1| 0

z2 z3 |z0 |
q
1 0| 0|3
2 1| 1|2
1 0| 0|2

sale z0 y entra z2

Luego, nos queda el siguiente tableau:


variables
basicas
w1
z2
w3

|w1
w2 w3 |z1 z2
z3 | z0 |
q
| 1 1/2 0| 1 0 1/2|1/2|2
| 0 1/2 0| 1 1
1/2| 1/2|1
| 0 1/2 1| 0 0 1/2|1/2|1

Fin, pues z0 salio (estamos


en el paso 3 del algoritmo)

Con lo que se obtuvo la siguiente solucion complementaria basica factible:


(w, z)t = (2, 0, 1, 0, 1, 0)
Observaci
on 5.1. NOTAR: que despues de la 1 iteracion siempre tendremos que q 0

5.2.

Ejemplo 2: Soluci
on Casi Complementaria b
asica factible

Para este ejemplo, encontraremos una solucion complementaria basica factible. Tomaremos los
siguientes datos:

0
0
1 1
1
0
4
0 1 2

M =
q
=
1 1
2
2 2
1 2 2 2
4
ahora empezamos la iteracion:
tendremos que en la 1 iteracion entrara z0 , en la posicion r = 4, pues es el mnimo qr
variables
basicas
w1
w2
w3
w4

|w1 w2 w3 w4 | z1 z2 z3 z4 | z0 | q|
| 1 0 0 0| 0
0 1
1| 1| 1|
| 0 1 0 0| 0
0
1 2| 1| 4|
| 0 0 1 0| 1 1 2
2| 1|2|
| 0 0 0 1|1
2
2 2| 1 |4|

sale w4 y entra z0

y por tanto saldra w4 de la base, quedando ys = z4 , lo que ademas implica que ds = z4 , luego el
tableau, queda de la siguiente forma, ademas se indica lo que entrara y saldra de la base:
variables
basicas
w1
w2
w3
z0

|w1 w2 w3
| 1 0 0
| 0 1 0
| 0 0 1
| 0 0 0

w4 |z1
1| 1
1| 1
1| 2
1| 1

z2
2
2
3
2

z3
3
1
4
2

z4 |z0 |
q|
3| 0|5|
0| 0|8|
4 | 0|2|
2| 1|4|

sale w3 y entra z4

despues de esta iteracion tendremos que ys = z3 , por lo que ds = z3 , luego, el tableau, quedara:
variables
basicas
w1
w2
z4
z0

|w1 w2
w3
w4 | z1
z2 z3 z4 |z0 | q|
| 1 0 3/4 1/4|1/2
1/4
0 0| 0|7/2| debera salir w1 y debera entrar z3
| 0 1
0
1|
1
2 1 0| 0| 8|
| 0 0
1/4 1/4| 1/2 3/4 1 1| 0|1/2|
| 0 0 1/2 1/2|
0 1/2
0 0| 1| 3|

Tal como sale en el tableau, deberamos tener seg


un el algoritmo que z3 debiese salir, pero resulta,
en este caso ds 0, por lo que estamos en el paso 4 del algoritmo, as la solucion final es:
R = {(w, z, z0 ) = (7/2, 8, 0, 0, 0, 0, 0, 1/2, 3) + (0, 1, 0, 0, 0, 0, 0, 1, 1, 0) : 0}
Donde cada punto del conjunto R satisface (4)-(5)-(6).

5.3.

Propiedades del algoritmo

Lema 5.1. Supongamos que cada solucion basica factible casi complementaria de (4)-(5)-(6) es no
degenerada, es decir, cada variable basica es positiva. Entonces los vectores (w, z, z0 ) generados por
el algoritmo no se repiten, es decir el algoritmo se detiene al cabo de un n
umero finito de iteraciones.
Lema 5.2. Bajo las hipotesis de no degenerancia, supongamos que el algoritmo encuentra un rayo
extremo, esto es:
(w,
z, z0 ) + (w,
z, z0 )
con (w,
z, z0 ) casi complementaria, basica factible.
Entonces:
(i) (w,
z, z0 ) 6= 0,

w,
z, z0 0

(ii) w M z z0 e = 0
(iii) w t z = w t z = w t z = w t z = 0
(iv) z 6= 0
(v) zM z = (et z)
z0 0

6.

Algunos resultados acerca del M


etodo de Lemke.

A continuacion y en la seccion siguiente se veran algunos resultados del metodo de Lemke, en


particular respecto a la convergencia de este metodo y la relacion entre las soluciones del algoritmo
y las soluciones del problema complementario definido por las ecuaciones (1) (2) (3).
Primero partiremos por caracterizar un tipo especial de matrices que usaremos en varios de los resultados que siguen a continuacion.

6.1.

Matrices copositivas y copositivas-plus.

Partiremos con la siguiente definicion:


Definici
on 6.1. Sea M matriz de p p. Se dice que M es copositiva si y solo si z t M z > 0 z > 0.
Si ademas,
)
ztM z = 0
= (M t + M )z = 0
z>0
Se dice que M es copositiva-plus.
Recordemos que:



0 A
M=
At Q
Ahora veamos en que casos la matriz M es copositiva y/o copositiva-plus.

Teorema 6.1. Sea Q simetrica, luego:


i) Q copositiva M copositiva.
ii) Q copositiva-plus M copositiva-plus.
Demostracion.
i ) Sea z t = (xt , y t ) > 0, luego


0 A
z M z = (x , y ) t
A Q
t

 


x
Ay
t t
= (x , y )
= y t Qy > 0
y
At x + Qy

ii ) Supongamos que z t M z = 0 y z > 0, entonces






0 0
0
t
(M + M )z =
z=
0 2Q
2Qy
Pero dado que
ztM z = 0

y t Qy
(Q + Qt )y
2Qy
(M + M t )z

=0
=0
=0
=0

y como Q es copositiva-plus

Ademas se puede demostrar que:


i ) Si Q es semidefinida positiva entonces M es copositiva-plus.
ii ) Si Q = qij es tal que qij > 0 i, j, entonces M es copositiva. Si ademas qii > 0 i, entonces
M es copositiva-plus.

6.2.

Acerca de la convergencia del m


etodo de Lemke.

Teorema 6.2. Consideremos el sistema (4) (5) (6) y supongamos que cada solucion complementaria basica factible es no degenerada. Supongamos ademas que M es copositiva-plus.
Entonces el algoritmo de Lemke se detiene en una solucion complementaria basica factible del sistema (1) (2) (3) si y solo si el sistema (1) (3) es consistente.
Demostracion. Supongamos que el algoritmo se detiene en una solucion complementaria basica factible de (1) (2) (3). Entonces se encuentra (w, z, z0 ) pero como z0 esta fuera de la base se tiene
que:
w Mz = q
wt z = 0
w, z > 0
Por lo tanto se cumple que el sistema (1) (3) es consistente.
Ahora supongamos que el algoritmo se detiene en una solucion basica factible casi complementaria,
luego la solucion de (4) (5) (6) es de la forma (w, z, z0 ) + (w,
z, z0 ).
Luego como estamos en un rayo extremo tenemos que z0 esta en la base y por la hipotesis de no
degenerancia se tiene que z0 > 0.

Ademas por el Lema (??)


z 6= 0,

zt M z = (1t z)z0 6 0.

z > 0,

Y como M es copositiva entonces zt M z > 0 y luego (1t z)z0 = 0.


As, dado que z 6= 0, entonces z0 = 0.
Luego, como w M z 1z0 = 0 tenemos w = M z, lo que implica que M z > 0.
Ademas del hecho que zt M z = 0 y dado que M e copositiva-plus obtenemos que (M + M t )
z=0
t
Es decir, M z = M z 6 0, por lo tanto
M t z 6 0
(7)
Por otro lado, sabemos que:
w M z 1z0 = q, luego
w
z z M t z (1t z)z0 = q t z
t

Del hecho que M t z = M z = w se tiene:


wt z + z t w (1t z)z0 = q t z
Y del Lema (??) se tiene wt z = z t w = 0, luego q t z = (1t z)z0 , as
q t z < 0

(8)

De (7) y (8) y del hecho que z > 0 obtenemos


[I, M t ]
z 6 0,

q t z > 0

Luego, del teorema de Farkas tenemos que:


[I, M t ]t y = q,

y>0

No tiene solucion, es decir, notando y = (w, z)t el sistema


w + M z = q
w, z > 0
No tiene solucion, luego, (1) (3) es inconsistente.
Teorema 6.3. Si M es copositiva-plus y todos sus elementos son positivos o nulos, salvo la diagonal
en que todos son positivos, entonces el algoritmo alcanza una solucion complementaria basica factible.
Demostracion. tarea??????
Teorema 6.4. Consideremos el problema:
(P C)

1 t
x Qx + ct x = f (x)
2
s.a Ax b
x 0.

min

Y supongamos que existe al menos una solucion factible. Supongamos ademas que el metodo de Lemke
es usado para resolver el problema complementario:
w Mz = q
wt z = 0
w, z > 0
Si el problema complementario es no degenerado y se cumple al menos una de las 3 condiciones
siguientes:

i) Q es semidefinida positiva y c = 0.
ii) Q es positiva definida.
iii) qij > 0

i, j = 1, ..., n y q : ii > 0 i = 1, ..., n

Entonces el algoritmo se detiene al cabo de un n


umero finito de iteraciones, en un punto de KuhnTucker del problema (P C).
Ademas, si Q es semidefinida positiva y el algoritmo se detiene en un rayo extremo de (P C), entonces
es no acotado.
Demostracion.
i ) Supongamos que el algoritmo termina en un rayo extremo. Como Q es semidefinida positiva entonces M es copositiva-plus, luego por el Teorema (6.1) se alcanza el rayo extremo solo si el sistema
siguiente no tiene solucion:

(
Ax + y =b

w M z =q
Qx At u + v =0

w, z >0
x, y, u, v >0
Por el Teorema de Farkas, el siguiente sistema tiene solucion (d, e)
d60
e60
Ae > 0
Atd + Qe > 0
bt d + c t e > 0

(9)
(10)
(11)
(12)
(13)

Multiplicando (12) por et > 0 :


eAt d et Qe > 0
(Ae)t d et Qe > 0

et Qe 6 0

pues (Ae)t 6 0

Como Q es semidefinida positiva et Qe = 0, luego Q 2 e = 0 Qe = 0.


Como c = 0, de (13) bt d > 0. Y dado que hemos supuesto que Ax 6 b, x > 0 tiene al menos una
solucion, sea x > 0 esa solucion ,luego
Ax + y = b

y > 0

Tenemos
(Ax + y)t d > 0
x t A t d + y t d > 0
Pero de (12) se tiene que At d 6 Qe = 0, luego
ytd > 0

pues x > 0

Lo que establece una contradiccion con (9).


ii ) Razonando igual que en (i) obtenemos que e = 0
luego de (13)
y de (12)

bt d > 0 x t At d + y t d > 0
At d 6 0

Lo que implica la misma contradiccion.


iii ) Razonando igual que en los caso anteriores resulta que et Qe = 0 e = 0 lo que da el mismo
resultado que (ii).

7.

Conclusiones

Hemos visto que ciertos problemas cuadraticos bajo, supuestos adecuados, es posible obtener
su problema complementario a traves de KKT, por ejemplo, alguna de esas ventajas fueron que:
La matriz de restricciones fuera definida positiva o copositiva-plus, el algoritmo se detendra en un
numero finito de pasos.
Ademas vimos las condiciones que se deben cumplir para que el problema complementario tenga
solucion, haciendo al problema cuadratico un problema factible.

8.

Anexo

En este se anexo se encontrara el codigo matlab utilizado para realizar el algoritmo del pivote
complementario y ademas se encontraran algunas pruebas realizadas.

8.1.

C
odigo matlab del algoritmo

Aca se presenta el codigo Matlab para poder correr el algoritmo


%% Algoritmo de Pivote Complementario
function [w,z,z0,d]=pivote(M,q)
% M: Matriz de nxn.
% q: Vector en Rn.
n=length(M);
% base: si el elemento i de la base es k:
% k=1,...,n corresponde a los w_k
% k=n+1,...,2n corresponde a los z_k
% k=2n+1 corresponde a z0
base=1:n;
%%Paso 0 (Inicializaci
on)
if q>=0
w=q;
z=zeros(n,1);
z0=0;
d=zeros(2*n+1,1);
return
else
%Definir matrices
I=eye(n);
U=ones(n,1);
A=[I -M -U q];
[n m]=size(A);
%Elegir q_r
[minimo r]=min(q);
a=2*n+1;
%pivotear fila r, columna z0
A=Pivotear(A,r,a);
%variable que sale
var_s=base(r);
%Entra z0, actualizar base
base(r)=2*n+1;
end
while (true)
%%Paso 1
%Elegir variable que entra a la base
a=complementaria(var_s,n);
if A(:,a)<=0
%%%
%%Paso 4
%salida
w=zeros(n,1);
z=zeros(n,1);
d=zeros(2*n+1,1);
for i=1:n
ind=base(i);
if ind<=n
w(ind)=A(i,m);
d(ind)=-A(i,a);
elseif ind==2*n+1

z0=A(i,m);
d(2*n+1)=-A(i,a);
else
z(ind-n)=A(i,m);
d(ind)=-A(i,a);
end
end
d(a)=1;
return
else
%Elegir fila que sale
r=radio_test(A,a);
%actualizar variable que sale
var_s=base(r);
if var_s==2*n+1
%%Paso 3
A=Pivotear(A,r,a);
base(r)=a;
%salida
z0=0;
d=zeros(2*n+1,1);
w=zeros(n,1);
z=zeros(n,1);
for i=1:n
ind=base(i);
if ind<=n
w(ind)=A(i,m);
else
z(ind-n)=A(i,m);
end
end
return
else
%%Paso 2
A=Pivotear(A,r,a);
base(r)=a;
end
end
end
end
%% Funci
on para pivotear
function [B]=Pivotear(A,r,d)
[n m]=size(A);
P=eye(n);
P(:,r)=-A(:,d)/A(r,d);
P(r,r)=1/A(r,d);
B=P*A;
end
%% Funci
on complementaria
function x=complementaria(y,n)
x=mod(y+n,2*n);
if x==0
x=2*n;
end
end
%% Funci
on radio_test
function r=radio_test(A,a)
[n m]=size(A);

qq=A(:,m);
aa=A(:,a);
aa(aa<=0)=0;
[minimo r]=min(qq./aa);
end

8.2.

Pruebas realizadas

%% Primer ejemplo
% Solui
on complementaria basica factible:
% (w,z)=(2 0 1 0 1 0)
clear
clc
M=[0 1 1;1 2 1;1 1 1];
q=[1;-2;0];
[w,z,z0,d]=pivote(M,q)
%% Segundo ejemplo
% Soluci
on basica factible casi complementaria
% (w,z,z0)=(7/2 8 0 0 0 0 0 1/2 3) + L(0 1 0 0 0 0 1 1 0)
clear
clc
M=[0 0 1 -1;0 0 -1 2;-1 1 2 -2;1 -2 -2 2];
q=[1;4;-2;-4];
[w,z,z0,d]=pivote(M,q)