Está en la página 1de 21

6- Métodos de punto interior en

programación lineal (MPI)


DEFINICIONES
• Sea (P) el siguiente problema de programación
lineal:
(P) Min cTx /
Ax = b
x  0,
donde c  Rn, b  Rm y A es una matriz de rango
completo mxn con n>m.
• Sea la región factible
S = { x  Rn, / Ax = b, x  0 }
y su interior relativo:
S0 = { x  Rn, / Ax = b, x >0 }
• MPI: obtiene soluciones factibles intermedias en S0
2
• En forma genérica, sea:
Min f0(x) /
(1) fi(x)  0  i=1..m
A.x = b
Con fi convexa, dos veces contínuamente diferenciable,
Am,n, de rango m

• Asumimos que el problema anterior es estrictamente


factible, o sea, existe un punto interior al dominio z /
fi(z) < 0  i=1..m , Az=b
• El problema (1) lo podemos reformular como:
Min f0 ( x )  I
i 1.. m
 ( fi ( x )) /

A. x  b 3
Donde: I  ( u )  0  u  0, I  ( u )     u  0,
I-(u) es la una función indicatriz de R-:

-1 0

Aproximación de I-(u) con barrera logarítmica:

(2)
Min f0 ( x )  1
t  log( f ( x )) /
i 1.. m
i

A. x  b
4
• Así, (2) es un problema con restricciones de
igualdad lineales.
• Para t>0, -1/t. log (-u) es una aproximación
diferenciable de I- y la aproximación mejora
cuando t  

-1
• Propiedades de la barrera logarítmica: convexa,
dos veces contínuamente diferenciable
5
• Caso particular: prog. Lineal
la función barrera logarítmica es:
xRn, x>0  p(x)= - log xi = - log  xi
I=1..n i=1..n

• La barrera penaliza las variables próximas a cero, o


sea, la frontera de S. (III)
• DEF: x*=argmin p(x) xS0= es el centro analítico de S
(maximiza e producto de las variables)
• Idea principal: en cada paso el costo de (P) disminuye
y soluciones intermedias en S0 (no en S).
• A efectos de cumplir con ambos objetivos, se
construyen nuevas funciones objetivos penalizadas
donde aparece la función barrera, por ejemplo:
R, xR+n f(x)=cTx+p(x)
6
METODOS DE CAMINO CENTRAL (MCC):

• DEF: para cada valor de  queda definida una función


de la familia f(x), el punto donde se produce el mínimo
de esta función se llama punto central y a la curva x()
se le llama camino central para el problema (P)
x() = argmin f(x)
xS0

• PROPS: x() es diferenciable y x()  valor


óptimo de (P) cuando  crece
• Existen diferentes implementaciones del método de
camino central variando la forma en que se
parametriza la curva.
• Idea principal: en cada paso el costo de (P) disminuye
y soluciones intermedias en S0 (no en S).
7
• A efectos de cumplir con ambos objetivos: mejora
de costos y aproximación al centro analítico, se
construyen nuevas funciones objetivos penalizadas
(funciones auxiliares) donde aparece la barrera:

(a) Frish, Fiacco y McCormick. El parámetro  está asociado al


gap de dualidad:
R, xR+n f(x)=cTx+p(x)
(b) Huard, Renegar. El parámetro K es una cota superior del
costo óptimo y q n es una constante:
xS0 y cTx < K, fK(x)=-qlog(K-cTx)+p(x)
(c) Karmarkar. El parámetro v es una cota inferior del costo
óptimo y q n es una constante:
xS0 , fv(x)= qlog(cTx-v)+p(x)
(función potencial)

8
• Parametrizaciones en MCC: cada una de las anteriores
funciones auxiliares genera una parametrización diferente
x() del camino central:

(a) Primal-dual: R, xR+n , f(x)=cTx+p(x) (convexa)


El nombre de esta parametrización se debe a la estrecha relación
entre el parámetro  y el gap de dualidad : =n/ 
(b) Primal: xS0 y cTx < K, fK(x)=-qlog(K-cTx)+p(x) (convexa)
Es llamada primal debido a que el parámetro K es una cota superior
de la función objetivo primal.
(c) Dual: xS0 , fv(x)= qlog(cTx-v)+p(x) (no convexa)
Es llamada dual debido a que el parámetro v es una cota inferior del
valor óptimo del objetivo, estando asociado al valor de la función
objetivo dual, para alguna una solución dual factible

9
Parametrización primal-dual

20.0000

15.0000

10.0000
p(x)
cx
a1.cx+p(x)
a2.cx+p(x)
a3.cx+p(x)
a4.cx+p(x)
5.0000

0.0000
1 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190

-5.0000

10
Parametrización primal

150.0000

100.0000

50.0000
p(x)
cx
-q.log(K1-cx)+p(x)
-q.log(K2-cx)+p(x)
-q.log(K3-cx)+p(x)
-q.log(K4-cx)+p(x)
0.0000
1 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190

-50.0000

-100.0000

11
Paramerización dual

500.0000

400.0000

300.0000

200.0000
p(x)
cx
n.log(cx-v1)+p(x)
100.0000
n.log(cx-v2)+p(x)
n.log(cx-v3)+p(x)
n.log(cx-v4)+p(x)
0.0000
1 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190

-100.0000

-200.0000

-300.0000

12
ALGORITMO MCC GENERAL:

