Descargar

Programación lineal (Powerpoint) (página 3)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red

Programación lineal Problema lineal auxiliar (fase I) Problema lineal relacionado con el de partida, pero distinto de él Propiedades deseadas: Debe tener un vértice factible que se pueda calcular de forma trivial La solución del problema auxiliar debe ser un vértice factible del problema de partida

edu.red

Programación lineal Supondremos que b ? 0 Problema auxiliar min cTx min eTw s.a Ax = b ? s.a Ax + w = b x ? 0 x ,w ? 0 Vértice inicial: ( x , w ) = ( 0 , b ) Si la solución del problema modificado resultase ser ( x , 0 ) , x sería un vértice factible del problema original

edu.red

Programación lineal Paso 1. Asegurar que b ? 0 Paso 2. Construir el problema modificado Paso 3. Resolver dicho problema partiendo de ( 0 , b ) Paso 4. Si en la solución w = 0 , resolver el problema original desde x Paso 5. Si en la solución w ? 0 , el problema original no es factible

edu.red

Programación lineal Ejemplo: max 2×1 – 3×2 – x3 + 2×4 s.a x1 + x2 – x3 – x4 ? -2 2×1 – x2 + 2×3 + x4 ? 1 -x1 + x2 + x3 – 2×4 = -2 x ? 0 Lado derecho mayor que cero: max 2×1 – 3×2 – x3 + 2×4 s.a -x1 – x2 + x3 + x4 ? 2 2×1 – x2 + 2×3 + x4 ? 1 x1 – x2 – x3 + 2×4 = 2 x ? 0

edu.red

Programación lineal Problema en forma estándar max 2×1 – 3×2 – x3 + 2×4 s.a -x1 – x2 + x3 + x4 + s1 = 2 2×1 – x2 + 2×3 + x4 – s2 = 1 x1 – x2 – x3 + 2×4 = 2 x , s ? 0 Problema auxiliar: min w1 + w2 s.a -x1 – x2 + x3 + x4 + s1 = 2 2×1 – x2 + 2×3 + x4 – s2 + w1 = 1 x1 – x2 – x3 + 2×4 + w2 = 2 x , s , w ? 0

edu.red

Programación lineal Ejemplo Punto inicial del problema auxiliar: x = ( 0 0 0 0 )T , s = ( 2 0 )T , w = ( 1 2 )T Punto solución del problema auxiliar: x = ( 0 0 0 1 )T , s = ( 1 0 )T , w = ( 0 0 )T Vértice factible del problema inicial: x = ( 0 0 0 1 )T

edu.red

Programación lineal Los cálculos del método Simplex: Paso 1. Obtener un vértice factible inicial Paso 1.1 Asegurar que b ? 0 Añadir variables auxiliares Formar problema auxiliar Paso 1.2 Fase I Resolver el problema auxiliar Determinar un vértice factible para el problema original

edu.red

Programación lineal Paso 2. Comprobar si el vértice factible es solución BT? = cb , ?n = cn – NT? ?n ? 0 ? Paso 3. Calcular la dirección de movimiento p i = arg mink (?n )k pn = ei , Bpb = -Nei

edu.red

Programación lineal Paso 4. Calcular la longitud de paso ? ? = min { -xi /pi | pi < 0 } Paso 5. Obtener el nuevo vértice x’ = x + ?p

edu.red

Programación lineal Ejemplo min x1 – 2×2 – x3 s.a x1 + x3 ? 1 x1 + 2×2 + 2×3 ? 2 x ? 0 Paso 0. Poner en forma estándar min x1 – 2×2 – x3 s.a x1 + x3 – s1 = 1 x1 + 2×2 + 2×3 + s2 = 2 x , s ? 0

edu.red

Programación lineal Paso 1. Vértice factible inicial Problema auxiliar: min a s.a x1 + x3 – s1 + a = 1 x1 + 2×2 + 2×3 + s2 = 2 x , s , a ? 0 Vértice factible inicial: x = ( 0 0 0 )T , s = ( 0 2 )T , a = 1 Solución: x = ( 1 0 0 )T , s = ( 0 1 )T , a = 0

edu.red

Programación lineal Paso 2. Solución del problema original Variables básicas: x1 , s2 ¿Es solución el vértice? ? = B -Tcb = ( 1 0 )T , ?n = cn – NT? = ( -2 -2 1 )T Dirección de movimiento: pn = ( 1 0 0 )T , pb = -B -1Npn = ( 0 -2 )T , p = ( 0 1 0 0 -2 )T Longitud de paso: ? = 1/2 Nuevo vértice: x’ = ( 1 1/2 0 0 0 )T

edu.red

Programación lineal Siguiente iteración: Variables básicas: x1 , x2 ¿Es solución el vértice? ? = B -Tcb = ( 2 -1 )T , ?n = cn – NT? = ( -1 2 1 )T Dirección de movimiento: pn = ( 1 0 0 )T , pb = -B -1Npn = ( -1 -1/2 )T , p = ( -1 -1/2 1 0 0 )T Longitud de paso: ? = min{ 1/1 , (1/2)/(1/2) } = 1 Nuevo vértice: x’ = ( 0 0 1 0 0 )T

edu.red

Programación lineal Siguiente iteración: Variables básicas: x1 , x3 ¿Es solución el vértice? ? = B -Tcb = ( 3 -2 )T , ?n = cn – NT? = ( 2 3 2 )T El vértice es solución Vértice degenerado ¿Qué habría sucedido si hubiésemos considerado como variables básicas x2 , x3 ?

