Vous êtes sur la page 1sur 31

ETSII-UPM

Introduccin a la programacin lineal y al mtodo simplex


Mtodos Matemticos de Especialidad (Mecnica-Mquinas) Madrid, 15 de diciembre de 2008
Javier Garca de Jaln
ETSII - Departamento de Matemtica Aplicada a la Ingeniera Industrial

Programa
ETSII-UPM

Introduccin a la programacin lineal


Introduccin Consideraciones geomtricas Representacin geomtrica detallada Representacin algebraica Puntos extremos y soluciones bsicas factibles Teorema de representacin de soluciones Teorema fundamental de la programacin lineal Corolario del teorema fundamental El mtodo simplex Un simplex elemental en Matlab El mtodo simplex con variables doblemente acotadas

Ejemplos

Ejemplo sencillo de programacin lineal


ETSII-UPM

Considrese el siguiente problema (Nash & Sofer, pgina 77)


Minimizar la funcin z = cT x = x1 2 x2 sujeta a las restricciones: 2 x1 x2 + 2 0 x1 x2 + 3 0 x1 +3 0 0 x1 0 x2
15 = x1 2 x2 10 = x1 2 x2 6 = x1 2 x2
6 5 4 c

2 x1 x2 + 2 = 0

Tanto la funcin objetivo como las 3 2 = x1 2 x2 ecuaciones de restriccin son lineales. x1 + 3 = 0 2 La regin factible es el conjunto de x1 x2 + 3 = 0 1 puntos que satisfacen las restricciones. Una restriccin se dice activa en un punto 3 2 1 1 2 3 4 si en ese punto se verifica la igualdad. El gradiente de las ecuaciones de restriccin en la forma aTx0 se dirige al interior de la regin factible. La regin factible puede estar o no acotada (no lo estara sin la restriccin ( x1 + 3 0 ) . El ptimo est en el vrtice (3,6). Segn sea la funcin objetivo podra estar tambin en una arista. En este caso el ptimo no sera nico.

Introduccin (1/2)
ETSII-UPM

Formulacin del problema de la programacin lineal


Es un problema de optimizacin con restricciones en el que tanto la funcin objetivo como las restricciones son funciones lineales de las variables de diseo. Las restricciones pueden ser de ecuacin o de inecuacin, por lo que el problema se puede formular de modo general en la forma:

minimizar f ( x ) = cT x, sujeta a: aT x = bi , i E i T ai x bi , i I donde E e I son los conjuntos de restricciones de ecuacin e inecuacin. La matriz A tiene por filas los vectores aT . i El conjunto factible S es el conjunto de puntos que satisfacen las ecuaciones de restriccin. Se ver que el conjunto factible es un politopo convexo. Se dice que la direccin d es una direccin factible en x si existe algn valor > 0 tal que el punto x + d S , para todo 0 < < . Al moverse en direccin d sobre una restriccin de ecuacin se deber cumplir que:
Por otra parte, siempre es posible moverse una distancia suficientemente pequea respetando una restriccin de inecuacin no activa. Si la restriccin es activa se deber cumplir:

aT x = bi , aT ( x + d ) = bi i i

aT d = 0 i

aT x = bi , aT ( x + d ) bi i i

aT d 0 i

Introduccin (2/2)
ETSII-UPM

Forma estndar de un problema de programacin lineal


Se dice que un problema est en la forma estndar cuando se formula en la forma

minimizar f ( x ) = cT x, sujeta a: Ax = b, ( con b 0 ) x0 Con las condiciones x 0 y b 0 se quiere indicar que cada componente debe ser 0. En la formulacin anterior: x, c R n , b R m y A R mn

Conversin a la forma estndar


Cualquier problema de programacin lineal puede ser convertido a la forma estndar. Si el problema consiste en maximizar una funcin, se le cambia el signo al vector c. Si alguna de las componentes de b es negativa, se multiplica la correspondiente restriccin por (1), sustituyendo el ( ) por ( ) o viceversa. Si una variable tiene un lmite inferior distinto de cero ( por ejemplo, x1 5) , se hace un cambio de variable apropiado ( por ejemplo, x1 = x1 5 0 ) . Si una variable o una ecuacin tienen un lmite superior ( x1 5) , se pueden tratar como una restriccin normal con una variable de holgura ( x1 + x1 = 5, x1 , x1 0 ) . Si una variable no est restringida y puede tomar valores positivos y negativos, se puede sustituir por la diferencia de dos variables esencialmente positivas, de modo que slo una de las dos sea distinta de cero: ( x1 = x1+ x1 , x1+ , x1 0, x1 = 0 si x1 0 y x1+ = 0 si x1 0 ) .

Consideraciones geomtricas (1/4)


ETSII-UPM

Conjunto convexo
Un conjunto C R n es convexo si y slo si dados dos puntos cualesquiera y,zC y un escalar 0 1, se verifica que x = y + (1 ) z C.

Combinaciones convexas Los puntos x = y + (1 ) z , 0 1, son una combinacin convexa de y y de z. La combinacin se llama estrictamente convexa en el caso de que 0 < < 1.
Ms en general, se dice que el punto x es una combinacin convexa de los puntos x1, x2, , xn si se satisfacen las relaciones siguientes: n n x = i =1 i xi , con i =1 i = 1; i 0, i

Cono convexo
Un conjunto C R n es un cono si para todo x C x C , R, 0. Si es tambin un conjunto convexo se dice que es un cono convexo. Ejemplo: el conjunto {b R m : b = Ax, A R mn , x R n , x 0} es un cono convexo determinado por las columnas de A.

Puntos extremos
Los puntos extremos del conjunto C son los puntos de C que no se pueden expresar como combinacin estrictamente convexa de otros puntos del conjunto C. Slo los puntos en el contorno de C pueden ser puntos extremos.

Consideraciones geomtricas (2/4)


ETSII-UPM

Hiperplanos y semiespacios
Se define un hiperplano H en Rn como el conjunto de puntos que satisfacen, H = {x R n : aT x = b, a R n , a 0, b R} El conjunto de soluciones de una ecuacin lineal en Rn es un hiperplano. Ejemplos: una recta en el plano, o un plano en el espacio eucldeo ordinario. El hiperplano aTx=b determina dos semiespacios cerrados (y otros dos abiertos) en Rn: H + = {x R n : aT x b} , H = {x R n : aT x b} Los semiespacios H+ y H son conjuntos convexos. Es fcil de ver que la interseccin de dos conjuntos convexos es un conjunto convexo. Un hiperplano H es convexo porque es la interseccin de H+ y H, que son convexos. La interseccin de varios hiperplanos tambin ser un conjunto convexo.

Politopos y poliedros
Un politopo es un conjunto formado por la interseccin de un nmero finito de semiespacios cerrados. El politopo es cnico si los hiperplanos de todos los semiespacios pasan por un punto. Un poliedro es un politopo acotado y no vaco. Los politopos y los poliedros son conjuntos convexos.

Consideraciones geomtricas (3/4)


ETSII-UPM

Regin factible de un problema de programacin lineal (PL)

El conjunto factible S = {x R n : Ax = b, x 0} , que contiene todas las posibles soluciones de un problema de PL, es un politopo convexo. Esta propiedad se deduce directamente del hecho de que los hiperplanos determinados por Ax=b y el cono determinado por x 0 son conjuntos convexos. La envoltura convexa de un conjunto C R n , es la interseccin de todos los conjuntos convexos que contienen a C.

Envoltura convexa

Hiperplano soporte
Se llama hiperplano soporte de un conjunto convexo C a un hiperplano H tal que, H C , y C H + C H Un hiperplano soporte contiene a C en uno de sus dos semiespacios de borde cerrados, y adems contiene algn punto del contorno de C.

Caras
Una cara es la interseccin del politopo convexo P con un hiperplano soporte H. Hay tres tipos de caras vrtices, aristas y facetas cuyas dimensiones son 0, 1 y n1. Los vrtices son puntos extremos. Las aristas son rectas que unen puntos extremos adyacentes. Las facetas son la interseccin de la regin factible S con los semiespacios T definidos por las desigualdades a1 x b1 , aT x b2 , ..., aT x bm , x1 0, x2 0, ..., xm 0. m 2

Consideraciones geomtricas (4/4)


ETSII-UPM

Representacin de algunos problemas sencillos de PL en 2-D


Se representa el politopo (regin factible) y las lneas de nivel de la funcin z = cTx.

solucin nica problema acotado

solucin nica problema no acotado

solucin mltiple problema acotado

solucin mltiple problema no acotado

solucin no acotada problema no acotado

Otros elementos geomtricos


Cuando la regin factible est acotada es un poliedro (en este caso, un polgono). Los puntos extremos son los vrtices. En este caso, las aristas y las facetas coinciden. Cualquier recta tangente al politopo en una cara es un hiperplano soporte. El cono convexo correspondiente a las condiciones x 0 es el primer cuadrante.

Representacin geomtrica detallada (1/3)


ETSII-UPM

Ejemplo de problema de programacin lineal (Nash & Sofer, pg. 77)

2 x1 x2 + 2 = 0 Minimizar: z = x1 2 x2 10 = x1 2 x2 6 sujeta a: 2 x1 x2 + 2 0 x1 x2 + 3 0 5 c x1 +3 0 6 = x1 2 x2 4 x1 0 x2 0 3 2 = x1 2 x2 Es interesante observar que cuando las x1 + 3 = 0 2 restricciones se escriben en esta forma x1 x2 + 3 = 0 1 el gradiente de las restricciones apunta hacia el interior de la regin factible. 3 2 1 1 2 3 4 Se han dibujado tambin las lneas de nivel correspondientes a diversos valores de la funcin objetivo. De acuerdo con dichas lneas, el valor mnimo de z es 15 y se alcanza en el punto (3,6). El conjunto factible es un polgono convexo. En 3-D podra ser un poliedro y en el caso general un politopo. Los vrtices del politopo se llaman puntos extremos. El ptimo se alcanza en un punto extremo. Girando el conjunto factible (o con una funcin objetivo diferente), el ptimo podra alcanzarse en una arista (o en una cara, en Rn), en cuyo caso se alcanzara en mltiples puntos y la solucin no sera nica.

15 = x1 2 x2

Representacin geomtrica detallada (2/3)


ETSII-UPM

Ejemplo de programacin lineal con regin factible no acotada.


Minimizar: z = x1 2 x2 sujeta a: 2 x1 x2 + 2 0 x1 x2 + 3 0 x1 0 x2 0
15 = x1 2 x2 10 = x1 2 x2 6 = x1 2 x2
6 5 c

2 x1 x2 + 2 = 0

4 Se ha eliminado la restriccin x1 3. 3 La regin factible no est acotada. La 2 = x1 2 x2 funcin objetivo decrece indefinidamente. 2 Existen tres puntos extremos, que son: x1 x2 + 3 = 0 1 T T T {0, 0} , {0, 2} , {1, 4} Obsrvese que no es posible en este caso 3 2 1 expresar un punto factible cualquiera como combinacin convexa de puntos extremos.

Representacin geomtrica detallada (3/3)


ETSII-UPM

Puntos extremos
Los puntos extremos son los vrtices de la regin factible S. Matemticamente se definen diciendo que los puntos extremos son puntos factibles que no se pueden expresar como combinacin convexa de otros puntos factibles diferentes: x S , x y + (1 ) z , 0 < < 1, y, z S , y, z x Los valores 0 y 1 han sido excluidos para , para evitar que x coincida con y con z.

Direccin de no acotacin
Se llama direccin de no acotacin a una direccin d tal que si x es un punto factible cualquiera, x+d tambin es un punto factible para todo 0. En el ejemplo de la figura los vectores (1,0) y (1,1) son direcciones de no acotacin, as como tambin cualquier combinacin convexa de dichos vectores.

Representacin algebraica (1/2)


ETSII-UPM

Ejemplo de problema de programacin lineal (cont.)


Las ecuaciones del ejemplo anterior se pueden escribir en la forma estndar: 2 x1 + x2 + x3 = 2 2 x1 x2 + 2 0 x1 + x2 + x4 = 3 x1 x2 + 3 0 Ax = b, x, b 0 + x5 = 3 x1 x1 + 3 0 x1 , x2 0 x1 , x2 , x3 , x4 , x5 0 Por ejemplo, la primera inecuacin se ha transformado del siguiente modo: 2 x1 x2 + 2 0 2 x1 x2 2 2 x1 x2 x3 = 2 2 x1 + x2 + x3 = 2

Soluciones bsicas
Las variables en un sistema Ax=b, con m=r<n, se pueden dividir en bsicas y libres (no bsicas). Las variables bsicas estn asociadas con m columnas independientes: xB Ax = b [ B N ] = b x B = B 1 ( b Nx N ) x N Se llama solucin bsica a toda solucin con valor nulo para las variables libres x N = 0. Se llama solucin bsica factible a una solucin bsica que satisface x B 0. Finalmente, solucin bsica factible ptima es un vector x que minimiza la funcin objetivo. Puede haber otras soluciones ptimas que no son soluciones bsicas. Se demostrar que si un problema de PL tiene solucin ptima, tiene solucin bsica factible ptima, por lo que es suficiente estudiar estas ltimas.

Representacin algebraica (2/2)


ETSII-UPM

Caracterizacin de las direcciones de no acotacin Si x es un punto factible, x + d tambin deber serlo por definicin, luego d cumplir: Ax = b, x 0; A ( x + d ) = Ax + Ad = b Ad = 0 ; x +d 0 d 0 Casos degenerados
Cuando una o ms de las variables bsicas toma un valor cero, se dice que se est en un caso degenerado. En este caso una variable bsica con valor nulo puede ser sustituida por una variable libre (que tambin tiene valor nulo), sin que cambie el valor de la funcin objetivo. As pues, los casos degenerados permiten obtener una misma solucin bsica con dos o ms particiones diferentes de las variables x en bsicas xB y libres xN.

Tableau
Es una forma de disponer los datos y explicar los clculos (valor docente)
A T= T c b B = 0 cT B N cT N b 0
Gauss Jordan

I T = T 0

B 1N B 1b cT cT B 1N cT B 1b N B B

xB

coste reducido r

funcin objetivo ( z )

El paso de una solucin bsica factible a la siguiente puede explicarse e incluso realizarse manualmente en base al tableau (para ejemplos pequeos).

Puntos extremos y soluciones bsicas factibles (1/2)


ETSII-UPM

TEOREMA: El concepto geomtrico de punto extremo y el concepto matemtico de solucin bsica factible (SBF) son equivalentes Demostracin: Parte a): Si x es una solucin bsica factible es tambin un punto extremo.

