You are on page 1of 91

Programación Lineal.

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.

Los problemas de programación lineal se interesan en la asignación eficiente de


recursos limitados con el ánimo de alcanzar objetivos deseados. Estos problemas se
caracterizan por el gran número de soluciones que satisfacen las condiciones impuestas
por cada problema. La selección de una solución concreta, como la mejor a un
problema, dependerá de cierto objetivo implícito en el planteamiento del problema. Una
solución que satisfaga todas las condiciones del problema y además alcance el objetivo
deseado se denomina “solución óptima”.

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:

1. Los datos del problema


2. Las variables que habremos de definir para formular el problema, junto con sus
dominios de definición
3. Las restricciones que vienen impuestas por las condiciones del problema.
4. La función que representa el objetivo a alcanzar y que habitualmente debe ser
optimizada.

Ejemplo 1: Un problema de dieta.


Se desea añadir a la dieta de ciertos animales de granja cantidades extra de tiamina,
fósforo y hierro. Para ello en el mercado existen dos preparados en polvo diferentes:
Fosfatón y Ferroforo. Estos contienen los nutrientes en las cantidades que se indican a
continuación. Cada onza de Ferroforo contiene 0.15 mg de tiamina, 0.75 mg de fósforo
y 1.30 mg de hierro. Cada onza de Fosfatón contiene 0.10 mg de tiamina, 1.70 mg de
fósforo y 1.10 mg de hierro. 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.
El costo de cada onza de Ferroforo es de 0.02 € y el de Fosfatón es de 5/3 de
céntimo de euro por onza . Determinar las cantidades de Ferroforo y Fosfatón que
debemos suministrar a cada animal de forma que el costo de este suplemento a la dieta
sea mínimo.

Sergio Estrada Domínguez


Juan Férez Alcántara
Francisco de Asís Guil Asensio
Solución:

Tal y como hemos indicado anteriormente, empezaremos identificando los cuatro


componentes básicos del problema.

En primer lugar expresamos los datos del problema en forma de tabla, lo que nos dará
una mejor perspectiva de los mismos:

Proporción de nutriente por ingrediente


___________Nutrientes__________
Ingredientes Tiamina Fósforo Hierro Costo de los ingredientes
Ferroforo 0.15 mg/oz 0.75 mg/oz 1.30 mg/oz 2 cts/oz
Fosfatón 0.10 mg/oz 1.70 mg/oz 1.10 mg/oz 5/3 cts/oz

• Definición de las variables del problema:


Sean x1 y x2 las cantidades, en onzas, de Ferroforo y Fosfatón, respectivamente, que
debemos añadir a la dieta de los animales diariamente.

• Restricciones del problema:


Al echar a la dieta x1 onzas de Ferroforo y x2 onzas de Fosfatón estaríamos
proporcionando a la misma el siguiente aporte nutricional diario:
0.15 x1 + 0.10 x2 mg de Tiamina
0.75 x1 + 1.70 x2 mg de Fósforo
1.30 x1 + 1.10 x2 mg de Hierro

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:

0.15 x1 + 0.10 x2 ≥ 1.00


0.75 x1 + 1.70 x2 ≥ 7.50
1.30 x1 + 1.10 x2 ≥ 10.00

• 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.

• Definición de la función que representa el objetivo que pretendemos alcanzar:


Es lógico pensar que habrá muchas pares de valores (x1, x2) que cumplirán todas las
restricciones del problema. Cada uno de estos pares de valores (x1, x2), que significa
echar, diariamente, a la dieta de los animales x1 onzas de Ferroforo y x2 onzas de
Fosfatón, , tendrá un costo de 2 x1 + 5/3 x2 céntimos de euro.
Luego si llamamos z = 2 x1 + 5/3 x2 , z representa el costo, en céntimos de euro,
asociado al par (x1, x2) de valores de las variables.

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

Ejemplo 2: Un problema de mezclas.


Una fábrica de pinturas mezcla tres aditivos, A1, A2 y A3 a una base en
diferentes proporciones para obtener distintos colores de tinta. La tinta roja se obtiene
mezclando A1, A2 y A3 en la proporción de 3:1:2, la tinta azul en la proporción de
2:3:4 y la tinta verde en la proporción 1:2:3. Después de mezclar estos aditivos, a cada
color de tinta se le añade una cantidad de base igual a la suma de dichos aditivos, en los
respectivos colores. La compañía actualmente tiene 1000 galones de A1, 1500 de A2,
2000 de A3 y 4000 de base. Dedo que el beneficio obtenido por galón de cada tipo de
tinta es el mismo, desarrolle un modelo de programación lineal para determinar cómo
deberían usarse estos recursos para obtener los máximos ingresos, suponiendo que toda
la tinta que se fabrique será vendida.

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

• Definición de las variables de decisión:

Denotamos mediante,

xR = cantidad de galones de tinta roja a producir.


xA = cantidad de galones de tinta azul a producir.
xV = cantidad de galones de tinta verde a producir.

• Restricciones debidas a la disponibilidad de los aditivos y base:

x R + 182 x A + 121 xV ≤ 1000


3
14442444
12
3

“cantidad de unidades de aditivo A1 gastadas al fabricar xR galones de tinta roja, xA
galones de tinta azul y xV galones de tinta verde”.
x R + 183 x A + 122 xV ≤ 1500
1
14442444
12
3

“cantidad de unidades de aditivo A2 gastadas al fabricar xR galones de tinta roja, xA
galones de tinta azul y xV galones de tinta verde”.

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”.

x R + 189 x A + 126 xV ≤ 4000


6
14442444
12
3

“cantidad de unidades de base 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:

De manera que quedaría el siguiente 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:

Materia Requisitos por unidad de modelo dado


Prima I II III
A 2 3 5
B 4 2 7

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.

Solución: Supondremos que todo lo que se produce se vende.

• Definición de las variables de decisión:

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”.

• Restricciones debidas a la disponibilidad de las materias primas A y B:

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”.

Pues bien, este párrafo entrecomillado se traduce en la siguiente restricción:


x2 x3
x1 + + ≤ 700
2 3
Expliquemos esta última restricción con más detenimiento. Si llamamos t al tiempo de
mano de obra necesario para fabricar una unidad del modelo I, entonces t/2 será el
tiempo de mano de obra necesario para fabricar una unidad del modelo II y t/3 será el
tiempo de mano de obra necesario para fabricar una unidad del modelo III.

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”

Por último, dividiendo por t la restricción anterior nos quedaría,


x2 x3
x1 + + ≤ 700
2 3
• 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:
x1 , x2 , x3 ≥ 0

De manera que quedaría el siguiente modelo:

 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

Ejemplo 4: Producción de cerveza.


Cierta fábrica produce dos tipos de cerveza: rubia y negra. El precio de venta de 1 litro
de cerveza rubia es de 5 €, mientras que el de 1 litro de negra es de 3 €. Un estudio
previo ha demostrado que para producir 1000 litros de cerveza rubia se requieren 3
obreros en el proceso de producción, mientras que 1000 litros de negra requieren 5
obreros. La fábrica dispone de 15 obreros en total. Además, producir 1000 litros de
rubia cuesta 500 € mientras que 1000 litros de negra sale por 200 €. El presupuesto de
producción a la semana es como mucho 1000 €. Determinar cómo debe hacerse la
producción semanal para maximizar el ingreso en concepto de venta semanal.

Solución:

Sean x e y el número de litros de cerveza rubia y negra producidas a la semana. El


problema a resolver sería:
Maximizar 5 x + 3 y

s.a.

x (
1000
)
⋅ 3 +  y
 1000 
 ⋅ 5 ≤ 15



x (
1000
)
⋅ 500 +  y
 1000
 ⋅ 200 ≤ 1000

 x , y ≥ 0

Si cambiamos el significado de las variables de decisión y llamamos:

x = nº de miles de litros de cerveza rubia producida a la semana, y


y = nº de miles de litros de cerveza negra producida a la semana

El problema quedaría así:

Maximizar 5000 x + 3000 y


sujeto a

(P ) 3 x + 5 y ≤ 15
 500 x + 200 y ≤ 1000

 x , y ≥0

Que aún sería equivalente a:

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.

• Expresión general de un modelo de programación lineal:

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.

La restricción de no negatividad, para todas las variables de decisión, es esencial para el


desarrollo del método de solución de los problemas de programación lineal.

1.2 Definiciones básicas:

Consideremos el siguiente problema de programación lineal:

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.

 a11 a12 L a1n 


 
= (aij )
a a 22 L a2n 
A =  21
M M O M 
 
a am2 L a mn 
 m1
 b1 
 
El vector columna, b =  M  , al cual se le llama el “vector del lado derecho”, representa
b 
 m
los requerimientos mínimos que deben satisfacerse (es decir, la limitación de los
recursos a repartir entre las actividades), por eso a este vector también se le llama
“vector de requerimientos”.

Las restricciones x1 , x 2 , L , x n ≥ 0 son las “restricciones de no negatividad”.

Cualquier concreción de valores para las variables de decisión ( x1 , x 2 , L , x n ) se llama


“solución” (sin importar si es una elección deseable, o incluso admisible).

Una “solución factible” es una solución para la que se satisfacen todas las restricciones.

Al conjunto de todas las soluciones factibles se le llama “región factible”.

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).

2.- Formas canónica y estándar.


