Professional Documents
Culture Documents
Introducción.
En los últimos 70 años, las empresas, cada vez mayores y complejas, han originado una
cierta clase de problemas de optimización, donde el interés radica en asuntos tales como
la manera más eficiente de manejar una economía, o cómo organizar los horarios de
vuelo de las azafatas en una compañía aérea, o la mezcla de ingredientes de un
fertilizante para satisfacer las especificaciones agrícolas a un costo mínimo, etc. El
estudio de cómo formular y resolver tales problemas ha originado el desarrollo de
nuevas e importantes técnicas de optimización. Entre éstas encontramos la
programación lineal. El modelo de programación lineal, esto es, la optimización de una
función lineal sujeta a restricciones lineales, es sencillo en su estructura matemática,
pero poderoso por su capacidad de adaptarse a un amplio rango de aplicaciones a
problemas de la vida real.
Para poder entender bien de qué estamos hablando, vamos a empezar proponiendo una
serie de ejemplos en los que se pueda apreciar como situaciones, en apariencia muy
diferentes, dan lugar a modelos matemáticos que son idénticos en estructura y caen
dentro de lo que se entiende por problemas de programación lineal.
Antes de empezar con los ejemplos observemos que para plantear cualquier problema
de programación lineal deberemos identificar cuatro componentes básicos:
En primer lugar expresamos los datos del problema en forma de tabla, lo que nos dará
una mejor perspectiva de los mismos:
Como deseamos que cada animal reciba al día, al menos 1.00 mg de tiamina, 7.50 mg
de fósforo y 10.00 mg de hierro. Deberemos imponer las siguientes restricciones:
• Restricciones de no negatividad:
Tal y como hemos definido las variables del problema no tiene ningún sentido que éstas
tomen valores negativos. De manera que también impondremos las restricciones:
x1 ≥ 0
x2 ≥ 0
Estas restricciones se suelen expresar de forma conjunta del siguiente modo:
x1 , x2 ≥ 0
y se les llama las restricciones de no negatividad.
Es evidente que nuestro objetivo será determinar el par (x1, x2) que cumpliendo todas
las restricciones del problema haga mínimo el valor de la función z.
Luego el problema que hemos de resolver lo podemos expresar del siguiente modo:
min z = 2 x1 + 53 x2
sujeto a
0.15 x1 + 0.10 x2 ≥ 1.00
( P)
0.75 x1 + 1.70 x2 ≥ 7.50
1.30 x1 + 1.10 x2 ≥ 10.00
x1 , x2 ≥ 0
Solución:
Según el enunciado del ejemplo, podemos ver que para hacer cada tipo de tinta debemos
mezclar los tres aditivos junto con la base siguiendo las proporciones que se pueden ver
en el siguiente dibujo:
• Empezaremos analizando los datos del problema.
Tinta Roja: En un galón (litro, cm3, …) de tinta roja la relación de los aditivos y la base
es:
A1 A2 A3 B
3 : 1 : 2 : 6
luego si el galón de tinta roja lo partimos en 12 partes iguales, habrá:
3 partes de aditivo A1
1 parte de aditivo A2
2 partes de aditivo A3
6 partes de base
lo que indica que la proporción de aditivos y base en dicho galón de tinta roja sería la
3 1
siguiente: las partes del galón de tinta roja serían aditivo A1, las partes del galón
12 12
2
de tinta roja serían aditivo A2, las partes del galón de tinta roja serían aditivo A3 y
12
6
las partes del galón de tinta roja serían base.
12
Es decir,
3
de cada galón de tinta roja es aditivo A1,
12
1
de cada galón de tinta roja es aditivo A2,
12
2
de cada galón de tinta roja es aditivo A3,
12
6
de cada galón de tinta roja es base.
12
Tinta Azul: En un galón (litro, cm3, …) de tinta azul la relación de los aditivos y la base
es:
A1 A2 A3 B
2 : 3 : 4 : 9
luego si el galón de tinta azul lo partimos en 18 partes, habrá:
2 partes de aditivo A1
3 parte de aditivo A2
4 partes de aditivo A3
9 partes de base
lo que indica que la proporción de aditivos y base en dicho galón de tinta roja sería:
2
de cada galón de tinta azul es aditivo A1,
18
3
de cada galón de tinta azul es aditivo A2,
18
4
de cada galón de tinta azul es aditivo A3,
18
9
de cada galón de tinta azul es base.
18
Tinta Verde: En un galón (litro, cm3, …) de tinta verde la relación de los aditivos y la
base es:
A1 A2 A3 B
1 : 2 : 3 : 6
luego si el galón de tinta verde lo partimos en 12 partes, habrá:
1 partes de aditivo A1
2 parte de aditivo A2
3 partes de aditivo A3
6 partes de base
lo que indica que la proporción de aditivos y base en dicho galón de tinta verde sería:
1
de cada galón de tinta verde es aditivo A1,
12
2
de cada galón de tinta verde es aditivo A2,
12
3
de cada galón de tinta verde es aditivo A3,
12
6
de cada galón de tinta verde es base.
12
Denotamos mediante,
12 x R + 18 x A + 12 xV ≤ 2000
2 4 3
1 4442444 3
↓
“cantidad de unidades de aditivo A3 gastadas al fabricar xR galones de tinta roja, xA
galones de tinta azul y xV galones de tinta verde”.
• Restricciones de no negatividad.
Tal y como se han definido las variables de decisión no tiene ningún sentido que tomen
valores negativos, luego:
xR , x A , xV ≥ 0
• Modelo:
Maximizar xR + x A + xV
sujeto a
12 x R + 18 x A + 12 xV ≤ 1000
3 2 1
12 x R + 18 x A + 12 xV ≤ 1500
1 3 2
12 x R + 18 x A + 12 xV ≤ 2000
2 4 3
12 x R + 18 x A + 12 xV ≤ 4000
6 9 6
xR , x A , xV ≥ 0
Ejemplo 3: Planificación de la producción.
Un fabricante produce tres modelos (I, II y III) de un cierto producto, y usa dos tipos de
materia prima (A y B), de las cuales se tienen disponibles 2.000 y 3.000 unidades,
respectivamente. Los requisitos de materia prima por unidad de los tres modelos son:
El tiempo de mano de obra para cada unidad del modelo I es dos veces el del modelo II
y tres veces el del modelo III. La fuerza laboral completa de la fábrica puede producir el
equivalente de 700 unidades del modelo I. Una encuesta de mercado indica que la
demanda mínima de los tres modelos es 200, 200 y 150 unidades, respectivamente. Sin
embargo, las relaciones del número de unidades producidas deben ser igual a 3:2:5.
Suponga que los beneficios por unidad de los modelos I, II y III son 30, 20 y 50
unidades monetarias, respectivamente. Formule un modelo de programación lineal que
determine el número de unidades de cada producto que maximizarán el beneficio.
Denotaremos por,
x1 = unidades del modelo I del producto que se van a producir.
x2 = unidades del modelo I del producto que se van a producir.
x3 = unidades del modelo I del producto que se van a producir.
• Función objetivo:
Denotaremos por z = 30 x1 + 20 x2 + 50 x3 , que representa los “beneficios obtenidos por
la fabricación y venta de x1 unidades del modelo I, x2 unidades del modelo II y x3
unidades del modelo III”.
2 x1 + 3 x 2 + 5 x3 ≤ 2000
144244 3
↓
“cantidad de unidades de materia prima A gastadas al
fabricar x1 unidades del modelo I, x2 unidades del
modelo II y x3 unidades del modelo III”
4 x1 + 2 x2 + 7 x3 ≤ 3000
1442443
↓
“cantidad de unidades de materia prima B gastadas al
fabricar x1 unidades del modelo I, x2 unidades del
modelo II y x3 unidades del modelo III”
• Restricciones debidas a la demanda mínima, según una encuesta de mercado, de los
tres modelos:
x1 ≥ 200
x2 ≥ 250
x3 ≥ 150
• Restricciones debidas a que las relaciones del número de unidades producidas deben
ser igual a 3 : 2 : 5, para los modelos I, II y III, respectivamente.
x1 x2 x3 2 x = 3 x2 2 x − 3 x2 = 0
= = ↔ 1 ↔ 1
3 2 5 5 x2 = 2 x3 5 x2 − 2 x3 = 0
• Restricción debida a: “el tiempo de mano de obra para cada unidad del modelo I es
dos veces el del modelo II y tres veces el del modelo III y sabemos que la fuerza laboral
completa de la fábrica puede producir el equivalente de 700 unidades del modelo I”.
Por otro lado, nos dicen que “la fuerza laboral completa de la fábrica puede producir el
equivalente de 700 unidades del modelo I” lo que quiere decir que se dispone del
tiempo de mano de obra necesario para fabricar 700 unidades del modelo I, es decir, la
fábrica dispone de un tiempo de mano de obra de 700 t (pues cada unidad del modelo I
necesita un tiempo de mano de obra para fabricarse igual a t)
Luego,
t t
x1 t + x2 + x3 ≤ 700
{t
2 3 ↓
1442443 (2 ) ↓
↓ (3 )
(1)
Es decir,
(1) = “El tiempo de mano de obra necesario para producir de x1 unidades del
modelo I, x2 unidades del modelo II y x3 unidades del modelo III”
(2) = “No puede sobrepasar”
(3) = “El tiempo de mano de obra del que dispone la fábrica”
Tal y como se han definido las variables de decisión no tiene ningún sentido que tomen
valores negativos, luego:
x1 , x2 , x3 ≥ 0
Maximizar z = 30 x1 + 20 x2 + 50 x3
sujeto a
2 x1 + 3 x2 + 5 x3 ≤ 2000
4 x1 + 2 x2 + 7 x3 ≤ 3000
x1 ≥ 200
( P) x2 ≥ 250
x3 ≥ 150
2 x1 − 3 x2 = 0
5 x 2 − 2 x3 = 0
x1 + 12 x2 + 13 x3 ≤ 700
x1 , x2 , x3 ≥ 0
Solución:
Maximizar 5 x + 3 y
sujeto a
(P ′) 3x + 5 y ≤ 15
5 x + 2 y ≤ 10
x , y ≥0
Salvo en el valor óptimo de la función objetivo, que en el caso de (P) es 1000 veces el
de (P´ ).
Después de ver como diferentes situaciones dan lugar a problemas cuyos modelos
tienen la misma estructura: minimizar o maximizar una función lineal en presencia de
restricciones lineales del tipo desigualdad, igualdad o ambas, parece lógico que
estudiemos dicha estructura de problema.
1.- Elementos que definen un problema de programación lineal.
1.1 Definición: Un problema de programación lineal es un problema de minimizar o
maximizar una función lineal en presencia de restricciones lineales del tipo desigualdad,
igualdad o ambas.
optimizar c1 x1 + c2 x2 + L + cn xn
sujeto a
a11 x1 + a12 x2 + L + a1n xn (≤ , = , ≥ ) b1
a21 x1 + a22 x2 + L + a2 n xn (≤ , = , ≥ ) b2
M M M M M
am1 x1 + am 2 x2 + L + amn xn (≤ , = , ≥ ) bm
x1 , x2 , L , xk ≥ 0 ( k ≤ n)
Donde optimizar puede ser maximizar o minimizar. cj , bi y aij (1 ≤ i ≤ m ; 1 ≤ j ≤ n) son
constantes determinadas por la tecnología del problema y xj (j = 1,2,…,n) son las
variables de decisión. Únicamente un signo ( ≤, = o ≥ ) ocurre para cada restricción.
Algunas de las variables de decisión son declaradas no negativas, más adelante
mostraremos que cada variable irrestricta puede convertirse equivalentemente en
variables no negativas.
Minimizar c1 x1 + c2 x2 + L + cn xn
sujeto a
a11 x1 + a12 x2 + L + a1n xn ≥ b1
a21 x1 + a22 x2 + L + a2 n xn ≥ b2
M M M M
am1 x1 + am 2 x2 + L + amn xn ≥ bm
x1 , x2 , L , xn ≥ 0
La expresión c1 x1 + c2 x2 + L + cn xn recibe el nombre de “función objetivo”, debe
minimizarse y se suele denotar por z. Los coeficientes c1 , c 2 , L , c n de la función
objetivo son llamados “coeficientes de costo” y x1 , x 2 , L , x n son las “variables de
decisión” que deben determinarse. Las desigualdades se referencian haciendo uso del
orden que ocupan, así ai1 x1 + ai 2 x 2 + L + ain x n ≥ bi denota la “i-ésima restricción”.
Los coeficientes a ij ( i = 1,2,…,m ; j = 1,2,…,n ) se llaman los “coeficientes
tecnológicos”. Estos coeficientes forman la siguiente “matriz de restricciones”, A.
Una “solución factible” es una solución para la que se satisfacen todas las restricciones.
Una “solución óptima” es una solución factible que tiene el valor más favorable de la
función objetivo (la solución óptima, en caso de existir, puede ser única o haber más de
una).
Estándar s.a. ∑a x
j =1
ij j = bi ; i = 1,L, m s.a. ∑a
j =1
ij x j = bi ; i = 1,L, m
x j ≥ 0 ; j = 1,L, n x j ≥ 0 ; j = 1,L, n
n n
Minimizar ∑ c j x j Maximizar ∑ c j x j
j =1 j =1
Forma
n n
Canónica s.a. ∑a
j =1
ij x j ≥ bi ; i = 1,L, m s.a. ∑a
j =1
ij x j ≤ bi ; i = 1,L, m
x j ≥ 0 ; j = 1,L, n x j ≥ 0 ; j = 1,L, n
a) Desigualdades y ecuaciones:
Por otro lado, una desigualdad del tipo ( ≥ ), suele darse en las restricciones en las que el
lado derecho representa un límite inferior para las actividades del modelo. Para
convertir la desigualdad ( ≥ ) en igualdad ( = ), se resta una “variable de holgura” no
negativa al lado izquierdo de la restricción. Por ejemplo, en el modelo de la dieta
(ejemplo 1) la restricción asociada a la cantidad mínima de fósforo, que cada animal
debía recibir al día, viene dada por
0.75 x1 + 1.70 x2 ≥ 7.50
Si definimos s como la excedencia, tal restricción es equivalente a la siguiente ecuación,
0.75 x1 + 1.70 x2 – s = 7.50, junto con, s ≥ 0. Es decir, son equivalentes:
0.75 x1 + 1.70 x 2 − s = 7.50
0.75 x1 + 1.70 x 2 ≥ 7.50 ⇔
s ≥ 0
b) No negatividad de las variables: Como el método simplex está diseñado para resolver
problemas de programación lineal escritos en forma estándar y dicha forma exige que
todas las variables de decisión han de ser no negativas, debemos ser capaces de
conseguir que esto ocurra. Así pues, actuaremos de la siguiente forma:
Minimizar z = 4 x1 + x 2
sujeto a
3 x1 + x 2 = 3
(P ) 4 x1 + 3 x2 ≥ 6
x1 + 2 x 2 ≤ 4
x2 ≥ 0
x1 irrestricta
Escríbelo en formato estándar.
Solución:
x′ ≥ 0
Como la variable x1 es irrestricta haremos el cambio, x1 = x1′ − x1′′ junto con 1
x1′′ ≥ 0
Por otro lado, en las restricciones segunda y tercera introducimos las variables de
holgura, no negativas, x3 y x4, respectivamente. Quedando el modelo de la siguiente
forma:
Maximizar z = 5 x + 3 y
sujeto a
( P) 3 x + 5 y ≤ 15
5 x + 2 y ≤ 10
x , y ≥0
Una vez que hemos representado la región factible, el problema consiste en encontrar el
punto, o puntos, de la misma que hace máximo el valor de la función objetivo,
z = 5 x + 3 y . Para averiguar esto sería interesante que pudiéramos introducir a la función
objetivo dentro de la representación gráfica que estamos haciendo del problema. Esto lo
podemos conseguir del siguiente modo. Observemos que si cogemos la expresión de la
función objetivo, 5 x + 3 y , y la igualamos a una constante, k, obtendríamos la ecuación
de una recta en el plano, 5 x + 3 y = k , ocurriendo que todos los puntos del plano que
están sobre esa recta proporcionan el mismo valor en la función objetivo del problema,
es decir, en todos ellos ocurrirá que z será igual a k. Por otro lado, todas las rectas de
ecuación 5 x + 3 y = k , cuando k es un número cualquiera, son paralelas entre sí, con
vector perpendicular a todas ellas, el vector (5,3). Además dicho vector, (5,3),
proporciona la dirección en la cual, si trasladamos la rectas paralelas en dicha dirección,
ocurre que el valor de k aumenta. Esto nos indica una forma de proceder. Podemos
empezar por dibujar la recta, 5 x + 3 y = 0 , e ir dibujando rectas paralelas a ella, en la
dirección indicada por el vector (5,3), al hacer esto vemos que llegará un momento en
que tales rectas dejarán de cortar a la región factible y además por pura observación
somos capaces de observar en qué punto (o puntos) se despegarían estas rectas de la
región factible, tal como se puede apreciar en el siguiente dibujo:
Luego, a la vista del dibujo, vemos que la solución óptima del problema será el punto de
corte de las rectas, 3 x + 5 y = 15 y 5 x + 2 y = 10 . Es decir, el máximo de la función
objetivo sobre la región factible F se obtiene en el punto Q(20/19,45/19), que es el
punto de intersección de tales rectas. El valor que toma la función objetivo en la
solución óptima del problema es:
20 45 235
5⋅ + 3⋅ = = 12.36842
19 19 19
Una vez que hemos visto cómo se resuelve gráficamente un problema de programación
lineal con dos variables de decisión se nos podría ocurrir reflexionar sobre cuáles
pueden ser las situaciones que se podrían presentar en un problema de programación
lineal, de dos variables. La respuesta a esta pregunta la tenemos en el siguiente
apartado:
Casos posibles:
Vamos a ver con diversos ejemplos todas las situaciones que pueden presentarse
respecto a la región factible de un problema de programación lineal; así como respecto
al alcance del valor óptimo de la función objetivo en uno, ninguno o infinitos puntos.
Suponemos que los gráficos que vienen a continuación representan la región factible, F,
en el espacio de las variables de decisión, suponiendo que hay dos variables de decisión,
y que los problemas son de maximizar en forma canónica.
Caso b): Infinitos puntos de óptimo finito: Se pueden dar tres subcasos:
Infinitos puntos óptimos en una arista finita entre dos vértices óptimos
Caso c): Valor objetivo óptimo no acotado. Este caso sólo puede darse si la región
factible, F, es no acotada.
Maximizar z = 2 x − 3 y
sujeto a
2x − y ≤ 3
( P)
− x + 2y ≤ 2
y≥4
x , y ≥0
Observando los casos que acabamos de ver apreciamos que cuando un problema de
programación lineal tiene solución óptima finita, aunque haya infinitas de ellas, siempre
hay al menos un vértice óptimo. Esto es un hecho general, que se puede demostrar. De
hecho, el método simplex, que como ya hemos dicho resuelve los problemas de
programación lineal, está diseñado para buscar la solución (o soluciones) óptima a
través de los vértices de la región factible del problema.
Por supuesto que problemas de programación lineal con tres variables de decisión
también se pueden resolver gráficamente, el inconveniente radica en que hacer tal
representación gráfica sobre una hoja de papel resulta muy tedioso, pues estaríamos
representando objetos tridimensionales sobre un plano. Por ejemplo, supongamos el
siguiente problema de programación lineal:
Ejemplo 6:
Maximizar z = c1 x1 + c2 x2 + c3 x3
sujeto a
x1 + x2 + x3 ≤ 4
( P) x1 ≤2
x3 ≤ 3
3 x2 + x3 ≤ 6
x1 , x2 , x3 ≥ 0
Pues bien, para ver qué puntos de R3, cumplen la expresión, ax1 + bx 2 + cx3 ≤ d ,
observamos que la ecuación lineal, ax1 + bx2 + cx3 = d , es la ecuación de un plano
en el espacio, siendo el vector (a, b, c ) , perpendicular a dicho plano. Tal plano, divide
al espacio en dos partes iguales, llamadas semiespacios, las que quedan a ambos lados
del plano. Las ecuaciones de cada uno de esos semiespacios son:
ax1 + bx2 + cx3 ≤ d y ax1 + bx2 + cx3 ≥ d
Como ya indicamos en el caso de dos variables, una forma muy cómoda de averiguar
que desigualdad le corresponde a cada semiespacio es la siguiente. Como todos los
puntos que están en un mismo semiespacio deben cumplir la misma desigualdad,
cogemos un punto cualquiera de uno de los semiespacios, que no esté en el plano que
hace de frontera entre los mismos, por ejemplo el origen (0,0,0), en el caso de que d≠0.
Entonces si, por ejemplo, fuera d < 0 sucedería que todos los puntos que estuvieran en
el mismo semiespacio que el origen (0,0,0) cumplirían la ecuación: ax1 + bx2 + cx3 ≥ d .
donde los números a1, …, an ∈ R, se llaman coeficientes y son conocidos, las letras x1,
…, xn se llaman incógnitas y son desconocidas y el número b ∈ R, que es conocido, se
llama término independiente o lado derecho (abreviadamente, l.d.).
Ejemplos:
a) La ecuación, 2x – 3y = 1, es una ecuación lineal. Con coeficientes : 2, –3;
incógnitas: x, y; término independiente: 1.
b) La ecuación, 2x + 3y – 2z + 5t = 12, es otra ecuación lineal con coeficiente: 2, 3,
–2, 5; incógnitas: x, y, z, t; término independiente: 12.
Ejemplos:
3 x + 2 y − z = 6
a) El sistema
x + y +z=4
es un sistema de dos ecuaciones con tres incógnitas.
2x + 3 y − 4z = 1
− x + 2 y = 2
b) El sistema 5x + z = −2
− y + 3z = 0
− x + 2 y − 4 z = − 1
es un sistema de 5 ecuaciones con 3 incógnitas.
Ejemplos:
x + y =1
a) Sistema incompatible:
x + y = 2
No tiene solución.
x+ y =2
b) Sistema compatible determinado:
3x − 2 y = 1
Tiene solución única (s1, s2) = (1, 1)
2 x − 3 y + 2 z = −1
c) Sistema compatible indeterminado:
x + y + z= 2
Tiene más de una solución, por ejemplo, (s1, s2, s3) = (1, 1, 0) y (s1, s2, s3) =
(0, 1, 1).
• Hay tres modos de manipular las ecuaciones de un sistema que no varían las
soluciones. Es decir, que proporcionan un sistema equivalente.
1. Cambiar el orden de las ecuaciones.
2. Multiplicar una ecuación por un número no nulo.
3. Sumar a una ecuación un múltiplo de otra.
1. Cambiar el orden de las ecuaciones del sistema = Cambiar el orden de las filas
de la matriz ampliada.
2. Multiplicar la i-ésima ecuación del sistema por un número no nulo = Multiplicar
la i-ésima fila de la matriz ampliada por dicho número.
3. Sumar a la ecuación i la ecuación j multiplicada por λ = Sumar a la fila i la fila j
multiplicada por λ.
3x1 + x2 − x3 =2
b) 2 x1 + x3 + x5 = 1 Sistema escrito en forma básica.
x + x4 =7
1
En la 1ª ecuación encontramos a la incógnita x2 que sólo aparece en dicha
ecuación y tiene un coeficiente igual a 1. En la 2ª y 3ª ecuaciones están las
incógnitas x5 y x4, respectivamente, cumpliendo la misma propiedad.
− x1 − 5 x3 + x 6 = −1
c) 3 x1 + x2 + x3 + x5 = 0 Sistema escrito en forma básica.
− 2 x + x4 = 3
1
En la 1ª ecuación encontramos a la incógnita x6 que sólo aparece en dicha
ecuación y tiene un coeficiente igual a 1. En la 2ª ecuación están las incógnitas
x2 y x5 que sólo aparecen en esta ecuación y que tienen coeficiente igual a 1. En
la 3ª ecuación es la incógnita x4 la que tiene esta propiedad.
3 0 2 1 2 3 1 −1 0 0 2
2 1 − 3 0 1 2 0 1 0 1 1
1 0 0 1 0 7
c)
x1 x2 x3 x4 x5 x6 l.d .
− 1 0 − 5 0 0 1 − 1
3 1 1 0 1 0 0
− 2 0 0 1 0 0 3
Vemos que lo que nos indica que tales sistemas están en forma básica es que en el lado
izquierdo de la matriz ampliada, podemos identificar la matriz identidad, posiblemente
con las columnas desordenadas, de orden igual al número de ecuaciones del sistema.
En efecto:
x y z t l.d .
3x + 2z + t = 2
a) Matriz 3 0 2 1 2
2 x + y − 3 z =1 ampliada →
2 1 − 3 0 1
Identidad (desordenada)
x1 x2 x3 x4 x5 l.d .
3x1 + x2 − x3 =2
3 1 −1 0 0 2
Matriz
b) 2 x1 + x3 + x5 = 1 ampliada →
2 0 1 0 1 1
x + x4 =7 1 0
1 0 1 0 7
Identidad (desordenada)
x1 x2 x3 x4 x5 x6 l.d .
− x1 − 5 x3 + x6 = −1
Matriz − 1 0 − 5 0 0 1 − 1
c) 3 x1 + x2 + x3 + x5 = 0 ampliada →
− 2 x + x4 = 3 3 1 1 0 1 0 0
− 2 0 0 1 0 0 3
1
• Dado un sistema en forma básica, si se quiere indicar quienes son las variables básicas
se hace escribiéndolas entre llaves, separadas por comas y poniéndolas en el orden
adecuado para que la identidad estuviera bien escrita. Es decir, se forma con ellas un
conjunto. A este conjunto se le suele denotar por B y se le suele llamar base. Con el
resto de variables se forma otro conjunto, el de las variables no básicas, al que se suele
denotar por N. Así en los ejemplos anteriores tenemos que:
3x + 2z + t = 2
a) Sistema escrito en forma básica.
2 x + y − 3 z =1
Siendo B = {t, y} las variables básicas y N = {x, z} las variables no básicas.
3x1 + x2 − x3 =2
b) 2 x1 + x3 + x5 = 1 Sistema escrito en forma básica.
x + x4 =7
1
Siendo {x2, x5, x4} las variables básicas y {x1, x3} las variables no básicas.
− x1 − 5 x3 + x 6 = −1
c) 3 x1 + x2 + x3 + x5 = 0 Sistema escrito en forma básica.
− 2 x + x4 = 3
1
En este caso hay dos posibilidades: Considerar {x6, x2, x4} variables básicas y
{x1, x3, x5} variables no básicas. O bien, considerar {x6, x5, x4} variables básicas
y {x1, x2, x3} variables no básicas.
Observación: Cuando un sistema está escrito en forma básica la solución del mismo es
inmediata. En efecto, basta con pasar al lado derecho de las ecuaciones a las variables
no básicas y dar a éstas libremente los valores reales que queramos para encontrar los
valores de las variables básicas, correspondientes a los valores dados a las no básicas.
3x + 2z + t = 2
a) En efecto, dado el sistema en forma básica , pasamos al lado
2 x + y − 3z =1
t = 2 − 3 x − 2 z
derecho las variables no básicas, obteniendo, o escrito en forma
y = 1 − 2 x + 3z
vectorial, t = 2 − 3 x − 2 z . Ahora damos a las variables no básicas, x, z
y 1 2 − 3
cualesquiera valores reales y obtenemos las infinitas soluciones del sistema.
3 x1 + x2 − x3 =2
b) dado el sistema en forma básica 2 x1 + x3 + x5 = 1 , pasamos al lado
x + x4 =7
1
x2 = 2 − 3 x1 + x3
derecho las variables no básicas, obteniendo, x5 = 1 − 2 x1 − x3 , o escrito en
x = 7− x
4 1
x2 2 3 − 1
forma vectorial, x5 = 1 − 2 x1 − 1 x3 . Ahora damos a las variables no
x 7 1 0
4
básicas, x1 y x3 cualesquiera valores reales y obtenemos las infinitas soluciones
del sistema.
− x1 − 5 x3 + x6 = − 1
sea el sistema en forma básica 3x1 + x2 + x3
c) + x5 = 0 . Como este
− 2 x + x4 = 3
1
sistema tiene dos posibles conjuntos de variables básicas (es decir, dos posibles
bases), a saber, B1 = {x6, x2, x4} y B2 = {x6, x5, x4}, seleccionamos una
cualquiera de ellas, por ejemplo la base B1 = {x6, x2, x4} en cuyo caso serían no
básicas las variables {x1, x3, x5}. Pasamos al lado derecho las variables no
x6 = −1 + x1 + 5 x3
básicas, obteniendo, x2 = 0 − 3x1 − x3 − x5 , o escrito en forma vectorial,
x = 3 + 2x
4 1
x6 − 1 − 1 − 5 0
x2 = 0 − 3 x1 − 1 x3 − 1 x5 . Ahora damos a las variables no básicas, x1
x 3 − 2 0 0
4
, x3 y x5 cualesquiera valores reales y obtenemos las infinitas soluciones del
sistema.
Una vez que hemos visto todos estos ejemplos podemos enunciar la siguiente propiedad
general.
2 x1 − 3x2 + 4 x3 + 5x4 − 9 x5 − 3 x6 = 6
6 x3 + 2 x4 − 4 x5 − 8 x6 = 8
(S )
6 x1 − 9 x2 + 11x 4 − 19 x5 + 3 x6 = 0
2 x1 − 3 x2 + x3 + 4 x 4 − 7 x5 + x6 = 2
Evidentemente, podemos utilizar el método de Gauss para pasar de este sistema a otro
equivalente escrito en forma escalonada reducida, que es una forma básica. Pero lo que
vamos a hacer es, utilizando la misma idea, ser un poco más libre a la hora de elegir los
pivotes. En primer lugar escribimos la matriz ampliada del sistema:
2 − 3 4 5 − 9 − 3 M 6
0 0 6 2 − 4 − 8 M 8
6 − 9 0 11 − 19 =M
3 M 0
2 − 3 1 4 − 7 1 M 2
Sabemos que un sistema está en forma básica si en el lado izquierdo de su matriz
ampliada está la identidad (posiblemente, desordenada). Pues bien se trata de ir
haciendo operaciones elementales, sobre la matriz ampliada, hasta conseguir esto. El
proceder será seleccionar cualquier entrada distinta de cero, del lado izquierdo, como
elemento pivote. A continuación, dividimos la fila donde está el elemento pivote por
dicho número, para obtener un 1, y con este 1 hacemos cero, mediante operaciones
elementales, el resto de los elementos de la columna donde está el pivote. Una vez
hecho esto ya tenemos un vector unitario en la posición de la columna donde estaba el
pivote. Ahora seleccionaríamos otra entrada, en el lado izquierdo de la matriz, distinta
de cero, siempre que no se encuentre en la fila o filas de los unos existentes en las
columnas unitarias ya conseguidas y procederíamos como se ha indicado. Vemos esto
sobre nuestro ejemplo.
Ahora pivotando sobre este elemento hacemos ceros en las restantes entradas de la
columna donde está el pivote. Para ello, y haciendo uso de la siguiente notación:
αFi significa que multiplicamos la fila i por el número no nulo α.
Fi ± βFj significa que a la fila i le sumamos/restamos la fila j multiplicada por β.
hacemos lo siguiente,
2 − 3 4 5 − 9 − 3 M 6 −6 9 0 − 11 − 7 M − 2
19
F1 − 4 F4
0 0 6 2 − 4 − 8 M 8 ≈ − 12 18 0 − 22 38 − 14 M − 4
6 − 9 0 11 − 19 3 M 0 F2 − 6 F 4 6 −9 0 11 − 19 3 M 0
2 − 3 1 4 − 7 1 M 2 2 −3 1 4 −7 1 M 2
Ahora seleccionamos el siguiente elemento pivote,
Luego el sistema, cuya matriz ampliada es la de arriba, está en forma básica, como se
puede comprobar:
1
x6 =
2
1
= − (S ′) Sistema en forma básica.
3 11 19
x1 − x2 + x 4 − x5
2 6 6 4
1 2
x3 + x 4 − x5 =2
3 3
Siendo {x6, x1, x3} las variables básicas y {x2, x4, x5} las variables no básicas.
Observaciones al procedimiento:
• Recordemos que dos matrices se dice que son equivalentes por filas si se puede pasar
de una a otra mediante una sucesión de operaciones elementales por filas. Así, matrices
equivalentes representan sistemas equivalentes.
• Durante el procedimiento sólo hemos usado dos, de las tres, operaciones elementales
de filas, multiplicar una fila por un número distinto de cero y sumar a una fila un
múltiplo de otra; es decir, nunca hemos intercambiado filas, de hecho no nos hace falta
esta operación ya que buscábamos la identidad, aunque estuviera desordenada. Como
consecuencia, si durante el método nos ocurre que alguna fila se anula por completo, es
decir, tiene todas sus entradas iguales a cero, podemos afirmar, sin equivocarnos, que la
ecuación correspondiente a tal fila, en el sistema original del que partimos, es
combinación lineal del resto de ecuaciones del sistema y por lo tanto podemos
eliminarla del sistema original. Como en nuestro caso se anuló la segunda fila. Podemos
asegurar que los siguientes sistemas son equivalentes:
2 x1 − 3x2 + 4 x3 + 5x4 − 9 x5 − 3 x6 = 6
6 x3 + 2 x4 − 4 x5 − 8 x6 = 8
(S )
6 x1 − 9 x2 + 11x 4 − 19 x5 + 3 x6 = 0
2 x1 − 3x2 + x3 + 4 x4 − 7 x5 + x6 = 2
2 x1 − 2 x2 + 2 x3 + 2 x4 − 2 x5 − 2 x6 = 6
6 x1 − 9 x2 + 11x 4 − 19 x5 + 3 x6 = 0
2 x1 − 3x 2 + x3 + 4 x4 − 7 x5 + x6 = 2
• Otra consecuencia del procedimiento es que de ahora en adelante, cada vez que
tengamos un sistema compatible supondremos que es de rango completo, es decir, que
si tenemos el sistema de ecuaciones lineales compatible,
a11 x1 + a12 x 2 + L + a1n xn = b1
a 21 x1 + a 22 x2 + L + a 2 n x n = b2
M M L M M
a m1 x1 + a m 2 x 2 + L + a mn x n = bm
(x1 , x2 , x3 , x4 , x5 , x6 ) = − 1 , 0, 2, 0, 0, 1
4 2
Encontrando nuevos sistema en forma básica equivalentes al original:
Lo interesante es que una vez que tenemos un sistema en forma básica equivalente al
original es muy fácil encontrar nuevos sistemas equivalentes, también en forma básica.
Para hacer esto lo mejor es seguir trabajando con la matriz ampliada del sistema:
Observando la matriz ampliada del sistema (S´):
Vemos que para dar un nuevo sistema equivalente en forma básica basta con que la
identidad (aunque siga desordenada) cambie a una nueva ubicación, siempre en el lado
izquierdo da la matriz. Si conseguimos esto mediante operaciones elementales de fila, el
nuevo sistema sigue siendo equivalente. Por lo tanto, si cogemos cualquier elemento
distinto de cero, del lado izquierdo de la matriz y que no esté en la identidad, y
pivotamos sobre él cambiaremos la ubicación de la identidad. Por ejemplo, si tomamos
el siguiente elemento, elegido de forma totalmente arbitraria, y pivotamos sobre él.
0
El vector unitario 1 pasaría de estar debajo de la variable x1 a estar debajo de la
0
1 0
variable x4., mientras que los otros dos vectores unitarios 0 y 0 seguirían quedando
0 1
bajo las variables x6 y x3, respectivamente.
Es decir, antes del pivoteo, sobre el elemento 11/6, la base B estaba formada por las
variables básicas B = {x6, x1, x3} y tras el pivoteo la nueva base está formada por las
variables básicas, {x6, x4, x3}. Esto se expresa diciendo que la variable x4 entra en la
base y la variable x1 sale de la base. Además en este momento, conocemos una nueva
solución básica del sistema (S), la que se obtiene si en el nuevo sistema equivalente, en
forma básica, hacemos todas las variables no básicas iguales a cero, es decir, si
hacemos, x1 = x2 = x5 = 0, en el sistema correspondiente a la matriz ampliada que
acabamos de obtener, es decir, el siguiente sistema:
1
x6 =
2
6 9 19 3
x1 − x2 + x 4 − x5 = −
11 11 11 22
1 3 1 45
− x1 + x2 + x3 − x5 =
11 11 11 22
Observemos que para conocer las soluciones básicas que vamos encontrando no hace
falta escribir explícitamente los sistemas básicos, nos sobra con trabajar directamente en
las matrices. Este proceder se puede continuar y, si somos cuidadosos en la forma de
trabajar, podemos realizarlo de una manera muy compacta mediante las siguientes
tablas enlazadas, una a continuación de otra:
Tablas:
1ª
2ª
3ª
4ª
5ª
6ª
En primer lugar observemos como en la primera columna se indica quienes son las
variables básicas, en cada una de las tablas.
Como se puede ver, cada tabla identifica una solución básica del sistema original (S).
Así, la 1ª tabla representa a la solución básica,
(x1 , x2 , x3 , x4 , x5 , x6 ) = 0, 0, 45 , − 3 1
, 0,
22 22 2
donde la base está formada por las variables básicas {x6, x4, x3}, como se indica en la
primera columna de las tablas, siendo el resto de variables no básicas. Observemos que
la columna del lado derecho (l.d.) proporciona el valor de las variables básicas, cuando
todas las variables no básicas se igualan a cero. Con el resto de tablas pasa lo mismo,
por ejemplo, la 4ª tabla representa a la solución básica,
(x1 , x2 , x3 , x4 , x5 , x6 ) = − 45 , 0, 0, 6, 0, 1
22 2
donde la base está formada por las variables, {x6, x1, x4}, siendo el resto de las variables
no básicas.
Para pasar de una tabla a otra nos hemos limitado a escoger, de forma arbitraria, algún
elemento distinto de cero y que no esté en las columnas de la identidad (las sombreadas)
como pivote (los elementos cubiertos por un círculo). Cada vez que se realiza una
operación de pivoteo, es decir, cada vez que pasamos de una tabla a la siguiente, ocurre
que una variable entra en la base (a la nueva base, la de la siguiente tabla) y otra
variable sale la base.
Ejemplo 7:
Maximizar z = 2 x1 + x 2
sujeto a
3 x1 + 8 x 2 ≤ 12
(P )
x1 + x 2 ≤ 2
2 x1 ≤3
x1 , x 2 ≥ 0
Lo primero que haremos con el problema es escribirlo en forma estándar, con todos los
coeficientes del lado derecho en positivo. Es decir, todas las restricciones, excepto las
de no negatividad, se convierten en ecuaciones y todas las variables han de estar
restringidas a ser mayores o iguales a cero. Además conviene que todos los lados
derechos de las ecuaciones sean no negativos. Esto es inmediato, pues si alguna
ecuación tiene el lado derecho negativo multiplicamos tal ecuación por – 1 y se
consigue lo que queremos.
Para escribir el problema en forma estándar, es decir, para transformar las desigualdades
(≤) en ecuaciones, sumamos las variables de holgura x3, x4 y x5 en el lado izquierdo de
las restricciones primera, segunda y tercera, respectivamente, junto con las restricciones,
x3 ≥ 0, x4 ≥ 0 y x5 ≥ 0. De manera que el problema (P) escrito en forma estándar sería:
Problema escrito en forma estándar, con todo el lado derecho en positivo.
Maximizar z = 2 x1 + x 2
sujeto a
3 x1 + 8 x 2 + x3 = 12
(P ′)
x1 + x 2 + x4 =2
2 x1 + x5 = 3
x1 , x 2 , x3 , x 4 , x5 ≥ 0
Resultado_2: Si existe una solución óptima del problema, entonces también existe un
vértice óptimo es decir, una solución básica factible óptima.
En efecto, la forma de pasar del problema (P) a su equivalente en forma estándar (P´) ha
sido utilizar las siguientes equivalencias:
3x + 8 x 2 + x3 = 12
3x1 + 8 x 2 ≤ 12 ⇔ 1
x3 ≥ 0
x + x2 + x4 = 2
x1 + x 2 ≤ 2 ⇔ 1
x4 ≥ 0
2 x + x 5 = 3
2 x1 ≤ 3 ⇔ 1
x5 ≥ 0
Lo que hace que sean equivalentes:
3 x1 + 8 x2 = 12 ⇔ x3 = 0
x1 + x 2 = 2 ⇔ x 4 = 0
2 x1 = 3 ⇔ x5 = 0
De manera que cada una de las rectas que delimitan la región factible del problema (P)
se identifica con una expresión del tipo xi = 0 , i = 1,2,3,4,5. Tal como se puede ver en
el dibujo de la región factible.
Si ahora seleccionamos la pareja la pareja, {x1, x5}, e igualamos ambas variables a cero,
x1 = x5 = 0, entonces el sistema quedaría,
8 x2 + x3 = 12
x 2 + x4 = 2
0=3
Sistema incompatible. Esto se puede apreciar en el dibujo, pues las rectas x1 = 0 y
2 x1 = 3 (es decir, x5 = 0 ) son paralelas y por lo tanto no se cortan en ningún punto del
plano (x1, x2). Luego no hay solución básica asociada a tomar la pareja de variables
{x1,x5}, como candidata a ser variables no básicas del sistema.
Sea la última pareja posible, {x4, x5}, e igualamos ambas variables a cero, x4 = x5 = 0,
entonces el sistema quedaría,
3 x1 + 8 x2 + x3 = 12
x1 + x2 =2
2x =3
1
3 1 7
Que tiene solución única, x1 = , x 2 = , x3 = .
2 2 2
Luego ( x1 , x2 , x3 , x4 , x5 ) = , , , 0, 0 es una solución básica del sistema, como
3 1 7
2 2 2
además todos sus valores son no negativos, es una solución básica factible del problema
(P´). Observa que esta solución se corresponde con el vértice C de la región factible, de
coordenadas 3 , 1 , en el plano (x1,x2), donde se cortan las rectas x1 + x2 = 2 y
2 2
2 x1 = 3 (es decir, x4 = 0 y x5 = 0 ).
Ahora, según el resultado_2 y puesto que conocemos todas las soluciones básicas
factibles del problema, los vértices A, B, C, D y E, se podría pensar en evaluar el valor
de la función objetivo en cada uno de estos puntos y seleccionar el que tenga el máximo
valor objetivo. Pero esto no es adecuado por diversas razones. En primer lugar, en un
problema general de programación lineal que al escribirse en forma estándar tuviera m
ecuaciones y n variables de decisión, m < n, el número de soluciones básicas factibles
está acotado por el número combinatorio n , pero este número es grande aun para
m
valores moderados de m y n. En segundo lugar, este proceder no detectaría que la
solución del problema fuese valor objetivo no acotado, lo que podría ocurrir si la región
factible es no acotada. Por último, si la región factible fuera vacía y utilizásemos este
método de evaluar cada solución básica factible, acabaríamos detectando que
efectivamente la región factible es vacía, pero sólo después de que hubiésemos
fracasado en obtener una solución básica factible en todas las posibles selecciones de
n columnas de la matriz del sistema para formar una base, bien por no ser tales
m
columnas linealmente independientes, bien por, aun siendo independientes, que alguna
variable básica tomase un valor negativo.
El método simplex está diseñado para moverse desde un vértice a otro, mejorando cada
vez (o al menos, no empeorando) el valor objetivo. También permite descubrir si la
región factible es vacía o si la solución del problema es de valor objetivo no acotado. En
la práctica, el método suele recorrer sólo una pequeña parte de los vértices de la región
factible.
Para aplicar el método es necesario conocer una solución básica factible (vértice) del
problema. Si observamos nuestro problema,
Maximizar z = 2 x1 + x 2
sujeto a
3 x1 + 8 x 2 + x3 = 12
(P ′)
x1 + x 2 + x4 =2
2 x1 + x5 = 3
x1 , x 2 , x3 , x 4 , x5 ≥ 0
vemos que ya disponemos de una tal solución, basta con tomar a las variables de
holgura, x3, x4 y x5 como variables básicas del sistema de ecuaciones. Entonces, al dar el
valor cero a las variables no básicas, x1 = x2 = 0, encontramos la solución básica
factible,
(x1 , x2 , x3 , x4 , x5 ) = (0, 0, 12, 2, 3) .
siendo el valor de la función objetivo en este punto igual a cero,
z = 2 x1 + x2 = 2 ⋅ 0 + 0 = 0
Ahora bien, nosotros ya sabemos movernos desde una solución básica a otra solución
básica de un sistema de ecuaciones, para ello lo que hacíamos era escribir el sistema en
forma de una tabla, del siguiente modo,
Variables
básicas x1 x2 x3 x4 x5 l. d.
x3 3 8 1 0 0 12
x4 1 1 0 1 0 2
x5 2 0 0 0 1 3
Pasamos de una solución básica a otra solución básica mediante una operación de
pivoteo sobre cualquier entrada distinta de cero (pivote), que no esté en la identidad
bajo las variables básicas. Al hacer esto, una variable, no básica, entraba en la base y
una variable básica salía de la base. Pues bien, el método simplex elige el pivote
seleccionando en primer lugar a la variable de entrada y después a la variable de salida.
Así, el método empieza por seleccionar la variable de entrada entre las variables no
básicas que al aumentar su valor desde cero, que es el valor que tienen actualmente las
variables no básicas en el vértice en el que nos encontramos, aumente (pues queremos
maximizar) el valor de la función objetivo. Como la función objetivo es, z = 2 x1 + x2 ,
vemos que cualquier aumento de valor, tanto en la variable no básica x1 como en la
variable no básica x2, provocará un aumento en el valor de la función objetivo. De
hecho, por cada unidad que aumentemos la variable x1 la función objetivo mejora
(aumenta) 2 unidades, mientras que por cada unidad que lo hagamos en la variable x2, el
aumento será de 1 unidad. Por lo tanto, cualquiera de las dos variables no básicas se
puede seleccionar como variable de entrada. Seleccionaremos como variable de entrada
a la variable x1, que proporciona mejor aumento de la función objetivo, por cada unidad
de aumento en la variable. Una vez que hemos seleccionado la variable de entrada, x1, el
método consiste en ir dando valores positivos, desde cero en adelante, a la variable de
entrada, mientras el resto de variables no básicas permanecen iguales a cero. Nuestra
motivación es seguir aumentando el valor de la variable de entrada tanto como
podamos. Ahora bien, si vamos aumentando el valor de la variable de entrada x1,
mientras mantenemos en cero el valor de las restantes variables no básicas, en este caso,
x2 = 0, sucederá lo siguiente: Si en el sistema,
3 x1 + 8 x 2 + x3 = 12
x1 + x 2 + x4 =2
2 x1 + x5 = 3
dejamos x2 = 0 mientras aumentamos el valor de x1, desde cero, obtendríamos,
3 x1 + x3 = 12 x3 = 12 − 3 x1 x3 12 3
x1 + x4 = 2 ⇔ x 4 = 2 − x1 ⇔ x 4 = 2 − 1 x1
2 x1 + x5 = 3 x5 = 3 − 2 x1 x 3 2
5
de manera que las coordenadas, ( x1 , x 2 , x3 , x 4 , x5 ) , de los puntos por los que nos
estaríamos moviéndonos serían: x1 el valor positivo arbitrario que le estuviéramos
dando, x2 = 0 y el resto de coordenadas,
x3 12 3
x 4 = 2 − 1 x1
x 3 2
5
Esta última expresión, nos sirve de guía para saber hasta dónde podemos seguir
aumentando el valor de x1. Por cada unidad que demos a la variable x1, la variable x3
disminuye 3 unidades, la variable x4 disminuye 1 unidad y la variable x5 disminuye 2
unidades. Por lo tanto, podremos aumentar el valor de x1 hasta que se haga cero la
primera de las tres variables x3, x4 o x5. Pues si siguiéramos aumentando el valor de x1,
la primera en hacerse cero tomaría un valor negativo y ya el punto de coordenadas
(x1 , x2 , x3 , x4 , x5 ) no sería una solución factible del problema.
12
Como, x3 = 12 − 3 x1 , x3 se hace cero sí, y sólo sí, 0 = 12 − 3 x1 ⇔ x1 = . De igual
3
2
forma x4 se hace cero sí, y sólo sí, 0 = 2 − x1 ⇔ x1 = 2 = y por último, x5 se hace
1
3
cero sí, y sólo sí, 0 = 3 − 2 x1 ⇔ x1 = .
2
de manera que el mayor valor que puede tomar la variable x1, para no salirnos de la
región factible es:
12 2 3 3
min , , =
3 1 2 2
Siendo la variable de salida, la variable básica donde se alcanza este mínimo, es decir, la
variable básica x5. Si hacemos la intersección de la columna que hay en la tabla bajo la
variable no básica de entrada, x1, y la fila de la tabla asociada a la variable básica de
salida x5, encontramos el elemento sobre el que pivotaremos para encontrar la siguiente
solución básica factible del problema,
Hacemos, pues, el pivoteo y, en la siguiente tabla, obtenemos una nueva solución básica
3 15 1
factible, ( x1 , x2 , x3 , x4 , x5 ) = , 0, , , 0
2 2 2
Variables
básicas x1 x2 x3 x4 x5 l. d.
x3 3 8 1 0 0 12
x4 1 1 0 1 0 2
x5 2 0 0 0 1 3
x3 0 8 1 0 –3/2 15/2
x4 0 1 0 1 –1/2 1/2
x1 1 0 0 0 1/2 3/2
siendo el valor de la función objetivo en esta nueva solución básica factible igual a 3,
3
z = 2 x1 + x2 = 2 ⋅ + 0 = 3
2
Ahora haríamos el pivoteo y seguiríamos, pero antes de seguir con este proceso, vamos
a ver como todas estas cuentas pueden ser realizadas directamente sobre tablas. Para
ello vamos a ampliar un poco las tablas con las que estamos trabajando:
En cada tabla vamos a añadir un renglón (fila) cero, en el que escribiremos la función
objetivo, donde ésta estará escrita dependiendo exclusivamente de las variables no
básicas correspondientes a dicha tabla (es decir, a cada solución básica factible).
Además de añadir este renglón cero, añadiremos una columna al final, de cada tabla,
donde se calcularán los cocientes entre el lado derecho y los coeficientes positivos que
haya en la columna asociada a la variable que hayamos decidido que va a entrar, para
así viendo donde se da el menor cociente sepamos la variable que va a salir y, por lo
tanto, el elemento sobre el que tenemos que pivotar, para encontrar la siguiente solución
básica factible. Lo más importante, es que cuando trabajamos con el renglón cero desde
el comienzo, si al pivotar forzamos que también aparezca un cero en el renglón cero, el
nuevo renglón cero aparece bien escrito en la siguiente tabla, es decir, la función
objetivo depende sólo de las variables no básicas.
Como se puede ver hay tres tablas enlazadas. Cada tabla representa una solución básica
factible del problema de programación lineal. En cada tabla el renglón cero (renglón z)
tiene ceros bajo las variables básicas, por lo que la función z está expresada sólo en
términos de las variables no básicas correspondientes a cada tabla, lo que nos permite
seleccionar la variable de entrada. Si el problema es de maximizar, se seleccionará
como variable de entrada aquella variable no básica que tenga en el renglón cero el
valor negativo con mayor valor absoluto. Si el problema es de minimizar, se
seleccionará como variable de entrada la variable no básica que tenga en el renglón cero
el mayor valor positivo. A la columna que hay bajo la variable no básica de entrada se le
llama columna pivote. Una vez seleccionada la variable de entrada, se calculan los
cocientes entre el lado derecho y las entradas positivas que hay en la columna pivote,
sin contar el elemento del renglón cero. La fila donde se dé la mínima razón (cociente)
indica la variable básica que ha de salir de la base. A esta fila se le llama, la fila pivote.
El elemento que está en la intersección de la columna de la columna pivote y la fila
pivote, es el elemento pivote. Para pasar a la siguiente tabla se hace una operación de
pivoteo sobre el elemento pivote. Dicha operación tiene que forzar a que en la siguiente
tabla aparezca un 1 donde estaba el elemento pivote y que el resto de elementos de la
columna donde estará ese 1 sean cero, incluido el elemento de esa columna que está en
la fila cero.
Una vez que tenemos una nueva tabla, volvemos a aplicar el método a dicha tabla.
El problema (P) se expresa en forma estándar, con la precaución de que todos los
valores del lado derecho sean no negativos. Lo que da lugar al siguiente problema
equivalente:
Maximizar z = 2 x1 + x 2
sujeto a
3 x1 + 8 x 2 + x3 = 12
(P′)
x1 + x 2 + x4 =2
2 x1 + x5 = 3
x1 , x 2 , x3 , x 4 , x5 ≥ 0
Además, la tabla óptima también nos permite ver que la solución básica factible óptima
obtenida en ella es la única solución óptima del problema. En efecto, a partir de la tabla
óptima,
Variables
básicas x1 x2 x3 x4 x5 l. d. Razón
z 0 0 0 1 1/2 7/2
x3 0 0 1 –8 5/2 7/2
x2 0 1 0 1 –1/2 1/2 Solución
x1 1 0 0 0 1/2 3/2 óptima
( z + x 4 + 1 x5 = 7 ↔ z=
7 1
− x 4 − x5 )
2 2 2 2
7 1
Maximizar z = − x 4 − x5
2 2
sujeto a
5 7
x3 − 8 x 4 + x5 =
2 2
1 1
x2 + x 4 − x5 =
2 2
1 3
x1 + x5 =
2 2
x1 , x 2 , x3 , x 4 , x5 ≥ 0
Cuando el problema está escrito de esta forma se identifica de forma inmediata a la
solución básica factible,
(x1 , x2 , x3 , x4 , x5 ) = 3 , 1 , 7 , 0, 0
2 2 2
correspondiente al vértice C. Siendo el valor de la función objetivo en este punto igual a
7/2.
7 1
z′ = − s 4 − s5
2 2
se cumple que,
7 1 7
z′ = − s 4 − s5 <
2 2 2
Pues como s4 y s5 no pueden ser simultáneamente iguales a cero y han de ser no
negativos alguno será estrictamente positivo, cumpliéndose la desigualdad anterior.
Cojamos cualquier tabla del método simplex aplicado a nuestro problema, la segunda,
por ejemplo:
(1) Los coeficientes bajo las variables no básicas en la fila cero (o renglón z) nos
indican el aumento o disminución unitaria en el valor de la función objetivo si
decidimos meter en la base a la correspondiente variable no básica.
(2) Valor de la función objetivo en la solución básica factible asociada a esta tabla.
(3) Valores de las variables básicas
• Además hemos de resaltar que para que una tabla simplex esté correctamente escrita
ha de ocurrir lo siguiente:
i. La identidad debe estar debajo de las variables básicas, sin contar la fila cero
(o renglón z), en el orden que está indicado en la primera columna de la
tabla.
ii. Los valores de todas las variables básicas han de ser no negativos.
iii. En el renglón cero debe haber ceros bajo todas las variables básicas.
7.- Variables artificiales. (Encontrando una solución básica factible inicial.)
El método simplex está diseñado para moverse de una solución básica factible a otra
solución básica factible de valor objetivo potencialmente mejor, pero necesita una
solución básica factible inicial. En problemas del estilo del ejemplo 7 donde todas las
restricciones son del tipo (≤) y todos los lados derechos son no negativos, disponemos
de una solución básica factible inicial inmediata con solo tomar las variables de holgura
como variables básicas. Lo que ocurre es que esta no es la situación general, como se
puede ver en el siguiente ejemplo:
Maximizar z = 10 x1 + 8 x2
sujeto a
3 x1 − x2 ≥ 3
x1 + 4 x2 ≤ 14
x1 − x2 ≤ 4
x2 ≥ 1
x1 , x2 ≥ 0
Lo primero que hacemos es escribirlo en forma estándar, con todo el lado derecho en
valores no negativos, para lo que se introducen las variables de holgura x3, x4, x5 y x6.
Maximizar z = 10 x1 + 8 x2
sujeto a
3 x1 − x 2 − x3 =3
x1 + 4 x2 + x4 = 14
x1 − x 2 + x5 =4
x2 − x6 =1
x1 , x2 , x3 , x4 , x5 , x6 ≥0
Evidentemente disponemos de una solución básica inmediata, basta con tomar las
variables x1 y x2 como variables no básicas, igualarlas a cero y obtendríamos la solución
básica del sistema, ( x1 , x2 , x3 , x4 , x5 , x6 ) = (0, 0, − 3, 14, 4, − 1) , que no es factible ya que
las variables x3 y x6 toman valores negativos. Luego no tenemos una solución básica
factible del problema para poder empezar con el método simplex.
Maximizar o Minimizar z = ?
sujeto a
3 x1 − x2 − x3 + R1 =3
x1 + 4 x2 + x4 = 14
x1 − x2 + x5 =4
x2 − x6 + R2 = 1
x1 , x2 , x3 , x4 , x5 , x6 , R1 , R2 ≥ 0
independientemente de la función objetivo que le pongamos, identificamos, de forma
inmediata, una solución básica factible inicial y, por lo tanto, le podemos aplicar el
método simplex. Las nuevas variables, R1, R2, que acabamos de introducir se llaman
variables artificiales, ya que no estaban presentes en el problema original, al contrario
de las variables de holgura que son variables totalmente legítimas del problema. Pues
bien, el “truco” consiste en utilizar alguna función objetivo que penalice el que las
variables artificiales tomen valores positivos, de manera que el propio método simplex
las acabe sacando de la base. Con este propósito, presentaremos dos métodos muy
relacionados, el método de la gran M y el método de las dos fases.
Variables
básicas x1 x2 x3 x4 x5 x6 R1 R2 l. d.
z –10 –8 0 0 0 0 M M 0
R1 3 –1 –1 0 0 0 1 0 3
x4 1 4 0 1 0 0 0 0 14
x5 1 –1 0 0 1 0 0 0 4
R2 0 1 0 0 0 –1 0 1 1
Observa que esta tabla aún no es una tabla simplex correcta pues en la fila cero (o
renglón z) no son cero los valores que hay bajo todas las variables básicas. Esto se
arregla fácilmente restándole a la fila cero la suma de la 1ª fila multiplicada por M más
la 4ª fila multiplicada por M. Es decir,
Nuevo renglón z = Renglón anterior z – (M × Renglón R1 + M × Renglón R2)
Var.
bás. x1 x2 x3 x4 x5 x6 R1 R2 l. d.
z –3M–10 –8 M 0 0 M 0 0 –4M
R1 3 –1 –1 0 0 0 1 0 3
x4 1 4 0 1 0 0 0 0 14
x5 1 –1 0 0 1 0 0 0 4
R2 0 1 0 0 0 –1 0 1 1
Esta última tabla ya está lista para aplicarle el método simplex, haciendo uso de las
condiciones de optimalidad y factibilidad para seleccionar las variables que entran y que
salen de la base, en cada iteración.
Aplicamos, pues, el método simplex:
Observa que las variables artificiales R1 y R2 han salido de la base en las iteraciones
primera y segunda, que es lo que pretendíamos al penalizar las variables artificiales en
la función objetivo. Luego podríamos haber prescindido de las columnas asociadas a las
variables artificiales desde la tercera tabla. Si nos fijamos, las dos primeras tablas han
servido para encontrar al vértice A, de la región factible, como solución básica factible
inicial del problema que queremos resolver.
1. Puede ocurrir que se llegue a la tabla óptima del problema penalizado y que
permanezca como variable básica alguna variable artificial con valor positivo.
Esto quiere decir que el problema original es inconsistente, es decir, no tiene
soluciones factibles (región factible vacía). Más adelante veremos este caso.
2. La aplicación del método de la gran M, quiere decir que M → ∞, es decir, que M
comparado con cualquier número positivo siempre será mayor. Si se resuelve el
problema a mano esto no es ningún inconveniente pues se trabaja directamente
con M. Pero si lo implementásemos en un ordenador, deberíamos dar un valor
concreto a M suficientemente grande. ¿Cómo de grande? es una pregunta difícil
de responder. Debería ser lo suficientemente grande como para penalizar a las
variables artificiales. Por otro lado, no debe ser tan grande que acarree
problemas de redondeo al operar con números muy grandes y pequeños a la vez.
Por este motivo, este método nunca se implementa, prefiriéndose el método de
las dos fases.
• El método de las dos fases: Afortunadamente existe otra forma de penalizar a las
variables artificiales sin necesidad de utilizar la constante M, de manera que evitemos
posibles errores de redondeo. Así, en una primara fase, resolveremos el problema
consistente en minimizar la suma de las variables artificiales, sujeto al conjunto de
restricciones que hemos planteado anteriormente. Es decir, en una primera fase, se
resuelve el siguiente problema:
Minimizar r = R1 + R2
sujeto a
3 x1 − x2 − x3 + R1 =3
Fase I : x1 + 4 x2 + x4 = 14
x1 − x2 + x5 =4
x2 − x6 + R2 = 1
x1 , x2 , x3 , x4 , x5 , x6 , R1 , R2 ≥ 0
Observa que cuando resolvamos este problema, no podremos concluir que es de valor
objetivo no acotado, pues la suma de las variables artificiales, R1 + R2, está acotada
inferiormente por cero, ya que las variables están restringidas a ser no negativas.
Por otro lado, si al resolver el problema de la fase I, resulta que en la tabla óptima de
dicho problema queda alguna variable artificial como variable básica con valor positivo,
entonces el problema original no tiene soluciones factibles (¿por qué?. Más adelante
responderemos esta pregunta).
r = R1 + R2 ↔ r − R1 − R2 = 0
Variables
básicas x1 x2 x3 x4 x5 x6 R1 R2 l. d.
r 0 0 0 0 0 0 –1 –1 0
R1 3 –1 –1 0 0 0 1 0 3
x4 1 4 0 1 0 0 0 0 14
x5 1 –1 0 0 1 0 0 0 4
R2 0 1 0 0 0 –1 0 1 1
Observa que esta tabla aún no es una tabla simplex correcta pues en la fila cero (o
renglón r) no son cero los valores que hay bajo todas las variables básicas. Esto se
arregla fácilmente sumándole a la fila cero la suma de la 1ª fila multiplicada más la 4ª
fila. Es decir,
Nuevo renglón r = Renglón anterior r + (Renglón R1 + Renglón R2)
Variables
básicas x1 x2 x3 x4 x5 x6 R1 R2 l. d.
r 3 0 –1 0 0 –1 0 0 4
R1 3 –1 –1 0 0 0 1 0 3
x4 1 4 0 1 0 0 0 0 14
x5 1 –1 0 0 1 0 0 0 4
R2 0 1 0 0 0 –1 0 1 1
Esta última tabla ya está lista para aplicarle el método simplex, haciendo uso de las
condiciones de optimalidad y factibilidad para seleccionar las variables que entran y que
salen de la base, en cada iteración.
Maximizar z = 10 x1 + 8 x2
sujeto a
3 x1 − x2 − x3 =3
Fase II: Resuélvase el problema original, x1 + 4 x2 + x4 = 14
x1 − x2 + x5 =4
x2 − x6 =1
x1 , x2 , x3 , x4 , x5 , x6 ≥0
a partir de la siguiente solución básica factible inicial:
Variables
básicas x1 x2 x3 x4 x5 x6 l. d.
x1 1 0 –1/3 0 0 –1/3 4/3
x4 0 0 1/3 1 0 13/3 26/3
x5 0 0 1/3 0 1 –2/3 11/3
x2 0 1 0 0 0 –1 1
Variables
básicas x1 x2 x3 x4 x5 x6 l. d.
z –10 –8 0 0 0 0 0
x1 1 0 –1/3 0 0 –1/3 4/3
x4 0 0 1/3 1 0 13/3 26/3
x5 0 0 1/3 0 1 –2/3 11/3
x2 0 1 0 0 0 –1 1
Observa que esta tabla aún no es una tabla simplex correcta pues en la fila cero (o
renglón z) no son cero los valores que hay bajo todas las variables básicas. Esto se
arregla fácilmente sumándole a la fila cero la suma de la 1ª fila multiplicada por 10 más
la 4ª fila multiplicada por 8. Es decir,
Nuevo renglón z = Renglón anterior z + (10 × Renglón x1 + 8 × Renglón x2)
Esta última tabla ya está lista para aplicarle el método simplex, haciendo uso de las
condiciones de optimalidad y factibilidad para seleccionar las variables que entran y que
salen de la base, en cada iteración.
• Ahora, vamos a ir cerrando algunos casos que hemos dejado abiertos. Por ejemplo,
veamos cómo actuar en el caso de que al finalizar la fase I con valor objetivo óptimo de
cero, sin embargo en la tabla óptima ha quedado alguna variable artificial como variable
básica pero con un valor de cero. Analicemos el siguiente ejemplo:
Maximizar z = 2 x1 + 2 x2 + 4 x3
sujeto a
2 x1 + x2 + x3 ≤ 2
3 x1 + 4 x2 + 2 x3 ≥ 8
x1 , x2 , x3 ≥ 0
Solución: En primer lugar escribimos el problema en forma estándar con todos los
valores del lado derecho no negativos. Para ello sumamos la variable de holgura no
negativa, x4, en el lado izquierdo de la primera restricción y restamos la variable de
holgura no negativa, x5, en el lado izquierdo de la segunda restricción, quedando el
problema de la siguiente forma,
Maximizar z = 2 x1 + 2 x2 + 4 x3
sujeto a
2 x1 + x2 + x3 + x4 =2
3x1 + 4 x2 + 2 x3 − x5 = 8
x1 , x2 , x3 , x4 , x5 ≥ 0
Al no haber una identidad en el lado izquierdo de las ecuaciones forzamos que aparezca
introduciendo una variable artificial no negativa , R, en la segunda ecuación y
utilizamos el método de las dos fases.
r =R↔r−R=0
Variables
básicas x1 x2 x3 x4 x5 R l. d.
r 0 0 0 0 0 –1 0
x4 2 1 1 1 0 0 2
R 3 4 2 0 –1 1 8
Observa que esta tabla aún no es una tabla simplex correcta pues en la fila cero (o
renglón r) no son cero los valores que hay bajo todas las variables básicas. Esto se
arregla fácilmente sumándole a la fila cero la 2ª fila. Es decir,
Variables
básicas x1 x2 x3 x4 x5 R l. d.
r 3 4 2 0 –1 0 8
x4 2 1 1 1 0 0 2
R 3 4 2 0 –1 1 8
Esta última tabla ya está lista para aplicarle el método simplex, haciendo uso de las
condiciones de optimalidad y factibilidad para seleccionar las variables que entran y que
salen de la base, en cada iteración.
Aplicamos, pues, el método simplex:
Variables
básicas x1 x2 x3 x4 x5 R l. d.
r 3 4 2 0 –1 0 8 Razón
x4 2 1 1 1 0 0 2 2:1=2
R 3 4 2 0 –1 1 8 8:4=2
Variables
básicas x1 x2 x3 x4 x5 R l. d.
r 3 4 2 0 –1 0 8 Razón
x4 2 1 1 0 0 2 2:1=2
R 3 4 2 0 –1 1 8 8:4=2
r –5 0 –2 –4 –1 0 0
x2 2 1 1 1 0 0 2 Tabla
R –5 0 –2 –4 –1 1 0 óptima
Es decir, finalizamos la fase I, con una variable artificial como variable básica con valor
de cero. Observa que esto provoca que la identidad no esté bajo variables legítimas del
problema original, de manera que no disponemos de una solución básica factible del
problema original. En este caso, antes de ir a la fase II, lo que haremos es permutar, de
una en una, a las variables artificiales (en este caso sólo hay una) que hayan quedado en
la base óptima por alguna variable no básica legítima. En nuestra tabla óptima son
variables no básicas legítimas las variables x1, x3, x4 y x5. Para que cualquiera de estas
variables entrase a la base a cambio de la variable R, lo único que deberíamos hacer es
pivotar sobre alguno de estos elementos,
Observa que aunque vayamos a pivotar sobre valores negativos, tras la operación de
pivoteo no se perderá la factibilidad (es decir, ninguna variable básica se hará negativa),
pues el lado derecho de la fila pivote vale cero. Así, si seleccionamos, por ejemplo, el
valor –5, como elemento pivote, resultará la siguiente tabla, tras el pivoteo,
Variables
básicas x1 x2 x3 x4 x5 R l. d.
x2 2 1 1 1 0 0 2 Tabla
R 0 –2 –4 –1 1 0 óptima
r 0 0 0 0 0 –1 0
x2 0 1 1/5 –3/5 –2/5 2/5 2 Tabla
x1 1 0 2/5 4/5 1/5 –1/5 0 óptima
Al estudiar este ejemplo, nos puede surgir la siguiente duda, llegados a la situación del
final de la primera fase, donde quedó una variable artificial como variable básica con
valor cero, en la tabla óptima y donde decidimos intercambiarla por una variable
legítima no básica, podría ocurrir que no fuera posible tal intercambio, porque todos los
elementos candidatos a pivote, es decir, los siguientes elementos marcados,
hubiesen sido cero. La respuesta es que sí, pero esta situación lo que detectaría es
redundancia en la definición del problema original, y por lo tanto se puede solucionar,
como se muestra en el siguiente ejemplo, extraído del libro de Bazaraa & Jarvis.
Minimizar z = − x1 + 2 x2 − 3 x3
sujeto a
x1 + x2 + x3 = 6
− x1 + x 2 + 2 x3 = 4
2 x2 + 3 x3 = 10
x3 ≤ 2
x1 , x 2 , x3 ≥ 0
Solución: En primer lugar escribimos el problema en forma estándar con todos los
valores del lado derecho no negativos. Para ello sumamos una variable de holgura no
negativa, x4, en el lado izquierdo de la cuarta restricción, quedando el problema de la
siguiente forma,
Minimizar z = − x1 + 2 x2 − 3 x3
sujeto a
x1 + x2 + x3 =6
− x1 + x 2 + 2 x3 =4
2 x 2 + 3 x3 = 10
x3 + x 4 = 2
x1 , x 2 , x3 , x 4 ≥ 0
Si tomamos la matriz ampliada del sistema de ecuaciones,
1 1 1 0 6
−1 1 2 0 4
A=
0 2 3 0 10
0 0 1 1 2
Vemos que esta matriz no es de rango completo, de hecho, si sumamos las dos primeras
filas obtenemos la tercera, es decir cualquiera de las tres primeras restricciones es
redundante y se podría eliminar. No obstante vamos a actuar como si este hecho no
fuera conocido. Por lo tanto, introduciremos artificialmente, las columnas unitarias,
1 0 1
0 1 0
0 , 0 , 1
0 0 0
para así obtener la identidad en el lado izquierdo de la matriz. Es decir, sumamos las
variables artificiales no negativas, R1, R2 y R3, en el lado izquierdo de las ecuaciones
primera, segunda y tercera, respectivamente, y utilizamos el método de las dos fases.
r = R1 + R2 + R3 ↔ r − R1 − R2 − R3 = 0
Variables
básicas x1 x2 x3 x4 R1 R2 R3 l. d.
r 0 4 6 0 0 0 0 20
R1 1 1 1 0 1 0 0 6
R2 –1 1 2 0 0 1 0 4
R3 0 2 3 0 0 0 1 10
x4 0 0 1 1 0 0 0 2
Como todas las variables artificiales tienen valor cero, R1 = R2 = 0, por ser variables no
básicas y R3 que aún siendo básica toma un valor de cero, podemos seguir con la fase II,
lo que ocurre es que se nos ha quedado una variable artificial en la base, de manera que
antes de ir a la fase II, intentaremos permutar dicha variable artificial por otra variable
que siendo no básica sea legítima. Si observamos la tabla vemos que las única variable
legítima que no está en la base (es decir, que es no básica) es la variable x4, de manera
que deberíamos intercambiar a las variables R3 con x4. Es decir, deberíamos hacer
entrar a la base a la variable x4 y que la variable R3 saliese de la base. Observa que para
conseguir esto deberíamos tomar como columna pivote a la columna bajo la variable x4
y como fila pivote al renglón R3. Es decir, deberíamos pivotar sobre la siguiente entrada
de la tabla,
Variables
básicas x1 x2 x3 x4 R1 R2 R3 l. d.
r 0 0 0 0 –2 –2 0 0
x1 1 0 0 1/2 1/2 –1/2 0 2
x2 0 1 0 –3/2 1/2 1/2 0 2 Tabla
R3 0 0 0 –1 –1 1 0 óptima
x3 0 0 1 1 0 0 0 2
y como hay un cero no podemos pivotar sobre él. Ahora bien, si nos fijamos bien en la
tabla anterior, vemos que las columnas que hay bajo las variables legítimas del
problema, sin contar con los coeficientes del renglón r, junto con la columna del lado
derecho, es decir, las siguientes columnas,
forman una matriz, a la cual hemos llegado desde la matriz ampliada del sistema inicial,
A, haciendo operaciones de pivoteo con el método simplex, es decir, haciendo
operaciones elementales de filas. En efecto, observa que ha ido ocurriendo durante el
desarrollo del método simplex con la matriz ampliada A.
1 1 1 0 6
−1 1 2 0 4
A=
0 2 3 0 10
0 0 1 1 2
1 1 0 1 2 2
0 1 0 − 3 2 2
0 0 0 0 0
0 0 1 1 2
Esto demuestra que la tercera fila, es decir, la tercera restricción del problema original,
es redundante y se puede eliminar,
Minimizar z = − x1 + 2 x2 − 3 x3
Minimizar z = − x1 + 2 x 2 − 3 x3
sujeto a sujeto a
x1 + x2 + x3 =6
x1 + x 2 + x3 =6
− x1 + x2 + 2 x3 =4 Eliminamos la
2 x 2 + 3 x3 = 10 → − x1 + x 2 + 2 x3 =4
x3 + x 4 = 2 tercera ecuación x3 + x 4 = 2
x1 , x2 , x3 , x4 ≥ 0 x1 , x 2 , x 3 , x 4 ≥ 0
Minimizar z = − x1 + 2 x 2 − 3 x3
sujeto a
x1 + x 2 + x3 =6
− x1 + x 2 + 2 x3 =4
x3 + x 4 = 2
x1 , x 2 , x 3 , x 4 ≥ 0
partiendo de la solución básica factible inicial proporcionada por la siguiente tabla:
Variables
básicas x1 x2 x3 x4 l. d.
x1 1 0 0 1/2 2
x2 0 1 0 –3/2 2
x3 0 0 1 1 2
Observa que esta tabla aún no es una tabla simplex correcta pues en la fila cero (o
renglón z) no son cero los valores que hay bajo todas las variables básicas. Esto se
arregla fácilmente sumándole a la fila cero la suma de la 1ª fila multiplicada por –1 más
la 2ª fila multiplicada por 2 más la tercera fila multiplicada por –3. Es decir,
Nuevo renglón z = Renglón anterior z + [(–1) × Renglón x1 + 2 × Renglón x2 + (–3) ×
Renglón x3]
Variables
básicas x1 x2 x3 x4 l. d.
z 0 0 0 –13/2 –4
x1 1 0 0 1/2 2
x2 0 1 0 –3/2 2
x3 0 0 1 1 2
A esta tabla ya se le puede aplicar el método simplex, es más como el problema que
estamos resolviendo es de minimizar, resulta que la tabla ya es óptima. De manera que
la solución óptima del problema original,
Minimizar z = − x1 + 2 x 2 − 3 x 3 Minimizar z = − x1 + 2 x 2 − 3x 3
sujeto a sujeto a
x1 + x 2 + x 3 =6 x1 + x 2 + x 3 = 6
↔
− x1 + x 2 + 2 x 3 =4 − x1 + x 2 + 2 x 3 = 4
x3 + x 4 = 2 x3 ≤ 2
x1 , x 2 , x 3 , x 4 ≥ 0 x1 , x 2 , x 3 ≥ 0
es ( x1 , x2 , x3 ) = (2, 2, 2) siendo el valor de la función objetivo en dicho punto, z = –4.
8.- Casos especiales detectados en la aplicación del método simplex.
Vamos a terminar este apartado sobre el método simplex analizando cómo se detecta,
cuando estamos realizando las iteraciones del método, los diversos casos que se pueden
presentar en un problema de programación lineal: soluciones óptimas alternativas,
soluciones no acotadas (es decir, valor de la función objetivo no acotada en la región
factible), no existencia de soluciones factibles (región factible vacía) y degeneración.
Observa que si al ejecutar el método simplex en alguna iteración hay empate para
seleccionar a la variable que sale, entonces en la siguiente tabla, tras dicha iteración, se
tendrá una variable básica con valor cero, es decir, se tendrá una solución básica factible
degenerada. No debemos preocuparnos por la aparición de una solución básica factible
degenerada, más allá de una posibilidad teórica de entrar en un ciclo (bucle infinito) en
el caso de que el problema se estuviera resolviendo con un programa de ordenador, que
no tuviera previsto tal percance. Existen métodos para eliminar los ciclos, como la regla
de Bland u otros, aunque no daremos ninguno, ya que el ciclado es poco probable que
ocurra, de hecho, no es fácil formular un problema de programación lineal donde al
aplicar el método simplex éste entre en un ciclo.
Desde el punto de vista práctico la degeneración indica que el problema tiene al menos
una restricción redundante. Veamos esto con un ejemplo.
Maximizar z = 3 x1 + 5 x2
sujeto a
3 x1 + 4 x 2 ≤ 12
x1 + 2 x 2 ≤ 6
x1 , x 2 ≥ 0
Esta tabla es correcta para el método simplex, de manera que podemos aplicar el
método a partir de ella.
Variables
básicas x1 x2 x3 x4 l. d.
z –3 –5 0 0 0 Razón
x3 3 4 1 0 12 12 : 4 = 3
x4 1 0 1 6 6 : 2 = 3**
z –1/2 0 0 5/2 15
x3 0 1 –2 0 0 : 1 = 0**
x2 1/2 1 0 1/2 3 3 : ½ =6
z 0 0 1/2 3/2 15
x1 1 0 1 –2 0 Solución
x2 0 1 –1/2 3/2 3 óptima
Esto ocurre si el número de hiperplanos, de los que definen a la región factible, que
pasan por un vértice supera al número de hiperplanos independientes necesarios para
definir un punto, en el espacio de las variables de decisiones. Eso es lo que está pasando
aquí. La región factible de nuestro problema es,
3 x1 + 4 x2 ≤ 12
F = ( x1 , x2 ) ∈ R / x1 + 2 x2 ≤ 6
2
x1 , x2 ≥ 0
y por el vértice (0, 3) están pasando las rectas, 3x1 + 4x2 = 12 , x1 + 2x2 = 6 y x1 = 0,
de la región factible, una más de las necesarias para definir un punto en el plano R2.
Este es el motivo por el que en teoría se podría entrar en un ciclo, en el caso de que el
método simplex pasase por un vértice que estuviera en correspondencia con una serie de
soluciones básicas factibles degeneradas y que tras recorrerlas a todas llegase de nuevo
a la primera y vuelta a empezar.
A continuación se propone otro ejemplo donde el método simplex pasa por una solución
básica factible degenerada antes de llegar a la solución óptima.
Maximizar z = x1 + 3x 2
sujeto a
x1 + x 2 ≤ 6
− x1 + 2 x2 ≤ 8
− x1 + x 2 ≤ 4
x1 , x 2 ≥ 0
Solución.
En los casos en los que la función objetivo (en realidad, las curvas de nivel de la
función objetivo) es paralela a alguna restricción que en la solución óptima se hace
activa (obligatoria) (es decir, una restricción que se cumple como ecuación en la
solución óptima), la función objetivo toma el mismo valor óptimo en más de un punto
de la región factible. Esto se indica diciendo que hay soluciones óptimas alternativas,
de hecho en estos casos hay una infinidad de soluciones óptimas alternativas. En el
siguiente ejemplo mostramos un problema donde ocurre esto y a continuación
indicamos como se detecta esto en el método simplex.
Maximizar z = x1 + 2 x2
sujeto a
− x1 + x2 ≤ 2
x1 + 2 x2 ≤ 6
2 x1 + x2 ≤ 6
x1 , x2 ≥ 0
Solución.
Maximizar z = x1 + 2 x2
sujeto a
− x1 + x2 + x3 =2
x1 + 2 x2 + x4 =6
2 x1 + x2 + x5 = 6
x1 , x2 , x3 , x4 , x5 ≥ 0
Variables
básicas x1 x2 x3 x4 x5 l. d.
z –1 –2 0 0 0 0
x3 –1 1 1 0 0 2
x4 1 2 0 1 0 6
x5 2 1 0 0 1 6
Esta tabla es correcta para el método simplex, de manera que podemos aplicar el
método a partir de ella.
Variables
básicas x1 x2 x3 x4 x5 l. d.
z –1 –2 0 0 0 0 Razón
x3 –1 1 0 0 2 2 : 1 = 2**
x4 1 2 0 1 0 6 6:2=3
x5 2 1 0 0 1 6 6:1=6
z –3 0 2 0 0 4
x2 –1 1 1 0 0 2 ---
x4 0 –2 1 0 2 2 : 3 **
x5 3 0 –1 0 1 4 4:3
z 0 0 0 1 0 6
x2 0 1 1/3 1/3 0 8/3 8/3 : 1/3 = 8
x1 1 0 –2/3 1/3 0 2/3 ---
x5 0 0 –1 1 2 2 : 1 = 2**
z 0 0 0 1 0 6
x2 0 1 0 2/3 –1/3 2
x1 1 0 0 –1/3 2/3 2
x3 0 0 1 –1 1 2
Si observamos las tablas de arriba vemos que en la tercera tabla, según la condición de
optimalidad (“en un problema de maximizar se llega al óptimo en la iteración en la que todos los
coeficientes de las variables no básicas en el renglón z son mayores o iguales a cero”), ya hemos
llegado a una solución óptima del problema, el vértice C, pero también vemos que el
coeficiente que hay bajo la variable no básica x3 en el renglón z es cero, lo que nos
indica que si metemos a dicha variable a la base el valor de la función objetivo no
cambiará. Seleccionamos, pues, dicha variable como variable que entra y seguimos con
el método simplex llegando a una nueva solución básica factible óptima, el vértice D.
Observa que en la última tabla lo único que podríamos hacer es seleccionar a la variable
no básica x5, que tiene un coeficiente de cero en el renglón z, como variable de entrada,
pero si hiciéramos esto veríamos que regresamos al vértice anterior. Luego hemos
encontrado a todas las soluciones básicas factibles óptimas del problema.
• Una vez conocidas todas las soluciones básicas factibles óptimas del problema, el
resto de soluciones óptimas se encuentran tomando todas las combinaciones lineales
convexas de tales soluciones básicas factibles óptimas.
Definición: Sea el espacio vectorial Rn. Sean los vectores x, y, … , z ∈ Rn. Llamamos
combinación lineal convexa de los vectores x, y, … , z, a cualquier vector de la forma,
α x + β y + ⋯ +γ z
donde α, β, … , γ ∈ R con α, β, … , γ ≥ 0 y α + β + ⋯ +γ = 1
(x1, x2, x3, x4, x5) = α (2/3, 8/3, 0, 0, 2) + (1 –α) (2, 2, 2, 0, 0) ; con 0 ≤ α ≤ 1
Luego será solución óptima del problema todo punto de coordenadas (x1, x2), en el plano
X1 X2, que cumpla,
(x1, x2) = α (2/3, 8/3) + (1 –α) (2, 2) ; con 0 ≤ α ≤ 1
es decir, todos los puntos del segmento que une a los vértices C y D, como se aprecia en
la solución gráfica.
Hay modelos de programación lineal que tienen región factible no acotada, es decir,
para los que existe alguna dirección que si nos movemos por ella, en la región factible,
los valores de las variables básicas pueden aumentar indefinidamente sin violar ninguna
restricción del problema. Si además ocurriera que al movernos en esa dirección el valor
de la función objetivo aumentase (disminuyese), estando en un problema de maximizar
(minimizar), entonces ocurriría que tanto la región factible como el valor objetivo
óptimo serían no acotados. Cuando esto ocurre en un modelo que representa un
problema de la vida real, puede ser un aviso de que el modelo esté mal formulado.
En el siguiente ejemplo vemos como se detecta esta situación en las tablas del método
simplex.
Maximizar z = x1 + x2
sujeto a
− x1 + x2 ≤ 2
x2 ≤ 4
x1 , x2 ≥ 0
Solución.
Como siempre en primer lugar escribimos el problema en forma estándar, con todo el
lado derecho en valores no negativos.
Maximizar z = x1 + x2
sujeto a
− x1 + x2 + x3 =2
x2 + x4 = 4
x1 , x2 , x3 , x4 ≥ 0
Variables
básicas x1 x2 x3 x4 l. d.
z –1 –1 0 0 0
x3 –1 1 1 0 2
x4 0 1 0 1 4
Esta tabla es correcta para el método simplex, de manera que podemos aplicar el
método a partir de ella. Como el problema es de maximizar podemos elegir como
variable que entra tanto a la variable no básica x1 como a la variable no básica x2, pues
las dos tienen el mismo coeficiente negativo, –1, en la fila cero (renglón z). Veamos qué
ocurre si se selecciona a x1 como variable de entrada y también qué ocurre si es x2 la
seleccionada.
Si elegimos a x1 como variable de entrada, al mirar en la columna que hay bajo ella (sin
−1
considerar el coeficiente que está en el renglón z), , vemos que en este renglón no
0
hay coeficientes positivos por lo que no podemos calcular las razones para quedarnos
con la mínima. Es decir, no hay variable de salida. Analicemos esto más detenidamente.
Ahora mismo nos encontramos en la solución básica factible dada por la tabla, es decir,
(x1, x2, x3, x4) = (0, 0, 2, 4), que es el vértice A, de la región factible, donde las variables
{x3, x4} son básicas y las variables {x1, x2} son no básicas. Una vez que hemos
seleccionado la variable de entrada, x1, el método consiste en ir dando valores positivos,
desde cero en adelante, a la variable de entrada, mientras el resto de variables no básicas
permanecen iguales a cero. Nuestra motivación es seguir aumentando el valor de la
variable de entrada tanto como podamos. Ahora bien, si vamos aumentando el valor de
la variable de entrada x1, mientras mantenemos en cero el valor de las restantes
variables no básicas, en este caso, x2 = 0, sucederá lo siguiente: Si en el sistema,
− x1 + x 2 + x3 = 2
x2 + x 4 = 4
− x1 + x 2 + x3 = 2 x3 = 2 + x1 − x 2 x3 2 − 1 1
(*) ⇔ ⇔ = − x1 − x 2
x2 + x 4 = 4 x4 = 4 − x2 x4 4 0 1
− 1
Observemos que esto ocurre porque el vector, , que acompaña a la variable x1, en
0
la expresión (**), va precedido por un signo menos, de manera que las entradas que
sean negativas o cero, en dicho vector, provocarán aumento o no cambio en las
correspondientes variables básicas cuando el vector no básico x1 aumente su valor desde
cero.
−1
Observación: Los vectores y que aparecen en la expresión (*)
1
0 1
acompañando a las variables no básicas x1 y x2, respectivamente, son las
columnas (sin considerar el coeficiente que está en el renglón z) que hay en la
tabla simplex bajo las variables no básicas, x1 y x2, respectivamente.
Variables
básicas x1 x2 x3 x4 l. d.
z –1 –1 0 0 0 Razón
x3 –1 1 0 2 2 : 1 = 2**
x4 0 1 0 1 4 4:1=4
z –2 0 1 0 2
x2 –1 1 1 0 2 ---
x4 0 –1 1 2 2 : 1 = 2**
z 0 0 –1 2 6
x2 0 1 0 1 4
x5 1 0 –1 1 2
Maximizar z = 4 x1 + 10 x2
sujeto a
x1 + 2 x2 ≤ 4
3 x1 + 7 x2 ≥ 21
x1 , x2 ≥ 0
Solución.
Vemos cómo detecta esto el método simplex. Como siempre en primer lugar escribimos
el problema en forma estándar, con todo el lado derecho en valores no negativos.
Maximizar z = 4 x1 + 10 x2
sujeto a
x1 + 2 x2 + x3 =4
3 x1 + 7 x2 − x4 = 21
x1 , x2 , x3 , x4 ≥ 0
Minimizar r = R
sujeto a
x1 + 2 x2 + x3 =4
3 x1 + 7 x2 − x4 + R = 21
x1 , x2 , x3 , x4 , R ≥ 0
r =R↔r−R=0
Variables
básicas x1 x2 x3 x4 R l. d.
r 0 0 0 0 –1 0
x3 1 2 1 0 0 4
R 3 7 0 –1 1 21
Observa que esta tabla aún no es una tabla simplex correcta pues en la fila cero (o
renglón r) no son cero los valores que hay bajo todas las variables básicas. Esto se
arregla fácilmente sumándole a la fila cero la 2ª fila. Es decir,
Nuevo renglón r = Renglón anterior r + Renglón R
Así, tras hacer estas operaciones quedaría la siguiente tabla,
Variables
básicas x1 x2 x3 x4 R l. d.
r 0 7 0 –1 0 21
x3 1 2 1 0 0 4
R 3 7 0 –1 1 21
Supongamos, por lo absurdo, que (s1, s2, s3, s4) fuese una solución factible del problema
original, entonces se cumpliría que,
s1 + 2s 2 + s3 =4
3s1 + 7 s 2 − s 4 = 21
s , s , s , s ≥0
1 2 3 4
en cuyo caso el punto de coordenadas, (s1, s2, s3, s4, 0), cumpliría las restricciones,
x1 + 2 x2 + x3 =4
3x1 + 7 x2 − x4 + R = 21
x1 , x2 , x3 , x4 , R ≥ 0
de manera que (s1, s2, s3, s4, 0) sería una solución factible del problema de la fase I,
siendo el valor de la función objetivo en este punto igual a, r = 0 < 7, lo que contradice
que ( x1 , x2 , x3 , x4 , R ) = (0, 2, 0, 0, 7) sea la solución óptima del problema de la
* * * * *