k=0
Repeat
1- Calcular  k+1=f(  k) , según sea la parametrización utilizada
2- Calcular xk+1= x( k+1) con algún algoritmo de optimización
3- k = k +1
Until ( k) < 2-L

13
Clasificación según la parametrización ()

Primal Primal-dual Dual

f(x) fK(x)=-qlog(K-cTx)+p(x) f(x)=cTx+p(x) fv(x)=qlog(cTx-v)+p(x)


f(x) q. c -x-1 c -x-1 q. c -x-1
K-cTx cTx-v

() (n/q)(K- cTx) n/  (n/q)(cTx-v)


Act.  K’=K+(1- ) cTx ’=  / v’= v+(1-) cTx
(0,1) (n/q,1)

14
Actualización del parámetro
A continuación se especifica la forma de actualizar el
parámetro  en el paso 1 del algoritmo general de MCC:
(a) Parametrización primal-dual:
 k+1=  k / donde   (0,1) es un número arbitrario
La elección de  influye sobre la complejidad del algoritmo y depende
si se elige un modelo de “paso” corto o largo.
(b) Parametrización primal
KK+1=Kk+(1- ) cTxK
KK es una sucesión decreciente, cTxK+1 < cTxK y (K)=K- cTxk es
decreciente
(c) Parametrización dual
vk+1= vk+(1-) cTxk, con q>n para que exista convergencia y (n/q,1)

15
Cálculo de xK+1 (ver I,II)

En el paso 2 del algoritmo general de MCC se hacía


referencia al cálculo de xK+1 mediante un algoritmo de
optimización. El algoritmo usado más frecuentemente es
el “scaling steepest descendent” (SDD).

• Escalado de variables: sea el cambio de variables x=Dy donde D es


diagonal positiva. Dado x0S0 se escala respecto a x0 mediante la
transformación x=X0y / X0 =(x01,.. X0n) NOTA: el punto x0 se
transforma en el e (vector de n unos).
• Descomposición de un vector en espacios ortogonales: sean
Am,n y d Rn, d puede ser descompuesto de una única forma
en d=dx+dy donde:
dx  N(A)={x Rn/ Ax=0} y
dy  R(A)={x Rn/ x=Atw, w Rm}
• La operación proyección es una transformación lineal
representada por PA
16
ALGORITMO SDD GENERAL:

Sean x0S0 y f: S0  R contínuamente diferencible


k=0
Repeat
1- Escalado: A’=AXK, g’=XK  f(xK)
2- Dirección de búsqueda: h’=-PA’.g’
3- Búsqueda lineal: y=e+h’ / y’>0
4- Escalado: xK+1=XK.y’
5- k = k +1
Until ||h’(x, )|| < 

17
Sean (P) Min cTx / y su dual (D) Max bTw /
Ax = b Atw + z = c
x  0, z  0,
Lema: z Rn es una holgura dual factible de (D) 
z  0 y PAz=PAc
Demos: sea z  0 , z es holgura dual factible para (D) 
para algún wRm, c - z = Atw. Por otro lado, c – z
puede descomponerse de forma única en:
c-z = PA(c-z)+ Atw  PAz=PAc. 

NOTA: Aplicando el lema anterior, dada x1  S, (D) es


equivalente a: Min x1Tz /
PAz = PAc,
z  0,

18
Cálculo del gap para la parametrización primal-dual:

Sean x() los puntos del camino central, entonces PAf (x)=0,
o sea: PAc-PAx-1=0  PAc=PAx-1  cp =PAc =PAx-1/ ,

Como x-1/   0 y PAx-1/ = cp =PAc, aplicando el lema anterior,


x-1/  es una holgura dual factible  el gap de dualidad será:
= x(). x-1 ()/  = n/ 

19
ALGORITMO DE KARMARKAR:
• Sea el problema (P), presentado de la siguiente forma:
(P) Min cTx / A’x = 0
aTx = 1, x  0,
• Este formato se puede obtener directamente introduciendo variables en el
(P) original.
• Sea q=n en la función potencial, e inicialmente v=0, entonces:
f0(x)=nlog(cTx)+p(x) ,
esta función es homogénea de grado 0: f0(bx)= f0(x) para cualquier b>0,
x>0.
• Sea x>0 / A’x=0 pero aTx>0 1  x/ aTx es factible y tiene el mismo valor
potencial
• De acuerdo a lo anterior se puede seguir el siguiente esquema:
1- Eliminar la restricción aTx =1
2- Usar SSD para encontrar f0
3- Calcular x’= xK/ aTxK
• Si v  0, las conclusiones anteriores son válidas, considerando:
v’=v. aTx (sigue siendo factible) y f0(x)=nlog(c-v’a)Tx.p(x)
20
fv(x)=nlog(cTx-v)+p(x) ,
v= valor óptimo conocido (si se desconoce, calcular vkv)
v0v, cota inferior de v
x0S0
k=0
Repeat
1- Escalado: A’=AXK, c’=XKc, a’=XK a
2- Cota inferior: vK+1=max {vK,v(xK)}
3- Dirección de búsqueda: h’=--PA’. ( n (c’-vK+1a’) -e)
(cTx- vK+1)
4- Búsqueda lineal: y=e+h’ / y’>0
5- Volver al conjunto factible: y*=y’/(a’Ty’)
6- Escalado: xK+1=XK.y*
7- k = k +1
Until convergencia ((xK, K) < 2-L

21

También podría gustarte