Un problema de programación lineal se dice que está escrito en “forma
estándar” si todas las restricciones del problema son ecuaciones lineales y todas las
variables son no negativas.

Diremos que un problema de programación lineal de minimización está escrito


en “forma canónica” si todas las variables son no negativas y todas las restricciones
son del tipo ≥.
Diremos que un problema de programación lineal de maximización está escrito
en “forma canónica” si todas las variables son no negativas y todas las restricciones
son del tipo ≤.

Observación: El método simplex, que es un método para resolver problemas de


programación lineal, está diseñado para aplicarse sólo después de que el problema se
haya escrito en forma estándar.

• En la siguiente tabla resumimos la forma estándar y canónica:

Problema de Minimización Problema de Maximización


n n
Minimizar ∑ c j x j Maximizar ∑ c j x j
Forma j =1 j =1
n n

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

3.- Paso de unas formas a otras (Manipulación del problema).


Cualquier problema de programación lineal se puede escribir en forma canónica o forma
estándar, siempre que se quiera, de la siguiente forma:

a) Desigualdades y ecuaciones:

Una desigualdad se puede transformar fácilmente en una ecuación.


Consideremos una del tipo ( ≤ ). Este tipo de desigualdad es típica en las restricciones
en las que el lado derecho representa la cantidad disponible de un recurso limitado y el
lado izquierdo el consumo que de tal recurso hacen las variables de decisión. La
diferencia entre el lado derecho y el lado izquierdo de la restricción ( ≤ ) representa,
pues, la cantidad no usada u holgura del recurso.
Para convertir una desigualdad ( ≤ ) en una ecuación se suma una “variable de
holgura” no negativa al lado izquierdo de la restricción. Por ejemplo, en el modelo que
se planteó en el ejemplo de la cerveza la restricción asociada a la utilización de obreros
viene dada por
3 x + 5 y ≤ 15
Si definimos s como la holgura o cantidad no utilizada de obreros, tal restricción es
equivalente a la siguiente ecuación, 3 x + 5 y + s = 15 , junto con, s ≥ 0. Es decir, son
equivalentes:
3 x + 5 y + s = 15
3 x + 5 y ≤ 15 ⇔ 
s ≥ 0

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

Por otro lado una ecuación cualquiera, por ejemplo, 3 x1 + 5 x 2 + x 3 − 6 x 4 = 15 , se


puede escribir, de forma equivalente, como las dos desigualdades siguientes
simultáneas: 3 x1 + 5 x 2 + x 3 − 6 x 4 ≤ 15 y 3 x1 + 5 x 2 + x 3 − 6 x 4 ≥ 15 . Es decir, son
equivalentes:
 3 x + 5 x 2 + x 3 − 6 x 4 ≤ 15
3 x1 + 5 x 2 + x 3 − 6 x 4 = 15 ⇔  1
 3 x1 + 5 x 2 + x 3 − 6 x 4 ≥ 15
las cuales se pueden escribir, de forma equivalente,

 3x1 + 5 x 2 + x3 − 6 x 4 ≤ 15 − 3x1 − 5 x 2 − x3 + 6 x 4 ≥ −15


O bien,  O bien, 
− 3x1 − 5 x 2 − x3 + 6 x 4 ≤ −15  3x1 + 5 x 2 + x3 − 6 x 4 ≥ 15

Según nos interese.

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:

i) Si una variable xj no está restringida en su signo, entonces se puede reemplazar por


x′j − x′j′ con x′j ≥ 0 y x′j′ ≥ 0 . Es decir, son equivalentes,
 x j = x ′j − x′j′

x j irrestrict a ⇔  x′j ≥ 0
 x′′ ≥ 0
 j
En efecto, basta tomar x′j = max x j , 0 { } {
y x ′j′ = max − x j , 0 }
ii) Si una variable xj no se tiene restringida a ser no negativa y sin embargo se dispone
( )
de la siguiente restricción, x j ≥ k j donde k j = cte , entonces la nueva variable
x′j = x j − k j es no negativa y en este caso reemplazaríamos xj por x′j + k j en el
modelo.

iii) Análogamente, si una variable xj no se tiene restringida a ser no negativa y sin

embargo se dispone de la siguiente restricción, x j ≤ k j (donde k j = cte ) ,


entonces la nueva variable x′j = k j − x j es no negativa y en este caso

reemplazaríamos xj por k j − x′j en el modelo.

c) Problemas de minimización y maximización: Otra manipulación del problema


consiste en convertir un problema de maximización en un problema de minimización y
viceversa. Para ello, observamos que sobre cualquier región se verifica que:
n n
Máximo ∑ c j x j = − Mínimo ∑ − c j x j
j =1 j =1
De modo que un problema de maximización (minimización) se puede convertir en un
problema de minimización (maximización) multiplicando los coeficientes de la función
objetivo por – 1. Después de resolver el nuevo problema, el valor objetivo óptimo del
problema original es – 1 por el valor objetivo óptimo del nuevo problema.

Ejemplo 5: Dado el problema de programación lineal:

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:

Minimizar z = 4( x1′ − x1′′) + x2


sujeto a

 3( x1′ − x1′′) + x2 =3
(P )
 4( x1′ − x1′′) + 3 x2 − x3 =6
 ( x1′ − x1′′) + 2 x2 + x4 = 4

 x1′ , x1′′ , x2 , x3 , x4 ≥ 0
Es decir,

Minimizar z = 4 x1′ − 4 x1′′ + x2


sujeto a

 3 x1′ − 3 x1′′ + x2 =3
(P )
 4 x1′ − 4 x1′′ + 3x2 − x3 =6
 x1′ − x1′′ + 2 x2 + x4 = 4

 x1′ , x1′′ , x2 , x3 , x4 ≥ 0
4.- Resolución gráfica de problemas de programación lineal.
Los problemas de programación lineal con dos variables de decisión se pueden resolver
fácilmente de forma gráfica. El método consiste en representar gráficamente la región
factible del problema para después introducir en dicho gráfico las curvas de nivel de la
función objetivo del problema.

Veamos esto resolviendo gráficamente el problema del ejemplo de la cerveza.

El problema que tenemos que resolver es el siguiente:

 Maximizar z = 5 x + 3 y
sujeto a

( P) 3 x + 5 y ≤ 15
 5 x + 2 y ≤ 10

 x , y ≥0

La región factible de este problema, F, es el conjunto de todos los puntos (x,y) de R2


que cumplan, de forma simultánea, todas las restricciones del problema. Es decir, el
siguiente conjunto de R2:
F= { ( x, y ) ∈ R 2
/ 3 x + 5 y ≤ 15 , 5 x + 2 y ≤ 10 , x ≥ 0 , y ≥ 0 }
Para representar gráficamente este conjunto de R2 hacemos lo siguiente: Identificamos
el espacio R2 con un plano, la hoja de papel. En este plano dibujamos unos ejes
cartesianos (x,y). Para ver los puntos del plano que cumplen la primera restricción,
3 x + 5 y ≤ 15 , observamos que la ecuación lineal, 3 x + 5 y = 15 , es la ecuación de una
recta en el plano. Dicha recta divide al plano en dos semiplanos, uno a cada lado de la
recta. Como se puede observar en el siguiente dibujo:
Una forma muy cómoda de averiguar que desigualdad le corresponde a cada semiplano
es la siguiente. Como todos los puntos que están en un mismo semiplano deben cumplir
la misma desigualdad, cogemos un punto cualquiera de uno de los semiplanos, que no
esté en la recta que delimita a los mismos, por ejemplo el origen (0,0). Sustituimos sus
coordenadas en la ecuación de la recta, 3 x + 5 y = 15 , lo que nos daría 0 ≤ 15. Pues bien,
ya sabemos que el semiplano donde está el origen (0,0), tiene por ecuación:
3 x + 5 y ≤ 15 , y, por lo tanto, el otro semiplano tendrá por ecuación: 3 x + 5 y ≥ 15 . De
forma análoga podemos representar los puntos del plano que cumplen la segunda
restricción, 5 x + 2 y ≤ 10 . Por último, las restricciones de no negatividad, x ≥ 0, y ≥ 0,
que se tratan como las anteriores, lo que nos indican es que sólo hemos de considerar
los puntos del primer cuadrante. De manera que la región factible, F, será la intersección
de todos estos semiplanos. Tal y como podemos apreciar en el siguiente dibujo.

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 a): Óptimo único finito. Se pueden dar dos subcasos:

Subcaso a1) Subcaso a2)


Región factible F acotada Región factible F no acotada

Un vértice óptimo Un vértice óptimo

Caso b): Infinitos puntos de óptimo finito: Se pueden dar tres subcasos:

Subcaso b1) Subcaso b2)


Región factible F acotada Región factible F no acotada

Infinitos puntos óptimos en una arista Infinitos puntos óptimos en un rayo


entre dos vértices óptimos. infinito que parte de un vértice óptimo.
Subcaso b3)
Región factible F no acotada

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.

Como se puede apreciar en el dibujo el valor de la función objetivo no está acotado en


la región factible. Es decir, dado cualquier número real positivo, por grande que sea, se
pueden encontrar soluciones factibles del problema donde el valor de la función
objetivo supera al número dado.
Caso d): Región factible, F, vacía.

Sea el siguiente problema de programación lineal:

 Maximizar z = 2 x − 3 y
