ALGORITMO (PRIMAL) DEL SÍMPLEX PARA VARIABLES ACOTADAS
(Problema de minimización)
Paso 1. Determinar una base inicial B y sus matrices no básicas asociadas N1 y N2 , de
forma que lB ≤ B −1 b − B −1 N1 lN1 − B −1 N2 uN2 ≤ uB .
Paso 2. Poner xB = B −1 b − B −1 N1 lN1 − B −1 N2 uN2 , xN1 = lN1 y xN2 = uN2 . Calcular
yj = B −1 aj y zj − cj = ctB yj − cj ∀j ∈ J1 ∪ J2 .
Paso 3. Si zj − cj ≤ 0 ∀j ∈ J1 y zj − cj ≥ 0 ∀j ∈ J2 , PARAR (la solución es óptima:
Si ∃ k ∈ J1 ∪ J2 tal que zk − ck = 0 y ∆k > 0, donde ∆k se calcula como en el Paso 5 si k ∈ J1 o como en el Paso 6 si k ∈ J2 , existen infinitas soluciones óptimas; si zj − cj < 0 ∀j ∈ J1 y zj − cj > 0 ∀j ∈ J2 , la solución es única).
Paso 4. Calcular k = argmáx {{zj − cj | j ∈ J1 con zj − cj > 0}, {−(zj − cj ) | j ∈ J2
con zj − cj < 0}}. Si k ∈ J1 , ir al Paso 5. Si k ∈ J2 , ir al Paso 6. ( ) mı́n xBi − lBi | i ∈ {1, . . . , m} con yik > 0 si yk 6≤ 0 Paso 5. Calcular γ1 = y ik y +∞ si yk ≤ 0 ( ) mı́n uB i − x B i | i ∈ {1, . . . , m} con yik < 0 si yk 6≥ 0 γ2 = −y ik . Poner +∞ si yk ≥ 0 ∆k = mı́n {γ1 , γ2 , uk − lk }. Si ∆k = +∞, PARAR (el valor óptimo de la función objetivo no está acotado). Si ∆k = uk − lk , eliminar la columna ak de la matriz N1 , introducirla en la matriz N2 e ir al Paso 2. Si ∆k = γ1 , intercambiar las columnas aBr y ak de las matrices B y N1 e ir al Paso 2. Si ∆k = γ2 , eliminar la columna aBr de la matriz B, introducir en su lugar la columna ak , eliminar la columna ak de la matriz N1 , introducir la columna aBr en la matriz N2 e ir al Paso 2. ( ) mı́n xBi − lBi | i ∈ {1, . . . , m} con yik < 0 si yk 6≥ 0 Paso 6. Calcular γ1 = −y ik y +∞ si yk ≥ 0 ( ) mı́n uB i − x B i | i ∈ {1, . . . , m} con yik > 0 si yk 6≤ 0 γ2 = yik . Poner +∞ si yk ≤ 0 ∆k = mı́n {γ1 , γ2 , uk − lk }. Si ∆k = +∞, PARAR (el valor óptimo de la función objetivo no está acotado). Si ∆k = uk − lk , eliminar la columna ak de la matriz N2 , introducirla en la matriz N1 e ir al Paso 2. Si ∆k = γ1 , eliminar la columna aBr de la matriz B, introducir en su lugar la columna ak , introducir la columna aBr en la matriz N1 , eliminar la columna ak de la matriz N2 e ir al Paso 2. Si ∆k = γ2 , intercambiar las columnas aBr y ak de las matrices B y N2 e ir al Paso 2. ALGORITMO (PRIMAL) DEL SÍMPLEX PARA VARIABLES ACOTADAS (Problema de maximización)
Paso 1. Determinar una base inicial B y sus matrices no básicas asociadas N1 y N2 , de
forma que lB ≤ B −1 b − B −1 N1 lN1 − B −1 N2 uN2 ≤ uB .
Paso 2. Poner xB = B −1 b − B −1 N1 lN1 − B −1 N2 uN2 , xN1 = lN1 y xN2 = uN2 . Calcular
yj = B −1 aj y zj − cj = ctB yj − cj ∀j ∈ J1 ∪ J2 .
Paso 3. Si zj − cj ≥ 0 ∀j ∈ J1 y zj − cj ≤ 0 ∀j ∈ J2 , PARAR (la solución es óptima:
Si ∃ k ∈ J1 ∪ J2 tal que zk − ck = 0 y ∆k > 0, donde ∆k se calcula como en el Paso 5 si k ∈ J1 o como en el Paso 6 si k ∈ J2 , existen infinitas soluciones óptimas; si zj − cj > 0 ∀j ∈ J1 y zj − cj < 0 ∀j ∈ J2 , la solución es única).
Paso 4. Calcular k = argmı́n {{zj − cj | j ∈ J1 con zj − cj < 0}, {−(zj − cj ) | j ∈ J2
con zj − cj > 0}}. Si k ∈ J1 , ir al Paso 5. Si k ∈ J2 , ir al Paso 6. ( ) mı́n xBi − lBi | i ∈ {1, . . . , m} con yik > 0 si yk 6≤ 0 Paso 5. Calcular γ1 = y ik y +∞ si yk ≤ 0 ( ) mı́n uB i − x B i | i ∈ {1, . . . , m} con yik < 0 si yk 6≥ 0 γ2 = −y ik . Poner +∞ si yk ≥ 0 ∆k = mı́n {γ1 , γ2 , uk − lk }. Si ∆k = +∞, PARAR (el valor óptimo de la función objetivo no está acotado). Si ∆k = uk − lk , eliminar la columna ak de la matriz N1 , introducirla en la matriz N2 e ir al Paso 2. Si ∆k = γ1 , intercambiar las columnas aBr y ak de las matrices B y N1 e ir al Paso 2. Si ∆k = γ2 , eliminar la columna aBr de la matriz B, introducir en su lugar la columna ak , eliminar la columna ak de la matriz N1 , introducir la columna aBr en la matriz N2 e ir al Paso 2. ( ) mı́n xBi − lBi | i ∈ {1, . . . , m} con yik < 0 si yk 6≥ 0 Paso 6. Calcular γ1 = −y ik y +∞ si yk ≥ 0 ( ) mı́n uB i − x B i | i ∈ {1, . . . , m} con yik > 0 si yk 6≤ 0 γ2 = yik . Poner +∞ si yk ≤ 0 ∆k = mı́n {γ1 , γ2 , uk − lk }. Si ∆k = +∞, PARAR (el valor óptimo de la función objetivo no está acotado). Si ∆k = uk − lk , eliminar la columna ak de la matriz N2 , introducirla en la matriz N1 e ir al Paso 2. Si ∆k = γ1 , eliminar la columna aBr de la matriz B, introducir en su lugar la columna ak , introducir la columna aBr en la matriz N1 , eliminar la columna ak de la matriz N2 e ir al Paso 2. Si ∆k = γ2 , intercambiar las columnas aBr y ak de las matrices B y N2 e ir al Paso 2.