Por ser SBF se tendr que: xT = {xT xT } = {xT 0T } , Ax = b Bx B = b B N B N Por reduccin al absurdo: si x no fuera punto extremo habra dos puntos factibles y y z, diferentes de x, tales que: x = y + (1 ) z, 0 < < 1; y N , z N 0, 0 = x N = y N + (1 ) z N y N = z N = x N Por otra parte, para las variables bsicas: Bx B = By B = Bz B = b y B = z B = x B

Demostracin: Parte b): Si x es un punto extremo, es tambin una solucin bsica factible (tiene mn componentes nulas).
Si x es extremo es factible, luego Ax=b (x 0). Separando las t componentes nulas: xT = {xT xT } = {xT 0T } (b + t = n) b t b t Por el momento se admite que el n de elementos de xb es distinto de m. Se tendr: Ax = b A b xb = b ( A b podra no ser cuadrada ) Si las columnas de Ab son independientes, x es una solucin bsica factible (quizs degenerada) y ya se ha terminado la demostracin.

Puntos extremos y soluciones bsicas factibles (2/2)


ETSII-UPM

Demostracin: Parte b): Si x es un punto extremo, es tambin una SBF (cont)


Supngase que por el contrario que las b columnas de Ab son linealmente dependientes. Se podr encontrar un vector no nulo p tal que Abp=0. Los puntos (xb+ p) y (xb p) sern factibles : A b ( xb p ) = A b xb A b p = A b xb = b, Por hiptesis xb>0. Para pequeos valores de se tendr: xb + p > 0, xb p > 0. Pero ahora se va a ver que x se puede expresar como combinacin lineal de puntos factibles, contra la hiptesis de que era un punto extremo. En efecto, se puede escribir: xb 1 xb + p 1 xb p
= 0t 2 0t + 2 0t

