Algoritmos con restricción El problema general de programación no

Anuncio
Algoritmos con restricción
El problema general de programación no lineal con restricciones se define como
sigue:
Maximizar (o minimizar) z = f (X)
sujeta a
g(X) ≤ 0
Las condiciones X ≥ 0 de no negatividad forman parte de las restricciones.
También, al menos una de las funciones f (X) y g(X) es no lineal, y todas las
funciones son continuamente diferenciables.
No existe algoritmo general para manejar modelos no lineales, por el comportamiento complicado de las funciones no lineales. Quizá el resultado más general aplicable al problema es el de las condiciones KKT. La tabla 2 de la sección
corrspondiente, muestra que a menos que f (X) y g(X) tengan buen comportamiento (condiciones de convexidad y concavidad), las condiciones KKT sólo son
necesarias (pero no suficientes) para alcanzar la optimalidad.
En esta sección se presentan varios algoritmos que se pueden clasificar en general
como métodos indirectos y directos. Con los métodos indirectos se resuelve el problema no lineal manejando uno o más programas lineales derivados del programa
original. Los métodos directos manejan el problema en su forma original.
Son varios los métodos indirectos, pero sólo veremos la programación cuadrática.
Entre los métodos directos está el de combinaciones lineales, y presentaremos una
breve descripción de la técnica de maximización secuencial sin restricciones. Se
pueden encontrar otras técnicas no lineales importantes en las referencias seleccionadas al final de esta sección.
Programación cuadrática
Un modelo de programación cuadrática se define como sigue:
Maximizar z = CX + XT DX
sujeta a
AX ≤ b, X ≥ 0
1
en donde
X = (x1 , x2 , . . . , xn )T
C = (c1 , c2 , . . . , cn )
b = (b1 , b2 , . . . , bm )T

a11 . . . a1n
 .
..
..
A = 
.
.
 ..
am1 . . . amn






d11 . . . d1n
 .
..
.. 
.
D = 
.
.
. 


dn1 . . . dnn
La función XT DX define una forma cuadrática. Se supone que la matriz D es
simétrica y negativa definida. Eso quiere decir que z es estrictamente cóncava.
Las restricciones son lineales, lo que garantiza que el espacio de soluciones es convexo.
La solución de este problema se basa en las condiciones KKT necesarias. Como
z es estrictamente cóncava y el espacio de soluciones es convexo, esas condiciones
también son suficientes para tener un óptimo global, como se ve en la tabla 2, de
la sección correspondiente.
Se describirá el problema de programación cuadrática para el caso de la maximización. Es trivial cambiar la formulación para el caso de la minimización. El
problema se puede plantear como sigue:
Maximizar z = CX + XT DX
sujeta a
G(X) =
A
−I
!
X−
b
0
!
≤0
Sean
Λ = (λ1 , λ2 , . . . , λm )T
U = (µ1 , µ2 , . . . , µm )T
los multiplicadores de Lagrange correspondientes a los dos conjuntos de restricciones AX − b ≤ 0 y −X ≤ 0, respectivamente. Al aplicar las condiciones KKT
2
se obtiene
Λ ≥ 0, U ≥ 0
∇z − (ΛT , UT )∇G(X) = 0

λi bi −
n
X

aij xj  = 0, i = 1, 2, . . . , m
j=1
µj xj = 0, j = 1, 2, . . . , n
AX ≤ b
−X ≤ 0
Ahora
∇z = C + 2XT D
∇G(X) =
A
−I
!
Sean S = b−AX ≥ 0 las variables de holgura de las restricciones. Las condiciones
se reducen a
−2XT D + ΛT A − UT = C
AX + S = b
µj xj = 0 = λi Si , ∀ i, j.
Λ, U, X, S ≥ 0
Como DT = D, la transpuesta del primer conjunto de ecuaciones se puede escribir
en la forma
−2DX + AT Λ − U = CT
Por consiguiente, se pueden combinar las condiciones necesarias como sigue:

−2D AT −I 0
A
0 0 I
!




X
Λ
U
S



=

