MÉTODO SIMPLEX El primer procedimiento de solución lo proporcionó Dantzing en 1947, y este método se conoció con el nombre de método simplex. El algoritmo del simplex funciona básicamente como hemos visto en el método algebraico, resolviendo el sistema de ecuaciones que forman las restricciones, pero de forma automática, y manteniendo la factibilidad de la solución actual, para lo cual parte de una solución factible básica inicial y a partir de ella obtiene otras soluciones factibles básicas que proporcionan un mejor valor de la función objetivo, repitiendo el proceso hasta que no es posible mejorar el valor de la función. Programa lineal en forma estándar: Max Z = c x s.a: A x = b x≥0 1 Punto de partida: SFBI: ( ) x 0 = x 10 , x 02 ,L , x 0m ,0,L ,0 B x0 = b, es decir: P1 x 10 + P2 x 02 +L+ Pm x 0m = b Pk = P1y1k+ P2y2k+ · · · + Pmymk P1 = 1 ( Pk − P2 y 2 k −L− Pm y mk ) y 1k 1 ( Pk − P2 y 2 k −L− Pm y mk ) x10 + P2 x 02 +L+ Pm x 0m = b y 1k 0 0 x 10 x 10 x 10 P2 x 2 − y 2 k =b +L+ Pm x m − y mk + Pk y 1k y 1k y 1k Nuevo punto: Es una nueva SFB?. Condiciones: a) Los m vectores son linealmente independientes, base B. b) Es una solución factible ( A x = b, x ≥ 0 ) λ2 P2 + ... + λm Pm+λkPk = 0 si λk ≠ 0, entonces: Pk = - 1 λk (λ2P2+ L +λmPm) Pk = P1y1k+ P2y2k+ · · · + Pmymk Pk = - 1 λk (λ2P2+ L +λmPm) 2 λ λ 0 = P1 y 1k + P2 y 2 k + 2 +L+ Pm y mk + m λk λk Vamos a ver ahora la condición b),es decir, que sea una solución factible (Ax=b, x ≥ 0 ). Como ya hemos visto verifica A x = b: 0 0 x 10 x 10 x 10 P2 x 2 − y 2 k =b +L+ Pm x m − y mk + Pk y 1k y 1k y 1k por tanto solo queda por comprobar la no negatividad de las variables. La estructura de las variables es de la siguiente forma: Para i =k → Para i ≠ k → x >0 >0 x 0i x 10 > y ik y1k y1k > 0, x 0i y jk 0 x 10 x i − y ik y 1k x 0i y 1k 0 i min { x 10 y 1k / yjk> 0 }. criterio de salida criterio de entrada Z0 = Z1 = c 1 x 10 + c 2 x 02 +L+ c m x 0m x0 x0 x0 c 2 x 02 − y 2 k 1 +L+ c m x 0m − y mk 1 + c k 1 y 1k y 1k y 1k habrá que comprobar si Z1>Z0, 1 0 Z - Z = −c1 x 0 1 − c2 y2k x 10 x 10 x 10 −L− c m y mk + ck y 1k y 1k y 1k 3 Z1 - Z0 = x 10 c k − (c 1 y 1k + c 2 y 2 k +L+ c m y mk ) y 1k [ ] Zk = cB B-1Pk = c1y1k+ c2y2k+ · · · + cmymk 1 0 x 10 y 1k 0 x 10 y 1k Z -Z = 1 Z =Z + (ck - Zk) (ck - Zk) : x 10 y 1k (ck - Zk) ≥ 0 Max { (ck- Zk / (ck- Zk ≥ 0 }. 4 (8) (9) 3.- ALGORITMO DEL SIMPLEX EN FORMATO TABLA. CB Cj 0 Xj Sj XB B-1·A B-1·b Zj= CBB-1Pj Z= Wj= Cj-Zj CBB-1b Ejemplo: Max Z = 4 x1 + 5 x2 s.a: 2 x1 + x2 ≤ 8 x2 ≤ 5 x1 ≥ 0 , x2 ≥ 0 Max Z = 4 x1 + 5 x2 + 0 s1 + 0 s2 s.a: 2 x 1 + x 2 + s1 = 8 x 2 + s2 = 5 x 1 ≥ 0 , x 2 ≥ 0 , s1 ≥ 0 , s2 ≥ 0 . 1 0 B= = B −1 0 1 5 y entonces 2 1 1 0 0 1 0 1 B-1·A = A= y B-1·b = b= 8 5 Así pues la tabla correspondiente a esta solución factible básica inicia (SFBI) será la siguiente: 0 0 s1 s2 Zj Wj 4 x1 2 0 4 4 5 x2 1 1 5 5 0 s1 1 0 0 0 0 s2 0 1 0 0 8 5 0 Metodo Algebraico: Max Z = 4 x1 + 5 x2 + 0 s1 + 0 s2 = 0 Max { (cj - Zj) / (cj - Zj) ≥ 0 }. min { x 0i y ik / yik > 0 }. en nuestro caso como la variable que entra es x2, habrá que elegir min { x 0i y i2 / yi2 > 0 }. en nuestro caso x 10 s1 8 0 = = x 2 s 2 5 y 12 1 −1 = B P2 = P2 = y 22 1 , por lo que habrá que elegir 6 min { 8 1 , 5} 1 Así pues a partir de la tabla anterior 7 4 x1 0 0 0 0 5 x2 0 s1 0 s2 s1 s2 Zj Wj s1 s2 Zj Wj 4 5 0 0 X1 x2 s1 s2 y11=2 y12=1 y13=1 y14=0 y21=0 y22=1 y23=0 y24=1 4 5 0 0 4 5 0 0 8 8 5 0 0 5 0 5 4 x1 5 x2 0 s1 0 s2 4 x1 2* 0 4 4 5 x2 0 1 5 0 0 s1 1 0 0 0 0 s2 -1 1 5 -5 s1 x2 Zj Wj s1 x2 Zj Wj 2 x1 + s1 - s2 = 3 x2 - s2 = 5 Z = 25 + 4 x1 - 5 s2 9 3 5 25 4 5 4 5 4 x1 5 x2 0 s1 0 s2 4 X1 1 0 4 0 5 x2 0 1 5 0 0 0 s1 s2 1/2 -1/2 3/2 0 1 5 2 3 -2 -3 31 x1 x2 Zj Wj x1 x2 Zj Wj Las ecuaciones finales del método algebraico eran: x1 + ½ s1 - ½ s2 = 3/2 x 2 + s2 = 5 Z = 31 - 2 s1 - 3 s2 10 Ejemplo: Máx Z = 2 x1 + x2 s.a: - x1 + x2 ≤ 2 x1 + 2 x2 ≤ 6 2 x1 + x2 ≤ 6 x1 ≥ 0, x2 ≥ 0 (2/3,8/3) (0,2) (2,2) (0,0) (3,0) Gráfico 1 Vértice: (2,2) Z = 2·2 + 2 = 6 Vértice: (3,0) Z = 2·3 + 0 = 6 Los puntos del segmento lineal que une ambos vértices (arista) serán de la forma: x = λ x1 + (1 - λ ) x2 = λ (2,2) + (1 - λ ) (3,0) = (2 λ + 3 - 3 λ, 2 λ ) = (3 - λ, 2 λ ) 11 Para cualquier punto genérico de la arista, es decir para (3 λ, 2 λ ), el valor de la función objetivo será: Z = 2 · (3 - λ) + 2 λ = 6 - 2 λ + 2 λ = 6 como puede comprobarse el valor de la función objetivo es el mismo que en los dos vértices solución. Máx Z = 2 x1 + x2 + 0 ·( s1 + s2 + s3) s.a: - x1 + x2 + s1 = 2 x 1 + 2 x 2 + s2 = 6 2 x 1 + x 2 + s3 = 6 x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0, s3 ≥ 0. 12 2 x1 1 x2 0 s1 0 s2 0 s3 2 x1 -1 1 2* 2 2 1 x2 1 2 1 1 1 0 s1 1 0 0 0 0 0 s2 0 1 0 0 s3 0 0 1 0 0 Zj Wj 0 0 0 s1 s2 s3 Zj Wj 13 0 2 6 6 0 0 0 2 0 0 2 2 x1 1 x2 0 s1 0 s2 0 s3 2 x1 0 0 1 2 0 1 x2 3/2 3/2 1/2 1 0 0 s1 1 0 0 0 0 0 s2 0 1 0 0 0 0 s3 1/2 -1/2 1/2 1 -1 s1 s2 x1 Zj Wj s1 s2 x1 Zj Wj 14 5 3 3 6 0 1 2 0 1 2 2 x1 1 x2 0 s1 2 x1 0 0 1 2 0 1 x2 0 1 0 1 0 0 s1 1 0 0 0 0 0 s2 0 s3 s1 x2 x1 Zj Wj s1 x2 x1 Zj Wj 15 0 0 s2 s3 -1 0 2/3 -1/3 -1/3 2/3 0 1 0 -1 2 2 2 6 Ejemplo : Máx Z = x1 + 2 x2 s.a: - x1 + x2 ≤ 2 x2 ≤ 4 x1 ≥ 0, x2 ≥ 0. Máx Z = x1 + 2 x2+ 0 (s1 + s2) s.a: - x1 + x2 +s1 = 2 x 2 + s2 = 4 x1 ≥ 0, x2 ≥ 0, s1≥0, s2≥0. La tabla inicial del algoritmo del simplex, eligiendo como variables básicas a la variables de holgura, será: 16 1 x1 2 x2 0 s1 0 s2 1 X1 -1 0 0 1 2 x2 1* 1 0 2 0 s1 1 0 0 0 0 s2 0 1 0 0 Zj Wj 0 0 s1 s2 Zj Wj 17 2 4 0 2 0 2 0 1 x1 2 x2 0 s1 0 s2 1 x1 -1 1* -2 3 2 x2 1 0 2 0 0 s1 1 -1 2 -2 0 s2 0 1 0 0 x2 s2 Zj Wj x2 s2 Zj Wj 18 2 2 4 2 1 2 1 1 x1 2 x2 0 s1 0 s2 1 X1 0 1 1 0 2 x2 1 0 2 0 0 s1 0 -1 -1 1 0 s2 1 1 3 -3 x2 x1 Zj Wj x2 x1 Zj Wj 19 4 2 8 4. VARIABLES ARTIFICIALES. MÉTODO DE LAS PENALIZACIONES Si las restricciones son de la forma mayor-igual: ak1 x1 + ak2 x2 + ... + akn xn ≥ bk ak1 x1 + ak2 x2 + ... + akn xn - sk = bk ak1 x1 + ak2 x2 + ... + akn xn - sk + Ak = bk Restricciones de igualdad: ak1 x1 + ak2 x2 + ... + akn xn + Ak = bk Método de las penalizaciones Ejercicio: Max Z = 3 x1 + 2 x2 s.a: 2 x1 - x2 ≥ 3 x1 + x2 ≤ 6 x1 ≥ 0, x2 ≥ 0 20 (3,3) (6,0) Gráfico 3 Max Z = 3 x1 + 2 x2 + 0 s1 + 0 s1 s.a: 2 x1 - x2 - s1 = 3 x 1 + x 2 + s2 = 6 x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0 Max Z = 3 x1 + 2 x2 + 0 s1 + 0 s1 -M A1 s.a: 2 x1 - x2 - s1 + A1 = 3 x 1 + x 2 + s2 = 6 x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0, A1 ≥ 0 21 3 x1 2 x2 0 s1 -M A1 0 s2 3 2 x1 x2 2* -1 1 1 -2M M 3+ 2 2M -M 0 s1 -1 0 M 0 -M -M A1 1 0 -M 0 0 s2 0 1 0 0 Zj Wj -M A1 0 s2 Zj Wj 22 3 6 -3M 3 0 3 0 3 x1 2 x2 0 s1 -M A1 0 s2 3 x1 1 0 3 0 2 x2 -1/2 3/2* -3/2 7/2 0 s1 -1/2 1/2 -3/2 3/2 -M A1 1/2 -1/2 3/2 -3/2 -M 0 s2 0 1 0 0 x1 s2 Zj Wj x1 s2 Zj Wj 23 3/2 9/2 9/2 3 2 3 2 3 x1 2 x2 0 s1 -M A1 0 s2 3 X1 1 0 3 0 2 x2 0 1 2 0 0 s1 -1/3 1/3* -1/3 1/3 -M A1 1/3 -1/3 1/3 -1/3 -M 0 s2 1/3 2/3 7/3 -7/3 x1 x2 Zj Wj x1 x2 Zj Wj 24 3 3 15 3 0 3 0 3 x1 2 x2 0 s1 -M A1 0 s2 3 x1 1 0 3 0 2 x2 1 3 3 -1 0 s1 0 1 0 0 -M A1 0 -1 0 0 -M 0 s2 1 2 3 -3 x1 s1 Zj Wj x1 s1 Zj Wj 25 6 9 18 Max Z = 2 x1 + 3 x2 s.a: 3 x1 + x2 ≥ 3 5 x1 + 2 x2 ≤ 4 x1 ≥ 0, x2 ≥ 0. S=0 Gráfico 4 Max Z = 2 x1 + 3 x2 + 0 s1 + 0 s2 - M A1 s.a: 3 x1 + x2 - s1 + A1 = 3 5 x 1 + 2 x 2 + s2 = 4 x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0, A1 ≥ 0. 26 -M A1 0 s2 Zj Wj -M A1 2 x1 Zj 2 x1 0 1 2 Wj 0 2 3 x1 x2 3 1 * 5 2 -3M -M 2+ 3 3M +M 3 x2 -1/5 2/5 4/5+ 1/5M 11/51/5M 0 s1 -1 0 M -M A1 1 0 -M 0 0 s2 0 1 0 0 3 4 -3M -M 0 s1 -1 0 M -M A1 1 0 -M 0 -M 27 0 s2 -3/5 3/5 1/5 4/5 2/5+ 8/5 3/5M -2/5- -3/5M 3/5M