170 likes | 430 Views
2- SIMPLEX. DEFINICIONES Sea (P) el siguiente problema de programación lineal: (P) Min c T x / Ax = b x 0, donde c R n , b R m y A es una matriz de rango completo mxn con n>m.
E N D
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 }
Sea (D) el problema dual asociado a (P): (D) Max bTw / ATw +z = c, z 0, donde las variales z Rm son las variables de holgura • Sea cualquier par (x,z) donde x S y (w,z) es una solución factible para (D) para algún w Rm, se define el gap de dualidad () como: = cTx - bTw = xTz • TEO: Un par de soluciones primal (x) y dual (z) factibles son óptimas sii cuando una de estas soluciones factibles tiene una holgura estrictamente positiva, el valor de la variable asociada en el dual es cero, o sea: xTz = 0 =
AB ANB b 0 cTNB-cTBA-1BANB z T= cTB*A-1B costo reducido= c- TA • Forma tableau del SIMPLEX
Forma tableau: • Cálculo de costos reducidos • Gap de dualidad • Ubicación de la inversa de la base y fórmula recurrente • Variables duales en el tableau Simplex, holguras duales como costos reducidos • Soluciones primales y duales factibles • Interpretación dual
SIMPLEX REVISTO • Sea el problema (P), con una matriz A de mxn, consideremos un paso genérico del simplex, sean: • B la base elegida en ese paso • XB un vector básico y B la solución dual • cB el vector de costos asociado a la base • Algoritmo: • Calcular XB resolviendo: B.XB=b • Calcular B resolviendo B .B= cB • Calcular los costos reducidos c’=cj- Taj j. • Si c’j 0 j fin • Encontrar s / c’s < 0 y seleccionar xS para entrar en la base • Calcular A’S resolviendo: B.A’S=AS • Si A’S < 0 fin • Pivoteo: encontrar r = b’r / a’rs= min{b’i / a’is, con a’is >0. Borrar de la base B a r e incluir AS. Ir al comienzo
NOTAS: • Normalmente todos los vectores ‘, se obtienen a partir del correspondiente vector calculado en el paso anterior y actualizándolo. • En el método simplex revisto en lugar de calcular B-1 explícitamente, se calcula como el producto de una secuencia de matrices pivot. El inconveniente es que los errores se acumulan y se recomienda que cada un cierto número de iteraciones se calcule B-1 desde el tableau original. • Para el cálculo de B-1 desde el tableau original se puede usar la descomposición LU o la factorización de Cholesky.
Ejemplo: Sea el siguiente PL: Max x1+2x2 / -x1+2x2+x3 = 4 -x1+ x2+ x4 = 1 x1- 4x2+ x5 = 4 x1,x2,x3,x4,x50 • Resolver gráficamente • Sea {2,3,5} los índices de la base inicial, encontrar la solución de base inicial correspondiente. • Calcular las ganancias marginales, mostrar que la solución de base anterior no es óptima. • Resolver por simplex revisto
x2 Función objetivo (max) 2 1 x1 4
SIMPLEX DUAL • Comienza con una base dual factible, pero primal infactible y recorre soluciones duales factibles adyacentes • Criterio de optimalidad: cuando se encuentra una solución primal y dual factible. • Algoritmo: Mientras la solución primal sea no factible: • Elegir i/ bi<0 • Si aij0 j=1..n, entonces problema no factible, fin. • Elección de la columna s a entrar en la base: elegir s/ -(c’s/ars)=mínimo{- c’j/arj, j/ a’rj<0} • Pivoteo como en el primal fin mientras
Resumen comparativo métodos primal y dual: • Primal: necesita una base inicial primal factible • Dual: necesita una base inicial dual factible • Comienza con una base primal factible y el algoritmo trata de alcanzar la factibilidad dual, manteniendo la factibilidad primal. • Comienza con una base dual factible y el algoritmo trata de alcanzar la factibilidad primal, manteniendo la factibilidad dual. • Criterio de optimalidad: factibilidad dual • Criterio de optimalidad: factibilidad primal • Fin: o alcanza el óptimo o el primal no acotado (infactibilidad dual) • Fin: o alcanza el óptimo o el dual no acotado (infactibilidad primal) • Todas las soluciones intermedias son primales factibles y duales infactibles • Todas las soluciones intermedias son duales factibles y primales infactibles
PRIMITIVO- DUAL • DEF: Problema restringido asociado al primal, dada una solución dual : Min 1Ty / Ax+y=b, con xi=0 i P x0, y0 donde P= {i / TAi=ci } = índices de holguras duales nulas NOTA: Este problema es similar al planteado para resolver la fase 1 del simplex (sólo figuran las columnas de A cuya holgura dual sea nula) • TEO: (Optimalidad primal-dual) Sea una solución factible dual y (x,y=0) factible para el problema restringido asociado al primal, entonces (x, ) son soluciones óptimas para el primal y el dual.
Algoritmo PRIMITIVO- DUAL 1- Sea una solución factible dual y z una holgura dual factible (z0), tal que zj=0 para j=1..r y zj>0 para j=r+1..n 2- Construir el problema restringido primal correspondiente a j=1..r y resolverlo con un algortimo fase I, agregando variables artificiales y. Sea w el valor óptimo del problema restringido. 3- Si w=0 entonces fin, se encontró solución óptima. 4- Sea la solución dual obtenida al final de la fase I. Calcular dj=0- *A.j para j=1..n. 5- Cálculo de una nueva solución dual factible: sea = + * con / z1=cT-(+ *)T*A=c1+ *d 0, c1= c-T*A Sea =+ si d0j0 j=r+1..n y = Min -c1j/di j=r+1..n / dj <0. 6- Si =+, primal infactible, fin. 7- Ir a 2 con + * y z c-*A / zj=0 para j=1..r y zj>0 para j=r+1..n
Observaciones: 1- 0 2- El algoritmo se detiene cuando encuentra la primera solución básica factible primal (y dual factible) o el primal es no factible. 3- Si w=0 entonces fin, se encontró solución óptima. 4- Hay un número finito de combinaciones de variables para construir las posibles soluciones básicas y el objetivo dual es creciente de una iteración a otra, entonces, si no hay degeneración, se alcanza el óptimo en un número finito de pasos. 5- Se elige / haya la máxima cantidad posible de ceros en z1 6- Cómo cambia el conjunto P?: Si xj >0, c1j=0 y z1j=0 entonces salvo que la fase 1 la retire, la variable sigue estando en la base en la iteración siguiente. 7- Uso del método: es eficiente cuando una solución dual factible inicial puede ser calculada fácilmente y cuando un algoritmo eficiente de fase 1 puede ser aplicado al problema restringido. Ejemplo: problema del transporte y flujos en redes.
DEGENERACION EN EL SIMPLEX PRIMAL • Sea una solución básica factible (sbf) de (P). • DEF: se dice una sbf es degenerada si el valor de al menos una de las variables básicas es cero. • En una bsf degenerada, si hacemos una operación de pivoteo para mejorar la función objetivo, el mínimo cociente entre los b y la columna de A elegida, es cero, con lo cual si bien la operación de pivoteo cambia la base, no mejora la función objetivo. • Este efecto se puede encontrar en los sucesivos pasos luego de haber encontrado una bsf degenerada y puede provocar la repetición de bases. • Si no hay degeneración, todas las bsf tienen valores positivos, los cocientes entre los b y la columna de A que entra son positivos, con lo cual se asegura un decrecimiento de la función objetivo en cada paso. • Los ciclos en la secuencias de bsf se dan únicamente cuando hay degeneración
Interpretación geométrica • DEF: una solución dual es no degenerada si las holguras duales tienen al menos n-m componentes no nulas • Problema perturbado: sea b()= b+( , 2,... m)T, el problema perturbado (P) correspondiente a (P) es: (P) Min cTx / Ax = b(), x 0, • TEO 1: dado un vector b Rm existe un número positivo 1>0 tal que cuando 0< < 1 el problema perturbado (P) es primal no degenerado • TEO 2: Si B es una base factible para (P) cuando es arbitrariamente pequeño, entonces B es una base factible para (P) • DEF: orden lexicográfico positivo( L> 0): un vector se dice lexico positivo si su primera componente no nula es positiva. • TEO 3: B es una base factible para (P) para suficientemente pequeño sii (B-1.b B-1) L>0
Idea básica: trabajar con (P) en forma implícita (sin poner un valor explícito a ) desde (P) de forma de asegurarnos que no habrá degeneración en (P). • Se elige el pivote para conservar el orden lexicográfico positivo: en la elección del pivote se sustituye el mínimo por el léxico mínimo REGLA DE PIVOTEO MODIFICADA PARA DEGENERACIÓN: • Encontrar i / , si el mínimo es único, entonces i es la fila pivote y fin, si no j=1. • Si hay empate, encontrar i / alcanza el si el mínimo es único, la fila i es el pivote y fin. • j=j+1, ir a 2.