CT
b
!
µj xj = 0 = λi Si , ∀ i, j
Λ, U, X, S ≥ 0
Excepto por las condiciones µj xj = 0 = λi Si , las ecuaciones restantes son funciones
lineales en X, A, U y S. Entonces, el problema equivale a resolver un sistema de
3
ecuaciones lineales con las condiciones adicionales µj xj = 0 = λi Si . Como z es
estrictamente cóncava y el espacio de soluciones es convexo, la solución factible
que satisfaga todas esas condiciones debe ser única y óptima.
La solución del sistema se obtiene usando la fase I del método de dos fases. La
única restricción es satisfacer las condiciones µj xj = 0 = λi Si . Esto quiere decir
que λi y Si no pueden ser positivas al mismo tiempo. De igual modo, µj y xj no
pueden ser positivas al mismo tiempo.
En la fase I se igualarán a cero todas las variables artificiales sólo si el problema
tiene un espacio factible.
Ejemplo 21.2-3
Se tiene el problema
Maximizar z = 4x1 + 6x2 − 2x21 − 2x1 x2 − 2x22
sujeta a
x1 + 2x2 ≤ 2
x 1 , x2 ≥ 0
Este problema se puede llevar a la forma matricial como sigue:
Maximizar z = (4, 6)
x1
x2
!
+ (x1 , x2 )
−2 −1
−1 −2
!
sujeta a
(1, 2)
x1
x2
!
≤2
x 1 , x2 ≥ 0
Las condiciones de Kuhn-Tucker son




4 2 1 −1
0 0 


0 −1 0 
 2 4 2


1 2 0
0
0 1 


4
x1
x2
λ1
µ1
µ2
s1






4


=
 6 


2