edu.red

Programación lineal Convergencia del método Simplex Un problema lineal puede ser: No factible No acotado max x1 + x2 s.a x ? 0 Factible y acotado ? óptimo

edu.red

Programación lineal Convergencia del método Simplex Si el problema no tiene solución Basta con poder identificar la situación Si el problema no es factible: La fase I acaba con una solución w ? 0 Si el problema no está acotado: El método Simplex encuentra un paso ? = ? En alguna iteración pb ? 0

edu.red

Programación lineal Si el problema es óptimo En cada iteración la función objetivo decrece Descenso: cTp = (?n )i < 0 Siempre que ? > 0 Se sigue descendiendo hasta que ?n ? 0 Existe un número finito de vértices El argumento solo puede fallar si ? = 0

edu.red

Programación lineal Vértices degenerados Para que ? = 0 se debe tener que ?i , (xb )i = 0 y (pb )i < 0 Puede suceder en vértices degenerados Posibilidad de ciclos: Intercambiar variables básicas y no básicas Sin modificar el valor de x

edu.red

Programación lineal Cómo evitar ciclos: Si no hay empate, no pueden existir ciclos En caso de empates: regla de Bland Variable que entra en la base: Primera con el menor valor del multiplicador Variable que sale de la base: Primera con el menor cociente para ? Orden de variables: cualquiera pero fijo Ineficiencia en la práctica

edu.red

Programación lineal Organización de los cálculos Para su aplicación manual Se disponen los datos en una tabla, cT 0 A b En un vértice, la tabla se reajusta como cT – cbTB -1A -cbTB -1b B -1A B -1b

edu.red

Programación lineal ¿Qué información proporciona la tabla? cT – cbTB -1A -cbTB -1b B -1A B -1b Multiplicadores Función objetivo Dir. de movimiento Valores de variables Cada vértice corresponde a diferentes valores de B y cB

edu.red

Programación lineal ¿Cómo actualizar la tabla al cambiar B ? Cambio de B Variable no básica ? básica: multiplicador Variable básica ? no básica: longitud de paso Una columna de B cambia por otra B = ( b1 … bk … bm ) ? ( b1 … bj … bm ) = B’ B’ = B + (bj – bk )ekT = B (I + ( B -1bj – ek )ekT ) = BE

edu.red

Programación lineal La matriz de interés en la tabla es la inversa, B’ -1 = E -1B -1 , E -1 = I – (1/ekTB -1bj )( B -1bj – ek )ekT N’ = B -1N , nj’ = B -1nj B’ -1A = B -1A – (1/ekTnj’ )(nj’ – ek )ekTB -1A Operaciones sobre la tabla: A cada fila i se le resta la fila k multiplicada por nij’ /nkj’ Se pivota sobre el elemento kj

edu.red

La misma operación de pivotaje se aplica al lado derecho y a la fila superior Ejemplo: Introducir en la base x3 y eliminar x1 0 -5 3 0 -1 26 -3 -2 0 0 2 20 0 2 -3 1 1 2 ? 3 -1 0 1 -2 8 1 -1 1 0 -1 2 1 -1 1 0 -1 2 Propiedad de las columnas básicas: Matriz identidad más ceros en la fila superior Programación lineal

edu.red

Programación lineal Ejemplo min x1 – 2×2 – x3 s.a x1 + x3 ? 1 x1 + 2×2 + 2×3 ? 2 x ? 0 Problema auxiliar: min a s.a x1 + x3 – s1 + a = 1 x1 + 2×2 + 2×3 + s2 = 2 x , s , a ? 0

edu.red

Programación lineal Tablas para el problema auxiliar 1 -2 -1 0 0 0 0 1 -2 -1 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 1 0 0 -1 1 0 1 -1 0 1 1 ? 1 0 1 -1 0 1 1 1 2 2 0 1 0 2 1 2 2 0 1 0 2 Paso 2.1. ¿Son positivos los multiplicadores? Paso 2.2. Dir. de movimiento y long. de paso: Columna multipl. más negativo, fila cociente menor Se pivota sobre el valor 1

edu.red

Programación lineal Nueva tabla: 1 -2 -1 0 0 0 0 0 -2 -2 1 0 -1 -1 -1 0 -1 1 0 0 -1 0 0 0 0 0 1 0 1 0 1 -1 0 1 1 ? 1 0 1 -1 0 1 1 1 2 2 0 1 0 2 0 2 1 1 1 -1 1 Nueva tabla es óptima para problema auxiliar 0 -2 -2 1 0 -1 1 0 1 -1 0 1 0 2 1 1 1 1

edu.red

Programación lineal De vuelta al problema original: 0 -2 -2 1 0 -1 0 0 -1 2 1 0 1 0 1 -1 0 1 ? 1 0 1 -1 0 1 0 2 1 1 1 1 0 1 1/2 1/2 1/2 1/2 ¿Es solución? No Siguiente vértice: 0 0 -1 2 1 0 0 2 0 1 2 1 1 0 1 -1 0 1 ? 1 -2 0 -2 -1 0 0 1 1/2 1/2 1/2 1/2 0 2 1 1 1 1

edu.red

Programación lineal Resumen: En la tabla se selecciona: Columna del multiplicador más negativo Fila con menor cociente bik’ /nik’ para nik’ > 0 Se pivota sobre el elemento nik’ El proceso se repite hasta que los multiplicadores tienen el signo correcto

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente