Programacin lineal Problemas lineales forma estndar min c
Programación lineal Problemas lineales (forma estándar) min c. Tx s. a Ax = b x 0 Estudiaremos sus propiedades especiales n Métodos específicos de solución: n n Método Simplex n Métodos de puntos interiores 1
Programación lineal Propiedades especiales del problema n La región factible es convexa n Toda solución local es global n Las condiciones necesarias de primer orden son suficientes Propiedad de convexidad: x e y factibles, A ( x +(1 - )y ) = Ax + (1 - )Ay = b + (1 - )b = b x +(1 - )y 0 n 2
Programación lineal Propiedades especiales del problema La región factible es un politopo : Figura limitada por hiperplanos n Elementos de un politopo: n n Caras, aristas, vértices n Algunos de estos elementos son importantes para el cálculo de la solución n Cómo identificarlos: caracterización algebraica 3
Programación lineal Politopos 4
Programación lineal Soluciones 5
Programación lineal Teorema básico: “Si existe una solución del problema lineal, existe un vértice solución” n Importancia de los vértices: n Basta con buscar soluciones en vértices (número finito) n Método Simplex: n Probar vértices eficientemente hasta encontrar la solución 6
Programación lineal Justificación: n Resultado básico (teor. de representación) n Todo punto de un conjunto convexo puede expresarse como combinación convexa de n+1 puntos extremos del conjunto x = i i xi , i i = 1, i 0 c. T x = i i c. Txi mini c. Txi 7
Programación lineal Caracterización algebraica de vértices Representación gráfica solo válida si n 3 n Caracterización general basada en la de otras partes de un politopo n n Caras, aristas, etc. 8
Programación lineal Partes de un politopo, Ax b Caras: subconjuntos de hiperplanos n Vértices: n n Puntos n intersección de al menos n caras Aristas: n Segmentos intersección de n - 1 caras n Comienzan y acaban en un vértice n Vértices contiguos: n unidos por una misma arista 9
Programación lineal Caracterización algebraica: Caras: {x | j aj. Tx = bj , Ax b } n Vértices: existe una partición de A y b, n A= Ab b= bb An bn Ab n n, bb n, det(Ab ) 0, A b x = bb , A n x bn 10
Programación lineal Vértices de Ax = b, x 0, A m n n Siempre existen m restricciones activas, Ax = b n Necesitamos n - m restricciones activas en x 0 n En un vértice al menos n - m variables deben ser iguales a cero: variables no básicas n Variables distintas de cero: variables básicas 11
Programación lineal Ejemplo: min 2 x 1 + x 2 - x 3 + 3 x 4 s. a x 1 + 2 x 2 - x 3 + x 4 + x 5 = 3 2 x 1 + 4 x 2 + x 3 + 2 x 4 - x 5 = 12 x 1 + 4 x 2 + x 3 - x 4 + 2 x 5 = 9 x 0 n Comprobar si son vértices: ( 1 1 2 1 1 )T , ( -3 4 0 0 -2 )T , ( 9/2 1/4 5/2 0 1/2 )T , ( 3 1 2 0 0 )T 12
Programación lineal Procedimiento básico n Método Simplex: n Suponemos conocido un vértice factible n Comprobamos si es solución: n Comprobar condiciones necesarias y suficientes n Si no lo es, buscamos un vértice contiguo mejor n Criterio de selección entre vértices contiguos 13
Programación lineal Método Simplex: n Aspectos básicos: n ¿Cómo podemos calcular un vértice factible? n ¿Qué debemos comprobar para saber si un vértice es solución? n ¿Cómo podemos escoger un vértice contiguo mejor? 14
Programación lineal Comprobar si un vértice es óptimo: n Paso 1. ¿Es un vértice factible? n ¿Es factible? n ¿Tiene n al menos n - m variables iguales a cero? Paso 2. ¿Es solución? n Condiciones n de óptimo Signo de los multiplicadores 15
Programación lineal Condiciones de óptimo en un vértice Problema en forma estándar n Versión más eficiente de las condiciones n n Sistema de ecuaciones de tamaño reducido n Basado en partición de variables para un vértice factible x= xb xn c= cb cn A=(B N ) 16
Programación lineal Derivación de condiciones de óptimo Condiciones generales de extremo n Condición basada en ausencia de descenso n n Estudiar las direcciones factibles en el vértice n Estudiar solo las aristas que salen del vértice n Determinar si la función objetivo decrece n Vértice solución: si la f. objetivo no decrece a lo largo de ninguna arista 17
Programación lineal Condiciones necesarias y suficientes: Ax = b , x 0 c = A T + 0 , T x = 0 n Para comprobar si un punto es solución: n Factibilidad n Existencia de multiplicadores n Signo de multiplicadores 18
Programación lineal Ejemplo: min 2 x 1 + x 2 - x 3 + 3 x 4 s. a x 1 + 2 x 2 - x 3 + x 4 + x 5 = 3 2 x 1 + 4 x 2 + x 3 + 2 x 4 - x 5 = 12 x 1 + 4 x 2 + x 3 - x 4 + 2 x 5 = 9 x 0 n Comprobar solución si ( 3 1 2 0 0 )T es 19
Programación lineal Condiciones simplificadas: cb cn n = BT NT + 0 n , n 0 Equivalentes a c b = B T , c n = N T + n , n 0 o bien cn - NTB -T cb 0 n Se resuelve un sistema de dimensión m m 20
Programación lineal Comprobación de las condiciones: n Paso 1. Se resuelve el sistema de ecuaciones B T = c b n Paso 2. Se calcula el multiplicador como n = c n - N T n Paso 3. Se comprueba la condición n 0 21
Programación lineal Condiciones de óptimo en un vértice n Esfuerzo a realizar: n Factibilidad n Multiplicar matriz por vector n Existencia n n Resolver un sistema de ecuaciones Dimensión n Signo n de multiplicadores de los multiplicadores Comparación simple 22
Programación lineal n Cálculo 1 2 -1 B= 2 4 1 1 4 1 de los multiplicadores para ( 3 1 2 0 0 )T N= 1 1 2 -1 -1 2 2 c. B = 1 -1 c. N = 3 0 B T = cb = ( 5/6 4/3 -3/2 )T n = cn - NT = ( -2 7/2 )T n Como ( n )1 < 0 , el punto no es solución 23
Programación lineal Método Simplex n Nos dan un vértice factible n Si es solución, se termina n Si no lo es, buscar un nuevo vértice n Cálculo de un nuevo vértice n Para alcanzar la solución más rápidamente, se calcula un vértice mejor n Para facilitar el cálculo del nuevo vértice, se elige un vértice contiguo 24
Programación lineal Cálculo del nuevo vértice Buscar entre vértices contiguos n Problema en forma estándar: n n Un vértice contiguo comparte n - 1 restricciones activas n Un vértice contiguo comparte n - m - 1 variables no básicas n Una variable no básica diferente n Existen n - m vértices contiguos 25
Programación lineal ¿Qué vértice contiguo escoger? n El mejor: n Vértice contiguo con el menor valor de la función objetivo n Demasiado caro de calcular n El que resulte más prometedor: n Vértice contiguo en la arista con el mayor descenso en la función objetivo 26
Programación lineal Vértice más prometedor ? 27
Programación lineal Selección de vértice contiguo n Clave: valor de los multiplicadores n Multiplicador: cambio en la función objetivo al alejarse de la restricción n n Supongamos que i < 0 Si aumenta xi , la función objetivo disminuye a un ritmo dado por i n Multiplicador más negativo: decrecimiento más rápido 28
Programación lineal Cálculo del vértice contiguo n Si el vértice no es solución, existe algún multiplicador negativo n Seleccionar el multiplicador más negativo n Desplazarse a lo largo de la arista asociada n Expresión de la arista: x + p , 0 n n n 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 29
Programación lineal Cálculo de dirección de movimiento, p n Dirección p tal que a lo largo de x + p : n n 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: p= pb pn 30
Programación lineal n Información de partida: vértice factible x x= n xb xn , A x = b , x 0 , xn = 0 Condiciones que debe cumplir p : n Debe aumentar (xn)i (pn)i > 0 variables no básicas iguales a cero (pn)j = 0 j i n Demás 31
Programación lineal n Condiciones que debe cumplir p : n Se deben cumplir las restricciones de igualdad A x = b , A (x + p ) = b Ap = 0 Bpb + Npn = 0 Bpb = -Npn n ¿Qué queda por determinar? n Componente no básica a aumentar, i n Valor de la componente (pn)i n Se toma el valor 1 32
Programación lineal Resumen n Forma de p : pn = ei , Bpb = -Nei n ¿Qué i se selecciona? no básica con ( n)i más negativo n Justificación: n Variable c. T (x + p ) = c. Tx + c. Tp = cn. Tpn + cb. Tpb = ( cn + N TB -Tcb )T ei = ( n )i 33
Programación lineal Cálculo de p n Dado un vértice factible no solución n Paso 1. Encontrar el multiplicador más negativo, ( n )i n Paso 2. Definir pn como pn = ei n Paso 3. Resolver el sistema de ecuaciones Bpb = -Nei 34
Programación lineal Ejemplo: min 2 x 1 + x 2 - x 3 + 3 x 4 s. a x 1 + 2 x 2 - x 3 + x 4 + x 5 = 3 2 x 1 + 4 x 2 + x 3 + 2 x 4 - x 5 = 12 x 1 + 4 x 2 + x 3 - x 4 + 2 x 5 = 9 x 0 n Estudiar el punto ( 3 1 2 0 0 )T n = cn - NTB -Tcb = -2 7/2 35
Programación lineal Definición de p Componentes no básicas: pn = e 1 n Componentes básicas: n 1 2 1 1 1 -1 Bpb = -Ne 1 2 4 1 p. B = - 2 -1 e 1 = -2 1 4 1 1 2 1 n -3 p. B = 1 0 Dirección de movimiento: p = ( -3 1 0 )T 36
Programación lineal Justificación de la condición de óptimo n ¿Se tiene ascenso en el vértice a lo largo de todas las aristas? n Cálculo de todas las aristas en un vértice: pn = ei i , Bpb = -Npn n Puntos a lo largo de la arista: x+ p n ¿Descenso o ascenso? c. T ( x + p ) - c. T x = c. T p < 0 descenso, c. T p > 0 ascenso 37
Programación lineal Justificación de la condición de óptimo n Expresión formal c. T p = cn. T pn + cb. T pb = cn. T ei + cb. T (-B -1 Nei ) = ei. T ( cn - NTB -T cb ) = ei. T n donde n = cn - NTB -T cb n Se tiene una solución (para minimización) si n 0 38
Programación lineal Cálculo de la longitud de paso xk+1 = xk + pk n ¿Cómo interesaría moverse? n. A lo largo de pk la función objetivo decrece linealmente n Moverse n Unica n tan lejos como sea posible limitación: Restricciones de cota de las variables básicas 39
Programación lineal Cálculo de la longitud de paso n Condición: xi + pi 0 i B n Para cada componente i básica calculamos el mayor paso factible, -xi /pi n El paso se define como el menor de los cocientes para los pasos positivos = min { -xi /pi | pi < 0 } 40
Programación lineal Ejemplo: n min 2 x 1 + x 2 - x 3 + 3 x 4 s. a x 1 + 2 x 2 - x 3 + x 4 + x 5 = 3 2 x 1 + 4 x 2 + x 3 + 2 x 4 - x 5 = 12 x 1 + 4 x 2 + x 3 - x 4 + 2 x 5 = 9 x 0 En ( 3 1 2 0 0 )T hemos obtenido p = ( -3 1 0 )T n Solo existe una componente negativa en p = -3/(-3) = 1 , x’ = x + p = ( 0 2 2 1 0 )T 41
Programación lineal Cálculo del vértice factible inicial Para aplicar el método Simplex falta un vértice inicial n Pero el método Simplex es capaz de generar vértices factibles n n Las n soluciones de un problema lineal lo son Basta con encontrar un problema lineal con las propiedades adecuadas 42
Programación lineal Problema lineal auxiliar (fase I) Problema lineal relacionado con el de partida, pero distinto de él n Propiedades deseadas: n n Debe tener un vértice factible que se pueda calcular de forma trivial n La solución del problema auxiliar debe ser un vértice factible del problema de partida 43
Programación lineal Supondremos que b 0 n Problema auxiliar n min c. Tx s. a Ax = b x 0 min e. T w s. a Ax + w = b x , w 0 n Vértice inicial: ( x , w ) = ( 0 , b ) n Si la solución del problema modificado resultase ser ( x , 0 ) , x sería un vértice factible del problema original 44
Programación lineal n Paso 1. Asegurar que b 0 n Paso 2. Construir el problema modificado n Paso 3. Resolver dicho problema partiendo de (0, b) n Paso 4. Si en la solución w = 0 , resolver el problema original desde x 5. Si en la solución w 0 , el problema original no es factible n Paso 45
Programación lineal Ejemplo: n max 2 x 1 - 3 x 2 - x 3 + 2 x 4 s. a x 1 + x 2 - x 3 - x 4 -2 2 x 1 - x 2 + 2 x 3 + x 4 1 -x 1 + x 2 + x 3 - 2 x 4 = -2 x 0 Lado derecho mayor que cero: max 2 x 1 - 3 x 2 - x 3 + 2 x 4 s. a -x 1 - x 2 + x 3 + x 4 2 2 x 1 - x 2 + 2 x 3 + x 4 1 x 1 - x 2 - x 3 + 2 x 4 = 2 x 0 46
Programación lineal n Problema en forma estándar max 2 x 1 - 3 x 2 - x 3 + 2 x 4 s. a -x 1 - x 2 + x 3 + x 4 + s 1 = 2 2 x 1 - x 2 + 2 x 3 + x 4 - s 2 = 1 x 1 - x 2 - x 3 + 2 x 4 = 2 x, s 0 n Problema auxiliar: min w 1 + w 2 s. a -x 1 - x 2 + x 3 + x 4 + s 1 = 2 2 x 1 - x 2 + 2 x 3 + x 4 - s 2 + w 1 = 1 x 1 - x 2 - x 3 + 2 x 4 + w 2 = 2 x, s, w 0 47
Programación lineal Ejemplo n Punto inicial del problema auxiliar: x = ( 0 0 )T , n w = ( 1 2 )T Punto solución del problema auxiliar: x = ( 0 0 0 1 )T , n s = ( 2 0 )T , s = ( 1 0 )T , w = ( 0 0 )T Vértice factible del problema inicial: x = ( 0 0 0 1 )T 48
Programación lineal Los cálculos del método Simplex: n Paso 1. Obtener un vértice factible inicial n Paso n n n Asegurar que b 0 Añadir variables auxiliares Formar problema auxiliar n Paso n n 1. 1 1. 2 Fase I Resolver el problema auxiliar Determinar un vértice factible para el problema original 49
Programación lineal n Paso 2. n Comprobar si el vértice factible es solución B T = c b , n = c n - N T n 0 ? n Paso 3. n Calcular la dirección de movimiento p i = arg mink ( n )k pn = ei , Bpb = -Nei 50
Programación lineal n Paso 4. n Calcular la longitud de paso = min { -xi /pi | pi < 0 } n Paso 5. n Obtener el nuevo vértice x’ = x + p 51
Programación lineal Ejemplo min s. a n x 1 - 2 x 2 - x 3 x 1 + x 3 1 x 1 + 2 x 2 + 2 x 3 2 x 0 Paso 0. Poner en forma estándar min s. a x 1 - 2 x 2 - x 3 x 1 + x 3 - s 1 =1 x 1 + 2 x 2 + 2 x 3 + s 2 = 2 x, s 0 52
Programación lineal n Paso 1. Vértice factible inicial n Problema min s. a n Vértice auxiliar: a x 1 + x 3 - s 1 +a=1 x 1 + 2 x 2 + 2 x 3 + s 2 =2 x, s, a 0 factible inicial: x = ( 0 0 0 )T , s = ( 0 2 )T , a = 1 n Solución: x = ( 1 0 0 )T , s = ( 0 1 )T , a = 0 53
Programación lineal n Paso 2. Solución del problema original n Variables básicas: x 1 , s 2 n ¿Es solución el vértice? = B -Tcb = ( 1 0 )T , n = cn - NT = ( -2 -2 1 )T n Dirección de movimiento: pn = ( 1 0 0 )T , pb = -B -1 Npn = ( 0 -2 )T , p = ( 0 1 0 0 -2 )T n Longitud de paso: = 1/2 n Nuevo vértice: x’ = ( 1 1/2 0 0 0 )T 54
Programación lineal n Siguiente iteración: n Variables n ¿Es básicas: x 1 , x 2 solución el vértice? = B -Tcb = ( 2 -1 )T , n = cn - NT = ( -1 2 1 )T n Dirección de movimiento: pn = ( 1 0 0 )T , pb = -B -1 Npn = ( -1 -1/2 )T , p = ( -1 -1/2 1 0 0 )T n Longitud n Nuevo de paso: = min{ 1/1 , (1/2)/(1/2) } = 1 vértice: x’ = ( 0 0 1 0 0 )T 55
Programación lineal n Siguiente iteración: n Variables n ¿Es básicas: x 1 , x 3 solución el vértice? = B -Tcb = ( 3 -2 )T , n = cn - NT = ( 2 3 2 )T n El vértice es solución n Vértice degenerado n ¿Qué habría sucedido si hubiésemos considerado como variables básicas x 2 , x 3 ? 56
Programación lineal Convergencia del método Simplex n Un problema lineal puede ser: n No factible n No acotado max x 1 + x 2 s. a x 0 n Factible y acotado óptimo 57
Programación lineal Convergencia del método Simplex n Si el problema no tiene solución n Basta n Si el problema no es factible: n La n con poder identificar la situación fase I acaba con una solución w 0 Si el problema no está acotado: n El n En método Simplex encuentra un paso = alguna iteración pb 0 58
Programación lineal Si el problema es óptimo n En cada iteración la función objetivo decrece c T p = ( n ) i < 0 n Siempre que > 0 n Se sigue descendiendo hasta que n 0 n Descenso: Existe un número finito de vértices n El argumento solo puede fallar si = 0 n 59
Programación lineal Vértices degenerados n Para que = 0 se debe tener que i , (xb )i = 0 y (pb )i < 0 Puede suceder en vértices degenerados n Posibilidad de ciclos: n n Intercambiar variables básicas y no básicas n Sin modificar el valor de x 60
Programación lineal Cómo evitar ciclos: Si no hay empate, no pueden existir ciclos n En caso de empates: regla de Bland n n Variable n Primera con el menor valor del multiplicador n Variable n que sale de la base: Primera con el menor cociente para n Orden n que entra en la base: de variables: cualquiera pero fijo Ineficiencia en la práctica 61
Programación lineal Organización de los cálculos n Para su aplicación manual n Se disponen los datos en una tabla, c. T A n En 0 b un vértice, la tabla se reajusta como c. T - cb. TB -1 A -cb. TB -1 b 62
Programación lineal ¿Qué información proporciona la tabla? c. T - cb. TB -1 A Multiplicadores Dir. de movimiento -cb. TB -1 b Función objetivo Valores de variables n Cada vértice corresponde a diferentes valores de B y c. B 63
Programación lineal ¿Cómo actualizar la tabla al cambiar B ? n Cambio de B no básica: multiplicador n Variable básica no básica: longitud de paso n Variable n Una columna de B cambia por otra B = ( b 1. . . bk. . . bm ) ( b 1. . . bj. . . bm ) = B’ B’ = B + (bj - bk )ek. T = B (I + ( B -1 bj - ek )ek. T ) = BE 64
Programación lineal n B’ -1 n La matriz de interés en la tabla es la inversa, = E -1 B -1 , E -1 = I - (1/ek. TB -1 bj )( B -1 bj - ek )ek. T N’ = B -1 N , nj’ = B -1 nj B’ -1 A = B -1 A - (1/ek. Tnj’ )(nj’ - ek )ek. TB -1 A Operaciones sobre la tabla: n. A cada fila i se le resta la fila k multiplicada por nij’ /nkj’ n Se pivota sobre el elemento kj 65
Programación lineal La misma operación de pivotaje se aplica al lado derecho y a la fila superior n Ejemplo: n n Introducir en la base x 3 y eliminar x 1 0 -5 3 0 -1 26 0 2 -3 1 1 2 1 -1 1 0 -1 2 n Propiedad n -3 -2 0 0 2 20 3 -1 0 1 -2 8 1 -1 1 0 -1 2 de las columnas básicas: Matriz identidad más ceros en la fila superior 66
Programación lineal Ejemplo min s. a n Problema min s. a x 1 - 2 x 2 - x 3 x 1 + x 3 1 x 1 + 2 x 2 + 2 x 3 2 x 0 auxiliar: a x 1 + x 3 - s 1 +a=1 x 1 + 2 x 2 + 2 x 3 + s 2 =2 x, s, a 0 67
Programación lineal n Tablas para el problema auxiliar 1 0 1 1 -2 0 0 2 -1 0 1 2 0 0 -1 0 0 1 0 1 1 0 0 0 1 2 1 -1 1 1 -2 0 0 2 -1 -1 1 2 0 1 -1 0 0 0 -1 1 1 0 2 n Paso 2. 1. ¿Son positivos los multiplicadores? n Paso 2. 2. Dir. de movimiento y long. de paso: n n Columna multipl. más negativo, fila cociente menor Se pivota sobre el valor 1 68
Programación lineal n Nueva tabla: 1 -1 1 1 -2 0 0 2 -1 -1 1 2 n Nueva 0 1 -1 0 0 0 -1 1 1 0 2 0 0 1 0 -2 0 0 2 -2 0 1 1 1 0 -1 1 0 0 0 1 -1 -1 1 0 1 1 -1 1 tabla es óptima para problema auxiliar 0 -2 -2 1 0 -1 1 0 1 -1 0 2 1 1 69
Programación lineal n De vuelta al problema original: 0 -2 -2 1 0 -1 1 0 1 -1 0 2 1 1 0 0 -1 2 1 1 0 1 -1 0 0 1 1/2 1/2 0 1 1/2 n ¿Es solución? No n Siguiente vértice: 0 0 -1 2 1 1 0 1 -1 0 0 1 1/2 1/2 0 1 2 1 -2 0 -2 -1 0 2 1 1 0 1 70
Programación lineal Resumen: n En la tabla se selecciona: n Columna del multiplicador más negativo n Fila con menor cociente bik’ /nik’ para nik’ > 0 Se pivota sobre el elemento nik’ n El proceso se repite hasta que los multiplicadores tienen el signo correcto n 71
- Slides: 71