Download - 2 PROGRAMACIÓN LINEAL
2 PROGRAMACIÓN LINEAL
2.1 Metodología
El modelo de programación lineal se incorpora a las técnicas de la Ingeniería de Sistemas, a raíz
de que el Dr. George B. Dantzig crea el algoritmo Simplex para buscar soluciones al modelo con
instrucciones de operación del algoritmo que cumplen con la condición de generalidad y de
eficiencia en su planteamiento.
Entre las herramientas más útiles para estudiar los sistemas que se presentan en ingeniería, se
encuentran los métodos de optimización. Dentro de estos está la programación matemática,
que pretende encontrar el valor óptimo del objetivo del sistema sujetándose a una serie de
restricciones que surgen de las relaciones que existen entre sus entidades.
Una de las técnicas más utilizadas es la programación lineal, que recibe este nombre porque
todas sus relaciones funcionales se pueden expresar como ecuaciones lineales. La
programación lineal trata con sistemas cuyo problema es asignar recursos limitados, de la mejor
forma posible, entre actividades que compiten, es decir, optimizar. Como ejemplo de las áreas
en que tiene aplicación la programación lineal, se pueden citar:
Un agricultor debe decidir que cultivos plantar durante la siguiente temporada, tomando en
cuenta la cantidad de agua de que dispone, la tierra cultivable, y alguna otra restricción en
cuanto a cantidades que debe proporcionar de alguno de los cultivos obligado por un plan
de desarrollo, con objeto de obtener el máximo beneficio monetario.
La CFE debe distribuir el carbón de que dispone, entre las termoeléctricas que generan la
energía y que la distribuyen a la población del valle de México. Dichas termoeléctricas
están sujetas a las restricciones de la cantidad de carbón y a la demanda y eficiencia de
ellas, de manera que se incurra en el mínimo costo de producción de carbón y transporte.
PEMEX debe decidir como encausar el petróleo crudo que llega a una de sus refinerías
tomando en cuenta la capacidad y la eficiencia de los procesos, y de la demanda de los
productos terminados, de manera que se minimice el costo de operación.
Para plantear este tipo de problemas se puede utilizar el modelo de programación lineal que
tiene la siguiente estructura, denominada forma estándar:
Maximizar z = c1x1 + c2x2 + . . . . . . . + cnxn Función objetivo
a11x1 + a12x2 + . . . . + a1nxn b1
a21x1 + a22x2 + . . . . + a2nxn b2
. . . . Restricciones explícitas
. . . .
am1x1 + am2x2 + . . . . + amnxn bm
x1, x2, . . . . xn 0 Restricciones implícitas
En el modelo de Programación Lineal, se pueden distinguir los siguientes elementos:
Objetivo del modelo
Es una ecuación lineal que pretende encontrar el valor óptimo del problema, en este caso el
máximo; pero también puede ser el valor mínimo. Se compone de parámetros cuyo valor es
conocido amn, bm, cn, y de las variables de decisión x1, x2, . . . . , xn.
Parámetros
Existen tres tipos de parámetros:
Parámetros de la función objetivo: estos son c1, c2, . . . . , cn . representan beneficios o costos
por unidad de actividad o variable.
Parámetros libres de las restricciones: estos son b1, b2, . . . . , bm. Son las cantidades límites de
los recursos para cada unidad de actividad o variable.
Parámetros o coeficientes de las restricciones: estos son a11, a12, . . . , a1n; a21, a22, . , , a2n; am1,
am2, . . . ,amn. Representan la cantidad de recurso i consumido por cada unidad de
actividad j.
Variables
Son las actividades que compiten y cambian continuamente en el modelo hasta determinar el
nivel adecuado que satisfaga el objetivo del problema y las restricciones.
Relaciones funcionales
Son las relaciones matemáticas lineales y se clasifican en tres tipos:
Función objetivo. Cada uno de sus términos indica el beneficio que se obtiene por cada
actividad y al sumarse dan el beneficio total del sistema. Se busca encontrar el máximo (o el
mínimo, en el caso de un problema de costos).
Restricciones explícitas. Reciben este nombre porque se especifican textualmente. Cada
uno de sus términos indica cuánto recurso esta consumiendo la actividad, y su suma, cuánto
recurso consume el sistema. Son desigualdades del tipo ( , ) o igualdades estrictas.
Restricciones implícitas: indican únicamente que las variables (o nivel de las actividades)
deben ser cero o cualquier valor positivo.
Planteamiento del modelo de programación lineal
Una tarea difícil cuando se analiza una situación real, es la de reunir la información en el nivel
adecuado que permita establecer en forma efectiva los parámetros y las relaciones funcionales
del modelo. Para esto se sugiere identificar los siguientes requerimientos básicos:
a) Definir claramente la función objetivo.
b) Deben existir otros cursos alternativos de acción. Debe ser posible escoger una solución que
satisfaga a la función objetivo.
c) Las relaciones funcionales deben describir el sistema en forma lineal.
d) Debe existir un suministro limitado de recursos.
Ejemplo 2.1 Planteamiento del modelo de programación lineal
Una planta mezcladora de concreto que provee en grandes cantidades a un proyecto
hidroeléctrico, usa una mezcla de arena y grava, con un 30% de arena y 70% de grava por
peso. Existen 5 depósitos naturales cercanos a la presa que tienen diferente composición y su
costo, incluyendo su transporte al sitio, también varía como se muestra en la tabla. ¿Por cada
tonelada de mezcla, cuántas toneladas deben ser extraídas de cada uno de los depósitos para
minimizar el costo total?
D e p ó s i t o Mezcla
deseada 1 2 3 4 5
Arena
Grava
Costo/kg
40%
60%
$3.00
20%
80%
$2.00
50%
50%
$1.00
80%
20%
$1.50
70%
30%
$2.50
30%
70%
Variables de decisión
Tratándose de un problema de mezclas, se deberá diseñar una mezcla que cumpla con los
requerimientos de los contenidos de agregados, los cuales están presentes en todos los
materiales de los bancos en diferentes cantidades y cada banco tiene diferentes costos; por lo
que las variables de decisión serán x1, x2, x3, x4 y x5, respectivamente para cada banco.
Función objetivo
El objetivo es minimizar el costo total; las unidades de medición de la función objetivo se
expresan en pesos. De la forma de la función objetivo se tienen los coeficientes c1, c2, c3, c4,
c5 que corresponden a los costos de: $3.00, $2.00, $1.00, $1.50, $2.50 respectivamente, para
cada uno de los bancos.
La función objetivo puede expresarse de la siguiente manera:
Min z =3 x1 + 2 x2 + x3 + 1.5 x4 + 2.5 x5
Restricciones
Para desarrollar las restricciones del modelo, es necesario identificar los coeficientes a ij y
determinar la relación que existe entre las variables de decisión y los recursos disponibles. Al
plantear las restricciones es necesario tomar en cuenta dos reglas generales:
Las unidades de medición del lado derecho del signo de igualdad o desigualdad deben ser
siempre igual a las unidades del lado izquierdo.
Las restricciones pueden tener diferentes unidades de medición; es decir, una restricción
puede estar expresada en unidades monetarias mientras que las demás pudieran estar
expresadas en unidades de peso o tiempo.
La primera restricción debe expresar que la suma de los contenidos de arena de todos los
bancos deben ser iguales a un 30 % del total; se puede escribir:
0.40 x1 + 0.20 x2 + 0.50 x3 + 0.80 x4 + 0.70 x5 = 0.30
La segunda restricción debe expresar que la suma de los contenidos de grava de todos los
bancos deben ser iguales a un 70 % del total; se puede escribir:
0.60 x1 + 0.80 x2 + 0.50 x3 + 0.20 x4 + 0.30 x5 = 0.70
La tercera restricción que se plantea es la establecer que la mezcla requerida puede estar
formada de partes de todos los bancos y su totalidad será una unidad del material requerido;
esto se puede expresar:
x1 + x2 + x3 + x4 + x5 = 1
Se puede prescindir de esta última restricción en el modelo ya que es redundante; es decir, se
puede expresar en función de otras restricciones; por lo que finalmente, el modelo se puede
escribir:
Modelo de programación lineal:
Min z = 3 x1 + 2 x2 + x3 + 1.50 x4 + 2.50 x5
s. a:
0.40 x1 + 0.20 x2 + 0.50 x3 + 0.80 x4 + 0.70 x5 = 0.30
0.60 x1 + 0.80 x2 + 0.50 x3 + 0.20 x4 + 0.30 x5 = 0.70
x1, . . . , x5 0
Una aportación sobresaliente en la solución del problema de programación lineal la hizo
George B. Dantzig con el algoritmo Simplex y actualmente es el algoritmo más utilizado; sin
embargo, en el proceso de aprendizaje es importante considerar a la solución gráfica y a las
soluciones básicas, ya que en su aplicación se plantean los elementos presentes también en el
algoritmo Simplex, que está basado en una concepción gráfica, y que su comprensión es más
fácil en la exposición de estos métodos.
Finalmente, habría que considerar el método del elipsoide de L. G. Kachian, que surge en 1979
en la antigua Unión Soviética, del cual se tiene escasa información y además es muy difícil su
aplicación práctica por su complejidad y por el alto número de iteraciones necesarias para
converger a una solución óptima.
Considerando todo esto, se puede decir que existen cuatro maneras de encontrar solución al
modelo de programación lineal:
Solución gráfica
Soluciones básicas
Algoritmo Simplex de George B. Dantzig
Método del Elipsoide de L. G. Kachian
2.2 Método gráfico
Se puede resumir el método gráfico, considerando las siguientes etapas de búsqueda de una
solución:
a) Planteamiento del modelo de programación lineal
b) Dibujar una a una las restricciones del modelo, identificando las variables de decisión con
cada uno de los ejes y considerar el tipo de desigualdad o igualdad estricta que pudiera
estar presente en el modelo. Entre las posibilidades de un espacio de solución, se pueden
visualizar las siguientes (Figura 2.1):
a) Solución única b) Infinitas soluciones acotadas
c) Infinitas soluciones d) No hay solución
no acotadas (no se define espacio de solución)
Figura 2.1 Espacios de solución
c) Identificar un posible espacio de solución generado por las restricciones. Este espacio de
solución representa a una gran cantidad de soluciones posibles que deben considerarse.
Este espacio de solución, de existir, debe ser congruente con todas las restricciones del
modelo.
d) De identificarse un espacio de solución, se procede al trazo de la función objetivo del
modelo. Para esto, basta con asignar un valor cualquiera a la variable z y determinar la
pendiente de la función. El problema se reduce ahora a encontrar un punto con las más
altas utilidades o costos mínimos. Una solución óptima de programación lineal ocurre
siempre en un punto extremo del espacio generado. Además, se dice que un espacio de
solución corresponde siempre a un conjunto convexo (conjunto de puntos en el cual es
posible conectar dos puntos cualesquiera por medio de un segmento de recta que
permanezca dentro del mismo conjunto), cuya definición puede entenderse con la figura
2.2:
Puntos
extremos
Puntos
frontera
a) Conjuntos no convexos b) Conjunto convexo
Figura 2.2 Conjuntos no convexos y conjunto convexo
En un conjunto convexo se pueden distinguir también los siguientes puntos (figura 2.3):
Figura 2.3 Puntos de un espacio convexo
e) En esta etapa se explora el espacio generado, utilizando la función objetivo para explorar
sólo aquellos puntos extremos del espacio generado; una solución única se dará en aquel
punto extremo que maximice o minimice las utilidades o los costos.
f) Validar el modelo de programación lineal.
Ejemplo 2.2 Solución gráfica al modelo de programación lineal
Un constructor va a edificar dos tipos de viviendas A y B. Dispone de 60 millones de pesos y el
costo de una casa de tipo A es de $1,500,000 y $1,200,000 pesos una de tipo B. por disposiciones
gubernamentales deben construirse cuando más 20 casas del tipo A y cuando menos 20 casas
del tipo B. Si cada casa de tipo A se vende a $1,800,000 pesos y cada una de tipo B en
$1,300,000. ¿Cuántas casas de cada tipo se deben construir para obtener el beneficio
máximo?
Variables de decisión:
X1: Número de casas tipo A
X2. Número de casas tipo B
Modelo de programación lineal:
Maximizar Z = 300 X1 + 100 X2
Sujeto a:
1500 X1 + 1200 X2 ≤ 60000 (1)
X1 ≤ 20 (2)
X2 ≥ 20 (3)
X1, X2 ≥ 0
Figura 2.4 Gráfica de solución, aparecen todas las
restricciones y la función objetivo
Se propone construir 20 casas tipo A y 25 casas tipo B, para generar una utilidad máxima de
$8,500,000 por la venta de las casas.
Utilizando el software TORA1:
Figura 2.5 Graficando la restricción 1
Es importante observar como se va delimitando el espacio de solución.
Figura 2.6 Graficando la restricción 2
1 Taha, Hamdy A., Investigación de Operaciones, 2004. Pearson Educación (En el libro se incluye el software)
Figura 2.7 Graficando la restricción 3
Figura 2.8 Graficando la función objetivo
2.3 Soluciones básicas
De la interpretación geométrica del problema de programación lineal, se infiere que la mayor
dificultad proviene de definir dónde se encuentran las soluciones básicas factibles (puntos
extremos del espacio de solución). La dificultad proviene de tener relaciones de desigualdad,
en lugar de relaciones de igualdad, ya que, como se sabe, en este caso las soluciones básicas
son las intersecciones de las restricciones.
Este problema se puede resolver agregando las variables de holgura, que se pueden establecer
de la siguiente manera. Supóngase que se tiene la desigualdad:
x1 a
Se puede agregar una nueva variable xh, no negativa, es decir, xh 0 por lo que se puede
escribir:
x1 + xh = a
Gráficamente, se puede interpretar como:
x1 xh
0 a
En los casos en que se tengan restricciones de desigualdad mayor o igual que ( ), se restará
una variable de holgura y se sumará una variable llamada variable artificial. La variable artificial
se agrega como auxiliar en la búsqueda de soluciones. La variable artificial no tiene ninguna
relación con el problema real de programación lineal, es un simple artificio para lograr llegar a
soluciones factibles en el problema. Para el caso de restricciones que son igualdades estrictas,
bastará con agregar una variable artificial a la restricción; ya que, numéricamente, una
igualdad estricta equivale a dos restricciones: una desigualdad mayor o igual que ( ) y una
desigualdad menor o igual que ( ).
De manera que un modelo de programación lineal crecerá en número de variables; tendrá
variables de decisión más variables de holgura y/o artificiales.
En general se establece un sistema con m ecuaciones con n incógnitas (n m). La solución
obtenida para las m variables haciendo cero las (n - m) variables restantes, es una solución
básica. Se tienen m variables básicas y (n-m) variables no básicas, por lo cual la base es de
orden m.
Si las m variables básicas de una solución son todas mayores o iguales a cero, se dice entonces
que la solución es básica factible. En el caso de que los valores de todas y cada una de las
variables de la solución básica factible sean estrictamente mayores que cero, se tiene una
solución no degenerada. En el caso de que alguna o varias de las variables correspondientes a
una solución básica factible sean cero, se habla entonces de una solución degenerada.
Si el sistema que se tiene es de m x n, se puede establecer que el número de soluciones básicas
(N) está dado por el numero de combinaciones de n variables tomadas de m en m, es decir:
)!mn(!m
!nN
Ejemplo 2.3 Aplicación del método de soluciones básicas
Considerando el ejemplo de la solución gráfica (Ejemplo 2.2) se tiene el modelo:
Maximizar Z = 300 X1 + 100 X2
Sujeto a:
1500 X1 + 1200 X2 ≤ 60000 (1)
X1 ≤ 20 (2)
X2 ≥ 20 (3)
X1, X2 ≥ 0
Al agregar variables de holgura y artificiales se tiene el modelo en su forma canónica:
Maximizar Z = 300 X1 + 100 X2
Sujeto a:
1500 X1 + 1200 X2 + X3 = 60000
X1 + X4 = 20
X2 - X5 + X6 = 20
X1, . . . , X6 ≥ 0
Donde X1 y X2 son variables de decisión, X3, X4 y X5 son variables de holgura y X6 es una
variable artificial.
Se tienen 6 variables y 3 restricciones (n=6, m=3), por lo que el número de soluciones básicas
será:
N = !m)!m- n(
!n =
3)!3!-6(
!6 = 20 soluciones básicas
Se tendrán 20 soluciones básicas; en cada una de ellas se deberá hacer cero a tres de las
variables y resolver para las tres restantes, lo cual se muestra en la tabla siguiente:
11 12 13 14 15 16 17 18 19 20
0 40 20 0 20 0 40 0 0 0
0 0 25 50 0 0 0 0 50
0 0 0 30000 60000 0 60000 0
0 -20 0 20 0 20 -20 20 0 20
0 5 0 -20 0 -20 -20 30
20 0 -30 0 20 0 0 0 0
SBF SBF
1 2 3 4 5 6 7 8 9 10
X1 0 20 20 0 20 24 0 0
X2 0 0 25 20 0 20 0 20
X3 0 0 0 60000 0 30000 0 36
X4 0 0 0 0 0 -4 0 20
X5 0 0 0 0 0 0 0
X6 20 0 20 0 0 0
SBF SBF
X 1
X 2
X 3
X 4
X 5
X 6
De entre las 20 soluciones básicas se seleccionan aquellas en que se cumpla que todas las
variables sean mayores o iguales a cero (X1, X2, X3, X4, X5) y que la variable artificial del modelo
(X6) también valga cero, de manera que en el ejemplo se identifican cuatro soluciones básicas
factibles (SBF). Luego se necesita buscar un valor óptimo para la función objetivo, por lo que se
determina el valor de Z sustituyendo los valores de cada SBF en la función objetivo:
Maximizar Z = 300 X1 + 100 X2
Z4= $8,000,000
Z10= $2,000,000
Z13= $8,500,000
Z20= $5,000,000
De entre estos, tratándose de maximizar una utilidad, se selecciona el valor de Z13 como el
óptimo. Un resultado para este problema se puede escribir como:
Se propone construir 20 casas tipo A y 25 casas tipo B, para generar una utilidad máxima de
$8,500,000 por la venta de las casas.
Es de notar la correspondencia que existe entre las soluciones básicas factibles y una
interpretación gráfica del problema de programación lineal en que se identifican puntos
extremos de un espacio convexo; cada solución básica factible corresponde a un punto
extremo de un espacio convexo. Esto se puede observar en la gráfica:
Figura 2.9 Solución gráfica.
Las soluciones básicas y los conceptos del conjunto convexo se pueden resumir en las siguientes
tres características:
1. Las soluciones factibles forman un conjunto convexo cuyos puntos extremos son soluciones
básicas factibles.
2. Si las restricciones definen una solución factible, existe cuando menos una solución básica
factible; en caso de haber más de una, el numero de las mismas debe ser finito.
3. Si la función objetivo tiene un máximo finito, entonces al menos una de las soluciones
óptimas es una solución básica factible.
Dentro de las características anteriores se enfatiza la existencia de una solución al problema de
programación lineal. Como se mencionó anteriormente, se destacan las siguientes posibilidades
ante un problema de programación lineal:
1. La solución existe y es única
2. Existe un número infinito de soluciones que están acotadas
3. Existe un número infinito de soluciones que no están acotadas
4. No existe solución
A manera de conclusión se puede destacar que para determinar el valor óptimo de la función
objetivo z es necesario examinar solamente soluciones básicas factibles, las cuales a su vez
constituyen un conjunto de puntos extremos de un conjunto convexo.
2.4 Algoritmo Simplex
Resulta evidente que al buscar una solución óptima no es deseable o necesario examinar todas
las soluciones básicas para un conjunto de m restricciones con n variables, puesto que los
vértices de un espacio de solución corresponden a las soluciones básicas factibles, y entonces
solo se requiere examinar estos puntos extremos. Un proceso conveniente de solución debería
considerar: (1) explorar de un punto extremo a otro de tal manera que cada punto extremo
nuevo represente una mejor solución con respecto al punto extremo anterior y (2) detenerse
cuando se haya llegado a una solución óptima.
El algoritmo Simplex busca soluciones al modelo de programación explorando sólo algunos
puntos extremos de un posible espacio de solución. Se puede establecer que el algoritmo
Simplex consta de dos fases: En la primera fase intenta determinar una solución básica factible
inicial y en la segunda busca resolver el problema viajando a otra solución básica factible,
hasta alcanzar un valor óptimo.
Para el caso particular en que el modelo solamente contenga restricciones menor o igual que
( ), la primera fase se tiene resuelta de forma inmediata, ya que al hacer cero a las variables de
decisión del modelo, se tiene una solución básica factible en función de las variables de
holgura; gráficamente, esta solución corresponde al origen.
Habiendo obtenido una solución básica factible se presenta el problema de cómo pasar a un
punto adyacente o bien de decir que la solución es óptima. Los dos problemas que se
presentan son excluyentes; es decir, que si se puede pasar a un punto adyacente la solución no
es óptima y si la solución es óptima ya no tiene objeto pasar a ningún punto adyacente.
Examinando primero el aspecto de pasar a un punto adyacente. Esta condición equivale
analíticamente a cambiar una de las variables básicas por una de las no básicas. La variable
que pasa a substituir a la variable de la base se llama variable entrante, mientras que la que
deja la base recibe el nombre de variable saliente.
La variable entrante se determina a partir de la función objetivo; debido a que las variables sólo
pueden tener valores positivos, cualquier cambio que se origine incrementa la función objetivo
ya que los coeficientes son positivos. Si se supone que el incremento que pueden producir estas
variables sobre la función objetivo es el mismo, entonces el mayor incremento proviene de la
variable que tenga mayor coeficiente, siendo éste el criterio que se sigue al seleccionar la
variable entrante. Para definir la variable saliente se examinan las restricciones, se puede decir
que la variable saliente será aquella que alcance primero el valor cero al ir incrementando la
variable entrante. Con el fin de sistematizar los criterios anteriores en la búsqueda de variables
entrantes y salientes, es importante notar que la facilidad para resolver el problema como se
planteó, proviene de que:
La función objetivo se encuentra exclusivamente en términos de las variables no básicas.
Las variables básicas se encuentran una sola vez en cada restricción y su coeficiente es uno.
La primera característica es fundamental para establecer inmediatamente cuál es la variable
que va a entrar y, debido precisamente a que la variable entrante debe ser no básica, si no
aparece en la función objetivo, no es posible saber qué efecto tiene sobre la misma. Por otra
parte, si en la función objetivo aparecen variables básicas, tampoco es posible ver el efecto
que tendrá un cambio de una variable no básica sobre la función objetivo, ya que la variable
básica también cambia de valor.
La segunda característica permite establecer inmediatamente cuál es la variable que va a salir,
ya que deja en forma explícita a la variable básica.
Para tener las dos características anteriores cada vez que se hace un cambio de solución
factible, conviene considerar la función objetivo como una ecuación más, donde z es una
variable básica.
Resumiendo, la variable entrante se escoge como aquella que tiene el coeficiente más
negativo. La variable saliente se identifica como aquella que se hace mas pronto igual a cero,
conforme se aumenta la variable entrante.
En forma mas explícita, la variable saliente se encuentra en el renglón donde la relación b i / aij
se hace mínima con aij > 0, si existen dos renglones con la misma relación entonces el problema
tiene solución degenerada; para los casos en que aij 0 no existe límite sobre la variable básica
que se esta analizando, por lo tanto no debe ser considerada.
Si todos los coeficientes aij son menores o iguales a cero, la solución del problema es no
acotada ya que el valor de la función objetivo crecerá sin límites.
Para lograr que la función objetivo contenga solo variables no básicas y que, simultáneamente
en cada restricción aparezca solamente una vez cada variable básica, se puede emplear la
eliminación por Gauss-Jordan. Todo el proceso del algoritmo Simplex se puede desarrollar en un
arreglo que Dantzig llamó Tableau Simplex.
Ejemplo 2.4 Aplicación del algoritmo simplex
Un fabricante de muebles de oficina, produce dos tipos de escritorios: ejecutivos y secretariales.
La compañía tiene dos plantas en las que fabrica los escritorios. La planta 1, que es una planta
antigua, opera con doble turno 80 horas por semana. La planta 2 es una planta más nueva y no
opera a su capacidad total. Sin embargo, y dado que los administradores planean operar la
segunda planta en base en un turno doble como el de la planta 1, se han encontrado
operadores para que trabajen los dos turnos. En estos momentos, cada turno de la planta 2
trabaja 25 horas por semana. No se paga ninguna prima adicional a los trabajadores del
segundo turno. La tabla muestra el tiempo de producción (en horas por unidad) y los costos
estándar (en dólares por unidad) en cada planta.
La compañía ha competido con éxito en el pasado asignando un precio de $350.00 a los
escritorios ejecutivos. Sin embargo, parece que la compañía tendrá que reducir el precio a los
escritorios secretariales $275.00 con el objeto de estar en posición competitiva. La compañía ha
estado experimentando excesos de costos en las últimas ocho a diez semanas; por tanto, los
administradores han fijado una restricción presupuestaria semanal sobre los costos de
producción. El presupuesto semanal para la producción total de escritorios ejecutivos es de
$2000.00, en tanto que el presupuesto para los escritorios secretariales es $2200.00. A los
administradores les gustaría determinar cuál es el número de cada clase de escritorios que
deben fabricarse en cada planta con el objeto de maximizar las utilidades.
Tiempo de producción,
horas por unidad
Costos estándar,
dólares por unidad
Planta 1 Planta 2 Planta 1 Planta 2
Escritorios ejecutivos 7.0 6.0 250 260
Escritorios secretariales 4.0 5.0 200 180
Variables de decisión:
Planta 1 Planta 2
Escritorios ejecutivos X1 X3
Escritorios secretariales X2 X4
X1: Escritorios ejecutivos que se fabrican en la planta 1
X2: Escritorios secretariales que se fabrican en la planta 1
X3: Escritorios ejecutivos que se fabrican en la planta 2
X4: Escritorios secretariales que se fabrican en la planta 2
Función objetivo:
Utilidad = precio de venta – costo de producción
Utilidad por cada escritorio ejecutivo producido en planta 1 =$350-$250 = $100.00
Utilidad por cada escritorio secretarial producido en planta 1=$275-$200 = $75.00
Utilidad por cada escritorio ejecutivo producido en planta 2 =$350-$260 = $90.00
Utilidad por cada escritorio secretarial producido en planta 2=$275-$180 = $95.00
Modelo de programación lineal:
Maximizar Z = 100 X1 + 74 X2 + 90 X3 + 95 X4
Sujeto a:
7 X1 + 4 X2 ≤ 80
6 X3 + 5 X4 ≤ 50
250 X1 + 260 X3 ≤ 2000
200 X2 + 180 X4 ≤ 2200
X1, X2, X3, X4 ≥ 0
Introduciendo variables de holgura:
Maximizar Z = 100 X1 + 75 X2 + 90 X3 + 95 X4
Sujeto a:
7 X1 + 4 X2 + X5 = 80
6 X3 + 5 X4 + X6 = 50
250 X1 260 X3 + X7 = 2000
200 X2 180 X4 + X8 = 2200
X1, . . . , X8 ≥ 0
X1 X2 X3 X4 X5 X6 X7 X8 Z B Bi/Ci
X5 7 4 0 0 1 0 0 0 0 80 11.43
X6 0 0 6 5 0 1 0 0 0 50
X7 250 0 260 0 0 0 1 0 0 2000 8
X8 0 200 0 180 0 0 0 1 0 2200
Z -100 -75 -90 -95 0 0 0 0 1 0
X1, . . . , X4 son variables de decisión
X5, . . . , X8 son variables de holgura
Para aplicar el algoritmo Simplex es necesario tener una solución inicial; esto se cumple en el
modelo ya que al tener todas sus restricciones del tipo (≤) se considera que el origen forma
parte del espacio de solución y entonces éste puede ser la solución inicial.
Entonces el Tableau inicial para aplicar el Simplex tiene la forma siguiente y se observa que la
base está completa ya que las variables de la base están explícitas y tienen los valores: X5=80,
X6=50, X7=2000, X8=2200.
Como variable entrante se selecciona a la variable X1 ya que es la variable con el coeficiente
más grande en la función objetivo y con signo positivo (visualizar la función objetivo fuera del
tableau); habiendo seleccionado la variable entrante, se selecciona la variable saliente
haciendo el cociente de los valores de B entre los coeficientes de la columna en que se ubica
la variable entrante (X1) y de ellos al menor, que corresponde a la variable X7.
La siguiente fase corresponde a efectuar las operaciones para que al hacer el cambio de
variables se tengan explícitos los nuevos valores de las variables básicas y se tenga al mismo
tiempo el valor que adquiere la función objetivo:
X5 0 4 -7.28 0 1 0 -0.03 0 0 24
X6 0 0 6 5 0 1 0 0 0 50 10
X1 1 0 1.04 0 0 0 0.004 0 0 8
X8 0 200 0 180 0 0 0 1 0 2200 12.22
Z 0 -75 14 -95 0 0 0.4 0 1 800
X5 0 4 -7.28 0 1 0 -0.03 0 0 24 6
X4 0 0 1.2 1 0 0.2 0 0 0 10
X1 1 0 1.04 0 0 0 0.004 0 0 8
X8 0 200 -216 0 0 -36 0 1 0 400 2
Z 0 -75 128 0 0 19 0.4 0 1 1750
X5 0 0 -2.96 0 1 0.72 -0.03 -0.02 0 16
X4 0 0 1.2 1 0 0.2 0 0 0 10
X1 1 0 1.04 0 0 0 0.004 0 0 8
X2 0 1 -1.08 0 0 -0.18 0 0.005 0 2
Z 0 0 47 0 0 5.5 0.4 0.375 1 1900
En la última iteración se alcanza una solución óptima, ya que las variables de la función Z tienen
coeficientes negativos. Se puede expresar un resultado:
Para optimizar las utilidades semanales con las condiciones establecidas por las restricciones
del modelo, es necesario fabricar:
8 escritorios ejecutivos en la planta 1
2 escritorios secretariales en la planta 1
10 escritorios secretariales en la planta 2
Toda la operación generará una utilidad semanal de $1900.00
El valor de X5=16, corresponde a la variable de holgura asociada al recurso de horas disponibles
en la planta 1 (80 horas) en la cual sólo se estarán utilizando 80-16= 64 horas, lo cual puede
considerarse en la planeación de la producción en el futuro.
Solución empleando TORA:
Figura 2.10 Se introducen todos los coeficientes del modelo de programación lineal
Se elige del menú solución algebraic, iterations y all slack starting solution, que corresponde al
algoritmo simplex.
Figura 2.11 Solución por iteraciones del algoritmo simplex
2.5 Métodos alternativos
En el planteamiento de modelos de programación lineal, y para los efectos de aplicación del
algoritmo Simplex, se pueden distinguir claramente dos situaciones: 1) se tiene un modelo en
que todas las restricciones del modelo son del tipo menor o igual que ( ) y entonces ya se tiene
una solución básica factible inicial (el origen) con lo cual se simplifica de inmediato la
aplicación del algoritmo Simplex, y 2) el modelo tiene restricciones del tipo mayor o igual que
( ) o bien igualdades estrictas (=) en las que es necesario agregar variables artificiales; esto
significa que no se tendrá una solución básica factible inicial de forma inmediata y que además
para que una solución sea factible, la variable artificial deberá valer cero. Esto obliga a utilizar
algún método alternativo que contemple la utilización de variables artificiales. Entre los métodos
conocidos se encuentra el de dos fases y el método de la Gran M.
En este punto es necesario establecer algunos principios que contribuyen al desarrollo de estos
métodos:
Si la función objetivo tiene la forma minimizar z también se puede expresar como:
Minimizar Z = - maximizar ( -Z )
Una restricción del tipo:
ai1x1+…+ainxn bi
equivale a -ai1x1 -…- ainxn -bi
Una restricción del tipo:
ai1x1+…+ainxn = bi
equivale a dos desigualdades
ai1x1+…+ainxn bi
ai1x1 +…+ ainxn bi
2.5.1 Dos Fases
El método de dos fases es llamado así por plantear la solución en dos etapas:
1) se crea una función objetivo w que será la suma de las variables artificiales de que consta el
modelo y la cual, en esta primera fase se intenta minimizar hasta que alcance el valor cero. De
lograrse esto, es necesario eliminar renglón y columna de w y las columnas de las variables
artificiales. Si w no adquiere el valor de cero, no existe solución.
2) con el Tableau remanente se procede a la segunda fase, en la cual ya se optimiza a la
función objetivo z del modelo, la cual en la primera fase habrá sufrido cambios.
Ejemplo 2.5 Aplicación de Dos Fases
Un proyecto de construcción requiere de una mezcla compuesta de 50 % de grava gruesa, 30
% de grava fina y 20 % de arena. Existen cuatro bancos disponibles cercanos al sitio de los
trabajos. El porcentaje de cada graduación en los materiales de cada banco y los costos
unitarios del material, están dados en la siguiente tabla:
Banco Mezcla
deseada (%) 1 2 3 4
Grava gruesa (%) 0 50 40 40 50
Grava fina (%) 60 40 30 20 30
Arena (%) 40 10 30 40 20
Costo unitario $8 $10 $12 $11
Si existe una cantidad de material extraído en exceso, el costo unitario de removerlo es de $2
para todas las graduaciones de agregados. Determinar la cantidad que debe comprarse de
cada banco para obtener una unidad de material requerido, al mínimo costo.
Variables de decisión:
X1 cantidad de material a extraer del banco 1
X2 cantidad de material a extraer del banco 2
X3 cantidad de material a extraer del banco 3
X4 cantidad de material a extraer del banco 4
Modelo de Programación Lineal:
Minimizar Z = 8 X1 + 10 X2 + 12 X3 + 11 X4 + 2 X5 + 2 X6 + 2 X7
Sujeto a:
0.50X2 + 0.40X3 + 0.40X4 – X5 = 0.50
0.60X1+ 0.40X2 + 0.30X3 + 0.20X4 - X6 = 0.30
0.40X1+ 0.10X2 + 0.30X3 + 0.40X4 - X7 = 0.20
X1, . . . , X7≥0
En la función objetivo se consideran los costos asociados a la extracción en exceso de cada
material (X5 exceso de grava gruesa, X6 exceso de grava fina, X7 exceso de arena).
Agregando las variables artificiales asociadas a cada restricción (X8, X9, X10):
Minimizar Z = 8 X1 + 10 X2 + 12 X3 + 11 X4 + 2 X5 + 2 X6 + 2 X7
Sujeto a:
0.50X2 + 0.40X3 + 0.40X4 – X5 +X8 = 0.50
0.60X1+ 0.40X2 + 0.30X3 + 0.20X4 - X6 +X9 = 0.30
0.40X1+ 0.10X2 + 0.30X3 + 0.40X4 - X7 +X10= 0.20
X1, . . . , X10 ≥ 0
Para la búsqueda de soluciones a partir de un modelo de estas características, se debe utilizar
el simplex con algún método alternativo: Dos fases o Gran M, ya que aparecen desigualdades
(≥) o igualdades estrictas y que es necesario emplear variables artificiales; en esta situación
también está descartado que el origen forme parte de un espacio de solución.
Se crea una función objetivo adicional formada por la suma de las variables artificiales utilizadas
en el modelo y en una primera fase se minimiza a esta función objetivo adicional hasta que
adquiera el valor de cero que significará que todas las variables artificiales valen cero; si se
alcanza esta situación, en una segunda fase se optimiza a la función objetivo Z. Si no se logra,
significa que no existe espacio de solución.
Para el modelo, la función objetivo adicional es:
W=X8 + X9 + X10
Se observa que en el Tableau Simplex inicial, no existe una definición de las variables básicas del
modelo, por lo que es necesario efectuar las operaciones necesarias para alcanzar esto:
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 Z W B
0 0.5 0.4 0.4 -1 0 0 1 0 0 0 0 0.5
0.6 0.4 0.3 0.2 0 -1 0 0 1 0 0 0 0.3
0.4 0.1 0.3 0.4 0 0 -1 0 0 1 0 0 0.2
Z -8 -10 -12 -11 -2 -2 -2 0 0 0 1 0 0
W 0 0 0 0 0 0 0 -1 -1 -1 0 1 0
W 0 0.5 0.4 0.4 -1 0 0 0 -1 -1 0 1 0.5
W 0.6 0.9 0.7 0.6 -1 -1 0 0 0 -1 0 1 0.8
W 1 1 1 1 -1 -1 -1 0 0 0 0 1 1
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 Z W B
X8 0 0.5 0.4 0.4 -1 0 0 1 0 0 0 0 0.5
X9 0.6 0.4 0.3 0.2 0 -1 0 0 1 0 0 0 0.3
X10 0.4 0.1 0.3 0.4 0 0 -1 0 0 1 0 0 0.2
Z -8 -10 -12 -11 -2 -2 -2 0 0 0 1 0 0
W 1 1 1 1 -1 -1 -1 0 0 0 0 1 1
X8 0 0.5 0.4 0.4 -1 0 0 1 0 0 0 0 0.5
X1 1 0.6667 0.5 0.3333 0 -1.667 0 0 1.6667 0 0 0 0.5
X10 0 -0.167 0.1 0.2667 0 0.6667 -1 0 -0.667 1 0 0 0
Z 0 -4.667 -8 -8.333 -2 -15.33 -2 0 13.333 0 1 0 4
W 0 0.3333 0.5 0.6667 -1 0.6667 -1 0 -1.667 0 0 1 0.5
X8 0 0.75 0.25 0 -1 -1 1.5 1 1 -1.5 0 0 0.5
X1 1 0.875 0.375 0 0 -2.5 1.25 0 2.5 -1.25 0 0 0.5
X4 0 -0.625 0.375 1 0 2.5 -3.75 0 -2.5 3.75 0 0 0
Z 0 -9.875 -4.875 0 -2 5.5 -33.25 0 -7.5 31.25 1 0 4
W 0 0.75 0.25 0 -1 -1 1.5 0 0 -2.5 0 1 0.5
X7 0 0.5 0.1667 0 -0.667 -0.667 1 0.6667 0.6667 -1 0 0 0.333333
X1 1 0.25 0.1667 0 0.8333 -1.667 0 -0.833 1.6667 1E-05 0 0 0.083333
X4 0 1.25 1 1 -2.5 0 0 2.5 0 0 0 0 1.25
Z 0 6.75 0.6667 0 -24.17 -16.67 0 22.167 14.667 -2 1 0 15.08333
W 0 0 0 0 0 0 0 -1 -1 -1 0 1 0
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 Z W B
X7 0 0.5 0.1667 0 -0.667 -0.667 1 0 0.333333
X1 1 0.25 0.1667 0 0.8333 -1.667 0 0 0.083333
X4 0 1.25 1 1 -2.5 0 0 0 1.25
Z 0 6.75 0.6667 0 -24.17 -16.67 0 1 15.08333
X7 -2 0 -0.167 0 -2.333 2.6666 1 0 0 0.166667
X2 4 1 0.6667 0 3.3333 -6.667 0 0 0 0.333333
X4 -5 0 0.1667 1 -6.667 8.3333 0 0 0 0.833333
Z -27 0 -3.833 0 -46.67 28.333 0 1 0 12.83333
X6 -0.75 0 -0.063 0 -0.875 1 0.375 0 0 0.0625
X2 -1 1 0.25 0 -2.5 0 2.5 0 0 0.75
X4 1.25 0 0.6875 1 0.625 0 -3.125 0 0 0.3125
Z -5.75 0 -2.063 0 -21.87 0 -10.63 1 0 11.0625
Se alcanza la primera fase del algoritmo; la función objetivo adicional W=X8+X9+X10=0, por lo
que se debe continuar con la segunda fase; es decir, optimizar a la función objetivo Z:
La solución más económica es que por cada tonelada de material, se debe adquirir 0.75
toneladas del banco 2 y 0.3125 toneladas del banco 4, con lo que se tendrá un excedente de
0.0625 toneladas de grava fina. El costo total asociado a la extracción será de $11.0625 por
tonelada.
2.5.2 Gran M
El método consiste en:
Aumentar una variable de holgura a cada restricción del tipo menor o igual ( ).
Restar una variable de holgura y sumar una variable artificial a todas las restricciones del tipo
mayor o igual ( ).
Añadir una variable artificial a cada restricción de igualdad estricta.
Las variables artificiales si aparecen en la función objetivo. El coeficiente en esta función,
para cada una de ellas es –M. Esta M es un numero muy grande comparado con los que
aparecen en el problema, por lo que la expresión de la función objetivo en el modelo
deberá expresar Maximizar.
Con la información en el Tableau Simplex, se procede a establecer la base, la cual no estará
explícita como en el caso en que ya se tiene una solución básica factible inicial; esto, debido
a la presencia de la M en las variables artificiales, por lo que una manera de proceder sería
la de eliminar del lugar de las variables artificiales en el renglón de la función objetivo, a la M
o M´s presentes en el modelo; se puede lograr con operaciones elementales de los
renglones.
Una vez establecida la base, se aplica el algoritmo Simplex, manejando a la M como una
variable algebraica o un número muy grande comparado con los coeficientes en las
restricciones, hasta llegar a la solución óptima.
Ejemplo 2.6 Aplicación de Gran M
Una planta mezcladora de concreto usada en la construcción de un proyecto hidroeléctrico
usa una mezcla de 70 % de arena y 30 % de grava por peso. Existen depósitos naturales en 5
lugares cercanos a la presa, cada uno con composiciones y costos de transportación diferentes
según se muestra en la tabla:
Depósito
1 2 3 4 5
Arena 40 % 20 % 50 % 80 % 70 %
Grava 60 % 80 % 50 % 20 % 30 %
Costo/ton $150 $180 $100 $125 $200
Por tonelada de concreto, ¿cuántas toneladas extraídas de cada uno de los depósitos deben
usarse con objeto de minimizar el costo total?
Variables de decisión:
X1 cantidad de material a extraer del depósito 1
X2 cantidad de material a extraer del depósito 2
X3 cantidad de material a extraer del depósito 3
X4 cantidad de material a extraer del depósito 4
X5 cantidad de material a extraer del depósito 5
Modelo de programación lineal:
Minimizar Z = 150 X1 + 180 X2 + 100 X3 + 125 X4 + 200 X5
Sujeto a:
0.4 X1 + 0.2 X2 + 0.5 X3 + 0.8 X4 + 0.7 X5 = 0.70
0.6 X1 + 0.8 X2 + 0.5 X3 + 0.2 X4 + 0.3 X5 = 0.30
X1, . . . , X5 ≥ 0
Se agregan variables artificiales (X6, X7) al modelo:
Minimizar Z = 150 X1 + 180 X2 + 100 X3 + 125 X4 + 200 X5
Sujeto a:
0.4 X1 + 0.2 X2 + 0.5 X3 + 0.8 X4 + 0.7 X5 + X6 = 0.70
0.6 X1 + 0.8 X2 + 0.5 X3 + 0.2 X4 + 0.3 X5 + X7 = 0.30
X1, . . . , X7 ≥ 0
El algoritmo de Gran M exige que la función objetivo exprese maximización y en esta forma se
introducen a la función objetivo las variables artificiales acompañadas de un coeficiente muy
grande y con signo negativo, de manera que no represente ventaja alguna la elección de una
variable artificial como variable entrante; por lo que el modelo se puede escribir:
Maximizar Z = -150 X1 - 180 X2 - 100 X3 - 125 X4 - 200 X5 - 1000 X6 - 1000 X7
Sujeto a:
0.4 X1 + 0.2 X2 + 0.5 X3 + 0.8 X4 + 0.7 X5 + X6 = 0.70
0.6 X1 + 0.8 X2 + 0.5 X3 + 0.2 X4 + 0.3 X5 + X7 = 0.30
X1, . . . , X7 ≥ 0
X1 X2 X3 X4 X5 X6 X7 Z B
0.4 0.2 0.5 0.8 0.7 1 0 0 0.7
0.6 0.8 0.5 0.2 0.3 0 1 0 0.3
Z 150 180 100 125 200 1000 1000 1 0
Z -250 -20 -400 -675 -500 0 1000 1 -700
Z -850 -820 -900 -875 -800 0 0 1 -1000
X1 X2 X3 X4 X5 X6 X7 Z B
X6 0.4 0.2 0.5 0.8 0.7 1 0 0 0.7
X7 0.6 0.8 0.5 0.2 0.3 0 1 0 0.3
Z -850 -820 -900 -875 -800 0 0 1 -1000
X6 -0.2 -0.6 0 0.6 0.4 1 -1 0 0.4
X3 1.2 1.6 1 0.4 0.6 0 2 0 0.6
Z 230 620 0 -515 -260 0 1800 1 -460
X4 -0.3333 -1 0 1 0.66667 1.66667 -1.6667 0 0.66667
X3 1.33333 2 1 0 0.33333 -0.6667 2.66667 0 0.33333
Z 58.3333 105 0 0 83.3333 858.333 941.667 1 -116.67
Para cada tonelada de material con las propiedades requeridas, se sugiere adquirir 0.3333
toneladas del depósito 3 y 0.6666 del depósito 4, lo cual generará un costo mínimo de $116.66
por tonelada.
Solución empleando Solver:
Los datos y la celda objetivo con el comando sumaproducto:
El comando sumaproducto en las celdas de los recursos asociados con las restricciones:
Ya se han seleccionado las celdas con las variables: g5 que es la celda objetivo, g7 y g8
cantidades de recursos utilizados. En Herramientas se selecciona a Solver:
Al seleccionar Solver se mostrará un cuadro de diálogo:
En el cuadro de diálogo se selecciona la referencia de la celda objetivo, el valor que adquirirá
la celda objetivo (máximo o mínimo), se introducen las referencias de las celdas para las
variables de decisión y las referencias de las restricciones. Se presiona Opciones para
seleccionar Lineal y luego Resolver; deberán aparecer los valores buscados de las variables de
decisión y el valor de la función objetivo; Solver permite seleccionar el tipo de informe que
puede complementar un resultado:
El resultado se puede expresar como:
Para cada tonelada de material con las propiedades requeridas, se sugiere adquirir 0.3333
toneladas del depósito 3 y 0.6666 del depósito 4, lo cual generará un costo mínimo de $116.66
por tonelada.
2.6 Dualidad.
Uno de los más importantes logros en el desarrollo de la programación lineal es el concepto de
dualidad, que expresa que para cada problema de programación lineal existe una relación y
una asociación con otro problema de programación lineal llamado dual.
El concepto de dualidad ha contribuido a identificar algunos conceptos relacionados con la
economía, como es el precio sombra, que está más relacionado con la utilidad que tiene el
recurso formando parte de un proceso de producción, que con su precio en el mercado. Otra
utilidad de la dualidad se relaciona con la facilidad de cómputo que puede representar
plantear el modelo dual y optimizar éste, en lugar de hacerlo con el modelo original.
En lo que sigue, se denominará como modelo primal al modelo resultante del sistema original y
como modelo dual al que resulta del planteamiento a partir del modelo primal.
Para plantear el modelo dual de un problema de programación lineal, se debe considerar:
Si el primal es un problema de maximización su dual será un problema de minimización y
viceversa
Los coeficientes de la función objetivo del modelo primal se convierten en los coeficientes
del vector de disponibilidades en el problema dual
Los coeficientes del vector de disponibilidades del modelo primal pasan ahora a ser los
coeficientes de la función objetivo del modelo dual, este nuevo vector es también llamado
de costo o precio
Los coeficientes en las restricciones en el modelo primal serán los coeficientes de las
restricciones en el modelo dual pero como una matriz transpuesta
Los signos de desigualdad del modelo dual son contrarios a los signos del modelo primal
Las variables xm se convierten en nuevas variables ym en el modelo dual
De lo anterior se puede establecer que si el modelo primal tiene m restricciones y n variables, el
modelo dual tendrá n restricciones y m variables. Esto se puede expresar:
Modelo primal
Max z = cj xj
S. a:
aij xj bi
donde: i = 1,
j = 1, 2, …n
Modelo dual:
Min z= bi yi
S. a:
aij yi cj
yi 0
donde: i = 1, 2, …n
j = 1, 2, …m
Al comparar los modelos primal y dual, se pueden obtener las siguientes conclusiones:
1. Los dos modelos tienen, en la solución óptima, el mismo valor de la función objetivo
2. Los coeficientes de la función objetivo en el modelo primal, son los elementos del lado
derecho en las restricciones del modelo dual
3. Los elementos del lado derecho de las restricciones del modelo primal, son los coeficientes
de la función objetivo del modelo dual
4. La función objetivo en el primal es maximizar, en el modelo dual es minimizar
5. En el modelo primal, las restricciones son del tipo ( ), en el dual son del tipo ( )
6. El modelo primal tiene tantas variables como restricciones tiene el dual; el modelo dual tiene
tantas variables como restricciones tiene el primal
Cuando ya se tiene una solución óptima, se presenta el problema de cómo interpretar los
resultados y asociarlos a cada una de las variables para eso se hará uso de los siguientes
teoremas:
Teorema 1. Si el problema primal tiene solución óptima finita, también la tiene el dual, y los
valores óptimos de cada función objetivo son iguales. Si el primal no tiene solución acotada
entonces el dual no tiene solución factible.
Teorema 2. El dual del dual es el primal.
Teorema 3. Si una restricción primal se satisface completamente (su correspondiente variable de
holgura vale cero) entonces la variable dual asociada tiene valor distinto de cero. Si una
restricción primal queda con holgura entonces la variable dual asociada vale cero.
Este último teorema, conocido como teorema de la holgura complementaria, da la forma de
encontrar la solución del dual si ya se tiene la óptima del primal y viceversa.
Variables de decisión del primal Variables de holgura del dual
Variables de decisión del dual Variables de holgura del primal
Ejemplo 2.7 Dualidad
La Agro-Tech es una empresa de productos químicos que fabrica dos tipos de fertilizante que se
elaboran combinando ingredientes que se compran con proveedores externos. Cada mes se
tiene que planear la cantidad de cada fertilizante que debe producirse. El plan debe tomar en
consideración el costo de los ingredientes, el precio de venta de los fertilizantes, cualesquier
pedidos que deban sutirse y las restricciones impuestas al uso de los recursos de la compañía:
mano de obra, materia prima o tiempo de máquina. El proceso de planeación para este mes
es más difícil que lo normal. Por lo general, la Agro-Tech fabrica fertilizantes de acuerdo con los
pedidos de los clientes, pero este mes los fertilizantes van a venderse a través de un mayorista.
Esto complica las cosas porque se tiene que programar la producción de manera que
conduzca a las mayores utilidades posibles para la agro-Tech, al mismo tiempo que se utiliza
sólo la cantidad de ingredientes que están disponibles para el mes.
Los dos fertilizantes que la Agro-Tech fabrica son las mezclas denominadas 5-5-10 y 5-10-5. En
cada caso, el primer valor se refiere al porcentaje que el producto final tiene de nitrato químico,
el segundo valor se refiere al porcentaje de fosfato que aparece en el producto final y el tercer
valor da el porcentaje de potasio. El fertilizante se estabiliza con un material de relleno como
podría ser barro. Por ejemplo, el 5-5-10 está elaborado con 5 % de nitrato, 5 % de fosfato y 10 %
de potasio y el 80 % restante es barro. El mayorista comprará cualquier cantidad de ambos
fertilizantes que la Agro-Tech pueda fabricar. Está dispuesto a pagar $71.50 por tonelada del 5-
5-10 y $69.00 por tonelada del 5-10-5. Este mes, la disponibilidad y costos de materias primas son
1100 toneladas de nitrato a $200.00 por tonelada, 1800 toneladas de fosfato a $80.00 cada una
y 2000 toneladas de potasio a $160.00 cada una. El relleno está disponible en cantidades
ilimitadas al precio de $10.00 por tonelada, pero para los otros tres ingredientes sólo se dispone
de las cantidades mencionadas antes. No hay restricciones para el uso de la mano de obra ni
tampoco para el empleo de la maquinaria durante el mes, pero se tiene un costo de $15.00 por
tonelada por concepto de mezclado de fertilizantes.
¿Cómo deben utilizarse los recursos escasos de que dispone la Agro-Tech, de manera que se
obtengan las mayores utilidades para la compañía?
Nitrato Fosfato Potasio Barro Precio de
venta/ton
5-5-10 0.05 0.05 0.10 0.80 71.50
5-10-5 0.05 0.10 0.05 0.80 69.00
Disponibilidad, ton 1100 1800 2000
Costo /ton 200.00 80.00 160.00 10.00
Variables de decisión:
X1, toneladas de fertilizante 5-5-10 que deben producirse este mes
X2, toneladas de fertilizante 5-10-5 que deben producirse este mes
Modelo de programación lineal:
Para determinar la utilidad asociada a cada fertilizante:
Utilidad = precio de venta- costo (nitrato +fosfato+potasio)-costo ingrediente inerte- costo de
mezclado
X1 1 0 40 -20 0 0 8000
X2 0 1 -20 20 0 0 14000
X5 0 0 -3 1 1 0 500
Z 0 0 340 30 0 1 428000
Para el fertilizante 5-5-10 (por tonelada):
Utilidad = 71.50-0.05*200-0.05*80*-0.10*160-0.8*10-15.00= $18.5
Para el fertilizante 5-10-5 (por tonelada):
Utilidad = 69.00-0.05*200-0.10*80-0-05*160-0.8*10-15.00= $20.00
Modelo primal de programación lineal:
Maximizar Z = 18.5 X1 + 20 X2
Sujeto a:
0.05 X1 + 0.05 X2 + X3 = 1100
0.05 X1 + 0.10 X2 + X4 = 1800
0.10 X1 + 0.05 X2 + X5 = 2000
X1, X2 ≥ 0
Al resolver con el algoritmo Simplex, se obtiene el tableau óptimo:
El modelo dual de programación lineal es:
Minimizar Z = 1100 Y1 + 1800 Y2 + 2000 Y3
Sujeto a:
0.05 Y1 + 0.05 Y2 + 0.10 Y3 ≥ 18.5
0.05 Y1 + 0.10 Y2 + 0.05 Y3 ≥ 20
Y1, . . . , Y3 ≥ 0
Agregando variables de holgura y artificiales:
Minimizar Z = 1100 Y1 + 1800 Y2 + 2000 Y3
Sujeto a:
0.05 Y1 + 0.05 Y2 + 0.10 Y3 – Y4 + Y5 = 18.5
0.05 Y1 + 0.10 Y2 + 0.05 Y3 - Y6 + Y7 = 20
Y1, . . . , Y7 ≥ 0
Donde Y1, Y2, Y3 son variables de decisión del dual; Y4, Y6 son variables de holgura del dual.
Se pueden establecer de antemano las relaciones entre variables del primal y variables del
dual:
Y1 Y2 Y3 Y4 Y5 Y6 Y7 Z W B
0.05 0.05 0.1 -1 1 0 0 0 0 18.5
0.05 0.1 0.05 0 0 -1 1 0 0 20
Z -1100 -1800 -2000 0 0 0 0 1 0 0
W 0 0 0 0 -1 0 -1 0 1 0
W 0.05 0.05 0.1 -1 0 0 -1 0 1 18.5
0.1 0.15 0.15 -1 0 -1 0 0 1 38.5
Y5 0.05 0.05 0.1 -1 1 0 0 0 0 18.5
Y7 0.05 0.1 0.05 0 0 -1 1 0 0 20
Z -1100 -1800 -2000 0 0 0 0 1 0 0
W 0.1 0.15 0.15 -1 0 -1 0 0 1 38.5
Y5 0.025 0 0.075 -1 1 0.5 -0.5 0 0 8.5
Y2 0.5 1 0.5 0 0 -10 10 0 0 200
Z -200 0 -1100 0 0 -18000 18000 1 0 360000
W 0.025 0 0.075 -1 0 0.5 -1.5 0 1 8.5
Y6 0.05 0 0.15 -2 2 1 -1 0 0 17
Y2 1 1 2 -20 20 0 0 0 0 370
Z 700 0 1600 -36000 36000 0 0 1 0 666000
W 0 0 0 0 -1 0 -1 0 1 0
Y1 Y2 Y3 Y4 Y6 Z B
Y3 0.33333 0 1 -13.333 6.66667 0 113.333
Y2 0.33333 1 0 6.66667 -13.333 0 143.333
Z 166.667 0 0 -14667 -10667 1 484667
Y1 Y2 Y3 Y4 Y6 Z B
Y1 1 0 3 -40 20 0 340
Y2 0 1 -1 20 -20 0 30
Z 0 0 -500 -8000 -14000 1 428000
X1 Y4
X2 Y6
X3 Y1
X4 Y2
X5 Y3
Resolviendo con el Simplex el modelo dual:
De aquí se pueden establecer los valores de las variables de decisión del primal, considerando
la relación establecida con anterioridad:
X1 1 0 40 -20 0 0 8000
X2 0 1 -20 20 0 0 14000
X5 0 0 -3 1 1 0 500
Z 0 0 340 30 0 1 428000
Y1 Y2 Y3 Y4 Y6 Z B
Y1 1 0 3 -40 20 0 340
Y2 0 1 -1 20 -20 0 30
Z 0 0 -500 -8000 -14000 1 428000
X1 Y4
X2 Y5
X3 Y1
X4 Y2
X5 Y3
X1 tiene que ver con Y4, pero Y4=0; luego, X1=8000
X2 tiene que ver con Y5, pero Y6=0; luego, X2=14000
X3 tiene que ver con Y1, pero Y1=340; luego X3=0
X4 tiene que ver con Y2, pero Y2= 0; luego X4=0
X5 tiene que ver con Y3, pero Y3=0; luego X5=500
La expresión correcta del resultado es:
Para optimizar las utilidades de este mes, se sugiere que la Agro-Tech fabrique 8000 toneladas
del fertilizante 5-5-10 y 14000 toneladas del fertilizante 5-10-5, con lo cual generará una utilidad
de $428,000.00. también es de notar que con este programa de producción, sobrarán 500
toneladas de potasio, que puede considerarse en el próximo plan de producción.
Comparando las iteraciones óptimas del primal y del dual, se aprecian las similitudes:
2.6.1 Interpretación económica del dual
Las variables duales también tienen importantes interpretaciones económicas. Con Y1=340
implica que cada tonelada adicional de nitrato, produce $340.00 adicionales de utilidad; Y2=30
implica que cada tonelada adicional de fosfato produce $30.00 adicionales de utilidad; y Y3=0
implica que no se obtienen utilidades adicionales al añadir toneladas extra de potasio.
Cada uno de estos valores presupone que los demás permanecen iguales. Desde el punto de
vista de la toma de decisiones, las variables duales indican la cantidad extra que se estaría en
disponibilidad de pagar por una unidad adicional de un recurso específico. En otras palabras,
se estaría dispuesto a pagar un precio más elevado por un recurso escaso, hasta por el valor de
la variable dual. Solo interesa el excedente sobre el precio normal, puesto que el precio original
del recurso se incluye en el cálculo de las variables. Por ejemplo, cada tonelada adicional de
fosfato vale $30.00, y por ello se estaría dispuesto a pagar al proveedor hasta $110.00 por
tonelada ($80.00 del precio actual más $30.00 adicionales) por cada tonelada adicional de
fosfato. En este caso, el aumento neto en la utilidad por tonelada adicional de recurso será la
diferencia entre $30.00 y el precio más elevado que se pague. Si el proveedor cobrara $10.00
adicionales por todo el fosfato que exceda 1800 toneladas, se obtendrían $20.00 por cada
tonelada adicional de fosfato. Si el cargo extra fuera $31.00, no se estaría dispuesto a comprar
el fosfato puesto que el excedente del precio estaría por encima de las utilidades adicionales
que se obtendrían.
Se utiliza el término precio sombra para designar a las variables duales.
Solución empleando Solver:
Del modelo primal de programación lineal:
Maximizar Z = 18.5 X1 + 20 X2
Sujeto a:
0.05 X1 + 0.05 X2 + X3 = 1100
0.05 X1 + 0.10 X2 + X4 = 1800
0.10 X1 + 0.05 X2 + X5 = 2000
X1, X2 ≥ 0
M icrosoft Excel 11.0 Inform e de respuestas
Hoja de cálculo: [AGRO .xls]H oja1
Inform e creado: 25/07/2008 12:11:23 p.m .
Celda objetivo (Máxim o)
Celda Nom bre Valor original Valor final
$D$3 Función objetivo 0 428000
Celdas cam biantes
Celda Nom bre Valor original Valor final
$B$2 Fertilizante X1 0 8000
$C$2 Fertilizante X2 0 14000
Restricciones
Celda Nom bre Valor de la celda fórm ula Estado Divergencia
$D$5 Restricciones LI 1100 $D$5<=$E$5Obligatorio 0
$D$6 LI 1800 $D$6<=$E$6Obligatorio 0
$D$7 LI 1500 $D$7<=$E$7Opcional 500
$B$2 Fertilizante X1 8000 $B$2>=0 Opcional 8000
$C$2 Fertilizante X2 14000 $C$2>=0 Opcional 14000
Informes generados en Excel:
M icrosoft Excel 11.0 In form e de sensib ilidad
H oja de cálcu lo: [AG R O .xls]H oja1
Inform e creado: 25/07/2008 12:22:42 p .m .
C eldas cam biantes
Valor G radiente C oeficiente Aum ento Aum ento
C elda N om bre Igual reducido objetivo perm isib le perm isib le
$B$2 Fertilizante X1 8000 0 18.5 1.5 8.5
$C $2 Fertilizante X2 14000 0 20 17 1.5
R estricc iones
Valor Som bra R estricción Aum ento Aum ento
C elda N om bre Igual precio lado derecho perm isib le perm isib le
$D $5 R estricc iones LI 1100 340 1100 166.6666667 200
$D $6 LI 1800 30 1800 400 500
$D $7 LI 1500 0 2000 1E+30 500
M icrosoft Excel 11.0 In form e de lím ites
H oja de cálcu lo: [AG R O .xls]In form e de lím ites 1
In form e creado: 25/07/2008 12:24:22 p .m .
C elda ob jetivo
C elda N om bre Igual
$D $3 Función objetivo 428000
C eldas cam biantes Lím ite C elda Lím ite C elda
C elda N om bre Igual in ferior objetivo superior objetivo
$B$2 Fertilizante X 1 8000 0 280000 7999.999998 428000
$C $2 Fertilizante X 2 14000 0 148000 14000 428000