sujeto a

 2x − y ≤ 3
( P)
 − x + 2y ≤ 2
 y≥4

 x , y ≥0

Representamos la región factible.

Como podemos observar, la región factible es vacía. Es decir, el problema no tiene


soluciones factibles.

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

Aquí procederíamos exactamente igual que en el caso de dos variables. Es decir, se


trataría de representar gráficamente la región factible, F, del problema. Ahora bien, el
conjunto F estaría formado por todos los puntos ( x1 , x 2 , x3 ) ∈ R3 que cumplan
simultáneamente, todas las restricciones. Observemos que todas las restricciones,
incluidas las de no negatividad, son del tipo,
ax1 + bx 2 + cx3 ≤ d
Donde a, b, c, d son números reales cualesquiera, con la única condición de que a, b y
c no sean cero a la vez.

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 .

De manera que la región factible, F, del problema será la intersección de los


semiespacios determinados por todas las restricciones del problema. En este ejemplo
concreto la región factible del problema la podemos ver en el siguiente dibujo:
Evidentemente, según sea la función objetivo, z = c1x1 + c2x2 + c3x3, que tengamos que
maximizar en el problema, se podrán dar distintas situaciones, siendo todas las posibles,
las que aparecen a continuación:
Como se puede apreciar en cualquiera de las situaciones, siempre que el problema tiene
soluciones óptimas hay alguna solución óptima en un vértice de la región factible.
5.- Soluciones básicas de sistemas de ecuaciones lineales.

• Una ecuación lineal es una expresión de la forma:

a1x1 + a2x2 + … + anxn = b

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.

• Un conjunto de ecuaciones del tipo anterior se llama sistema de ecuaciones lineales.


Lo escribiremos en la forma
 a11 x1 + a12 x 2 + K + a1n x n = b1
 a x + a x +K+ a x = b
 21 1 22 2 2n n 2
 (1)
 L L L L L L LL L L L L
a m1 x1 + a m 2 x 2 + K + a mn x n = bm

y diremos que es un sistema de m ecuaciones con n incógnitas.

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.

• Dado un sistema de ecuaciones lineales:

 a11 x1 + a12 x 2 + K + a1n x n = b1


 a x + a x +K+ a x = b
 21 1 22 2 2n n 2
 (1)
 LLLLLLLLLLLL
a m1 x1 + a m 2 x 2 + K + a mn x n = bm
a) Una secuencia ordenada de números (s1, …, sn) se dice una solución del
sistema si, al sustituir en las ecuaciones cada incógnita xi por el correspondiente
si, se verifican todas las igualdades resultantes.

b) Si un sistema tiene alguna solución diremos que es compatible; si, por el


contrario, no tiene ninguna solución diremos que es incompatible.

c) Si un sistema es compatible diremos que es determinado si la solución es


única, en otro caso, es decir, si tiene más de una solución, diremos que es
indeterminado.

d) Diremos que dos sistemas de ecuaciones son equivalentes si tienen


exactamente las mismas soluciones.

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).

OBSERVACIÓ3: A la hora de escribir un sistema usaremos la notación matricial. Esta


consiste en escribir entre paréntesis los coeficientes del sistema separados por espacios
en blanco y, a su derecha, los términos independientes.

Así, el siguiente sistema:


a11 x1 + a12 x2 + L + a1n xn = b1 
a21 x1 + a22 x2 + L + a2 n xn = b2 
 (1)
M M L M M 
am1 x1 + am 2 x2 + L + amn xn = bm 
se escribe, en forma matricial, como:

 a11 a12 L a1n b1 


 
 a21 a22 L a2 n b2 
 M M M M M 
 
a am 2 L amn bm 
 m1
La matriz anterior se suele llamar, la matriz ampliada del sistema, y es una matriz con
m filas y (n+1) columnas, es decir, tantas filas como ecuaciones y tantas columnas como
(nº de incógnitas) + 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.

Estas tres operaciones se llaman “operaciones elementales en las ecuaciones del


sistema”. Obviamente, cualquiera de estas operaciones puede deshacerse.

• A continuación veremos cómo, adoptando una notación matricial, más fácil de


manejar, se pasa de un sistema dado a otro equivalente utilizando sólo operaciones
elementales. Así, dado el siguiente sistema de ecuaciones lineales:
a11 x1 + a12 x2 + L + a1n xn = b1 
a21 x1 + a22 x2 + L + a2 n xn = b2 
 (1)
M M L M M 
am1 x1 + am 2 x2 + L + amn xn = bm 
construimos la matriz ampliada del sistema:
 a11 a12 L a1n b1 
 
 a21 a22 L a2 n b2 
 M M M M M 
 
a am 2 L amn bm 
 m1
resulta evidente que las operaciones elementales en las ecuaciones del sistema equivale
a hacer las mismas operaciones en las filas de la matriz ampliada, tal como sigue:

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 λ.

Definición.: Diremos que un sistema de ecuaciones está escrito en forma básica si


sucede que en cada ecuación del sistema existe, al menos, una incógnita que aparece
sólo en dicha ecuación, no apareciendo tal incógnita en el resto de ecuaciones. Además,
cada una de estas incógnitas, que aparecen en una sola ecuación, debe tener coeficiente
igual a 1.

Observemos que un sistema escrito en forma básica necesariamente es compatible.

Ejemplos: Los siguientes sistemas están escritos en forma básica.


3x + 2z + t = 2
a)  Sistema escrito en forma básica.
2 x + y − 3 z =1
En la 1ª ecuación encontramos a la incógnita t que sólo aparece en dicha
ecuación y tiene un coeficiente igual a 1 y en la segunda ecuación está la
incógnita y que sólo aparece en dicha ecuación y tiene un coeficiente igual a 1.

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.

Si representamos los sistemas a) b) y c) en forma matricial mediante sus matrices


ampliadas.
a) b)
x y z t l.d . x1 x2 x3 x4 x5 l.d .

 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

Aquí se pueden identificar dos identidades (ambas desordenadas).

Definición: Cuando un sistema se encuentra escrito en forma básica, a las variables


(incógnitas) donde está ubicada la identidad (posiblemente desordenada), cuando se
escribe la matriz ampliada, se les llama variables básicas y al resto de variables,
variables no básicas.

• 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.

Propiedad: Todo sistema de ecuaciones lineales en forma básica tiene la siguiente


propiedad. Para cada asignación de números reales arbitrarios a las variables no básicas,
existe una y sólo una solución del sistema en la cual las variables no básicas tienen esos
valores que les hemos asignado. En particular, existe una única solución del sistema en
la que cada variable no básica tiene el valor 0. El valor de cada variable básica, en este
caso, es el lado derecho de la única ecuación que contiene a tal variable.

Definición: Dado un sistema de ecuaciones en forma básica, llamamos solución básica,


de dicho sistema, a la única solución que se obtiene cuando le damos el valor 0 a todas
las variables no básicas.
• Ahora parece lógico plantearse la siguiente cuestión: dado un sistema de ecuaciones
lineales existirá otro sistema de ecuaciones lineales en forma básica que sea equivalente
al primero. La respuesta es que sí. De hecho, lo normal es que existan bastantes.

Reducción de un sistema compatible a otro equivalente en forma básica:

Vamos a dar un procedimiento que nos va a permitir pasar de un sistema de ecuaciones


lineales a otro equivalente en forma básica. El procedimiento lo vamos a describir sobre
un ejemplo concreto. Sea pues el siguiente sistema de ecuaciones lineales:

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.

Empezamos seleccionando al 1 de la tercera columna como elemento pivote.

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,

y hacemos las siguientes operaciones elementales:


 −6 9 0 − 11 19 − 7 M − 2   −6 9 0 − 11 19 − 7 M − 2 

 − 12 18 0 − 22 38 − 14 M − 4 

1
≈ 
 − 12 18 0 − 22 38 − 14 M − 4 

 6 −9 6 F3 
0 11 − 19 3 M 0 1 − 3/ 2 0 11 / 6 − 19 / 6 1 / 2 M 0
   
 2 −3 1 4 −7 1 M 2   2 −3 −7 1 M 2 
  1 4
F1 + 6 F3
F2 +12 F3  0 0 0 0 − 4 M − 2
0
 
≈ 0 0 0 0 − 8 M − 4
0
F4 − 2 F3 
1 −3/ 2 0 11 / 6 − 19 / 6 1 / 2 M 0
 
0 0 1 1/ 3 − 2 / 3 0 M 2 

Ahora seleccionamos el siguiente elemento pivote,

y hacemos las siguientes operaciones elementales:


0 0 0 0 − 4 M − 2
0

 0 0 0 0 − 8 M − 4
0

−1
≈ 0

0
0
0
0
0 0
0 0 1 M 1/ 2 
0 − 8 M − 4

 1 −3/ 2 4 F1 
0 11 / 6 − 19 / 6 1 / 2 M 0 1 − 3/ 2 0 11 / 6 − 19 / 6 1 / 2 M 0
   
0 0 1 1/ 3 − 2 / 3 0 M 2  0 1 1/ 3 − 2 / 3 2 
  0 0 M
F2 +8 F1  0 0 0 0 0 1 M 1/ 2 
≈1  
F3 − 2 F1 
0 0 0 0 0 0 M 0
 1 − 3 / 2 0 11 / 6 − 19 / 6 0 M − 1/ 4 
 