Se concluye que si x es un punto extremo, es tambin solucin bsica factible.

Teorema de representacin de soluciones (1/2)


ETSII-UPM

TEOREMA:
Cualquier punto factible se puede representar como combinacin convexa de puntos extremos {v1, v2, , vk} y posiblemente de una direccin de no acotacin d:
S = {x : Ax = b, x 0} , x = d + i v i , donde
k k

Ejemplos grficos
2 x1 x2 + 2 = 0
6 5 4 3

i =1

i =1

= 1, i 0, i = 1, 2,..., k ; Ad = 0, d 0

Se considera el punto (2,1), en los casos de regin factible acotada y no acotada.


2 x1 x2 + 2 = 0
6 5

xd

xc

x1 + 3 = 0
2 1 y1 = x e + x d 3 3 x=
xe

4 3

xc

p
p2

x1 x2 + 3 = 0

2 1

xb

x1 x2 + 3 = 0

2 1

1 1 y1 + y 2 2 2
3 2 1

xb

x = p + y2

xa y2 =

xa

2 1 xa + xe 3 3

y 2 = xa + p2

Teorema de representacin de soluciones (2/2)


ETSII-UPM

Demostracin: Caso en que la regin factible S est acotada (d=0).


Si x es el punto extremo vi, i=1, j=0 j i, y el teorema ya est demostrado. Si x no es punto extremo, tampoco es solucin bsica factible. Las columnas de A correspondientes con xi 0 son lin. dep. y existir un p 0 tal que Ap=0 (pi=0 si xi=0). Para pequeo (x+p)S y se verificarn: A(x+p)=b, x+p 0 (xi+pi=0 si xi=0). Como S est acotado, cuando crece se llegar a una restriccin, es decir, se har cero alguna nueva componente de (x+p). Con >0 se llega a y1, y con <0 se llega a y2. Ahora x es una combinacin convexa de y1 e y2, que tienen al menos un 0 ms que x. El proceso puede continuar mediante induccin, expresando y1 e y2 como combinacin convexa de otros puntos con ms ceros. Al final se llega a expresar x como combinacin convexa de soluciones bsicas factibles, esto es, de puntos extremos.

