21
6- Métodos de punto interior en programación lineal (MPI)

6- Métodos de punto interior en programación lineal (MPI)

Embed Size (px)

Citation preview

Page 1: 6- Métodos de punto interior en programación lineal (MPI)

6- Métodos de punto interior en programación lineal (MPI)

Page 2: 6- Métodos de punto interior en programación lineal (MPI)

2

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

Page 3: 6- Métodos de punto interior en programación lineal (MPI)

3

• 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:

bxA

xfIxfMinmi

i

.

/))(()(..1

0

Page 4: 6- Métodos de punto interior en programación lineal (MPI)

4

Donde:

I-(u) es la una función indicatriz de R-:

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

(2)

,0)(,00)( uuIuuI

0-1

bxA

xftxfMinmi

i

.

/))(log(1)(..1

0

Page 5: 6- Métodos de punto interior en programación lineal (MPI)

5

• 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

• Propiedades de la barrera logarítmica: convexa, dos veces contínuamente diferenciable

0

-1

Page 6: 6- Métodos de punto interior en programación lineal (MPI)

6

• Caso particular: prog. Lineal

la función barrera logarítmica es:

xRn, 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) xS0= 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, xR+n f(x)=cTx+p(x)

Page 7: 6- Métodos de punto interior en programación lineal (MPI)

7

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

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

Page 8: 6- Métodos de punto interior en programación lineal (MPI)

8

• 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, xR+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:

xS0 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:

xS0 , fv(x)= qlog(cTx-v)+p(x)

(función potencial)

Page 9: 6- Métodos de punto interior en programación lineal (MPI)

9

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

(a) Primal-dual: R, xR+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: xS0 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: xS0 , 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

Page 10: 6- Métodos de punto interior en programación lineal (MPI)

10

Parametrización primal-dual

-5.0000

0.0000

5.0000

10.0000

15.0000

20.0000

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

p(x)

cx

a1.cx+p(x)

a2.cx+p(x)

a3.cx+p(x)

a4.cx+p(x)

Page 11: 6- Métodos de punto interior en programación lineal (MPI)

11

Parametrización primal

-100.0000

-50.0000

0.0000

50.0000

100.0000

150.0000

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

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)

Page 12: 6- Métodos de punto interior en programación lineal (MPI)

12

Paramerización dual

-300.0000

-200.0000

-100.0000

0.0000

100.0000

200.0000

300.0000

400.0000

500.0000

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

p(x)

cx

n.log(cx-v1)+p(x)

n.log(cx-v2)+p(x)

n.log(cx-v3)+p(x)

n.log(cx-v4)+p(x)

Page 13: 6- Métodos de punto interior en programación lineal (MPI)

13

ALGORITMO MCC GENERAL:

k=0

Repeat1- 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

Page 14: 6- Métodos de punto interior en programación lineal (MPI)

14

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)

Page 15: 6- Métodos de punto interior en programación lineal (MPI)

15

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 primalKK+1=Kk+(1- ) cTxK

KK es una sucesión decreciente, cTxK+1 < cTxK y (K)=K- cTxk es

decreciente

(c) Parametrización dualvk+1= vk+(1-) cTxk, con q>n para que exista convergencia y (n/q,1)

Page 16: 6- Métodos de punto interior en programación lineal (MPI)

16

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 x0S0 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

Page 17: 6- Métodos de punto interior en programación lineal (MPI)

17

ALGORITMO SDD GENERAL:

Sean x0S0 y f: S0 R contínuamente diferencible

k=0

Repeat1- 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, )|| <

Page 18: 6- Métodos de punto interior en programación lineal (MPI)

18

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=PAcDemos: sea z 0 , z es holgura dual factible para (D)

para algún wRm, 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 x1

Tz /

PAz = PAc,z 0,

Page 19: 6- Métodos de punto interior en programación lineal (MPI)

19

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

Sean x() los puntos del camino central, entonces PAf (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/

Page 20: 6- Métodos de punto interior en programación lineal (MPI)

20

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)

Page 21: 6- Métodos de punto interior en programación lineal (MPI)

21

fv(x)=nlog(cTx-v)+p(x) ,

v= valor óptimo conocido (si se desconoce, calcular vkv)

v0v, cota inferior de v

x0S0

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