0 0 1 1/ 3 − 2 / 3 0 M 2 

Llegados aquí como la segunda fila se ha anulado se puede quitar,

Lo que nos dejaría la siguiente matriz,


0 0 0 0 0 1 M 1/ 2
 
 1 − 3 / 2 0 11 / 6 − 19 / 6 0 M − 1 / 4  = M ′
0 0 1 1/ 3 − 2 / 3 0 M 2 

Donde fácilmente se identifica, en el lado izquierdo, una matriz identidad
(desordenada).

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.

Como hemos pasado de la matriz M a la matriz M´ haciendo operaciones elementales de


filas. Resulta que los sistemas (S) y (S´) son equivalentes. De manera que hemos pasado
de un sistema (S) a otro equivalente (S´) que está en forma básica.

• 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

Y éstos, a su vez, son equivalentes al siguiente sistema en forma básica:


1 
x6 =
2 
1 
= −  (S ′ )
3 11 19
x1 − x 2 + x 4 − x5
2 6 6 4
1 2
x3 + x 4 − x5 =2 
3 3 

• 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 

Sistema que se puede escribir matricialmente como, Ax = b , donde:

 a11 a12 L a1n 


   b1 
a a22 L a2n   
A =  21  es la matriz del sistema, b =  M  es el vector del lado
M M M M b 
   m
a am 2 L a mn 
 m1
 x1 
 
derecho y x =  M  es el vector de variables incógnitas. Supondremos que m < n y que
x 
 n
rango(A) = m. A esta suposición la llamaremos hipótesis del rango completo.

Así, acabamos de ver que como dado el sistema,


2 x1 − 2 x 2 + 2 x3 + 2 x 4 − 2 x5 − 2 x6 = 6 

6 x1 − 9 x 2 + 11x 4 − 19 x5 + 3 x6 = 0  ( S )
2 x1 − 3 x 2 + x3 + 4 x 4 − 7 x5 + x6 = 2
(hemos eliminado la ecuación redundante -hipótesis del rango completo-)
Podemos encontrar otro equivalente, (S´), en forma básica
1 
x6 =
2 
1 
= −  (S ′)
3 11 19
x1 − x2 + x 4 − x5
2 6 6 4
1 2
x3 + x 4 − x5 =2 
3 3 
Donde el conjunto de variables básicas es B = {x6, x1, x3} (conjunto llamado base).
Además observa que esto nos permite conocer una solución básica del sistema (S). La
única que se obtiene cuando hacemos todas las variables no básicas iguales a cero en el
sistema equivalente en forma básica (S´), es decir,

(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 

De manera que obtendríamos: (x1 , x2 , x3 , x4 , x5 , x6 ) =  0, 0, 45 , − 3 1


, 0,  como
 22 22 2
una nueva solución básica del sistema (S), la correspondiente a la base {x6, x4, x3}.

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:

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.

Luego disponemos de tantos sistemas en forma básica equivalentes al original como


tablas distintas podamos ir construyendo. En cualquier caso el número de tales tablas es
finito y podemos dar una cota del mismo. Recordemos que habíamos partido del
siguiente sistema de ecuaciones, de rango completo:
2 x1 − 2 x2 + 2 x3 + 2 x4 − 2 x5 − 2 x6 = 6

6 x1 − 9 x2 + 11x4 − 19 x5 + 3 x6 = 0 (S)
2 x1 − 3x2 + x3 + 4 x4 − 7 x5 + x6 = 2
 2 − 2 2 2 − 2 − 2
 
donde la matriz del sistema es,  6 − 9 0 11 − 19 3  = A y la matriz ampliada es
2 − 3 1 4 − 7 1

2 − 2 2 2 − 2 − 2 6
 
 6 − 9 0 11 − 19 3 0  y que encontramos un sistema equivalente en forma
2 −3 1 4 −7 1 2 

básica cada vez que mediante operaciones elementales sobre las filas de la matriz
ampliada encontramos a la identidad (posiblemente desordenada) en la parte izquierda
de la matriz ampliada, es decir en la matriz del sistema. Ahora bien, si haciendo
operaciones elementales apareciera la identidad de orden tres en las columnas 6ª, 1ª y 4ª
− 2 2 2
 
(en ese orden), esto indicaría que la submatriz de A, B =  3 6 11 , formada por las
 1 2 4 

columnas 6º, 1ª y 4ª de la matriz A, es una matriz invertible. Luego habrá tantas formas
de ubicar la identidad (aunque esté desordenada) en la matriz A y, por lo tanto tantos
sistemas en forma básica equivalentes al sistema original, como submatrices de A,
formadas por tres columnas que sean linealmente independientes. Evidentemente este
6
número está acotado por el número combinatorio   . Que son las combinaciones de
 3
las 6 columnas que forman la matriz A tomadas de tres en tres. Cada una de estas
submatrices formadas por tres columnas linealmente independientes de la matriz A sería
una base del espacio vectorial R3 (pues las columnas de A se pueden considerar vectores
de R3). Este es el motivo por el que se llama variables básicas a las variables básicas,
porque las columnas de A asociadas a ellas forman una base de R3 (en general de Rm).

• En general, dado el sistema de ecuaciones lineales, escrito matricialmente, Ax = b ,


donde la (m×n)-matriz del sistema A, con m < n, es de rango completo, el número de
n
soluciones básicas del sistema está acotado por   .
 m

Dado un sistema de ecuaciones lineales, escrito matricialmente, Ax = b , siendo A una


(m×n)-matriz, con m < n y rango(A) = m. Como sabemos que cualquier solución básica
del mismo tendrá m variables básicas y n – m variables no básicas, iguales a cero.
Podríamos buscar soluciones básicas del sistema seleccionando, arbitrariamente, n –m
incógnitas como variables no básicas, haciéndolas iguales a cero y resolviendo el
sistema que quedaría de m ecuaciones con m incógnitas. Si este sistema, que queda,
tiene solución única habremos encontrado una solución básica del sistema.
6.- El método simplex.
El método gráfico que hemos utilizado para resolver problemas de programación lineal
nos ha mostrado que cuando la región factible de un problema de programación lineal
no es vacía, siempre tiene puntos esquina (o vértices) y, lo que es más importante, que si
el problema tiene solución óptima finita siempre existe, al menos, una en un punto
vértice de la región factible. Este resultado es clave en el desarrollo del método simplex
que resuelve los problemas de programación lineal. Como los problemas con más de
tres variables de decisión no se pueden visualizar (vivimos en un espacio
tridimensional) no tenemos más remedio que caracterizar algebraicamente a los puntos
vértice de la región factible. Esto se consigue convirtiendo todas las restricciones de
desigualdad del problema (excepto las de no negatividad) en ecuaciones y dando una
propiedad algebraica que sólo la cumplen los vértices de la región factible.

El método simplex resuelve el problema en iteraciones. Parte de un vértice de la región


factible y en cada iteración se traslada a un nuevo vértice con mejor valor potencial de
la función objetivo. El proceso acaba cuando llega a un vértice cuyo valor objetivo no
puede ser mejorado.

Vamos a presentar el método simplex resolviendo un problema concreto de


programación lineal con dos variables de decisión para poder visualizar lo que hace el
método. Sea pues el siguiente problema de programación lineal:

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

Representación gráfica del problema:

• A continuación enunciamos, sin demostración, dos resultados esenciales para


desarrollar el método simplex.

Resultado_1: Dado un problema de programación lineal, con región factible no vacía,


la colección de puntos vértice de la región factible se corresponde con la colección de
soluciones básicas factibles del problema cuando éste se escribe en forma estándar.

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.

Aunque no demostremos los resultados podemos comprobarlos en nuestro ejemplo, a la


vez que veremos cómo se realiza la transición de solución gráfica a solución algebraica.

Lo primero que se observa en el ejemplo es que nuestro problema tiene infinitas


soluciones factibles, todos los puntos de la región sombreada. Esto también queda
reflejado en el método algebraico, pues las soluciones factibles son todas las soluciones
3 x1 + 8 x 2 + x3 = 12

del sistema de ecuaciones, x1 + x 2 + x4 = 2  , con tres ecuaciones y cinco
2 x1 + x5 = 3 
variables y restringido a que todas las variables tomen valores no negativos. Al haber
más incógnitas que ecuaciones habrá infinitas soluciones, de cuales también habrá
infinitas en las que todas las incógnitas tomen valores no negativos. El método gráfico
identifica los puntos factibles de vértice de la región factible. Estos son candidatos a
solución óptima y hay un número finito de ellos. Por su parte, el método algebraico
determina las soluciones básicas factibles del sistema de ecuaciones y, como sabemos,
el número de soluciones básicas de un sistema de ecuaciones es finito, de manera que el
número de candidatos (soluciones básicas factibles) a ser solución óptima es finito. El
método gráfico utiliza las curvas de nivel de la función objetivo para determinar el
vértice óptimo. En el método algebraico se utiliza la función objetivo para seleccionar a
la solución básica factible óptima, entre todas las candidatas.

Vamos a comprobar en nuestro ejemplo como se corresponden los vértices de la región


factible con las soluciones básicas factibles del sistema de ecuaciones.

El sistema de ecuaciones del problema (P´) en forma estándar es el siguiente:


3 x1 + 8 x 2 + x3 = 12

x1 + x 2 + x4 =2
2 x1 + x5 = 3 
Como el sistema tiene 3 ecuaciones y cinco incógnitas para buscar soluciones básicas
del mismo tenemos que seleccionar parejas de variables e igualarlas a cero y ver si los
sistemas que quedan tienen solución única. Cuando tengamos una solución básica si
todos sus valores son no negativos también será factible y entonces tendremos una
solución básica factible, es decir, un vértice.

Veamos, si tomamos la pareja de variables {x1, x2} y las igualamos a cero, x1 = x2 = 0,


entonces el sistema quedaría:
x3 = 12 

x4 = 2 
x5 = 3 
Que obviamente tiene solución única. Luego ( x1 , x 2 , x3 , x 4 , x5 ) = (0, 0, 12, 2, 3) es una
solución básica del sistema, como 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 A de la región factible.

Tomemos ahora la pareja, {x1, x3}, e igualemos ambas variables a cero, x1 = x3 = 0,


entonces el sistema quedaría,
8x2 = 12

x2 + x4 = 2 
x5 = 3 
3 1
Que tiene solución única, x 2 = , x 4 = , x5 = 3 .
2 2
 3 1 
Luego ( x1 , x2 , x3 , x 4 , x5 ) =  0, , 0, , 3  es una solución básica del sistema, como
 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 E de la región factible.
Punto de corte de las rectas x1 = 0 y 3 x1 + 8 x2 = 12 , pudiéndose esta última
identificar con la expresión x3 = 0 .

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 seguimos seleccionando parejas de variables y tomamos la pareja, {x1, x4}, e


igualamos ambas variables a cero, x1 = x4 = 0, entonces el sistema quedaría,
8 x2 + x3 = 12

 x2 =2
 x5 = 3

Que tiene solución única, x2 = 2, x3 = −4, x5 = 3 .
Luego ( x1 , x2 , x3 , x4 , x5 ) = (0, 2, − 4, 0, 3) es una solución básica del sistema pero como
una de las variables toma un valor negativo, no es una solución factible del problema
(P´). Es decir, esta solución no es una solución básica factible del problema y, por lo
tanto, según el resultado_1, esta solución no se corresponde con ningún vértice de la
región factible. Observa que esta solución se corresponde con el punto i, de coordenadas
(0,2), en el plano (x1,x2), donde se cortan las rectas x1 = 0 y x1 + x2 = 2 (es decir,
x4 = 0 ).

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.

Sigamos con nuestra selección de parejas:

Sea la pareja, {x2, x3}, e igualamos ambas variables a cero, x2 = x3 = 0, entonces el


sistema quedaría,
3x1 = 12

 x1 + x4 =2
 2x
 1 + x5 = 3
Que tiene solución única, x1 = 4, x4 = −2, x5 = −5 .
Luego ( x1 , x2 , x3 , x4 , x5 ) = (4, 0, 0, − 2, − 5) es una solución básica del sistema pero no
es una solución factible del problema (P´), pues hay variables que son negativas. Es
decir, esta solución no es una solución básica factible del problema y, por lo tanto, no se
corresponde con ningún vértice de la región factible. Observa que esta solución se
corresponde con el punto g, de coordenadas (4,0), en el plano (x1,x2), donde se cortan las
rectas x2 = 0 y 3 x1 + 8 x2 = 12 (es decir, x3 = 0 ).

Sea la pareja, {x2, x4}, e igualamos ambas variables a cero, x2 = x4 = 0, entonces el


sistema quedaría,
 3 x1 + x3 = 12

 x1 =2
2 x + x5 = 3
 1
Que tiene solución única, x1 = 2, x3 = 6, x5 = −1 .
Luego ( x1 , x2 , x3 , x4 , x5 ) = (2, 0, 6, 0, − 1) es una solución básica del sistema pero no es
una solución factible del problema (P´), pues hay variables que son negativas. Es decir,
esta solución no es una solución básica factible del problema y, por lo tanto, no se
corresponde con ningún vértice de la región factible. Observa que esta solución se
corresponde con el punto f, de coordenadas (2,0), en el plano (x1,x2), donde se cortan las
rectas x2 = 0 y x1 + x2 = 2 (es decir, x4 = 0 ).

Sea la pareja, {x2, x5}, e igualamos ambas variables a cero, x2 = x5 = 0, entonces el


sistema quedaría,
3x1 + x3 = 12

 x1 + x4 = 2
 2x =3
 1
3 15 1
Que tiene solución única, x1 = , x3 = , x4 = .
2 2 2
 3 15 1 
Luego ( x1 , x2 , x3 , x4 , x5 ) =  , 0, , , 0  es una solución básica del sistema, como
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 B de la región factible, de
coordenadas  3 , 0  , en el plano (x1,x2), donde se cortan las rectas x2 = 0 y 2 x1 = 3 (es
2 
decir, x5 = 0 ).

Sea la pareja, {x3, x4}, e igualamos ambas variables a cero, x3 = x4 = 0, entonces el


sistema quedaría,
3x1 + 8 x2 = 12

 x1 + x2 =2
 2x
 1 + x5 = 3
4 6 7
Que tiene solución única, x1 = , x2 = , x5 = .
5 5 5
4 6 7
Luego ( x1 , x2 , x3 , x4 , x5 ) =  , , 0, 0,  es una solución básica del sistema, como
5 5 5
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 D de la región factible, de
coordenadas  4 , 6  , en el plano (x1,x2), donde se cortan las rectas 3 x1 + 8 x2 = 12 y
5 5
x1 + x2 = 2 (es decir, x3 = 0 y x4 = 0 ).

Sea la pareja, {x3, x5}, e igualamos ambas variables a cero, x3 = x5 = 0, entonces el


sistema quedaría,
3x1 + 8 x2 = 12

 x1 + x2 + x4 = 2
2 x =3
 1
3 15 −7
Que tiene solución única, x1 = , x2 = , x4 = .
2 16 16
 3 15 −7 
Luego ( x1 , x2 , x3 , x4 , x5 ) =  , , 0, , 0  es una solución básica del sistema, pero
 2 16 16 
como una de las variables toma un valor negativo, no es una solución factible del
problema (P´). Es decir, esta solución no es una solución básica factible del problema y,
por lo tanto, no se corresponde con ningún vértice de la región factible. Observa que
esta solución se corresponde con el punto h, de coordenadas  3 , 15  , en el plano (x1,x2),
 2 16 
donde se cortan las rectas 3 x1 + 8 x2 = 12 y 2 x1 = 3 (es decir, x3 = 0 y x5 = 0 ).

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 ).