Demostracin: Caso en que la regin factible S no est acotada.


Si x no es punto extremo, por la misma razn que antes, existir una direccin p tal que (x+p)S. Si p 0, p puede ser una direccin de no acotacin (o serlo p si p 0) Si p es una direccin de no acotacin d, p intersectar al contorno en y2=xp (>0). Se tendr que x=d+1y2, que ya tiene la forma predicha por el teorema. El mismo razonamiento se aplica a y2 si no es un punto extremo, y que se expresar como combinacin convexa de puntos con un cero ms y de direcciones de no acotacin. Se contina de esta forma hasta que se llega al resultado deseado.

Teorema fundamental de la programacin lineal


ETSII-UPM

TEOREMA:
Cualquier problema de PL con una solucin finita ptima tiene una solucin bsica factible ptima. Hasta ahora se han estudiado las restricciones; ahora se considera la funcin objetivo.

Demostracin:

Por el teorema de representacin: x = d + i =1 i v i , i =1 i = 1, i 0, i = 1, 2,..., k Como consecuencia, la funcin objetivo se puede expresar en la forma: k cT x = cT d + i =1 i cT v i Si x es una solucin ptima, se verifica que cTd=0. En efecto, si cTd<0 la funcin objetivo no estara acotada inferiormente, puesto que k x = d + 1 i v i S ( ) cT x no est inferiormente acotada k Td>0, haciendo y Por otra parte, si fuera c 1 i vi = x d, se tendra que cTy<cTx, contra la hiptesis de que x es ptimo. Si cTd=0, tanto x como y son puntos ptimos. Se considera ahora el ndice j para el que cT v j = min {cT v i }. Ahora, para cualquier i combinacin convexa de vi se verificar: k k k T T T T c y = i =1 i c v i i =1 i c v j = c v j i =1 i = cT v j Puesto que y es ptimo, se tendr que cumplir cT y = cT v j , lo que demuestra que hay un vrtice o solucin bsica factible ptima vj.
k k