x1
x2
!
La tabla inicial para la fase I se obtiene introduciendo las variables artificiales R1
y R2 . En tonces,
Básica
r
R1
R2
s1
x1 x2 λ1 µ1 µ2 R1 R2 s1 Solución
6 6 3 −1 −1
0
0 0
10
4 2 1 −1
0
1
0 0
4
2 4 2
0 −1
0
1 0
6
1 2 0
0
0
0
0 1
2
Iteración 1. Ya que µ1 = 0, la variable de entrada más prometedora x1 se puede
hacer básica con R1 como variable saliente. Ası́ se obtiene la siguiente tabla:
Básica
r
x1
R2
s1
x1
x2
λ1
µ1 µ2
R1 R2 s1 Solución
0
3
3/2
1/2 −1 −3/2
0 0
4
1 1/2
1/4 −1/4
0
1/4
0 0
1
0
3
3/2
1/2 −1 −1/2
1 0
4
0 3/2 −1/4
1/4
0 −1/4
0 1
1
Iteración 2. La variable más prometedora es x2 , y se puede hacer básica porque
µ2 = 0. Entonces,
Básica x1 x2
λ1
µ1 µ2
R1 R2
s1 Solución
r
0 0
2
0 −1
−1
0
−2
2
x1
1 0
1/3 −1/3
0
1/3
0 −1/3
2/3
R2
0 0
2
0 −1
0
1
−2
2
x2
0 1 −1/6
1/6
0 −1/6
0
2/3
2/3
Iteración 3. Como s1 = 0, se puede introducir λ1 en la solución. Se obtiene
entonces lo siguiente:
Básica
r
x1
λ1
x2
x 1 x 2 λ1
µ1
µ2
R1
R2
s1 Solución
0 0 0
0
0
−1
−1
0
0
1 0 0 −1/3
1/6
1/3 −1/6
0
1/3
0 0 1
0 −1/2
0
1/2 −1
1
0 1 0
1/6 −1/12 −1/6 1/12 1/2
5/6
La última tabla contiene la solución óptima para la fase I. Como r = 0, la solución
x1 = 1/3, x2 = 5/6, es factible. El valor óptimo de z se calcula a partir del problema original y es igual a 4.16.
5
Método de combinaciones lineales
Este método tiene que ver con el siguiente problema, en el que todas las restricciones son lineales:
Maximizar z = f (X)
sujeta a
AX ≤ b, X ≥ 0
El procedimiento se basa en el método de la pendiente más inclinada (del gradiente). Sin embargo, la dirección especificada por el vector gradiente podrá no
resultar en una solución factible para el problema con restricciones. También, el
vector gradiente no necesariamente será nulo en el punto óptimo (restringido). El
método de pendiente más inclinada se puede modificar entonces para manejar el
caso con restricciones.
Sea Xk el punto factible de intento en la iteración k. La función objetivo f (X) se
puede desarrollar en la proximidad de Xk con la serie de Taylor. Ası́ se llega a
f (X) ≈ f (Xk ) + ∇f (Xk )(X − Xk ) = [f (Xk ) − ∇f (Xk )Xk ] + ∇f (Xk )X
En este procedimiento se necesita determinar un punto factible X = X∗ tal que
f (X) se maximice sujeta a las restricciones (lineales) del problema. Como f (Xk )−
∇f (Xk )Xk es una constante, el problema de determinar X∗ se reduce a resolver
el siguiente programa lineal:
Maximizar wk (X) = ∇f (Xk )X
sujeto a
AX ≤ b, X ≥ 0
Dado que wk se construye partiendo del gradiente de f (X) en Xk , se puede asegurar
una solución mejorada si, y sólo si wk (X∗ ) > wk (Xk ). Del desarrollo de Taylor, la
condición no garantiza que f (X∗ ) > f (Xk ) a menos que X∗ esté en la proximidad
de Xk . Sin embargo, como wk (X∗ ) > wk (Xk ), debe existir un punto Xk+1 en el
segmento de recta (Xk , X∗ ) tal que f (Xk+1 ) > f (Xk ). El objetivo es determinar
Xk+1 . Se define a
Xk+1 = (1 − r)Xk + rX∗ = Xk + r(X∗ − Xk ), 0 < r ≤ 1
Esto quiere decir que Xk+1 es una combinación lineal de Xk y de X∗ . Como Xk
y X∗ son dos puntos factibles en un espacio de solución convexo, Xk+1 también es
6
factible. Al comparar con el método de la pendiente más inclinada se ve que el
parámetro r representa el tamaño del paso.
El punto Xk+1 se determina de tal modo que se maximice f (X). Como Xk+1 es
una función sólo de r, Xk+1 se determina maximizando
h(r) = f (Xk + r[X∗ − Xk ])
Se repite el procedimiento hasta que en la k-ésima iteración, wk (X∗ ) ≤ wk (Xk ).
En este punto no se pueden tener más mejoras y el proceso termina con Xk como
el mejor punto de solución.
Los problemas de programación lineal generados en las iteraciones sucesivas sólo
difieren en los coeficientes de la función objetivo. Ası́, se pueden usar los procedimientos de análisis de sensibilidad matriciales para hacer los cálculos con eficiencia.
Ejemplo 21.2-7
La programación cuadrática del ejemplo 21.2-3 era
Maximizar f (X) = 4x1 + 6x2 − 2x22 − 2x1 x2 − 2x22
sujeta a
x1 + 2x2 ≤ 2
x 1 , x2 ≥ 0
Sea X0 = (1/2, 1/2), que es factible, el punto inicial. Ahora
∇f (X) = (4 − 4x1 − 2x2 , 6 − 2x1 − 4x2 )
Iteración 1.
∇f (X0 ) = (1, 3)
El programa lineal asociado maximiza a w1 = x1 + 3x2 , sujeta a las restricciones
del problema original. Esto da la solución óptima X∗ = (0, 1). Los valores de w1
en X0 y X∗ son iguales a 2 y 3, respectivamente. En consecuencia, se determina
el siguiente punto de prueba:
1−r 1+r
,
X = (1/2, 1/2) + r[(0, 1) − (1/2, 1/2)] =
2
2
1
7
La maximización de
1−r 1+r
h(r) = f
,
2
2
da como resultado r1 = 1. Entonces X1 = (0, 1) con f (X1 ) = 4.
Iteración 2.
∇f (X1 ) = (2, 2)
La función objetivo del nuevo problema de programación lineal es w2 = 2x1 + 2x2 .
La solución óptima de este problema es X∗ = (2, 0). Como los valores de w2 en
X1 y X∗ son 2 y 4, se debe determinar un nuevo punto tentativo. Ası́,
X2 = (0, 1) + r[(2, 0) − (0, 1)] = (2r, 1 − r)
La maximización de
h(r)f (2r, 1 − r)
da como resultado r2 = 1/6. Entonces X2 = (1/3, 5/6) con f (X2 ) ≈ 4.16.
Iteración 3.
∇f (X2 ) = (1, 2)
La función objetivo correspondiente es w3 = x1 + 2x2 . La solución óptima de este
problema da como resultado las soluciones alternativas X∗ = (0, 1) y X∗ = (2, 0).
El valor de w3 para ambos puntos es igual a su valor en X2 . En consecuencia no
es posible mayor mejora. La solución óptima aproximada es X2 = (1/3, 5/6) con
f (X2 ) ≈ 4.16. En este caso sucede que es la óptima exacta.
Algoritmo SUMT
En esta sección se presenta un método de gradiente más general. Se supone que
la función objetivo f (X) es cóncava, y que cada función de restricción gi (X) es
convexa. Además, el espacio de soluciones debe tener un interior. Esto excluye el
uso implı́cito y explı́cito de restricciones de igualdad.
El algoritmo SUMT (de sequential unconstrained maximization technique, técnica
de maximización secuencial no restringida) se basa en transformar el problema con
8
restricciones en uno equivalente sin restricciones (o no restringido). El procedimiento se parece al uso del método de los multiplicadores de Lagrange. Después,
el problema transformado se puede resolver con el método de la pendiente más
pronunciada.
Para aclarar el concepto, considérese la nueva función