Luego acabamos de comprobar que se cumple el resultado_1 en nuestro problema de


programación lineal.

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 podemos escribir el sistema básico, equivalente al original, asociado a esta


segunda tabla,
 3 15
 8 x 2 + x3 − x5 =
2 2

(*) x2 + x4 − x5 = 1 1
 2 2
 x1 1 3
+ x5 =
 2 2
Donde, como podemos ver, son variables básicas las variables {x3, x4, x1} y no básicas
las variables {x2, x5}.

Si queremos proceder como hicimos en la solución básica factible anterior deberíamos


tener expresada a la función objetivo sólo en términos de las variables no básicas
correspondientes a esta nueva solución básica factible, para así poder decidir fácilmente
quien es la variable de entrada. Pero esto lo podemos conseguir haciendo uso del
sistema (*), pues de él podemos despajar las variables básicas en función de las no
básicas, en efecto,
3 15   15 3
8 x2 + x3 −
x5 =   x3 = − 8 x2 + x5
2 2 2 2
1  
(*) x2 + x4 − x5 =  ⇔  x4 = − x2 + x5
1 1 1
2 2   2 2
1 3   x1 = 3 1
x1 + x5 = − x5
2 2   2 2
3 1
de manera que, x1 = − x5 , pudiéndose entonces escribir la función objetivo como:
2 2
3 1 
z = 2 x1 + x2 = 2 − x5  + x 2 = 3 − x5 + x2 ⇒ z = x 2 − x5 + 3
2 2 
Ahora, observando esta expresión, z = x 2 − x5 + 3 , en primer lugar, vemos que
efectivamente el valor de la función objetivo en la actual solución básica factible, es 3,
pues aquí las variables no básicas son {x2, x5}, siendo las dos iguales a cero. Lo
siguiente que observamos es que por cada unidad que aumentemos la variable no básica
x2, desde su valor actual de cero, dejando el resto de variables no básica en su valor de
cero, el valor de la función objetivo aumenta en 1 unidad, mientras que si es la variable
no básica, x5, la que aumentamos desde su nivel de cero, mientras el resto de variables
no básicas se mantienen en cero, entonces por cada aumento unitario en dicha variable
la función objetivo disminuye en 1 unidad. Por lo tanto la que interesa aumentar es la
variable x2. De manera que la variable que entra será la variable x2. Si seguimos los
pasos que dimos en el vértice anterior, nuestro interés será aumentar el valor de la
variable de entrada tanto como podamos. Ahora bien, si vamos aumentando el valor de
la variable de entrada x2, mientras mantenemos en cero el valor de las restantes
variables no básicas, en este caso, x5 = 0, sucederá lo siguiente:
Si en el sistema,
 3 15
 8 x2 + x3 − 2 x5 = 2
 1 1
 x2 + x4 − x5 =
 2 2
 x1 1 3