Corolario del teorema fundamental


ETSII-UPM

COROLARIO
La funcin objetivo, en el ptimo, no puede decrecer en ninguna direccin factible.

Demostracin
Sea x una solucin ptima del siguiente problema de PL: min z = cT x, sujeta a: Ax = b, x 0 Sea p una direccin factible en x, por lo que el punto x+p ser factible para un >0 suficientemente pequeo. Como x es ptimo, se cumplir: cT x cT ( x + p ) = cT x + cT p cT p 0 Por otra parte, considerando que tanto x como x+p son factibles: Ap = 0 A (x + p) = b Ax = b , pi 0 si xi = 0 x 0 x + p 0 Estas condiciones, que debe cumplir cualquier direccin factible p en el ptimo, sern utilizadas posteriormente en el mtodo simplex.

El mtodo simplex (1/6)


ETSII-UPM

Descripcin general
Propuesto por Dantzig en 1947: uno de los algoritmos ms importantes del siglo XX. Durante muchos aos ha sido el mtodo mas eficiente en programacin lineal (hasta la aparicin de los mtodos interiores en la dcada de los 80). Se parte de una solucin bsica factible (se ver ms adelante cmo encontrarla). Se realiza un proceso iterativo en el cual se va recorriendo una sucesin de soluciones bsicas factibles, cada una de ellas mejor que la anterior (menor valor en cTx). Finalmente se llega a un punto que ya no es posible mejorar en ninguna direccin factible. Por la convexidad del problema, ese punto es el ptimo buscado.

Formulacin de la etapa fundamental: paso de una solucin bsica a otra solucin bsica adyacente que produce un menor valor en la funcin objetivo
El problema se expresa en la forma: min cT x, sujeta a: Ax = b, x 0 ( b 0, A R mn , rank ( A ) = m ) La solucin bsica actual tendr al menos nm componentes nulas xN, correspondientes a las variables libres (no bsicas) en el sistema de ecuaciones lineales particionado: xB Ax = b, [ B N ] = b Bx B + Nx N = b x B = B 1 ( b Nx N ) = B 1b x N Las columnas de B son un conjunto de m columnas independientes de A que conducen a una solucin bsica factible ( x B 0 ) .

El mtodo simplex (2/6)


ETSII-UPM

Existe alguna solucin bsica factible y adyacente que d un valor menor en la funcin objetivo z=cTx?
Para moverse a otra solucin bsica adyacente habr que ver si existe una variable libre que, al aumentar su valor desde cero, haga decrecer z. Si esta variable existe, su valor podr aumentarse hasta que se viole alguna restriccin, es decir, hasta que una de las variables bsicas anteriormente positivas se haga cero. En este momento se puede hacer un cambio de base, es decir, la sustitucin de la variable bsica que se ha hecho cero por la variable libre que permita disminuir z.

