Programación lineal Condiciones simplificadas: cb BT 0 = ? + , ?n ? 0 cn NT ?n Equivalentes a cb = BT? , cn = NT? + ?n , ?n ? 0 o bien cn – NTB -T cb ? 0 Se resuelve un sistema de dimensión m ? m
Programación lineal Comprobación de las condiciones: Paso 1. Se resuelve el sistema de ecuaciones BT? = cb Paso 2. Se calcula el multiplicador como ?n = cn – NT? Paso 3. Se comprueba la condición ?n ? 0
Programación lineal Condiciones de óptimo en un vértice Esfuerzo a realizar: Factibilidad Multiplicar matriz por vector Existencia de multiplicadores Resolver un sistema de ecuaciones Dimensión n ? n Signo de los multiplicadores Comparación simple
Programación lineal Cálculo de los multiplicadores para ( 3 1 2 0 0 )T 1 2 -1 1 1 2 3 B = 2 4 1 N = 2 -1 cB = 1 cN = 1 4 1 -1 2 -1 0 B T? = cb ? ? = ( 5/6 4/3 -3/2 )T ?n = cn – NT? = ( -2 7/2 )T Como (?n )1 < 0 , el punto no es solución
Programación lineal Método Simplex Nos dan un vértice factible Si es solución, se termina Si no lo es, buscar un nuevo vértice Cálculo de un nuevo vértice Para alcanzar la solución más rápidamente, se calcula un vértice mejor Para facilitar el cálculo del nuevo vértice, se elige un vértice contiguo
Programación lineal Cálculo del nuevo vértice Buscar entre vértices contiguos Problema en forma estándar: Un vértice contiguo comparte n – 1 restricciones activas Un vértice contiguo comparte n – m – 1 variables no básicas Una variable no básica diferente Existen n – m vértices contiguos
Programación lineal ¿Qué vértice contiguo escoger? El mejor: Vértice contiguo con el menor valor de la función objetivo Demasiado caro de calcular El que resulte más prometedor: Vértice contiguo en la arista con el mayor descenso en la función objetivo
Programación lineal Vértice más prometedor ?
Programación lineal Selección de vértice contiguo Clave: valor de los multiplicadores Multiplicador: cambio en la función objetivo al alejarse de la restricción Supongamos que ?i < 0 Si aumenta xi , la función objetivo disminuye a un ritmo dado por ?i Multiplicador más negativo: decrecimiento más rápido
Programación lineal Cálculo del vértice contiguo Si el vértice no es solución, existe algún multiplicador negativo Seleccionar el multiplicador más negativo Desplazarse a lo largo de la arista asociada Expresión de la arista: x + ?p , ? ? 0 p vector que representa la dirección de la arista ? escalar que indica distancia sobre la arista Cuanto mayor es ? , más nos alejamos del vértice
Programación lineal Cálculo de dirección de movimiento, p Dirección p tal que a lo largo de x + ?p : Aumente xi Las restricciones de igualdad se cumplan Las demás variables no básicas sean cero Cálculo de componentes básicas y no básicas: pb p = pn
Programación lineal Información de partida: vértice factible x xb x = , A x = b , x ? 0 , xn = 0 xn Condiciones que debe cumplir p : Debe aumentar (xn)i ? (pn)i > 0 Demás variables no básicas iguales a cero ? (pn)j = 0 ?j ? i
Programación lineal Condiciones que debe cumplir p : Se deben cumplir las restricciones de igualdad A x = b , A (x + ?p ) = b ? Ap = 0 ? Bpb + Npn = 0 ? Bpb = -Npn ¿Qué queda por determinar? Componente no básica a aumentar, i Valor de la componente (pn)i Se toma el valor 1
Programación lineal Resumen Forma de p : pn = ei , Bpb = -Nei ¿Qué i se selecciona? Variable no básica con (?n)i más negativo Justificación: cT (x + ?p ) = cTx + ? cTp cTp = cnTpn + cbTpb = ( cn + N TB -Tcb )T ei = (?n )i
Programación lineal Cálculo de p Dado un vértice factible no solución Paso 1. Encontrar el multiplicador más negativo, (?n )i Paso 2. Definir pn como pn = ei Paso 3. Resolver el sistema de ecuaciones Bpb = -Nei
Programación lineal Ejemplo: min 2×1 + x2 – x3 + 3×4 s.a x1 + 2×2 – x3 + x4 + x5 = 3 2×1 + 4×2 + x3 + 2×4 – x5 = 12 x1 + 4×2 + x3 – x4 + 2×5 = 9 x ? 0 Estudiar el punto ( 3 1 2 0 0 )T -2 ?n = cn – NTB -Tcb = 7/2
Programación lineal Definición de p Componentes no básicas: pn = e1 Componentes básicas: 1 2 1 1 1 -1 -3 Bpb = -Ne1 ? 2 4 1 pB = – 2 -1 e1 = -2 ? pB = 1 1 4 1 1 2 1 0 Dirección de movimiento: p = ( -3 1 0 1 0 )T
Programación lineal Justificación de la condición de óptimo ¿Se tiene ascenso en el vértice a lo largo de todas las aristas? Cálculo de todas las aristas en un vértice: pn = ei ?i , Bpb = -Npn Puntos a lo largo de la arista: x + ? p ¿Descenso o ascenso? cT ( x + ? p ) – cT x = ? cT p cT p < 0 descenso, cT p > 0 ascenso
Programación lineal Justificación de la condición de óptimo Expresión formal cT p = cnT pn + cbT pb = cnT ei + cbT (-B -1Nei ) = eiT ( cn – NTB -T cb ) = eiT ?n donde ?n = cn – NTB -T cb Se tiene una solución (para minimización) si ?n ? 0
Programación lineal Cálculo de la longitud de paso ? xk+1 = xk + ?pk ¿Cómo interesaría moverse? A lo largo de pk la función objetivo decrece linealmente Moverse tan lejos como sea posible Unica limitación: Restricciones de cota de las variables básicas
Programación lineal Cálculo de la longitud de paso ? Condición: xi + ?pi ? 0 ?i ? B Para cada componente i básica calculamos el mayor paso factible, -xi /pi El paso se define como el menor de los cocientes para los pasos positivos ? = min { -xi /pi | pi < 0 }
Programación lineal Ejemplo: min 2×1 + x2 – x3 + 3×4 s.a x1 + 2×2 – x3 + x4 + x5 = 3 2×1 + 4×2 + x3 + 2×4 – x5 = 12 x1 + 4×2 + x3 – x4 + 2×5 = 9 x ? 0 En ( 3 1 2 0 0 )T hemos obtenido p = ( -3 1 0 1 0 )T Solo existe una componente negativa en p ? = -3/(-3) = 1 , x’ = x + p = ( 0 2 2 1 0 )T
Programación lineal Cálculo del vértice factible inicial Para aplicar el método Simplex falta un vértice inicial Pero el método Simplex es capaz de generar vértices factibles Las soluciones de un problema lineal lo son Basta con encontrar un problema lineal con las propiedades adecuadas
Página anterior | Volver al principio del trabajo | Página siguiente |