m
X
p(X, t) = f (X) + t 

n
X
1
1
−
j=1 xj
i=1 gi (X)
donde t es un parámetro no negativo. El signo de suma tiene en cuenta las restricciones de no negatividad, que se deben poner en la forma −xj ≤ 0 para ser
consistentes con las restricciones originales. Como gi (X) es convexa, 1/gi (X) es
cóncava. Eso quiere decir que p(X, t) es cóncava en X. En consecuencia, p(X, t)
posee un máximo único. La optimización del problema original restringido equivale a la optimización de p(X, t).
El algoritmo se inicia seleccionando en forma arbitraria un valor inicial no negativo
para t. Se selecciona un punto inicial X0 como la primera solución de prueba.
Debe ser un punto interior, esto es, no debe estar en las fronteras del espacio de
solución. Dado el valor de t, se aplica el método de la pendiente más pronunciada
para determinar la solución óptima (el máximo) de p(X, t).
El nuevo punto de solución siempre será un punto interior, porque si ese punto está
cerca de las fronteras, al menos una de las funciones 1/gi (X) o −1/xi adquirirá un
valor negativo muy grande. Como la función objetivo es maximizar p(X, t), esos
puntos de solución se excluyen en forma automática. El resultado principal es que
los puntos de solución sucesivos siempre serán puntos interiores. En consecuencia,
el problema siempre se puede manejar como un caso sin restricciones.
Una vez obtenida la solución óptima correspondiente a determinado valor de t, se
genera un nuevo valor de t y se repite el proceso de optimización (con el método
de la pendiente más pronunciada). Si t0 es el valor actual de t, se debe seleccionar
el siguiente valor t00 de modo que 0 < t00 < t0 .
El algoritmo SUMT termina cuando, para dos valores sucesivos de t, los valores
óptimos correspondientes de X, obtenidos maximizando p(X, t), sean aproximadamente iguales. En este punto los intentos posteriores producirán poca mejorı́a.
9
La implementación real de SUMT tiene más detalles que los que se presentaron
aquı́. En forma especı́fica, un factor importante que puede afectar la rapidez de
convergencia es la selección de un valor inicial de t. Además, para determinar
un punto interior inicial se pueden necesitar técnicas especiales. Estos detalles se
pueden encontrar en Fiacco y McCormick (1968)1 .
1
Fiacco, A. y G. McCormick, Nonlinear Programming: Sequential Unconstrained Minimization Techniques, Wiley, New York, 1968
10
Descargar