Formulacin matricial del cambio a una solucin bsica factible adyacente


Como las variables bsicas se pueden expresar en funcin de las libres, la funcin objetivo se podr expresar en funcin de las variables libres exclusivamente: x B = B 1 ( b Nx N ) z = cT x = cT x B + cT x N = cT B 1b + ( cT cT B 1N ) x N B N B N B El vector parntesis que multiplica a xN es muy importante: cada componente indica la influencia que la correspondiente componente de xN tiene en la funcin objetivo z. Por su papel en los problemas de economa se le llama vector de costes reducidos r: r T cT cT B 1N ( r = c N NT B T c B ) N B Si el vector r tiene alguna componente negativa ser posible reducir el valor de z aumentando el valor de la correspondiente componente de xN. Por el contrario, si todas las componentes de r son positivas ser seal de que se ha llegado al punto ptimo.

El mtodo simplex (3/6)


ETSII-UPM

Formulacin matricial del cambio a una solucin bsica factible adyacente (cont.)
Sea i una componente negativa de r = c N NT B T c B , y sea xi la variable libre correspondiente de xN. Si se aumenta xi disminuye z. Cunto se puede aumentar xi? Desde el punto de vista de z, cuanto ms mejor. Sin embargo, como las ecuaciones de restriccin ( Ax = b, x 0 ) deben satisfacerse, xi slo se podr aumentar satisfaciendo Ax=b, y mientras no haya alguna componente de xB que se haga negativa. Para estudiar matemticamente esta condicin considrese que Ni es la columna de A ( de N) asociada con la variable libre xi. Se deber cumplir: Ax = b Bx B + Ni xi = b x B = B 1b B 1Ni xi 0 donde x B son los valores de xB modificados por la variacin de xi. Esta expresin indica que slo si B 1Ni > 0, la variable bsica correspondiente se reducir al aumentar xi. Los valores de xi que hacen anularse a cada una de las componentes de x B vienen dados por el vector B 1b. / B 1Ni . Teniendo en cuenta la condicin anterior, se concluye que la primera variable bsica que se har cero vendr dada por la expresin: [ xi , s ] = min ( B 1b. / B 1Ni : B 1Ni > 0 ) Esta expresin permite determinar qu variable bsica xs sale de la base y es sustituida por la variable libre xi. Si ningn B 1Ni > 0, el problema no est acotado. En algunos casos este mnimo se obtiene para xi = 0. Esto quiere decir que la nueva variable bsica no reduce el valor de la funcin objetivo z. Se trata de un caso degenerado, que necesita de tcnicas especiales para su resolucin.

El mtodo simplex (4/6)


ETSII-UPM

Algoritmo fundamental del mtodo simplex


Se calcula el vector de costes reducidos r = c N NT B T c B . Si todos los elementos son no negativos, se ha llegado al ptimo. En otro caso, elegir una variable libre xi cuyo coste reducido sea negativo. Esta variable es la que va a entrar en la base. Determinar la variable bsica saliente por medio de la expresin: [ xi , s ] = min ( B 1b. / B 1Ni : B 1Ni > 0 ) Si no hay elementos B 1Ni > 0 el problema no est acotado. Si el mnimo se obtiene para un valor nulo de la variable entrante el punto es degenerado. Actualizar las matrices B y N de acuerdo con las columnas que han entrado o abandonado la base y tratar de encontrar una nueva y mejor solucin bsica factible.

Soluciones mltiples
En algunas ocasiones la solucin ptima no es nica. Esto sucede cuando al llegar al ptimo hay variables libres cuyo coste reducido es cero. Estas variables se pueden hacer distintas de cero sin que vare la funcin objetivo.

Puntos degenerados y ciclos


Se tiene un punto degenerado cuando existe una variable bsica con valor cero. Se est en este caso cuando la variable entrante xi = 0. En este caso no cambia la funcin objetivo z, aunque s la base. Cuando se dan varios pasos sin cambiar z es posible meterse en un ciclo, volviendo a un punto anterior.

El mtodo simplex (5/6)


ETSII-UPM

Puntos degenerados y ciclos (cont.)


Se puede demostrar que los ciclos se evitan con el mtodo de Bland (1977), que consiste en elegir como variable entrante la primera que tiene coste reducido negativo, y como variable saliente tambin la primera que se anula al crecer la variable entrante. El programa debe detectar los ciclos (utilizar siempre Bland es lento). Hay que tener en cuenta que en un ciclo las variables que entran son las mismas que las que salen.

Solucin bsica factible inicial: variables artificiales