+ x5 =
 2 2
dejamos x5 = 0 mientras aumentamos el valor de x2, desde cero, obtendríamos,
15  15   15 
8 x 2 + x3 =  x3 = − 8 x 2   
2 2  x3   2   8 
1  1    1  
x2 + x4 =  ⇔ x4 = − x2  ⇔  x4  =   −  1  x 2
2 2  
  x   2   0
3 3   1  3  
x1 = x1 =  
2  2  2
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: x2 el valor positivo arbitrario que le estuviéramos
dando, x2 = 5 y el resto de coordenadas,
 15 
 
 x3   2   8 
  1  
 x4  =   −  1  x2
 x   2  0
 1 3  
 
 2
Esta última expresión, nos sirve de guía para saber hasta dónde podemos seguir
aumentando el valor de x2. Por cada unidad que demos a la variable x2, la variable x3
disminuye 8 unidades, la variable x4 disminuye 1 unidad y la variable x1 ni aumenta ni
disminuye. Por lo tanto, podremos aumentar el valor de x2 hasta que se haga cero la
primera de las dos variables x3 o x4. Pues si siguiéramos aumentando el valor de x2, 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. De manera que el mayor
valor que puede tomar la variable x2, para no salirnos de la región factible es:
15 2 1 2  15 1  1
min  ,  = min  ,  =
 8 1  16 2  2
Siendo la variable de salida, la variable básica donde se alcanza este mínimo, es decir, la
variable básica x4. Si hacemos la intersección de la columna que hay en la tabla bajo la
variable no básica de entrada, x2, y la fila de la tabla asociada a la variable básica de
salida x4, encontramos el elemento sobre el que pivotaremos para encontrar la siguiente
solución básica factible del problema,

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).

Así, en la primera tabla, la correspondiente a la solución básica factible inicial,


(x1 , x2 , x3 , x4 , x5 ) = (0, 0, 12, 2, 3)
donde la función objetivo tomaba el valor 0, escribiremos:
z = 2 x1 + x 2 ↔ z − 2 x1 − x2 = 0 ↔ z − 2 x1 − x 2 + 0 x3 + 0 x 4 + 0 x5 = 0

En la segunda tabla, la correspondiente a la solución básica factible inicial,


(x1 , x2 , x3 , x4 , x5 ) =  3 , 0, 15 , 1 , 0 
2 2 2 
donde la función objetivo toma el valor 3, el renglón cero debería tener,
z = x2 − x5 + 3 ↔ z − x2 + x5 = 3 ↔ z + 0 x1 − x2 + 0 x3 + 0 x4 + x5 = 3

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.

Veamos como sucedería esto en nuestro problema:

Los dos ** muestran donde se da la mínima razón

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.

Si estamos en un problema de maximizar y llegamos a una tabla donde todas las


entradas del renglón cero son mayores o iguales a cero, estamos ante una solución
básica factible óptima del problema. Si el problema es de minimizar y llegamos a una
tabla donde todas las entradas del renglón cero son menores o iguales a cero, estamos
ante una solución básica factible del problema.

Las reglas para seleccionar la variable de entrada y de salida se llaman condiciones de


optimalidad y de factibilidad, respectivamente. A continuación se resumen dichas
condiciones y los pasos del método simplex.

Condición de optimalidad: La variable de entrada en un problema de maximización


(minimización) es la variable no básica que tenga el coeficiente más negativo (positivo)
en el renglón cero (renglón z). Si hay empate se rompe arbitrariamente. 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 (menores o iguales a cero)

Condición de factibilidad: Tanto en los problemas de maximización como en los de


minimización la variable de salida es la variable básica asociada a la mínima razón entre
los lados derecho y los coeficientes positivos de la columna pivote, sin contar la entrada
de tal columna en el renglón z. Si hay empate se rompe arbitrariamente.

Los pasos del método simplex son:

Paso 0. Determinar una solución básica factible inicial.


Paso 1. Seleccionar una variable de entrada aplicando la condición de optimalidad. Si
no hay variable de entrada detenerse. La última tabla proporciona una
solución óptima.
Paso 2. Seleccionar una variable de salida aplicando la condición de factibilidad.
Seleccionar el elemento pivote.
Paso 3. Determinar una nueva solución básica factible con la operación de pivoteo. Ir
al paso 1.
Recapitulando lo hecho.

Partimos de un problema de programación lineal,


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

Problema que podemos representar y resolver gráficamente,

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

En este último problema identificamos, directamente, una solución básica factible, la


que consiste en tomar como variables básicas a las variables de holgura {x3, x4, x5} y
como variables no básicas a las restantes, {x1, x2}. Como además la función objetivo z
está expresada sólo en términos de las variables no básicas,
z = 2 x1 + x2 ↔ z − 2 x1 − x2 = 0
Podemos resolver el problema mediante la utilización del método simplex. Método
iterativo, cuyas operaciones se pueden realizar directamente en las siguientes tablas:
Como podemos ver el problema se ha resuelto en tres tablas (dos iteraciones). Cada
tabla identifica a una solución básica factible (es decir, un vértice) del problema. Así, la
primera tabla identifica a la solución básica factible ( x1 , x 2 , x3 , x 4 , x5 ) = (0, 0, 12, 2, 3) ,
que se corresponde con el vértice A, de coordenadas (0, 0) en el plano x1 x2. La segunda
tabla identifica a la solución básica factible ( x1 , x2 , x3 , x4 , x5 ) =  , 0,
3 15 1 
, , 0  , que se
2 2 2 
corresponde con el vértice B, de coordenadas  , 0  en el plano x1 x2. La tercera tabla
3
2 
identifica a la solución básica factible (x1 , x2 , x3 , x4 , x5 ) =  3 , 1 , 7 , 0, 0  , que se
2 2 2 
corresponde con el vértice C, de coordenadas  ,  en el plano x1 x2.
3 1
2 2
Partimos del vértice A (primera tabla), con la primera iteración del método simplex nos
traslademos hasta el vértice B (segunda tabla), con la segunda iteración del método nos
trasladamos hasta el vértice C (tercera tabla), llegados a este vértice, la tabla nos indica
que estamos en la solución óptima del problema.

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

podemos reescribir el problema original, de la siguiente forma equivalente:

( 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.

Denotemos por (s1 , s 2 , s 3 , s 4 , s 5 ) a cualquier solución factible del problema distinta al


punto C. Entonces debe ocurrir que s4 y s5 no pueden ser simultáneamente iguales a
cero (pues si lo fueran, como (s1 , s 2 , s 3 , s 4 , s 5 ) debe ser solución del sistema se
7 1 3
cumpliría que s 3 = , s 2 = , s1 = , además de ser s 4 = s5 = 0 , y por lo tanto
2 2 2
estaríamos en el vértice C).
Si denotamos por z´ el valor de la función objetivo en esta solución factible arbitraria
(s1 , s 2 , s3 , s 4 , s5 ) y calculamos su valor,

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.

Acabamos de ver que el valor de la función objetivo en cualquier solución factible,


distinta al vértice C, es estrictamente menor que 7/2, que es el valor de la función
objetivo en el vértice C. Por lo tanto, podemos concluir que la solución óptima del
problema es única.

Esto se puede resumir en el siguiente cuadro:

Solución óptima única:


Sabemos que en un problema de maximizar (minimizar) 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 (menores o iguales a cero). Si todos los
coeficientes de las variables no básicas en el renglón z son mayores
estrictamente a cero (menores estrictamente a cero) la solución óptima a la que
se ha llegado es única.

Información contenida en una tabla cualquiera de método simplex.

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:

Ejemplo 8: Sea el siguiente problema de programación lineal,

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.

Si observamos el sistema del problema mediante su matriz ampliada,


x1 x2 x3 x 4 x 5 x6 l.d .
 3 −1 −1 0 0 0 3 
 
 1 4 0 1 0 0 14 
 1 −1 0 0 1 0 4 
 
0 1 0 0 0 − 1 1 
 
Vemos que si introducimos las siguientes dos nuevas columnas unitarias, de forma
artificial,
x1 x 2 x3 x 4 x5 x6 R1 R2 l.d .
 3 −1 −1 0 0 0 1 0 3
 
1 4 0 1 0 0 0 0 14 
 1 −1 0 0 1 0 0 0 4
 
0 1 0 0 0 −1 0 1 1 

Aparecería la identidad (desordenada, aunque ya sabemos que no importa) en el lado
izquierdo, con todo el lado derecho no negativo.

Lo que significa que en el siguiente problema de programación lineal,

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.

• El método de la gran M: La forma de penalizar a las variables artificiales en la


función objetivo consiste en colocar a las variables artificiales dentro de la función
objetivo del problema original acompañadas de un coeficiente igual a,
− M , en problemas de maximizar

 M , en problemas de minimizar
Donde M tiene un valor positivo suficientemente grande (matemáticamente, M →∞)

Así deberíamos resolver el siguiente problema:


Maximizar z = 10 x1 + 8 x2 − MR1 − MR2

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

z = 10 x1 + 8 x2 − MR1 − MR2 ↔ z − 10 x1 − 8 x2 + MR1 + MR2 = 0

Luego el problema, en forma de tabla sería,

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)

Así, tras hacer estas operaciones quedaría la siguiente tabla,

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.

