Tema 3
Tema 3
37
3.1. Fundamentos del Simplex. Método del Simplex en forma tabular
(maximice o minimice) una función objetivo sujeta a unas restricciones, esto es,
Opt z = c1 x1 + c2 x2 + · · · cn xn
s.a a11 x1 + a12 x2 + · · · + a1n xn (≤, =, ≥)b1
a21 x1 + a22 x2 + · · · + a2n xn (≤, =, ≥)b2
······························
am1 x1 + am2 x2 + · · · + amn xn (≤, =, ≥)bm
Opt z = c′ x
s.a. Ax(≤, =, ≥)b
x≥0
siendo
a11 a12 ··· a1n
a21 a22 ··· a2n
A=
···
, x = (x1 .x2 , . . . , xn )′ , b = (b1 , b2 , . . . , bm )′ , c = (c1 , c2 , . . . , cn )′
··· ··· ···
am1 am2 ··· amn
Opt z = c′ x
s.a. Ax = b
x≥0
donde cn×1 , xn×1 , bm×1 , Am×n con n > m. Se denota Aj la j-ésima columna de A.
M ax z = c′ x
s.a. Ax ≤ b
x≥0
Si las m ecuaciones producen una solución única, entonces las m variables asociadas
se llaman variables básicas y las n − m variables restantes se conocen como variables
no básicas. Las variables básicas son el equivalente a los puntos extremos en la resolución
gráfica de un problema de programación lineal.
Si todas las variables toman valores no negativos, entonces la solución es factible.
De lo contrario es no factible.
x1 + 4x3 = 8
4x1 + 2x3 = 4
cuya matriz de coeficientes, A, es de rango m (rango máximo), se define una base como
el conjunto de vectores columna de cualquier submatriz B de rango m y por tanto no
singular. Al vector xB de variables asociadas a la submatriz B se le llama vector de
variables básicas y a la solución del sistema BxB = b dada por xB = B −1 b se denomina
solución básica. Realmente la solución básica es el vector x que tiene por valores de las
variables ceros salvo para las variables de xB . Cuando una o más variables básicas son cero
se denomina a la solución básica solución degenerada. A partir de la definición anterior se
puede observar que un sistema de ecuaciones simultáneas puede tener muchas soluciones
básicas distintas.
2x1 + x2 ≤ 8
4x1 + 3x2 ≥ 14
2x1 + x2 + s1 = 8
4x1 + 3x2 − s2 = 14
solución básica factible del problema transformado en el que las variables artificiales tomen
el valor cero es una solución básica factible del sistema original. Será deseable llevar a cero
lo antes posible a las variables artificiales para que no aparezcan en la base. Una forma
de hacer esto consiste en asignarles en la función objetivo a tales variables un coeficiente
M que se considera un valor muy grande con signo negativo. Por contra las variables de
holgura o exceso suelen tener coeficientes nulos en la función objetivo.
Ejemplo 14.
M ax z = 2x1 + 4x2 − 5x3
s.a. 3x1 + x2 − x3 ≤ 8
2x1 − x2 + 4x3 ≥ 16
x1 + x3 = 7
x1 , x 2 , x 3 ≥ 0
En primer lugar se transforma en un problema de maximizar y después se añaden
variables de holgura y artificiales:
M ax z ′ = 2x1 + 4x2 − 5x3 + 0s1 + 0s2 − M t1 − M t2
s.a. 3x1 + x2 − x3 + s1 = 8
2x1 − x2 + 4x3 − s2 + t1 = 16
x1 + x3 + t2 = 7
x1 , x 2 , x 3 , s 1 , s 2 , t 1 , t 2 ≥ 0
con s1 y s2 variables de holgura y t1 , t2 variables artificiales. Las variables básicas iniciales
son s1 , t1 y t2 .
En la última columna (de la derecha) se muestran los valores de las variables básicas.
Cada iteración del método Simplex tiene asociada una tabla como la anterior. Tras una
tabla inicial en la que las variables básicas tienen como vectores básicos la base canónica
se determina la variable que ha de entrar en la base en función de los costes { reducidos
}
zj −cj y la variable que ha de salir de la base la que verifique que ykj = min yij : yij > 0
xbk xBi
para los yij de la variable que entra en la base. Finalmente se construye la nueva tabla
del Simplex con las nuevas variables básicas buscando la base canónica en los vectores
básicos mediante operaciones elementales de fila (Gauss).
Algoritmo:
1. Una variable no básica xj puede entrar pero ninguna puede salir. El problema es no
acotado.
M ax z = 3x1 + 2x2
s.a. 2x1 + 3x2 ≤ 12
2x1 + x2 ≤ 8
x1 , x 2 ≥ 0
3 2 0 0
VB x1 x2 s1 s2 xB
0 s1 2 3 1 0 12
0 s2 2 1 0 1 8
zj − cj -3 -2 0 0 0
Paso 3. No hay vectores asociados yj con los zj − cj negativos (y1 = (2, 2), y2 =
(3, 1)), con todos sus elementos menores o iguales que cero, por lo que es posible
una mejora de la solución actual.
xB1 12 xB2 8
= = 6, = =4
y11 2 y21 2
y el mı́nimo corresponde a la segunda fila, ası́ que r = 2 es la fila pivote con x4 la
variable de salida de la base. El elemento y21 = 2 es el pivote (marcado en la tabla
con un recuadro).
3 2 0 0
VB x1 x2 s1 s2 xB
0 s1 0 2 1 -1 4
3 x1 1 1/2 0 1/2 4
zj − cj 0 -1/2 0 3/2 12
Volvemos a paso 1.
Paso 3. Hay elementos positivos en la columna asociada (2, 1/2), por lo que hay
posibilidad de mejora. Ir a paso 4.
3 2 0 0
VB x1 x2 s1 s2 xB
2 x2 0 1 1/2 -1/2 2
3 x1 1 0 -1/4 3/4 3
zj − cj 0 0 1/4 5/4 13
Como todos los valores zj − cj son positivos la tabla nos da la solución óptima con:
x1 = 3, x2 = 2, s1 = 0, s2 = 0
con valor de la función objetivo z ∗ = 13.
Si este problema se hubiera resuelto de forma gráfica, podrı́a comprobarse que en
las iteraciones del algoritmo el movimiento ha sido de valor extremo a valor extremo
adyacente de la función objetivo.
1 2 0 0 -M 1 2 0 0 -M
VB x1 x2 s1 s2 t1 xB VB x1 x2 s1 s2 t1 xB
0 s1 3 0 1 1 -1 10 0 s2 3 0 1 1 -1 10
2 x2 1 1 0 -1 1 2 2 x2 4 1 1 0 0 12
zj − cj 1 0 0 -2 2+M 4 zj − cj 7 0 2 0 M 24
La solución óptima es x∗1 = 0, x∗2 = 12, s∗1 = 0 s∗2 = 10 t∗1 = 0 con z ∗ = 24.
Observando las restricciones del problema, notemos que al ser s1 = 0, la primera
restricción no tiene holgura, es decir, se verifica como igualdad en la solución óptima,
mientras que como s2 = 10, la segunda restricción tiene un superávit o sobrante en la
solución óptima de 10 unidades.
Fase 2: Se aplica el método simplex al problema original (si no hay variables arti-
ficiales en la base final de la fase 1), utilizando la solución básica factible obtenida
antes, como solución de partida. Si por el contrario al final de la fase 1 hay variables
artificiales en la base (con valor cero), la función objetivo que se utiliza es la original
del problema más esas variables artificiales, a las que se les asigna un coeficiente
nulo. En ambos casos, al inicio de la fase 2 se prescinde de las columnas correspon-
dientes a las variables artificiales que no estuvieran en la base al final de la fase
anterior.
Algoritmo:
Inicialización
Fase 1
Fase 2
Inicialización
Paso 0. Poner el problema en la forma estándar de maximización añadiendo variables
de holgura y artificiales.
M ax z ′ = −x1 − x2 − 4x3 + 0s1 − M t1 − M t2
s.a. x1 + 2x2 − x3 − s1 + t1 = 20
3x1 + x3 + t2 = 14
x1 , x 2 , x 3 , s 1 , t 1 , t 2 ≥ 0
Fase 1
Paso 1. La función objetivo artificial es
z 0 = 0x1 + 0x2 + 0x3 + 0s1 − t1 − t2
Paso 2. Aplicar el método simplex al programa construido.
0 0 0 0 -1 -1
VB x1 x2 x3 s1 t1 t2 xB
-1 t1 1 2 -1 -1 1 0 20
-1 t2 3 0 1 0 0 1 14
zj − cj -4 -2 0 1 0 0 -34
0 0 0 0 -1 -1
VB x1 x2 x3 s 1 t1 t2 xB
-1 t1 0 2 -4/3 -1 1 -1/3 46/3
0 x1 1 0 1/3 0 0 1/3 14/3
zj − cj 0 -2 4/3 1 0 4/3 -46/3
0 0 0 0 -1 -1
VB x1 x2 x3 s1 t1 t2 xB
0 x2 0 1 -2/3 -1/2 1/2 -1/6 23/3
0 x1 1 0 1/3 0 0 1/3 14/3
zj − cj 0 0 0 0 1 1 0
Fase 2
Paso 4. Se prescinde de las variables artificiales por no estar en la base, ası́ como de
sus columnas. Se forma la tabla inicial de la fase 2 en la que no aparecen las
columnas de t1 y t2 y están cambiados los coeficientes cB y cj . Se calcula por
tanto de nuevo los valores zj − cj y z.
-1 -1 -4 0
VB x1 x2 x3 s1 xB
-1 x2 0 1 -2/3 -1/2 23/3
-1 x1 1 0 1/3 0 14/3
zj − cj 0 0 13/3 1/2 -37/3
Ejemplo 19. Dado el siguiente problema de programación lineal, que llamamos primal,
obtener su problema dual
M ax z = 2x1 − x2 + 2x3 + x4
s.a. 2x1 + x2 + x3 + 2x4 ≤ 18
3x1 + 4x2 + 2x3 + x4 ≤ 24
x≥0
su problema dual es
M in w = 18y1 + 24y2
s.a. 2y1 + 3y2 ≥ 2
y1 + 4y2 ≥ −1
y1 + 2y2 ≥ 2
2y1 + y2 ≥ 1
y≥0
A las variables x1 , x2 , x3 , x4 se les denomina variables primales de decisión y a y1 , y2
variables duales de decisión.
Se tienen las siguientes relaciones estructurales entre ambos problemas:
1. El objetivo de un problema es de maximización y el del otro de minimización.
2. El el problema de maximización, todas las restricciones son desigualdades del tipo
≤ y en el de minimización del tipo ≥.
3. Todas las variables primales y duales son no negativas.
4. Los elementos a la derecha de las restricciones son los coeficientes de la función
objetivo en el otro.
5. Cada variable en un problema da lugar a una restricción en el otro y viceversa.
6. La matriz de los coeficientes de las restricciones en un problema es la traspuesta de
la matriz de coeficientes en el otro.
Relaciones en dualidad
1. El dual del problema dual es el primal.
2. Dualidad débil.
El valor de la función objetivo z del problema de maximización es siempre menor o
igual que el valor de la función objetivo w del problema de minimización, si ambos
son factibles.
6. Si existen soluciones factibles para los problemas primal y dual que dan igual valor
a los respectivos objetivos, tales soluciones son óptimas.
si yi∗ = 0 para i = 1, . . . , m
vj x∗j = 0 para j = 1, . . . , n
por lo que estas condiciones se pueden interpretar para que exista una solución
óptima como
si yi∗ = 0 para i = 1, 2
vj x∗j = 0 para j = 1, 2, 3
por lo tanto
y1∗ + 4y2∗ = 4
y1∗ + y2∗ = 2
M ax z = 4x1 + 2x2 + x3
s.a. x1 + x2 + x3 ≤ 12
4x1 + x2 + 2x3 ≤ 18
x≥0
4 2 1 0 0
VB x1 x2 x3 s 1 s2 xB
0 s1 0 3/4 1/2 1 -1/4 15/2
4 x1 1 1/4 1/2 0 1/4 9/2
zj − cj 0 -1 1 0 1 18
4 2 1 0 0
VB x1 x2 x3 s1 s2 xB
2 x2 0 1 2/3 4/3 -1/3 10
4 x1 1 0 1/3 -1/3 1/3 2
zj − cj 0 0 5/3 4/3 2/3 28
SOLUCIÓN ÓPTIMA:
La siguiente tabla muestra de forma resumida como obtener el problema dual a partir del
primal:
M ax z = 2x1 + 3x2
s.a. x1 − x2 ≥ 0
x1 + x 2 = 8
−3x1 + 2x2 ≤ 4
x1 ≥ 0, x2 no restringida
M ax z = 2x1 + 3x2
s.a. −x1 + x2 ≤ 0
x1 + x2 = 8
−3x1 + 2x2 ≤ 4
x1 ≥ 0, x2 no restringida
La segunda restricción dual es una igualdad ya que la segunda variable primal no está
restringida. La segunda variable dual no está restringida ya que la segunda restricción
primal es una igualdad.
M in z = 2x1 + 3x2 − x3
s.a. 2x1 + x2 − x3 ≥ 2
x1 − 2x2 + 3x3 = 6
x1 + 3x2 + 4x3 ≤ 10
x1 , x2 ≥ 0, x3 no restringida
ALGORITMO
seleccionando como variable de entrada aquella que tenga mayor cociente. La colum-
na pivote se nota por k y la variable asociada por xk . El elemento yrk es el elemento
pivote.
Si yrj ≥ 0 para todo j (todos los elementos de la fila pivote son no negativos) el
problema no tiene solución (el dual es no acotado y el primal es infactible)
Paso 4. Establecer una nueva tabla mediante el mismo procedimiento que con el
simplex primal. Volver a paso 1.
M in z = 2x1 + x2 + 4x3
s.a. 2x1 − x2 + 3x3 ≥ 8
x1 + 3x2 + 2x3 ≥ 7
x1 , x 2 , x 3 ≥ 0
Se puede aplicar el método del simplex dual ya que es primal infactible (xB1 = −8, xB2 =
−7) y dual factible (zj − cj ≥ 0)).
El xBi más negativo corresponde a la primera fila, ası́ que esta es la fila pivote (r = 1),
por lo que s1 sale de la base. Para determinar la variable de entrada, se calculan los
zj − cj
cocientes para las columnas con y1j < 0, y se elige aquella con mayor cociente:
y1j
z1 − c1 2 z3 − c3 4 −4
= = −1; = = = −1,33
y11 −2 y13 −3 3
En este caso, la columna pivote es la primera, k = 1, y el elemento pivote es y11 = −2.
Se construye la nueva tabla del simplex dual:
-2 -1 -4 0 0
VB x1 x2 x3 s1 s2 xB
-2 x1 1 -1/2 3/2 -1/2 0 4
0 s2 0 -7/2 -1/2 -1/2 1 -3
zj − cj 0 2 1 1 0 -8
Sigue habiendo un xBi negativo, por lo que volvemos al inicio del algoritmo. El xBi
más negativo corresponde a la segunda fila, ası́ que esta es la fila pivote (r = 2), por lo
que s2 sale de la base. Para determinar la variable de entrada, se calculan los cocientes
zj − cj
para las columnas con y2j < 0, y se elige aquella con mayor cociente:
y2j
z2 − c2 2 4 z3 − c3 1 z4 − c4 1
= =− ; = = −2; = = −2
y12 −7/2 3 y13 −1/2 y14 −1/2
En este caso, la columna pivote es la segunda, k = 2, y el elemento pivote es y22 = −7/2.
La tabla resultante es
-2 -1 -4 0 0
VB x1 x2 x3 s1 s2 xB
-2 x1 1 0 23/14 22/14 1/7 31/7
-1 x2 0 1 1/7 1/7 -2/7 6/7
zj − cj 0 0 5/7 5/7 4/7 -68/7
La nueva solución dual básica factible es xB = (31/7, 6/7) ≥ 0, luego es óptima. Por
tanto la solución es:
31 6
x∗1 = , x∗2 = , x∗3 = s∗1 = s∗2 = 0, z ∗ = −z ′∗ = 68/7
7 7
La variable dual yi∗ indica la contribución por unidad del recurso i-ésimo bi a la
variación en el valor óptimo z ∗ actual del objetivo.
Los valores óptimos de las variables duales se denominan precios sombra y se
utilizan para ver si puede resultar ventajoso introducir determinadas cantidades de
recursos adicionales.
El precio sombra del recurso malta (b1 ) es y1∗ = 1/3 y representa el incremento del
valor z ∗ = 160 por unidad incrementada en la disponibilidad de malta. Análogamente,
y2∗ = 10/3, es el precio sombra del recurso levadura (b2 ).
Si por ejemplo b = (30, 45) se incrementa en △b = (△b1 , △b2 ) = (10, 15) unidades, el
valor del objetivo se incrementa en
M ax z = c′ x (3.3)
s.a. Ax ≤ b
x≥0
y supóngase que se ha obtenido una solución óptima x∗ para él y además se dispone de
la tabla final del simplex. En estas condiciones se analizarán las siguientes cuestiones:
Supongamos ahora que el beneficio de B pasa a ser de 8 unidades por litro. En este
caso la solución dejará de ser óptima, ya que z3 − c3 serı́a negativo, por lo que x3 deberá
entrar en la base y x1 abandonarla. Para ello se utiliza la última tabla del simplex.
4 7 8 0 0
VB x1 x2x3 s1 s2 xB
4 x1 1 02/3 2/3 -1/3 5
7 x2 0 12/3 -1/3 2/3 20
zj − cj 0 0-2/3 1/3 10/3 160
4 7 8 0 0
VB x1 x 2 x3 s1 s2 xB
8 x3 3/2 0 1 1 -1/2 15/2
7 x2 -1 1 0 -1 1 15
zj − cj 1 0 0 1 3 165
( )
2/3 1 2
ẑ3 − c3 = (4, ĉ2 ) − 3 = − + ĉ2 ≥ 0 ⇐⇒ ĉ2 ≥ 1/2
2/3 3 3
( )
2/3 8 1
ẑ4 − c4 = (4, ĉ2 ) − 0 = − ĉ2 ≥ 0 ⇐⇒ ĉ2 ≤ 8
−1/3 3 3
( )
−1/3 4 2
ẑ5 − c5 = (4, ĉ2 ) − 0 = − + ĉ2 ≥ 0 ⇐⇒ ĉ2 ≥ 2
2/3 3 3
ẑ = 4 · 5 + 4 · 20 = 100
( )
2/3 8 18 17
ẑ3 − c3 = (4, 9) −3= + −3= ≥0
2/3 3 3 3
( )
2/3 8 9 1
ẑ4 − c4 = (4, 9) −0= − =− ≤0
−1/3 3 3 3
( )
−1/3 4 18 14
ẑ5 − c5 = (4, 9) −0=− + = ≥0
2/3 3 3 3
Como ẑ4 − c4 ≤ 0, se tiene que aplicar de nuevo el método simplex hasta alcanzar la
optimalidad. Se parte de la siguiente tabla:
4 9 3 0 0
VB x1 x2 x3 s1 s2 xB
4 x1 1 0 2/3 2/3 -1/3 5
9 x2 0 1 2/3 -1/3 2/3 20
zj − cj 0 0 17/3 -1/3 14/3 200
4 9 3 0 0
VB x1 x2 x3 s1 s2 xB
0 s1 3/2 0 1 1 -1/2 15/2
9 x2 1/2 1 1 0 1/2 45/2
zj − cj 1/2 0 6 0 9/2 202,5
Cambio en un recurso
En cualquier iteración del método simplex, hemos notado mediante yik al elemento interior
de la tabla que va asociado a la fila i y la columna k. Inicialmente tales elementos se
corresponden con los coeficientes aik de cada restricción, incluidos los de las variables de
holgura y/o artificiales.
Para llevar a cabo el análisis de sensibilidad de los recursos bi es necesario utilizar la
matriz de recursos B −1 que es la inversa de la actual matriz básica. Tal matriz es aquella
cuyos elementos son las columnas de la tabla inicial de las variables básicas actuales. Para
determinar B −1 vamos a utilizar las tablas del simplex.
Tal matriz inversa se obtiene a partir de las columnas correspondientes al conjunto
de variables básicas iniciales en el cuadro correspondiente a la iteración actual. Una vez
conocida la matriz B −1 podemos analizar el cambio que se produce sobre la solución
óptima cuando hay una variación en la disponibilidad de un recurso bi .
En la tabla del simplex, la columna de la derecha corresponde a los valores xB de las
variables básicas que se obtuvieron en cada iteración y que se corresponden con los valores
bi de los recursos en la tabla inicial. Una variación en un bi lleva consigo un cambio sobre
el vector xB y sobre el valor z del objetivo. Sin embargo, los valores zj − cj permanecen
iguales.
Si llamamos b̂ al nuevo vector de recursos, B −1 a la inversa de la actual matriz básica
y x̂B al nuevo vector correspondiente al lado derecho de la tabla actual se tiene que:
x̂B = B −1 b̂
ẑ = CBT x̂TB
Si x̂B ≥ 0, la tabla permanece óptima.
Ejemplo 28. Siguiendo el ejemplo anterior,
4 7 3 0 0
VB x1 x2 x3 s1 s2 xB
4 x1 1 0 2/3 2/3 -1/3 5
7 x2 0 1 2/3 -1/3 2/3 20
zj − cj 0 0 13/3 1/3 10/3 160
La matriz B −1 teniendo en cuenta que las variables básicas iniciales son s1 y s2 será:
( )
2/3 −1/3
−1/3 2/3
Por lo tanto, ( )( ) ( )
−1 2/3 −1/3 39 11
x̂B = B b̂ = =
−1/3 2/3 45 17
( )
11
ẑ = CBT x̂TB = (4, 7) = 163
17
La solución sigue siendo óptima, aunque cambian los valores óptimos de las variables y
por supuesto de la función objetivo, que pasan a ser:
4 7 3 0 0
VB x1 x2 x3 s1 s2 xB
4 x1 1 0 2/3 2/3 -1/3 5
7 x2 0 1 2/3 -1/3 2/3 20
zj − cj 0 0 13/3 1/3 10/3 160
4 7 3 0 0
VB x1 x2 x3 s1 s2 xB
4 x1 1 0 4/3 2/3 -1/3 5
7 x2 0 1 -2/3 -1/3 2/3 20
zj − cj 0 0 -7/3 1/3 10/3 160
4 7 3 0 0
VB x1 x2 x3 s 1 s2 xB
3 x3 3/4 0 1 1/2 -1/4 15/4
7 x2 1/2 1 0 0 1/2 45/2
zj − cj 7/4 0 0 3/2 11/4 675/4
previamente hay que pasar a cero los coeficientes de las variables básicas que aparecen en
la restricción, lo que es posible mediante las operaciones matriciales de fila que consisten
en multiplicar cualquier fila de la matriz por un número y sumársela a otra fila.
Ejemplo 30. Siguiendo el ejemplo anterior, supongamos que se introduce en el plan de
producción una restricción relativa a la posibilidad de añadir lúpulo al proceso de produc-
ción de forma que la fabricación de un litro de cerveza N requiere 3 kilos, R requiere 1 y
B requiere 1 y su disponibilidad total es 35.
La nueva restricción es
3x1 + x2 + x3 ≤ 35
La solución óptima x∗ = (5, 20, 0) satisface esta restricción y ası́ esta solución y por tanto
la última tabla permanece óptima.
3x1 + x2 + x3 ≤ 30
La solución óptima x∗ = (5, 20, 0) no satisface esta restricción y por tanto la última tabla
no es óptima. Para determinar la solución óptima, se añade una nueva variable de holgura,
que notamos por s3 , con coeficiente 0 en la función objetivo. La restricción es por tanto:
3x1 + x2 + x3 + s3 = 30
La siguiente tabla surge de modificar la tabla óptima del problema sin la nueva restricción,
con la nueva restricción.
4 7 3 0 0 0
VB x1 x2 x3 s1 s2 s3 xB
4 x1 1 0 2/3 2/3 -1/3 0 5
7 x2 0 1 2/3 -1/3 2/3 0 20
0 s3 3 1 1 0 0 1 30
zj − cj 0 0 13/3 1/3 10/3 0 160
Es necesario pasar a cero lo coeficientes de las variables básicas, x1 y x2 . Para ello multi-
plicamos la primera por -3, la segunda por -1 y se las sumamos a la tercer obteniendo la
siguiente tabla:
4 7 3 0 0 0
VB x1 x2 x3 s1 s2 s3 xB
4 x1 1 0 2/3 2/3 -1/3 0 5
7 x2 0 1 2/3 -1/3 2/3 0 20
0 s3 0 0 -5/3 -5/3 1/3 1 -5
zj − cj 0 0 13/3 1/3 10/3 0 160
Esta tabla no es factible y hay que aplicar el método simplex dual para alcanzar de
nuevo la factibilidad. Se saca de la base s3 y se introduce s1 llegando a la solución óptima
Paso 3. Añadir una nueva columna a la tabla primal óptima cuyos elementos
son ŷk y ẑk − ĉk donde
ŷk = B −1 âk
ẑk − ĉk = cTb ŷk − ck
Ejemplo 31. Siguiendo con el problema anterior, suponemos que se pretende fabricar una
cerveza sin alcohol (S), que requiere 1 unidad de malta y 1 de levadura por litro producido
con un beneficio de 5 unidades monetarias. Se quiere comprobar si este nuevo producto
puede ser económicamente rentable.
Sea x4 la nueva variable primal de decisión, s1 y s2 las variables de holgura. El nuevo
problema primal es:
M ax z = 4x1 + 7x2 + 3x3 + 5x4 M ax z = 4x1 + 7x2 + 3x3 + 5x4 + 0s1 + 0s2
2x1 + x2 + 2x3 + x4 ≤ 30 2x1 + x2 + 2x3 + x4 + s1 = 30
x1 + 2x2 + 2x3 + x4 ≤ 45 x1 + 2x2 + 2x3 + x4 + s2 = 45
x1 , x 2 , x 3 x4 ≥ 0 x1 , x 2 , x 3 x4 , s 1 , s 2 ≥ 0
y1 + y2 ≥ 5
4 7 3 0 0
VB x1 x2 x3 s1 s2 xB
4 x1 1 0 2/3 2/3 -1/3 5
7 x2 0 1 2/3 -1/3 2/3 20
zj − cj 0 0 13/3 1/3 10/3 160
De aquı́ se puede leer que la solución dual óptima es y ∗ = (1/3, 10/3). Esta solución no
verifica la cuarta restricción dual, por lo que añadimos en esta tabla óptima una nueva
columna con los elementos:
( )( ) ( )
−1 2/3 −1/3 1 1/3
ŷk = B âk = ŷ4 = =
−1/3 2/3 1 1/3
( )
1/3
ẑk − ĉk = ẑ4 − ĉ4 = cb ŷ4 − c4 = (4, 7)
T
− 5 = −4/3
1/3
La tabla queda como:
4 7 3 5 0 0
VB x1 x2 x3 x4 s1 s2 xB
4 x1 1 0 2/3 1/3 2/3 -1/3 5
7 x2 0 1 2/3 1/3 -1/3 2/3 20
zj − cj 0 0 13/3 -4/3 1/3 10/3 160
Como ẑ4 − ĉ4 < 0, la tabla no es óptima, por lo que se aplica el método del simplex:
4 7 3 5 0 0
VB x1 x2 x3 x4 s1 s2 xB
5 x4 3 0 2 1 2 -1 15
7 x2 -1 1 0 0 -1 1 15
zj − cj 4 0 7 0 3 2 180
Opt z = c′ x
s.a. Ax(≤, =, ≥)b
x ≥ 0, xj ∈ N
siendo
a11 a12 ··· a1n
a21 a22 ··· a2n
A=
···
, x = (x1 .x2 , . . . , xn )′ , b = (b1 , b2 , . . . , bm )′ , c = (c1 , c2 , . . . , cn )′
··· ··· ···
am1 am2 ··· amn
Teorema 5. Para un problema entero de maximización el valor del óptimo del problema
relajado es siempre una cota superior del valor óptimo del problema entero: zP∗ E ≤ zP∗ R .
Para problemas de minimización el valor del óptimo del problema relajado es siempre una
cota inferior del valor óptimo del problema entero: zP∗ R ≤ zP∗ E .
Un segundo método que se podrı́a utilizar para problemas cuya región factible es
finita siempre que ésta sea cerrada o acotada (contiene los enteros de la región factible
del problema relajado) consistirı́a en probar con todos los puntos de la región factible y
tomar aquel que optimice la función objetivo. Este método es intratable con un número
de variables no demasiado grande.
Como ya se ha indicado ninguno de los dos métodos anteriores es satisfactorio en
tanto en cuanto puede dar soluciones infactibles o ser intratable por su magnitud. Existen
fundamentalmente dos métodos de resolución de problemas de programación entera: el
algoritmo de ramificación y acotación (Branch and Bound) y el método de los planos
de corte de Gomory. Ambos métodos son algoritmos que van añadiendo restricciones al
problema relajado inicial con la intención de acotar la solución.
M ax z = 3x1 + 2x2
s.a. 2x1 + x2 ≤ 6
x1 , x2 , ≥ 0; x1 , x2 entero
Ası́, el valor óptimo de z para la programación entera no puede ser mayor que el valor
óptimo de z para la relajación de programación lineal, es decir,
Esto significa que el valor óptimo de z para la programación entera debe ser z ≤ 12. Pero
el punto
x1 = 0, x2 = 6, z = 12
es factible para la programación entera y tiene z = 12. Por tanto, debe ser óptimo para
la programación entera.
En forma resumida, los pasos del algoritmo Ramificar y Acotar, para un problema de
maximización, son:
Algoritmo:
Paso 0. (Inicialización). Consiste en resolver el problema relajado asociado. Si la solu-
ción óptima es entera, dicha solución es la del problema entero. En caso contrario
determinar una cota inferior para el valor óptimo del objetivo bien tomando −∞
o, si es posible el valor de la función objetivo en algún punto factible del problema
entero.
Paso 2. (Acotación). Para cada nuevo subconjunto, determinar una cota superior para
el valor del objetivo del problema entero.
Paso 3. (Sondeo). Analizar los subconjuntos que puedan contener la solución óptima y
considerar como terminales aquellos que:
1. El subconjunto es infactible
2. La cota superior es menor que la cota inferior
3. La cota superior se alcanza en un punto factible para el problema entero y la
cota superior es mayor que la inferior. En este caso hacemos la cota inferior
igual a la superior y volvemos al paso 3 para sondear otros subconjuntos.
M ax z = 5x1 + 4x2
s.a. x1 + x2 ≤ 5
10x1 + 6x2 ≤ 45
x1 , x2 , ≥ 0; x1 , x2 y enteras
El procedimiento ramificar y acotar se basa en tratar sólo con el problema PL. Como
la solución óptima no satisface la necesidad de valores enteros, el algoritmo de ramificar
y acotar exige modificar el espacio de soluciones PL de forma que nos permita identificar,
finalmente la solución óptima del problema de programación lineal entera. Primero, se-
leccionamos una de las variables cuyo valor corriente en la solución óptima SP0 infringe
el requisito de valor entero. Seleccionando x1 = 3, 75 arbitrariamente, observamos que
la región (3 < x1 < 4) del espacio de soluciones SP0 no puede, por definición, incluir
ninguna solución factible del problema de programación lineal entera. Entonces, pode-
mos modificar el espacio de soluciones de PL eliminando esta región no prometedora, lo
que, en realidad, equivale a reemplazar el espacio original SP0 por dos subproblemas de
programación lineal, los SP1 y SP2, definidos de la manera siguiente:
Los dos espacios contienen los mismos puntos enteros factibles del modelo programa-
ción lineal entera. Esto significa que, desde el punto de vista del problema original de
programación lineal entera, tratar con SP1 y SP2 es igual que tratar con el subproblema
original SP0. La diferencia principal es que la selección de las nuevas restricciones de
acotamiento (x1 ≤ 3 y x1 ≥ 4) mejorarán la oportunidad de forzar a los puntos extre-
mos óptimos de SP1 y SP2 hacia la satisfacción del requisito de valor entero. Además, el
hecho de que las restricciones de acotamiento estén en la vecindad inmediata del óptimo
continuo del SP0 incrementará las posibilidades de producir buenas soluciones enteras.
Las nuevas restricciones (x1 ≤ 3 y x1 ≥ 4) son mutuamente excluyentes; SP1 y SP2
deben tratarse como dos problemas de programación lineal separados. Esto da lugar al
método de ramificar y acotar. En efecto, ramificar significa subdividir un espacio de so-
luciones en subespacios mutuamente excluyentes. Las ramas asociadas se definen por las
restricciones (x1 ≤ 3 y x1 ≥ 4), donde x1 se denomina variable de ramificación. La so-
lución óptima de la programación lineal entera debe encontrarse en el SP1 o en el SP2.
Sin embargo, en ausencia del espacio gráfico de soluciones, no se sabe dónde puede en-
contrarse la solución óptima, por lo que la única opción es investigar ambos problemas.
Se hace esto trabajando con un problema SP1 o SP2. Escojamos arbitrariamente al SP1,
asociado x1 ≤ 3.
Ejemplo 33. En efecto, debemos resolver el siguiente problema:
M ax z = 5x1 + 4x2
s.a. x1 + x2 ≤ 5
10x1 + 6x2 ≤ 45
x1 ≤ 3
x1 , x 2 , ≥ 0
Como se indicó antes, el SP1 es el mismo que el SP0 con la restricción adicional de
acotamiento superior x1 ≤ 3. Ası́, podemos aplicar el método sı́mplex para resolver el
problema. Esto da la nueva solución óptima:
x1 = 3, x2 = 2, z = 23
Como esta solución satisface el requisito de valor entero, se dice que SP1 está agotado,
lo que significa que el SP1 no puede producir ninguna solución mejor de la programación
lineal entera y no necesita investigarse más a fondo. Determinar una solución factible
entera en una etapa temprana de los cálculos es crucial para incrementar la eficiencia del
algoritmo ramificar y acotar. Tal solución fija una cota inferior al valor objetivo óptimo
del problema programación lineal entera, que, a su vez, se puede utilizar para descartar
automáticamente cualesquiera subproblemas no explorados (como el SP2) que no dan una
mejor solución entera. En términos de nuestro ejemplo, el SP1 produce la cota inferior
z = 23. Esto significa que cualquier solución entera mejorada debe tener un valor de z
mayor que 23. Sin embargo, como la solución óptima del problema SP0 (original) tiene
z = 23, 75 y como todos los coeficientes de la función objetivo son enteros, se infiere que
ningún subproblema que proceda del SP0 puede producir un valor de z mejor que 23. En
consecuencia, sin ulterior investigación, podemos descartar al SP2. En este caso se dice
que el SP2 está agotado porque no puede dar una mejor solución entera.
Del análisis anterior vemos que un subproblema está agotado si se satisface una de las
siguientes condiciones:
i) El subproblema da una solución factible entera del problema programación lineal
entera.
ii) El subproblema no puede dar una mejor solución que la mejor cota inferior disponible
(valor de z) del problema programación lineal entera. (Un caso especial de esta
condición es que el subproblema no tendrá ninguna solución factible.)
Si la función objetivo ha de minimizarse, el procedimiento es el mismo, excepto que
se emplean cotas superiores. Ası́, el valor de la primera solución entera se vuelve una
cota superior para el problema y se eliminan los SPi cuando sus valores z de primera
aproximación son mayores que la cota superior actual.
Esta solución tiene componentes que no son enteras, por lo tanto no es solución óptima
para el PE y el proceso debe continuar. Se establece como cota inferior para el valor
objetivo z1 = −∞.
x 2 ≤ 8 y x2 ≥ 9
formándose de esta manera dos subproblemas del PR, PL1 que surge del PR más las
restricción x2 ≤ 8 y PL2 que surge del PR más las restricción x2 ≥ 9. Tales problemas
con sus respectivas restricciones son:
PL2 PL3
SOLUCIÓN: SOLUCIÓN:
x1 = 0,05, x2 = 8, x3 = 8,58 Infactible
z = 41,37
Sondeamos estos subconjuntos para ver si puede continuar la ramificación o bien son
terminales. El problema PL3 es infactible, por lo que ya es terminal. Para el subproblema
PL2 se tiene: no es infactible, z = 41,37 > −∞ y la solución óptima no se alcanza en un
punto con valores enteros. Por tanto no es terminal, y hay que volver a ramificar. Vamos
a ramificar sobre la primera componente, añadiendo las restricciones x1 ≤ 0 y x1 ≥ 0
formándose de esta manera dos subproblemas del PL2, PL4 que surge del PL2 más las
restricción x1 ≤ 0 y PL5 que surge del PL2 más las restricción x1 ≥ 0. Tales problemas
con sus respectivas restricciones son:
PL4 PL5
SOLUCIÓN: SOLUCIÓN:
z = 41,33 z = 26,4
Estos problemas no son terminales ya que no son infactibles, su valor óptimo respec-
tivo no son valores enteros y en ambos casos el valor de z es mayor que −∞. Nuevamente
se ramifica. Tomando la regla de la mejor cota, se ramifica sobre el problema PL4, y
sobre la variable x3 (no hay otra elección), añadiendo las restricciones x3 ≤ 8 y x3 ≥ 9
formándose de esta manera dos subproblemas del PL4, PL6 que surge del PL4 más las
restricción x3 ≤ 8 y PL7 que surge del PL4 más las restricción x3 ≥ 9. Tales problemas
con sus respectivas restricciones son:
PL6 PL7
SOLUCIÓN: SOLUCIÓN:
x1 = 0, x2 = 7,67, x3 = 8 Infactible
z = 39
PL8 PL9
x∗ = (0, 7, 8) con z = 37
Nota:
Cuando se trata de un problema de programación entera mixta, el algoritmo de ramifi-
cación y acotación es aplicable, salvo que en este caso no se ramifica sobre variables que
son reales. En todo caso la solución obtenida será óptima para el programa mixto, ya que
las variables reales aparecen en el problema lineal relajado y en todos los subproblemas
subsecuentes.
{
xj cj > 0
yi =
1 − x j cj < 0
tras ordenar las variables originales de manera creciente de sus coeficientes en valor ab-
soluto.
Ejemplo 35.
M ax z = 4x1 − 3x2 − 2x3 + x4
s.a x1 + x2 + 2x3 − 3x4 ≤ 4
2x1 − 4x2 + x3 + x4 ≤ −1
2x1 + x2 + x3 ≤ 3
xj ∈ {0, 1}∀j
Ordenamos los sumandos de la función objetivo de manera que los coeficientes queden
en orden creciente de magnitud (ignorando su signo):
z = x4 − 2x3 − 3x2 + 4x1
Se hace el cambio de variable
x4 = y 1 , x 3 = 1 − y2 , x2 = 1 − y3 , x1 = y4
Se hacen las sustituciones en la función objetivo y en las restricciones:
M ax z = y1 + 2y2 + 3y3 + 4y4 − 5
s.a −3y1 − 2y2 − y3 + y4 ≤ 1
y1 − y2 + 4y3 + 2y4 ≤ 2
−y2 − y3 + 2y4 ≤ 1
yj ∈ {0, 1}∀j
Algoritmo:
Paso 2. (Acotación). Para cada nuevo subconjunto hacer xs a la compleción que tiene
su k + 1 primera componente 0 y el resto 1. A partir de xs , determinar una cota
superior zs para el valor del objetivo sobre ese subconjunto.
Paso 3. (Sondeo). Analizar cada subconjunto comenzando por aquel que tenga mayor
cota superior y considerar como terminales aquellos que:
1. Hay al menos una restricción que no la verifica ninguna compleción del sub-
conjunto.
2. zs ≤ zl
3. xs es factible. En este caso hacemos la cota inferior igual a la superior zl = zs
y volvemos al paso 3 para sondear otros subconjuntos.
En primer lugar se considera el problema relajado, pero en este caso, en vez de pres-
cindir de las condiciones de que las variables sean enteras, se prescinde de todas las
restricciones del problema, excepto de las correspondientes a que las variables sean 0 o 1,
de forma que el conjunto factible para este problema es
M ax z = 2x1 + 4x2 + 4x3
s.a xj ∈ {0, 1}∀j
PR1 PR2
x1 x2 x3
1 0 0
1 1 0
1 0 1
1 1 1
PR3 PR4
1. Para ello vemos sin son infactibles. Empezamos con PR3, en el que tenemos x1 = 0
y x2 = 0 . Las posibles soluciones son:
x1 x2 x3
0 0 0
0 0 1
x1 x2 x3
0 1 0
0 1 1
2. zs = 4 > zl = 0
Como ya todos los subproblemas han quedado sondeados y son terminales, la solución
óptima es la correspondiente a PR3, es decir
x∗ = (0, 0, 1) z ∗ = 4
3.7. Ejercicios
1. Expresa los problemas siguientes en forma estándar y canónica:
Max. −x + y
s.a. −2x + y ≤ 4
x+y ≤1
y≥0
Opt. x − 2y + 3z
s.a. x + 2y + z ≤ 4
2x + y − z ≤ 2
x, y, z ≥ 0
4. Resolver:
a) Max. 3x + 2y + z b) Max. 3x + y + 4z
s.a. 2x − 3y + 2z ≤ 3 s.a. 6x + 3y + 5z ≤ 25
−x + y + z ≤ 5 3x + 4y + 5z ≤ 20
x, y, z ≥ 0 x, y, z ≥ 0
5. Cierto fabricante produce sillas y mesas para lo que requiere la utilización de dos
secciones de producción, la sección de montaje y la sección de pintura. La producción
de una silla requiere una hora de trabajo en la sección de montaje y dos horas en
la de pintura. Por su parte, la fabricación de una mesa precisa de tres horas en la
sección de montaje y una hora en la de pintura.
La sección de montaje solo puede estar nueve horas diarias en funcionamiento, mien-
tras que la de pintura solo ocho horas. El beneficio que se obtiene produciendo mesas
es el doble que produciendo sillas.
¿Cuál debe ser la producción diaria de mesas y sillas que maximice el beneficio?
6. Un agricultor posee una parcela de 640 m2 para dedicarla al cultivo de árboles fru-
tales: naranjos, perales y manzanos. Se pregunta de que forma repartirá la superficie
de la parcela entre las tres variedades para conseguir el máximo beneficio sabiendo
que:
e) Max. x1 + 2x2
d) Max. x1 + x2 + 10x3
s.a. x1 + x2 = 4
s.a. x2 + 4x3 = 2
2x1 − 3x2 = 3
−2x1 + x2 − 6x3 = 2
3x1 − x2 = 8
x1 , x 2 , x 3 ≥ 0
x1 , x 2 ≥ 0
10. Dados los siguientes problemas primales, encontrar sus problemas duales asociados:
a) Max. 6x1 + 4x2 b) Max. 4,5x1 + 3x2 + 1,5x3 c) Min. 6x1 + 4x2
s.a. x1 ≤ 700 s.a. x1 + 2x2 − x3 ≤ 4 s.a. x1 ≤ 700
3x1 + x2 ≤ 2400 2x1 − x2 + x3 = 8 3x1 + x2 ≥ 2400
x1 + 2x2 ≤ 1600 x 1 − x2 ≤ 6 x1 + 2x2 ≤ 1600
x1 , x 2 ≥ 0 x1 , x 2 , x 3 ≥ 0 x1 , x 2 ≥ 0
12. Utilizar el algoritmo dual del simplex para resolver los siguientes problemas:
13. Obtener la solución del los problemas duales asociados a partir de la tabla final del
simplex:
a) Max. x1 + x2
b) Max. 600x1 + 300x2
s.a. x1 + x2 ≤ 4
s.a. 2x1 + 1,5x2 ≤ 1200
2x1 + x2 ≤ 6
x1 + 0,25x2 ≤ 375
x1 , x 2 ≥ 0
x1 , x 2 ≥ 0
Max. x1 + 2x2 1 2 0 0
s.a. x1 + x2 ≤ 4 VB x1 x2 s1 s2 xB
2x1 + x2 ≤ 6 2 x2 1 1 1 0 4
x1 , x 2 ≥ 0 0 s2 1 0 -1 1 2
zj − cj 1 0 2 0 8
Max. x1 + 3x3 1 0 3 0 0
s.a. x1 + 2x2 + 7x3 ≤ 4 VB x1 x2 x3 s1 s2 xB
x1 + 3x2 + x3 ≤ 5 1 x1 1 2 7 1 0 4
x1 , x 2 , x 3 ≥ 0 0 s2 0 1 -6 -1 1 1
zj − cj 0 2 4 1 0 4
600 300 0 0
Max. 600x1 + 300x2
VB x1 x2 s1 s2 xB
s.a. 2x1 + 1,5x2 ≤ 1200
300 x2 0 1 1 -2 450
x1 + 0,25x2 ≤ 375
600 x1 1 0 -1/4 3/2 262.5
x1 , x 2 ≥ 0
zj − cj 0 0 150 300 292500
Max. 3x1 + x2
s.a. 5x1 + x2 ≤ 12
2x1 + x2 ≤ 8
x1 , x2 ≥ 0 y enteras
20. Un excursionista debe determinar que objetos debe llevar consigo en la mochila para
realizar una excursión de un dı́a. Cada uno de los objetos tiene asociado un peso y
una utilidad personal para el excursionista. Los objetos que puede llevar, ası́ como
su peso y utilidad son los que se recogen en la tabla siguiente:
Sabiendo que el peso máximo que puede llevar en la mochila es de 100. Determinar
que objetos debe llevar nuestro excursionista en la mochila para que la utilidad de
los objetos sea máxima.