El mtodo simplex debe partir de una solucin bsica factible, y a partir de ella calcular una sucesin de soluciones bsicas factibles que termine en el ptimo buscado. Es fcil mediante mtodos algebraicos encontrar una solucin bsica de Ax=b (nm componentes nulas), pero no es tan fcil conseguir que sea factible (x 0). Si las ecuaciones de restriccin se formulan como Ax b (b 0) y existen m variables de holgura, la base puede estar formada precisamente por dichas variables de holgura:
Ax + z = b, x, z, b 0

Es necesario que los elementos de b sean no nulos, para garantizar que z 0. Cuando no hay variables de holgura o no hay suficientes se pueden introducir variables artificiales. Con ecuaciones de restriccin en la forma Ax=b se puede tener:
Ax = b, x, b 0
m x [ A I ] = b, z I = yi i =1 y

x A I] = b [ z

x B z, x N x

x B y, x N x

( fase I )

El mtodo simplex (6/6)


ETSII-UPM

Solucin bsica factible inicial: variables artificiales (cont.)


El problema se divide en fase I y fase II. En la fase I se resuelve el problema de programacin lineal mostrado. En la funcin objetivo slo intervienen las variables artificiales y en el mnimo (zI=0) stas deberan ser cero. A medida que las y van abandonando la base, pueden ser eliminadas del problema. Si se llega a una solucin con zI=0 y sin variables y en la base, ya se dispone de una solucin bsica factible para iniciar la fase II, que es el problema original propuesto. Puede suceder que en la fase I se llegue a un ptimo zI >0, que ya no es posible mejorar. Esto es seal de que el problema original no tiene soluciones factibles (ecuaciones incompatibles). Tambin puede suceder que al final de la fase I queden variables artificiales en la base asociadas con una variable bsica nula. Si se trata de la variable artificial yk, asociada con el vector columna ek, esta variable puede ser sustituida por cualquier variable no bsica xj del problema original tal que el elemento (B1Aj)k sea distinto de cero (para garantizar que las columnas de la nueva base siguen siendo linealmente independientes). Si no es posible cumplir dicha condicin, las ecuaciones Ax=b no son independientes. La fase I puede requerir un tiempo de CPU anlogo o superior al de la fase II.

Un simplex elemental en Matlab


ETSII-UPM

Observaciones
Se numeran las sentencias Se parte de una solucin bsica factible 10: costes reducidos 11: se determina la variable libre entrante 12: si ninguna variable libre reduce la funcin objetivo se est en el ptimo. 19: Si ninguna variable bsica se hace cero el problema no est acotado. 24: La primera variable bsica que se haga cero saldr de la base.

1. function [x,xbas,z,nit,flag]=progLinBas1(A,b,c,xbasic) 2. [m,n]=size(A); tol=1e-08; nitmax=1000; 3. xbas=find(xbasic==1); xfree=find(xbasic==0); 4. B=A(:,xbas); cB=c(xbas); cN=c(xfree); 5. xB=B\b; xN=zeros(n-m,1); z=cB'*xB; y=B'\cB; 6. esOptima=0; nit=0; 7. while esOptima==0 && nit<nitmax 8. nit=nit+1; 9. % PARTE 1: Variable entrante y test de optimalidad 10. r=cN-A(:,xfree)'*y; 11. [ce,ef]=min(r); e=xfree(ef); % variable ENTRANTE 12. if ce>-tol % si ce no es significativamente negativa 13. esOptima=1; flag='optimo'; x=zeros(n,1); x(xbas)=xB; return; 14. end 15. At=A(:,e); Athat=B\At; 16. % PARTE 2: Determinar variable saliente 17. bhat=B\b; 18. it=find(Athat>tol); % solo denominadores positivos 19. if length(it)==0 % problema no inferiormente acotado 20. esOptima=-1; flag='no acotado'; x=[]; return; 21. end 22. xt=bhat(it)./Athat(it); % valores de xt que anulan it 23. % se determina la variable SALIENTE 24. [xtbar,se]=min(xt); sa=it(se); s=xbas(sa); 25. % PARTE 3: Modificar la base: xbasic, xbas y xfree 26. xbasic(e)=1; xbasic(s)=0; 27. xbas=find(xbasic==1); xfree=find(xbasic==0); 28. % nueva matriz B; nuevos vectores cB, cN, xB, y, z 29. B=A(:,xbas); cB=c(xbas); cN=c(xfree); 30. y=B'\cB; xB=B\b; z=cB'*xB; 31. end

El mtodo simplex con variables acotadas (1/4)


ETSII-UPM

Programacin lineal con variables doblemente acotadas


Se supone que las variables del problema tienen un valor mximo (finito):

0 xi ui
El problema de programacin lineal se plantea en la forma:

minimizar: z = cT x,

sometida a: Ax = b ( A de rango pleno ) 0 xi ui

Una posible solucin:


Definir variables de holgura y aplicar el mtodo simplex estndar. No es muy eficiente, pues se utilizan muchas ms variables y restricciones de las necesarias.

La solucin ms adecuada:
Modificar el mtodo simplex, permitiendo que las variables libres tomen valor cero o el valor mximo correspondiente. Concepto de solucin bsica factible extendida x: Cumple las condiciones: a) El punto x satisface todas las restricciones. b) Las columnas de A correspondientes a las componentes bsicas de x, que estn estrictamente entre sus lmites (sin ser igual a ellos), son independientes.