Sobre este método de la gran M hemos de hacer dos observaciones:

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.

Si el problema original que pretendemos resolver tiene alguna solución factible,


entonces éste problema tendrá un valor objetivo óptimo de cero, con las variables
artificiales iguales a cero. Es más, conforme vayan sucediendo las iteraciones del
método simplex y las variables artificiales se hagan cero irán saliendo de la base y en su
lugar entrarán variables legítimas. Eventualmente, todas las variables artificiales habrán
salido de la base al llegar a la tabla óptima (aunque no siempre es así, podría ocurrir que
en la tabla óptima quedase alguna variable artificial con valor igual a cero, más adelante
veremos cómo se trata esto). Así, la base óptima del problema de la fase I estará
formada sólo por variables legítimas del problema original. De manera que disponemos
de una solución básica factible inicial del problema original y por lo tanto le podemos
aplicar el método simplex. La fase II consiste en resolver el problema original a partir
de la solución básica factible inicial de dicho problema, encontrada en la fase I.

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).

Observación: La función objetivo de la fase I siempre es minimizar la suma de las


variables artificiales, independientemente de que el problema original a resolver sea de
minimizar o de maximizar.

Hagamos pues los cálculos:

Fase I: resuélvase el siguiente problema de programación lineal.


Minimizar r = R1 + R2

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

r = R1 + R2 ↔ r − R1 − R2 = 0

Luego el problema, en forma de tabla sería,

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)

Así, tras hacer estas operaciones quedaría la siguiente tabla,

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.

Aplicamos, pues, el método simplex:


Como se puede ver, la tabla óptima de la fase I, ha encontrado un valor objetivo óptimo
de r = 0, con las variables artificiales R1 = R2 = 0 y además fuera de la base. De manera
que si quitamos las columnas asociadas a las variables artificiales de la tabla óptima de
la fase I, nos quedamos con una solución básica factible inicial del problema original.

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

Como, z = 10 x1 + 8 x2 ↔ z − 10 x1 − 8 x 2 = 0 , el problema en forma de tabla sería,

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)

Así, tras hacer estas operaciones quedaría la siguiente tabla,


Variables
básicas x1 x2 x3 x4 x5 x6 l. d.
z 0 0 –10/3 0 0 –34/3 64/3
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

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:


Si comparamos el método de la gran M y el método de las dos fases, vemos que cuando
se aplican a un mismo problema hacen las mismas iteraciones. De manera que es
preferible utilizar el método de las dos fases ya que al no trabajar con la constante M se
evita cualquier problema de redondeo, en el caso de programar el algoritmo.

• 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:

Ejemplo 9: Resuélvase el siguiente problema de programación lineal,

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.

Fase I. Tenemos que resolver, el siguiente problema,


Minimizar r = R

 sujeto a
 2 x1 + x2 + x3 + x4 =2
 3 x1 + 4 x2 + 2 x3 − x5 + R = 8

 x1 , x2 , x3 , x4 , x5 , R ≥ 0

r =R↔r−R=0

Luego el problema, en forma de tabla sería,

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,

Nuevo renglón r = Renglón anterior r + Renglón R

Así, tras hacer esta operación quedaría la siguiente tabla,

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

Como el problema que estamos resolviendo es de minimizar, según la condición de


optimalidad, debemos seleccionar como variable de entrada a la variable no básica que
tenga el coeficiente más positivo en el renglón cero (renglón r). De manera que
seleccionamos a la variable no básica x2 como variable de entrada. Una vez
seleccionada esta variable como variable de entrada, la condición de factibilidad nos
dice que la variable de salida es la variable básica asociada a la mínima razón entre los
lados derecho y los coeficientes positivos de la columna pivote (es decir, la columna
que está bajo la variable de entrada), sin contar el coeficiente de tal columna en el
renglón r. En el caso de que haya empate en esta razón mínima se rompe
arbitrariamente. Como podemos ver en este caso hay empate, pudiéndose seleccionar
como variable de salida, tanto a x4 como a R. Evidentemente, debemos seleccionar R
pues así la variable artificial saldrá de la base, que es lo que pretendemos con la fase I.
Ahora bien, supongamos que estamos resolviendo este problema usando algún
programa de ordenador, donde está implementado el método simplex, y que este
programa cuando ha de romper un empate selecciona a la primera variable donde se da
el empate. Como la primera variable básica donde se da el empate es la variable x4, el
programa seleccionaría como variable de salida a la variable x4. De manera que el
programa pivotaría sobre la entrada 1 de la columna pivote. Lo que daría lugar a la
siguiente tabla,

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

Como ya hemos sacado a la variable artificial de la base óptima, si quitamos la columna


asociada a la variable artificial de la tabla óptima de la fase I, nos quedamos con una
solución básica factible inicial del problema original.

Ahora ya podríamos ir a la fase II y resolver el problema original,


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

utilizando el método simplex a partir de la solución básica factible inicial proporcionada


por la tabla,
Variables
básicas x1 x2 x3 x4 x5 l. d.
x2 0 1 1/5 –3/5 –2/5 2
x1 1 0 2/5 4/5 1/5 0

Se deja como ejercicio realizar la fase II.

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.

Ejemplo 10: (Redundancia) Resuélvase el siguiente problema de programación lineal,

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.

Fase I. Tenemos que resolver el siguiente problema,


Minimizar r = R1 + R2 + R3

sujeto a
 x1 + x 2 + x3 + R1 =6

 − x1 + x2 + 2 x3 + R2 =4
 2 x 2 + 3 x3 + R3 = 10

 x3 + x 4 =2

 x1 , x2 , x3 , x 4 , R1 , R2 , R3 ≥ 0

r = R1 + R2 + R3 ↔ r − R1 − R2 − R3 = 0

Luego el problema, en forma de tabla sería,


Variables
básicas x1 x2 x3 x4 R1 R2 R3 l. d.
r 0 0 0 0 –1 –1 –1 0
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
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 más la 2ª fila más la 3ª
fila. Es decir,
Nuevo renglón r = Renglón anterior r + (Renglón R1 + Renglón R2 + Renglón R3)
Así, tras hacer estas operaciones quedaría la siguiente tabla,

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

que ya está lista para aplicarle el método simplex. Lo aplicamos.

La tabla óptima que se ha obtenido al final de fase I ha sido la siguiente:


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 0 –1 –1 1 0 óptima
x3 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 

Tras hacer operaciones de


pivoteo, es decir, opera-
ciones elementales de filas
llagamos a la siguiente ma-
triz, donde estaba ubicada
la matriz A.

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

Es decir, en este momento nos percataríamos de la redundancia. Ahora eliminaríamos la


tercera ecuación del problema, lo que haría desaparecer la variable artificial R3 y su
correspondiente columna del problema de la fase I. Es decir, la tabla óptima de la fase I
pasaría a ser,
Como ya han salido las variables artificiales de la base óptima, si quitamos las columnas
asociadas a las variables artificiales de la tabla óptima de la fase I, nos quedamos con
una solución básica factible inicial del problema original.

Ya podemos pasar a la fase II, que consistiría en resolver el problema original,

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

Fase II. Como z = − x1 + 2 x2 − 3 x3 ↔ z + x1 − 2 x2 + 3 x3 = 0 el problema en forma


de tabla sería,
Variables
básicas x1 x2 x3 x4 l. d.
z 1 –2 3 0 0
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]

Así, tras hacer estas operaciones quedaría la siguiente tabla,

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.

8.1.- Degeneración. Dado un problema de programación lineal, decimos que una


solución básica factible (es decir, un vértice) del problema es degenerada, si alguna
variable básica toma el valor cero en dicha solución básica factible.

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.

Ejemplo 11: Sea el siguiente problema de programación lineal,

Maximizar z = 3 x1 + 5 x2
 sujeto a

 3 x1 + 4 x 2 ≤ 12
 x1 + 2 x 2 ≤ 6

 x1 , x 2 ≥ 0

Resolvamos el problema con el método simplex y comprobemos como la solución


básica factible óptima es degenerada. Para ello, como siempre, lo primero que hemos de
hacer es escribir el problema en forma estándar con todos los valores del lado derecho
no negativos.
Maximizar z = 3x1 + 5 x 2

 sujeto a
 3 x1 + 4 x 2 + x3 = 12
 x1 + 2 x 2 + x4 = 6

 x1 , x 2 , x3 , x 4 ≥ 0
Como, z = 3 x1 + 5 x2 ↔ z − 3 x1 − 5 x = 0 , de manera que el problema en forma de
tabla sería,
Variables
básicas x1 x2 x3 x4 l. d.
z –3 –5 0 0 0
x3 3 4 1 0 12
x4 1 2 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 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

Como estamos en un problema de maximizar el criterio de optimalidad, por el que se


selecciona la variable no básica que entra, nos dice que seleccionemos a la variable no
básica con coeficiente más negativo en el renglón z. Por lo tanto, en la primera iteración
seleccionamos como variable de entrada a la variable no básica x2. Una vez seleccio-
nada la variable de entrada, el criterio de factibilidad nos indica como hemos de
seleccionar la variable básica que sale de la base. Se calculan las razones entre los
valores del lado derecho y los coeficientes positivos que haya en la columna bajo la
variable que entra, sin contar al coeficiente de esa columna que está en el renglón z. Nos
quedamos con la razón mínima, la variable que sale es la variable básica asociada al
renglón donde se produce la razón mínima. Si la razón mínima se produce en dos filas o
más se selecciona una de ellas arbitrariamente. Observemos que en la primera iteración
se ha producido un empate, que hemos roto arbitrariamente, a la hora de seleccionar la
variable que sale, y como, en consecuencia, la tabla a la que hemos llegado proporciona
una solución básica factible degenerada. Como esta solución, según el criterio de
optimalidad, aún no es óptima hacemos otra iteración en la que llegamos a la solución
óptima. Si observamos las tablas segunda y tercera vemos que las soluciones básicas
factibles que representan son, ( x1 , x 2 , x3 , x 4 ) = (0, 3, 0,0) y ( x1 , x 2 , x3 , x 4 ) = (0, 3, 0,0) ,
respectivamente. Es decir, ambas tablas representan al mismo vértice de la región
factible. Es decir, un mismo vértice puede estar representado por más de una solución
básica factible (es decir, más de una base).

En la segunda tabla el vértice (0, 3) está en correspondencia con la solución básica


factible ( x1 , x 2 , x3 , x 4 ) = (0, 3, 0,0) , donde B ={x3, x2} son las variables básicas y
{x1,x4} las variables no básicas. En la tercera tabla el mimo vértice (0, 3) está en
correspondencia con la solución básica factible ( x1 , x 2 , x3 , x 4 ) = (0, 3, 0,0) , donde ahora
B´=={x1, x2} son las variables básicas y {x3, x4} las variables no básicas.

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.

Ejemplo 12: Sea el siguiente problema de programación lineal,

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 el siguiente dibujo se da la solución gráfica del problema. Se deja como ejercicio


resolver el problema con el método simplex y comprobar que antes de llegar a la
solución óptima se pasa por una solución básica factible degenerada.
8.2.- Soluciones óptimas alternativas (infinitas soluciones óptimas)

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.

Ejemplo 13: Sea el siguiente problema de programación lineal,

Maximizar z = x1 + 2 x2
sujeto a

 − x1 + x2 ≤ 2

 x1 + 2 x2 ≤ 6
 2 x1 + x2 ≤ 6

 x1 , x2 ≥ 0

Solución.

En el siguiente dibujo se da la solución gráfica del problema. Como se puede apreciar


hay dos vértices que son solución óptima del problema, sucediendo que todos los puntos
del segmento que une dichos vértices también son soluciones óptimas del problema.
Esto ocurre porque la restricción, x1 + 2x2 ≤ 6, se hace activa (obligatoria) en ambos
vértices, es decir, se cumple como ecuación (pues la recta x1 + 2x2 = 6, pasa por ambos
vértices), sucediendo además que tal recta, x1 + 2x2 = 6, es paralela a las curvas de nivel
de la función objetivo, z = x1 + 2x2.
Veamos como detecta esto el método simplex. En primer lugar escribimos el problema
en forma estándar, con los valores del lado derecho no negativos.

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

Como, z = x1 + 2 x2 ↔ z − x1 − 2 x2 = 0 , el problema en forma de tabla sería,

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

En nuestro caso el método simplex nos ha proporcionado dos soluciones básicas


factibles óptimas, la solución (x1, x2, x3, x4, x5) = (2/3, 8/3, 0, 0, 2), correspondiente al
vértice C, en plano X1 X2 y la solución (x1, x2, x3, x4, x5) = (2, 2, 2, 0, 0), correspondiente
al vértice D, en el plano X1 X2.
Entonces será solución óptima del problema toda solución (x1, x2, x3, x4, x5) que cumpla,

(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.

8.3.- Soluciones no acotadas.

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.

Ejemplo 14: Sea el siguiente problema de programación lineal,

Maximizar z = x1 + x2
sujeto a

 − x1 + x2 ≤ 2
 x2 ≤ 4

 x1 , x2 ≥ 0

Solución.

En el siguiente dibujo se da la solución gráfica del problema. Como se puede apreciar la


región factible es no acotada. Además, las curvas de nivel de la función objetivo se
pueden trasladar hacia la derecha indefinidamente, aumentando su valor objetivo, sin
que éstas dejen de cortar a la región factible. Por lo tanto se concluye que el problema es
de valor objetivo no acotado. Es decir, cualquiera que sea el número real positivo que
tome existen soluciones factibles del problema cuyo valor objetivo supera al número
real fijado de antemano.
Resolvamos ahora el problema con el método simplex y veamos cómo se detecta esto
en las tablas del 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 = x1 + x2
sujeto a

 − x1 + x2 + x3 =2
 x2 + x4 = 4

 x1 , x2 , x3 , x4 ≥ 0

Como, z = x1 + x2 ↔ z − x1 − x2 = 0 , el problema en forma de tabla sería,

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

que podemos reescribir como,

− 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

dejamos x2 = 0 mientras aumentamos el valor de x1, desde cero, obtendríamos,


−1
(* *)  3  =   −   x1
x 2
 x4   4   0 
de manera que las coordenadas ( x1 , x 2 , x 3 , x 4 ) , 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   2   − 1
  =   −   x1
 x4   4   0 
es decir,
x = 2 + x1
(* * *)  3
 x4 = 4
de manera que podemos aumentar desde cero indefinidamente el valor de x1 que,
mientras que a x2 lo mantengamos en cero y las variables x3 y x4 tomen valores según la
expresión (***), los puntos de coordenadas ( x1 , x 2 , x 3 , x 4 ) serán soluciones factibles del
problema. Luego la región factible es no acotada. Como además al aumentar el valor de
x1, mientras x2 permanece en cero, la función objetivo va aumentando, se concluye que
el problema tiene por solución valor objetivo no acotado.

− 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.

• Ya podemos concluir una regla para reconocer la no acotación en el método simplex.


Si en una iteración del método surge una tabla en la que alguna columna (sin considerar
el coeficiente que está en el renglón z), bajo una variable no básica, tiene todas sus
entradas menores o iguales a cero, entonces la región factible es no acotada (en esa
dirección). Si además la variable no básica donde ocurre esto, tiene un coeficiente
negativo (positivo) en un problema de maximizar (minimizar), de manera que se puede
elegir como variable de entrada, entonces el valor de la función objetivo no está acotado
(en esa dirección).

Si hubiésemos elegido a la variable x2 como variable de entrada habríamos procedido


con el método simplex,

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

Observemos que empezamos en el vértice A, con la primera iteración nos movemos al


vértice B, y en la segunda iteración llegamos a la tercera tabla, vértice C, donde al mirar
la columna (sin considerar el coeficiente que está en el renglón z) bajo la variable no
básica x3 que debería entrar, nos encontramos con el vector   que nos indica que la
0
 − 1
región factible es no acotada. Como además el coeficiente de la variable no básica x3, en
el renglón z es negativo (–1), el valor de la función objetivo es no acotado. Es decir,
habríamos concluido lo mismo.
8.4.- Región factible vacía (no existencia de soluciones factibles).

En los modelos de programación lineal donde las restricciones son incompatibles no


hay soluciones factibles. Si el modelo representa una situación real, la inconsistencia de
las restricciones suele indicar que el modelo está mal formulado. En las situaciones en
las que todas las restricciones son del tipo ≤ con todos los lados derechos no negativos,
el modelo siempre tiene soluciones factibles, basta con tomar a las variables de holgura
como variables básicas. Lo que ocurre es que ya hemos visto que hay ocasiones en las
que hace falta introducir variables artificiales para encontrar una solución básica factible
inicial. En esos casos ya indicamos (que no justificamos, lo vamos a hacer ahora) que si
al finalizar la fase I el valor objetivo óptimo era positivo (lo que ocurre si alguna
variable artificial queda como básica con valor positivo en la tabla óptima de la fase I),
entonces el problema original no tiene soluciones factibles. Vemos esto con un ejemplo.

Ejemplo 15: Sea el siguiente problema de programación lineal,

Maximizar z = 4 x1 + 10 x2
sujeto a

 x1 + 2 x2 ≤ 4
 3 x1 + 7 x2 ≥ 21

 x1 , x2 ≥ 0
Solución.

En el siguiente dibujo se da la solución gráfica del problema. Como se puede apreciar la


región factible es vacía.

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

Como no disponemos de una solución básica factible de inicio, introducimos una


variable artificial no negativa, R, en la segunda ecuación y utilizamos el método de las
dos fases

Fase I. Resuélvase el siguiente problema,

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

Luego el problema, en forma de tabla sería,

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

que ya está lista para aplicarle el método simplex. Lo aplicamos.


Variables
básicas x1 x2 x3 x4 R l. d.
r 0 7 0 –1 0 21 Razón
x3 1 2 1 0 0 4 4 : 2 = 2**
R 3 7 0 –1 1 21 21 : 7 = 3
r –7/2 0 –7/2 –1 0 7
x2 1/2 1 1/2 0 0 2 Solución
R –1/2 0 –7/2 –1 1 7 óptima

Como podemos ver la solución óptima del problema de la fase I es:


( x1* , x2* , x3* , x4* , R * ) = (0, 2, 0, 0, 7)
siendo el valor de la función objetivo en este punto igual a r = R* = 7.

Vemos que entonces el problema original no puede tener soluciones factibles.

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
* * * * *

fase I. Luego no existen soluciones factibles del problema original.

You might also like