El mtodo simplex con variables acotadas (2/4)


ETSII-UPM

Lema
Existe una equivalencia entre las soluciones bsicas factibles extendidas y una solucin bsica factible de un problema estndar equivalente:
minimizar: z = cT x, sometida a: Ax = b ( A de rango pleno ) x+s=u x, s 0

Demostracin
Sea (x,s) una solucin bsica factible del problema estndar equivalente. Las soluciones x y s se descomponen de la forma siguiente: x: s:
k componentes entre sus lmites, k componentes positivas, l en el lmite superior, l nulas, nkl nulas nkl positivas

Sean A1 y A2 las submatrices de A correspondientes a las x no nulas. Se construye la matriz B correspondiente a las componentes positivas de x y s. Las columnas de B son linealmente independientes (hay una solucin bsica factible) si y slo si las columnas de A1 son linealmente independientes (hay una solucin bsica factible extendida): x1 A1 A 2 x1 0 A1x1 = 0 x 2 Ik x 2 0 Ik B = x 2 = s3 = 0 Il s1 s1 0 s1 = x1 I n k l s3 0 s3

El mtodo simplex con variables acotadas (3/4)


ETSII-UPM

Mtodo simplex con variables doblemente acotadas


Se supone que se dispone de una base factible inicial Existen m variables bsicas xB y nm variables libres xN. Las restricciones son:

Bx B + Nx N = b

( B invertible )

x B = B 1b B 1Nx N

Las variables libres xi pueden tener valor 0 ui. Sustituyendo en la funcin objetivo:

z = cT x = cT x B + cT x N = cT B 1b + ( cT cT B 1N ) x N = cT B 1b + r T x N B N B N B B

Al igual que antes, esta ecuacin es la base del test de optimalidad (ms complicado): Si la variable libre xi es nula y ri0, no se puede reducir z si xi entra en la base. Si la variable libre xj=uj y rj0 tampoco se puede reducir z si xj entra en la base. Si la solucin no es ptima se puede reducir z sustituyendo una variable bsica saliente por una variable libre entrante. Sea B1Ni la columna de B1N correspondiente a xi. Determinacin de la variable saliente. Se pueden producir tres situaciones: La variable entrante aumenta (o disminuye) hasta alcanzar el otro lmite. La base no cambia. Una variable bsica aumenta su valor, llega al lmite superior y deja la base. Una variable bsica uj disminuye su valor, llega a cero y deja la base. Se debe ejecutar un test que determine cul de estas tres posibles situaciones es la primera que se produce.

El mtodo simplex con variables acotadas (4/4)


ETSII-UPM

Mtodo simplex con variables doblemente acotadas (cont.) Las variables bsicas cambian, al variar una cantidad i la variable libre xi: 0 x B = ( B 1b B 1Nx N ) B 1Nii u, 0 x B = x B B 1Nii u El signo de ( B 1N i i ) es () si xi aumenta desde 0 y (+) si xi disminuye desde ui (i0).
La variable saliente es la que antes alcanza una de las siguientes condiciones: Variable libre que entra y abandona la base, despus de alcanzar el otro lmite:
1

Si xi = 0 y B N i > 0, y i crece, las variables bsicas decrecen y puede haber una que se anule. Hay que calcular la que lo hace para un valor ms pequeo de xi: [i , s ] = min ( x B . / B 1Ni : B 1Ni > 0 ) Si xi = 0 y B 1N i < 0, y i crece, las variables bsicas crecen y alguna puede alcanzar el lmite superior. Hay que determinar cul lo hace en primer lugar: [i , s ] = min ( ( x B u ) . / B 1Ni : B 1Ni < 0 ) 1 Si xi = ui i , y B N i > 0, y i crece (xi decrece), las variables bsicas crecen y puede haber alguna que se haga uj. Hay que ver cul lo hace en primer lugar: [i , s] = min ( ( u x B ) . / B 1Ni : B 1Ni > 0 ) Finalmente, si xi = ui i , y B 1N i < 0, y i crece (xi decrece), las variables bsicas decrecen y puede haber alguna que se anule. Lo hace en primer lugar: [i , s ] = min ( x B . / B 1Ni : B 1Ni < 0 )

ui

Vous aimerez peut-être aussi