Está en la página 1de 34

PROGRAMACIÓN LINEAL

1) Un paciente requiere una dieta estricta con dos alimentos 𝐴 y 𝐵. Cada unidad del alimento
𝐴 contiene 120 calorías y 2 gramos de proteínas. La unidad del alimento 𝐵 contiene 100
calorías y 5 gramos de proteínas. La dieta requiere como mínimo de 1000 calorías y 30
gramos de proteínas. Si el precio de cada unidad del alimento 𝐴 es de $6000 y de cada unidad
del alimento 𝐵 es de $8000. ¿Cuántas unidades de cada alimento debe contener la dieta para
que el costo sea mínimo?
Solución:

Sean:
𝑥: la cantidad de unidades del alimento 𝐴
𝑦: la cantidad de unidades del alimento 𝐵
Función objetivo:
𝐹 (𝑥, 𝑦) = 6000. 𝑥 + 8000. 𝑦 = 𝑀í𝑛𝑖𝑚𝑜
Restricciones:
120. 𝑥 + 100. 𝑦 ≥ 1000 calorías ⇒ 6. 𝑥 + 5𝑦 ≥ 50 (dividiendo por 20)
2. 𝑥 + 5. 𝑦 ≥ 30 gramos
𝑥≥0
𝑦≥0
El punto 𝐶 es la intersección de las rectas:
6. 𝑥 + 5𝑦 = 50
2. 𝑥 + 5. 𝑦 = 30

|50 5| 250 − 150 100


𝑥 = 30 5 = = =5
6 5 30 − 10 20
| |
2 5

1
PROGRAMACIÓN LINEAL

|6 50|
𝑦= 2 30 = 180 − 100 = 80 = 4
6 5 30 − 10 20
| |
2 5

En el punto 𝐴:
𝐹 (0,10) = 6000. (0) + 8000. (10) = 80000
En el punto 𝐵:
𝐹 (15,0) = 6000. (15) + 8000. (0) = 90000
En el punto 𝐶:
𝐹 (5,4) = 6000. (5) + 8000. (4) = 62000
El punto que satisface la condición de la función objetivo es el vértice 𝐶:
𝑥 = 4 unidades del alimento 𝐴
𝑦 = 5 unidades del alimento 𝐵
2) Una máquina produce dos tipos de televisores 𝐴 y 𝐵. Para fabricarlos se necesita un tiempo
de producción en máquinas y un acabado a mano que realizan los operarios. La venta del
modelo 𝐴 necesita 2 horas en las máquinas y media hora de trabajo a mano, y produce un

2
PROGRAMACIÓN LINEAL

beneficio de 60 dólares. La venta del modelo 𝐵 necesita 3 horas en las máquinas y un cuarto
hora de trabajo a mano, y produce un beneficio de 55 dólares.
Se dispone de un total de 300 horas de trabajo en máquinas y 60 horas de trabajo a mano.
Entre los dos tipos de televisor han de fabricarse por lo menos 90. ¿Qué cantidad de
televisores de cada tipo ha de producirse para que el beneficio sea el máximo?
Solución:

Sean:
𝑥: la cantidad de televisores tipo 𝐴
𝑦: la cantidad de televisores tipo 𝐵
Función objetivo:
𝐹 (𝑥, 𝑦) = 60. 𝑥 + 55. 𝑦 = 𝑀á𝑥𝑖𝑚𝑜
Restricciones:
0,5. 𝑥 + 0,25. 𝑦 ≤ 60 (horas a mano)
Equivalentemente:
𝑥 𝑦
+ ≤ 60
2 4
Multiplicando por 4:
2. 𝑥 + 𝑦 ≤ 240
𝑥 + 𝑦 ≥ 90 (Total de televisores)
2. 𝑥 + 3. 𝑦 ≤ 300 (horas en máquina)
𝑥≥0
𝑦≥0
La región factible se muestra en la siguiente figura:

3
PROGRAMACIÓN LINEAL

El punto 𝐸 es la intersección de las rectas:


2. 𝑥 + 3. 𝑦 = 300
2. 𝑥 + 𝑦 = 240
Restando estas dos ecuaciones resulta:
60
2. 𝑦 = 60 ⟹ 𝑦 = = 30
2
Luego:
240 − 30 210
2. 𝑥 + 30 = 240 ⟹ 𝑥 = = = 105
2 2
En el punto 𝐴:
𝐹 (0,100) = 60. (0) + 55. (100) = 5500
En el punto 𝐵:
𝐹 (120,0) = 60. (120) + 55. (0) = 7200
En el punto 𝐶:

4
PROGRAMACIÓN LINEAL

𝐹 (0,90) = 60. (0) + 55. (90) = 4950


En el punto 𝐷:
𝐹 (90,0) = 60. (90) + 55. (0) = 5400
En el punto 𝐸:
𝐹 (105,30) = 60. (105) + 55. (30) = 7950
El punto que satisface la condición de la función objetivo es el vértice 𝐹:
𝑥 = 105 televisores tipo 𝐴
𝑦 = 30 televisores tipo 𝐵
Beneficio: 7950 𝑑ó𝑙𝑎𝑟𝑒𝑠.
3) La candidatura de un determinado grupo político para las elecciones municipales debe
cumplir los siguientes requisitos: El número total de candidatos debe estar comprendido entre
6 y 18 y el número de hombres no debe exceder al doble de mujeres. ¿Cuál es el mayor
número de hombres que puede ser candidato de este grupo político?
Solución:
Sean:
𝑥: número de hombres
𝑦: número de mujeres
Función objetivo:
𝐹 (𝑥, 𝑦) = 𝑥 = 𝑀á𝑥𝑖𝑚𝑜
Restricciones:
𝑥+𝑦 ≥6
𝑥 + 𝑦 ≤ 18
𝑥 ≤ 2. 𝑦
𝑥≥0
𝑦≥0
Como la función a maximizar es 𝐹 (𝑥, 𝑦) = 𝑥, el máximo ocurre en el punto 𝐷 = (12,6).
Luego:
𝑥=12 hombres
𝑦 = 6 mujeres

5
PROGRAMACIÓN LINEAL

4) Un orfebre fabrica dos tipos de joyas. Las del tipo 𝐴 precisan 1 g de oro y 1,5 g de plata,
vendiéndolas a 40 euros cada una. Para la fabricación de las de tipo 𝐵 emplea 1,5 g de oro
y 1 g de plata, y las vende a 50 euros. El orfebre tiene solo en el taller 750 g de cada uno de
los metales. Calcula cuántas joyas ha de fabricar de cada clase para obtener un beneficio
máximo.
Solución: Llamamos 𝑥 al número de joyas del tipo 𝐴 e 𝑦 al número de joyas del tipo 𝐵.
Resumimos los datos en una tabla:

Función objetivo:
𝐹 (𝑥, 𝑦) = 40. 𝑥 + 50. 𝑦 = 𝑀á𝑥𝑖𝑚𝑜
Restricciones:
1. 𝑥 + 1,5. 𝑦 ≤ 750
1,5. 𝑥 + 1. 𝑦 ≤ 750
𝑥≥0
6
PROGRAMACIÓN LINEAL

𝑦≥0

En el punto 𝐴:
𝐹 (0,500) = 40. (0) + 50. (500) = 25000
En el punto 𝐵:
𝐹 (0,500) = 40. (500) + 50. (0) = 20000
En el punto 𝐶:
𝐹 (300,300) = 40. (300) + 50. (300) = 27000
El máximo se alcanza en el punto 𝐶(300,300). Por tanto, ha de fabricar 300 joyas del tipo
𝐴 y 300 del tipo 𝐵 para obtener el máximo beneficio. Los ingresos en este caso serían 27
000 euros.
5) Una firma de contadores públicos especializados en preparar liquidaciones y pago de impuestos y
también auditorías en empresas pequeñas. El interés es saber cuántas auditorías y liquidaciones
pueden realizar mensualmente, de tal manera que obtengan los máximos ingresos. Se dispone de 800
horas para trabajo directo y dirección y 320 horas para revisión. Una auditoría en promedio requiere
de 40 horas de trabajo directo y dirección y 10 horas de revisión, además aporta un ingreso de 300
dls. Una liquidación de impuestos requiere de 8 horas de trabajo directo y dirección y 5 horas de
revisión y produce un ingreso de 100 dls. Se pueden realizar tantas auditorías como se desee, pero el
máximo de liquidaciones mensuales disponibles es de 60.

Solución:
Definamos primero las variables de decisión:

7
PROGRAMACIÓN LINEAL

𝑥1 : Cantidad de auditorías mensuales.


𝑥2 : Cantidad de liquidaciones mensuales.
Función objetivo:
Maximizar: 𝑍 = 300. 𝑥1 + 100. 𝑥2

Restricciones:
40. 𝑥1 + 8. 𝑥2 ≤ 800: Tiempo disponible para trabajo directo y dirección.
10. 𝑥1 + 5. 𝑥2 ≤ 320: Tiempo disponible para trabajo de revisión.
𝑥2 ≤ 60
𝑥1 , 𝑥2 ≥ 0

6) Una confitería es famosa por sus dos especialidades de tartas: la tarta Imperial y la tarta
de Lima. La tarta Imperial requiere para su elaboración medio kilo de azúcar y 8 huevos y
tiene un precio de venta de 8€. La tarta de Lima necesita 1 kilo de azúcar y 8 huevos, y tiene
un precio de venta de 10€. En el almacén les quedaban 10 kilos de azúcar y 120 huevos. a)
¿Qué combinación es de especialidad es pueden hacer?
b) ¿Cuántas unidades de cada especialidad han de producirse para obtener el mayor ingreso
por ventas?

8
PROGRAMACIÓN LINEAL

Solución:
Definamos primero las variables de decisión:
𝑥1 : Número de tortas tipo Imperial.
𝑥2 : Número de tortas tipo Lima.
Función objetivo:
Maximizar: 𝑍 = 8. 𝑥1 + 10. 𝑥2

Restricciones:
0,5. 𝑥1 + 1. 𝑥2 ≤ 10: Kilos de azúcar.
8. 𝑥1 + 8. 𝑥2 ≤ 120: Cantidad de huevos.
𝑥1 , 𝑥2 ≥ 0

9
PROGRAMACIÓN LINEAL

Método Simplex: El Método Simplex publicado por George Dantzig en 1947 consiste en un
algoritmo iterativo que secuencialmente a través de iteraciones se va aproximando al óptimo
del problema de Programación Lineal en caso de existir esta última.
La primera implementación computacional del Método Simplex es el año 1952 para un
problema de 71 variables y 48 ecuaciones. Su resolución tarda 18 horas. Luego, en 1956, un
código llamado RSLP1, implementado en un IBM con 4Kb en RAM, admite la resolución
de modelos con 255 restricciones.
El Método Simplex hace uso de la propiedad de que la solución óptima de un problema de
Programación Lineal se encuentra en un vértice o frontera del dominio de puntos factibles
(esto último en casos muy especiales), por lo cual, la búsqueda secuencial del algoritmo se
basa en la evaluación progresiva de estos vértices hasta encontrar el óptimo. Cabe destacar
que, para aplicar el Método Simplex a un modelo lineal, este debe estar en un formato
especial conocido como formato estándar el cual definiremos a continuación.
Forma estándar de un modelo de programación lineal:
Un problema de programación lineal es cuando la función objetivo 𝑍 es una función lineal y
las restricciones son inecuaciones lineales; un problema con 𝑚 restricciones y 𝑛 variables se
representa.
𝑀𝑎𝑥: 𝑍 = 𝑐1 . 𝑥1 + 𝑐2 . 𝑥2 + 𝑐3 . 𝑥3 + ⋯ + 𝑐𝑛 . 𝑥𝑛

Sujeta a:
𝑎11 . 𝑥1 + 𝑎12 . 𝑥2 + ⋯ + 𝑎1𝑛 . 𝑥𝑛 ≤ 𝑏1
𝑎21 . 𝑥1 + 𝑎22 . 𝑥2 + ⋯ + 𝑎2𝑛 . 𝑥𝑛 ≤ 𝑏2
𝑎31 . 𝑥1 + 𝑎32 . 𝑥2 + ⋯ + 𝑎3𝑛 . 𝑥𝑛 ≤ 𝑏3

𝑎𝑚1 . 𝑥1 + 𝑎𝑚2 . 𝑥2 + ⋯ + 𝑎𝑚𝑛 . 𝑥𝑛 ≤ 𝑏𝑚
Además:
𝑥1 ≥ 0, 𝑥2 ≥ 0, 𝑥3 ≥ 0, ⋯ , 𝑥𝑛 ≥ 0
𝑏1 ≥ 0, 𝑏2 ≥ 0, 𝑏3 ≥ 0, ⋯ , 𝑏𝑛 ≥ 0
Utilizaremos la siguiente notación:
𝑐𝑗 : Coeficiente de la variable 𝑥𝑗 (𝑗 = 1,2,3, ⋯ 𝑛 ) en la función objetivo 𝑍.

𝑏𝑖 : Valor del lado derecho para la restricción 𝑖 (𝑖 = 1,2,3, ⋯ 𝑚).


𝑎𝑖𝑗 : Coeficiente de la variable de decisión.

10
PROGRAMACIÓN LINEAL

Para emplear el método simplex se requiere transformar las inecuaciones en ecuaciones,


cuando las restricciones son inecuaciones con menor o igual (≤), para transformarlas en
ecuaciones, agregamos a cada restricción una nueva variable no negativa llamada variable de
holgura 𝑠.
Cuando las restricciones son ecuaciones con igualdades (=), agregamos una variable 𝐴 no
negativa, llamada variable artificial.
Cuando las restricciones son ecuaciones con igualdades (≥), agregamos una variable 𝐴 no
negativa, llamada variable artificial y restamos una variable de exceso no negativa 𝑠.
Variables Artificiales: Una variable artificial es un truco matemático para convertir
inecuaciones "≥" en ecuaciones, o cuando aparecen igualdades en el problema original, la
característica principal de estas variables es que no deben formar parte de la solución, dado
que no representan recursos. El objetivo fundamental de estas variables es la formación de la
matriz identidad.
Estas variables se representa por la letra "𝐴", siempre se suman a las restricciones, su
coeficiente es 𝑀 (por esto se le denomina Método de la 𝑀 grande, donde 𝑀 significa un
número demasiado grande muy poco atractivo para la función objetivo), y el signo en la
función objetivo va en contra del sentido de la misma, es decir, en problemas de
Maximización su signo es menos (−) y en problemas de Minimización su signo es (+),
repetimos con el objetivo de que su valor en la solución sea cero (0).

En un problema de programación lineal con 𝑛 variables (incluyendo las de holgura) y 𝑚


ecuaciones, para hallar una solución básica, se igualan a cero 𝑛 − 𝑚 variables, las cuales se
denominan no básicas, y las restantes se denominan variables básicas.
Las variables no básicas son un conjunto de variables de un problema de programación lineal
en forma estándar, cuyos valores se toman como cero.

11
PROGRAMACIÓN LINEAL

Las variables básicas son un conjunto de variables de un problema de programación lineal


en forma estándar, cuyos valores son diferentes de cero.
Una solución básica es factible cuando todas las variables toman valores no negativos.
Ejemplo: Una fábrica de muebles produce dos tipos de escritorios. Tipo I y tipo II, en los
departamentos de corte, armado y acabado. El número de horas disponibles de cada
departamento son de 80 horas, 220 horas y 210 horas respectivamente. Las horas que se
requieren en la producción en cada departamento para cada tipoi de escritorio se da en la
siguiente tabla:

Si la utilidad para cada unidad de escritorios del tipo I y del tipo II son US $5 y US $6
respectivamente. ¿Cuántas unidades de cada tipo se deben fabricar mensualmente para
maximizar la utilidad y cuál es esa utilidad?
Solución:
1) Definición de las variables de decisión:
Sean:

𝑥1 : número de escritorios del tipo I.


𝑥2 : número de escritorios del tipo II.

2) Planteamiento del problema (función objetivo):


Utilidad:

𝑍 = 5. 𝑥1 + 6. 𝑥2 = 𝑀á𝑥𝑖𝑚𝑜

3) Restricciones:

𝑥1 + 𝑥2 ≤ 80 Disponibilidad del departamento de corte en horas.

3. 𝑥1 + 2. 𝑥2 ≤ 220 Disponibilidad del departamento de Armado en horas.

2. 𝑥1 + 3. 𝑥2 ≤ 210 Disponibilidad del departamento de Acabado en horas.

𝑥1 , 𝑥2 , 𝑥3 ≥ 0

12
PROGRAMACIÓN LINEAL

De acuerdo con la discusión anterior debemos escribir el problema de optimización en la


forma estándar:
Maximizar: 𝑍 = 5. 𝑥1 + 6. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 0. 𝑠3
Sujeto a:
1. 𝑥1 + 1. 𝑥2 + 1. 𝑠1 + 0. 𝑠2 + 0. 𝑠3 = 80
3. 𝑥1 + 2. 𝑥2 + 0. 𝑠1 + 1. 𝑠2 + 0. 𝑠3 = 220
2. 𝑥1 + 3. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 1. 𝑠3 = 210
𝑥1 , 𝑥2 , 𝑥3 ≥ 0
Las variables que involucra el problema son 𝑥1 , 𝑥2 , 𝑠1, 𝑠2, 𝑠3, donde 𝑥1 , 𝑥2 son variables de
decisión y 𝑠1, 𝑠2, 𝑠3 son variables de holgura.
La solución básica factible inicial es:
𝑥1 = 0, 𝑥2 = 0, 𝑠1 = 80, 𝑠2 = 220, 𝑠3 = 210.
Donde 𝑠1, 𝑠2, 𝑠3 son variables básicas.
Tabla simplex inicial:

13
PROGRAMACIÓN LINEAL

La columna denominada 𝑏𝑎𝑠𝑒 corresponde a un listado de las variables básicas del momento.
La columna 𝑐𝑗 son los coeficientes de las variables básicas de la función objetivo 𝑍 .

La fila marcada 𝑧𝑗 se obtienen como la suma de los productos de la columna 𝑐𝑗 por los
coeficientes asociados a las variables (𝑥1 , 𝑥2 , 𝑠1, 𝑠2, 𝑠3):
𝑧1 = 0(1) + 0(3) + 0(2) = 0
𝑧2 = 0(1) + 0(2) + 0(3) = 0
𝑧3 = 0(1) + 0(0) + 0(0) = 0
𝑧4 = 0(0) + 0(1) + 0(0) = 0
𝑧5 = 0(0) + 0(0) + 0(1) = 0
La fila marcada 𝑐𝑗 − 𝑧𝑗 se obtienen como la diferencia entre los coeficientes 𝑐𝑗 de la función
objetivo y los valores correspondientes 𝑧𝑗 :

𝑐1 − 𝑧1 = 5 − 0 = 5
𝑐2 − 𝑧2 = 6 − 0 = 6
𝑐3 − 𝑧3 = 0 − 0 = 0
𝑐4 − 𝑧4 = 0 − 0 = 0
𝑐5 − 𝑧5 = 0 − 0 = 0
Los coeficientes 𝑐𝑗 − 𝑧𝑗 se denominan indicadores.

La utilidad 𝑍 se calcula con la suma de los productos de los elementos correspondientes en


las columnas 𝑐𝑗 y 𝑏𝑖 :

𝑍 = 0(80) + 0(220) + 0(210) = 0

14
PROGRAMACIÓN LINEAL

Ahora hay que determinar cuál es la variable básica que se debe convertir en no básica, para
ello buscamos el mayor indicador positivo:
𝑐2 − 𝑧2 = 6 − 0 = 6
La columna que contiene el mayor indicador positivo se denomina columna pivote:

Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥2 (en caso de encontrar empates se escoge
la fila que esté más arriba), y a la fila que lo contiene la denominamos fila pivote.
Nota: Las divisiones entre cero o entre números negativos no se toman en cuenta. Si todas
son negativas o indeterminadas, el problema no tiene solución. Y se termina el proceso.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 3.
Por medio de operaciones elementales entre renglones, los demás elementos de la columna
pivote por medio del elemento pivote se deben convertir en ceros; con esto se obtiene una
nueva columna de la matriz identidad.
La variable entrante es 𝑥2 y la variable saliente es 𝑠3:

15
PROGRAMACIÓN LINEAL

De nuevo, la columna 𝑐𝑗 son los coeficientes de las variables básicas de la función objetivo
𝑍.
La fila marcada 𝑧𝑗 se obtienen como la suma de los productos de la columna 𝑐𝑗 por los
coeficientes asociados a las variables (𝑥1 , 𝑥2 , 𝑠1, 𝑠2, 𝑠3):
𝑧1 = 0(1/3) + 0(5/3) + 6(2/3) = 4
𝑧2 = 0(0) + 0(2) + 6(1) = 6
𝑧3 = 0(1) + 0(0) + 6(0) = 0
𝑧4 = 0(0) + 0(1) + 6(0) = 0
𝑧5 = 0(−1/3) + 0(−2/3) + 6(1/3) = 2
Como antes, la fila marcada 𝑐𝑗 − 𝑧𝑗 se obtienen como la diferencia entre los coeficientes 𝑐𝑗
de la función objetivo y los valores correspondientes 𝑧𝑗 :

𝑐1 − 𝑧1 = 5 − 4 = 1
𝑐2 − 𝑧2 = 6 − 6 = 0
𝑐3 − 𝑧3 = 0 − 0 = 0
𝑐4 − 𝑧4 = 0 − 0 = 0
𝑐5 − 𝑧5 = 0 − 2 = −2
La utilidad 𝑍 se calcula con la suma de los productos de los elementos correspondientes en
las columnas 𝑐𝑗 y 𝑏𝑖 :

𝑍 = 0(10) + 0(80) + 6(70) = 420


Como todavía aparece un elemento positivo en los indicadores 𝑐𝑗 − 𝑧𝑗 , repetimos el proceso:

16
PROGRAMACIÓN LINEAL

Hay que determinar cuál es la variable básica que se debe convertir en no básica, para ello
buscamos el mayor indicador positivo:
𝑐1 − 𝑧1 = 1
La columna que contiene el mayor indicador positivo se denomina columna pivote.
Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥1 , y a la fila que lo contiene la
denominamos fila pivote.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 1/3.

Por medio de operaciones elementales entre renglones, los demás elementos de la columna
pivote por medio del elemento pivote se deben convertir en ceros; con esto se obtiene una
nueva columna de la matriz identidad.
La variable entrante es 𝑥1 y la variable saliente es 𝑠1 :

17
PROGRAMACIÓN LINEAL

Como ya no aparece un elemento positivo en los indicadores 𝑐𝑗 − 𝑧𝑗 , se termina el proceso.

Zmax = 450
𝑥1 = 30: número de escritorios del tipo I.
𝑥2 = 50: número de escritorios del tipo II.
𝑠2 = 30: Holgura del departamento de Armado.
Como:
1. 𝑥1 + 1. 𝑥2 + 1. 𝑠1 + 0. 𝑠2 + 0. 𝑠3 = 80 , entonces 𝑠1 = 0
2. 𝑥1 + 3. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 1. 𝑠3 = 210 , entonces 𝑠3 = 0
Es decir, se utilizan todas las horas disponibles en los departamentos de corte y acabado.
Ejemplo: Una mueblería fabrica escritorios, mesas y sillas. La fabricación requiere de
materia prima y de mano de obra. La mano de obra se clasifica en dos tipos: carpintería y
terminaciones. La cantidad de recurso requerido para cada tipo de producto se muestra en la
tabla. Actualmente se dispone de 48 pulgadas madereras, 20 horas para terminaciones y 8
horas para carpintería. Cada escritorio se vende a US $60, cada mesa a US $30 y cada silla a
US $20. La empresa piensa que la demanda por escritorios y sillas es ilimitada, pero cree que
se venderían a lo más 5 mesas. Debido a que los recursos ya han sido adquiridos, la empresa
desea maximizar su beneficio.
Recurso Escritorios Mesas Sillas
Materiales (pulgada maderera) 8 6 1
Terminaciones (horas) 4 2 1,5
Carpintería (horas) 2 1,5 0,5

Considerando las siguientes variables:


𝑥1 : Número de escritorios producidos
𝑥2 : Número de mesas producidas
𝑥3 : Número de sillas producidas
Se puede construir el siguiente modelo:
𝑀𝑎𝑥: 𝑍𝑚𝑎𝑥 = 60. 𝑥1 + 30. 𝑥2 + 20. 𝑥3

Restricciones:
8. 𝑥1 + 6. 𝑥2 + 1. 𝑥3 ≤ 48 (a) Materiales
4. 𝑥1 + 2. 𝑥2 + 1,5. 𝑥3 ≤ 20 (b) Terminaciones
2. 𝑥1 + 1,5. 𝑥2 + 0,5. 𝑥3 ≤ 8 (c) Carpintería
𝑥2 ≤ 5 (d) Demanda de mesas
𝑥1 , 𝑥2 , 𝑥3 ≥ 0
18
PROGRAMACIÓN LINEAL

Paso 1: Comenzamos el método Simplex transformando las restricciones a su forma


estándar. Para ello en cada restricción de tipo ≤ incorporamos variables de holgura 𝑠1 , 𝑠2,
𝑠3 y 𝑠4 .
8. 𝑥1 + 6. 𝑥2 + 1. 𝑥3 + 1. 𝑠1 = 48
4. 𝑥1 + 2. 𝑥2 + 1,5. 𝑥3 + 1. 𝑠2 = 20
2. 𝑥1 + 1,5. 𝑥2 + 0,5. 𝑥3 + 1. 𝑠3 = 8
𝑥2 + 1. 𝑠4 = 5
Las variables que involucra el problema son 𝑥1 , 𝑥2 , 𝑥3 , 𝑠1 , 𝑠2, 𝑠3, 𝑠4 , donde 𝑥1 , 𝑥2 , 𝑥3 son
variables de decisión y 𝑠1, 𝑠2, 𝑠3, 𝑠4 son variables de holgura.
La solución básica factible inicial es:
𝑥1 = 0, 𝑥2 = 0, 𝑥3 = 0, 𝑠1 = 48, 𝑠2 = 20, 𝑠3 = 8, 𝑠4 = 5.
Donde 𝑠1, 𝑠2, 𝑠3, 𝑠4 son variables básicas.
Paso 2: Formar la tabla simplex o tabla inicial.

Paso 3: La columna que contiene el mayor indicador positivo se denomina columna pivote:

19
PROGRAMACIÓN LINEAL

Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥1 , y a la fila que lo contiene la


denominamos fila pivote.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 2.
Por medio de operaciones elementales entre renglones, los demás elementos de la columna
pivote por medio del elemento pivote se deben convertir en ceros; con esto se obtiene una
nueva columna de la matriz identidad.
La variable entrante es 𝑥1 y la variable saliente es 𝑠3:

Como todavía aparece un elemento positivo en los indicadores 𝑐𝑗 − 𝑧𝑗 , repetimos el proceso:

Paso 4: La nueva columna pivote es la columna que contiene el mayor indicador positivo:5

20
PROGRAMACIÓN LINEAL

Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥3 , y a la fila que lo contiene la


denominamos fila pivote.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 0,5.

Por medio de operaciones elementales entre renglones, los demás elementos de la columna
pivote por medio del elemento pivote se deben convertir en ceros; con esto se obtiene una
nueva columna de la matriz identidad.
La variable entrante es 𝑥3 y la variable saliente es 𝑠2:

Como ya no aparece un elemento positivo en los indicadores 𝑐𝑗 − 𝑧𝑗 , terminamos el proceso:

𝑠1 = 24

21
PROGRAMACIÓN LINEAL

𝑠4 = 5
𝑥1 = 2
𝑥3 = 8
𝑍 = 280
Como:
8. 𝑥1 + 6. 𝑥2 + 1. 𝑥3 + 1. 𝑠1 = 48
Entonces:
8(2) + 6. 𝑥2 + 1(8) + 1. (24) = 48
6. 𝑥2 = 0 ⟹ 𝑥2 = 0
Ejemplo: Imaginemos que las necesidades semanales mínimas de una persona en proteínas,
hidratos de carbono y grasas son respectivamente 8, 12 y 9 unidades. Supongamos que
debemos tener un preparado con esa composición mínima mezclando 2 productos 𝐴 y 𝐵,
cuyos contenidos por kilogramo son los que se indican en la siguiente tabla:
PRODUCTO PROTEINAS HIDRATOS GRASAS COSTO
𝐴 2 6 1 600
𝐵 1 1 3 400
Necesidades 8 12 9

¿Cuántos kilogramos de cada producto deberán comprarse semanalmente para que el costo
de preparar la dieta sea mínimo?
Solución:
Variables de decisión:
𝑥1 : Cantidad en kilogramos del producto 𝐴.
𝑥2 : Cantidad en kilogramos del producto 𝐵.
Función objetivo:
Minimizar: 𝑍 = 600. 𝑥1 + 400. 𝑥2

Restricciones:
2. 𝑥1 + 1. 𝑥2 ≥ 8
6. 𝑥1 + 1. 𝑥2 ≥ 12
1. 𝑥1 + 3. 𝑥2 ≥ 9
𝑥1 , 𝑥2 ≥ 0

22
PROGRAMACIÓN LINEAL

Solución:
Convertimos las inecuaciones en ecuaciones:
Para convertir una restricción de tipo ≥ en una restricción de igualdad, se de finen las
variables de exceso 𝑠1, 𝑠2 y 𝑠3 y las variables artificiales 𝐴1 , 𝐴2 y 𝐴3 .
Minimizar 𝑍 = 600. 𝑥1 + 400. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 0. 𝑠3 + 𝑀. 𝐴1 + 𝑀. 𝐴2 + 𝑀. 𝐴3

Sujeto a:
2. 𝑥1 + 1. 𝑥2 + 𝐴1 − 𝑠1 = 8
6. 𝑥1 + 1. 𝑥2 + 𝐴2 − 𝑠2 = 12
1. 𝑥1 + 3. 𝑥2 + 𝐴3 − 𝑠3 = 9
𝑥1 , 𝑥2 , 𝑠1 , 𝑠2 , 𝑠3 , 𝐴1 , 𝐴2 , 𝐴3 ≥ 0
Nota: Si el problema fuera de maximización escribiríamos:

23
PROGRAMACIÓN LINEAL

Maximizar 𝑍 = 600. 𝑥1 + 400. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 0. 𝑠3 − 𝑀. 𝐴1 − 𝑀. 𝐴2 − 𝑀. 𝐴3

Construimos la tabla simplex inicial:

En la primera fila se colocan todas las variables, en la segunda fila 𝑐𝑗 se colocan los
coeficientes de la función objetivo. En las siguientes 3 filas se colocan los coeficientes de las
restricciones.
El procedimiento para calcular los coeficientes 𝑧𝑗 de la sexta fila, es el siguiente:
𝑧1 = 𝑀. 2 + 𝑀. 6 + 𝑀. 1 = 9. 𝑀
𝑧2 = 𝑀. 1 + 𝑀. 1 + 𝑀. 3 = 5. 𝑀

𝑧3 = 𝑀. (−1) + 𝑀. 0 + 𝑀. 0 = −𝑀

𝑧4 = 𝑀. 0 + 𝑀. (−1) + 𝑀. 0 = −𝑀
𝑧5 = 𝑀. 0 + 𝑀. 0 + 𝑀. (−1) = −𝑀

𝑧6 = 𝑀. 1 + 𝑀. 0 + 𝑀. 0 = 𝑀
𝑧7 = 𝑀. 0 + 𝑀. 1 + 𝑀. 0 = 𝑀
𝑧8 = 𝑀. 0 + 𝑀. 0 + 𝑀. 1 = 𝑀
𝑧9 = 𝑀. 8 + 𝑀. 12 + 𝑀. 9 = 29. 𝑀
El óptimo se alcanza cuando se cumple que:

𝑐𝑗 − 𝑧𝑗 ≥ 0 ∀𝑗

Selección columna pivote:


De los coeficientes del renglón 𝑐𝑗 − 𝑧𝑗 (indicadores) se toma el que tenga el mayor valor
negativo (número menor) (cuando se trata de una minimización) y se selecciona toda la
columna. La variable de esta columna es la que entra al sistema (pasa a ser básica).

24
PROGRAMACIÓN LINEAL

Selección fila pivote:


Se divide el coeficiente de la columna “Solución” entre el elemento correspondiente
de la columna pivote, y de los resultados de la división se selecciona el menor valor positivo
y todo el renglón asociado con este valor. Ésta es la variable que sale de la base (pasa a ser
no básica).

El elemento pivote es 6.
La variable que entra se escribe en el lugar de la variable que sale, 𝑥1 en el lugar de 𝐴2 , para
esta tabla, y que lo que se busca es formar una columna con un 1 en el lugar de las
intersecciones, esto es, obtener un elemento pivote y ceros en los demás sitios de la misma
columna.
Dividimos la fila pivote entre 6:

25
PROGRAMACIÓN LINEAL

Como todavía hay elementos negativos en 𝑐𝑗 − 𝑧𝑗 el procedimiento aún no ha terminado.

De los coeficientes del renglón 𝑐𝑗 − 𝑧𝑗 se toma el que tenga el mayor valor negativo
(número menor) y se selecciona toda la columna. La variable de esta columna es la que entra
al sistema (pasa a ser básica).
Se divide el coeficiente de la columna “Solución” entre el elemento correspondiente
de la columna pivote, y de los resultados de la división se selecciona el menor valor positivo
y todo el renglón asociado con este valor. Ésta es la variable que sale de la base (pasa a ser
no básica).

El elemento pivote es 17/6.


La variable que entra se escribe en el lugar de la variable que sale, 𝑥1 en el lugar de 𝐴3 , para
esta tabla, y que lo que se busca es formar una columna con un 1 en el lugar de las
intersecciones, esto es, obtener un elemento pivote y ceros en los demás sitios de la misma
columna.
Multiplicamos la fila pivote por 6/17:

26
PROGRAMACIÓN LINEAL

Como todavía hay elementos negativos en 𝑐𝑗 − 𝑧𝑗 el procedimiento aún no ha terminado.

De los coeficientes del renglón 𝑐𝑗 − 𝑧𝑗 se toma el que tenga el mayor valor negativo
(número menor) y se selecciona toda la columna. La variable de esta columna es la que entra
al sistema (pasa a ser básica).
Se divide el coeficiente de la columna “Solución” entre el elemento correspondiente
de la columna pivote, y de los resultados de la división se selecciona el menor valor positivo
y todo el renglón asociado con este valor. Ésta es la variable que sale de la base (pasa a ser
no básica).

El elemento pivote es 5/17.


La variable que entra se escribe en el lugar de la variable que sale, 𝑠2 en el lugar de 𝐴1 , para
esta tabla, y que lo que se busca es formar una columna con un 1 en el lugar de las
intersecciones, esto es, obtener un elemento pivote y ceros en los demás sitios de la misma
columna.
Multiplicamos la fila pivote por 17/5:

27
PROGRAMACIÓN LINEAL

Como ya no hay elementos negativos en 𝑐𝑗 − 𝑧𝑗 el procedimiento ha terminado, por lo tanto,


se llega a la solución óptima con el valor de las variables como:

𝑥1 = 3
𝑥2 = 2
𝑍𝑚𝑖𝑛 = 2600

Ejemplo: La compañía Propapel S.A, produce papel bond para oficina de diferente tamaño,
carta y oficio. Para elaborarlos se utilizan dos máquinas de impresión que le dan el color,
máquinas I y II. En la máquina I se requieren 2 horas para la elaboración de una tonelada de
papel tamaño carta y 2 horas para el papel tamaño oficio: en la máquina II se requieren 2
horas para la elaboración de una tonelada de papel tamaño carta y 6 horas para una tonelada
de papel tamaño oficio. La máquina I, para efectos de costo, puede trabajar máximo 8 horas,
mientras que la máquina II debe trabajar por lo menos 12 horas.
Cuántas toneladas de papel tamaño carta y oficio deben producirse con el fin de minimizar
el costo, si el costo por unidad de cada tonelada de papel es de 1,5 y 2 dólares para carta y
oficio respectivamente.
Solución:

28
PROGRAMACIÓN LINEAL

Definamos primero las variables de decisión:


𝑥1 : Número de toneladas de papel tamaño carta.
𝑥2 : Número de toneladas de papel tamaño oficio.
Función objetivo:
Minimizar: 𝑍 = 1,5. 𝑥1 + 2. 𝑥2

Restricciones:
2. 𝑥1 + 2. 𝑥2 ≤ 8 Tiempo disponible para la máquina I
2. 𝑥1 + 6. 𝑥2 ≥ 12 Tiempo disponible para la máquina II
𝑥1 , 𝑥2 ≥ 0
Paso 1: Comenzamos el método Simplex transformando las restricciones a su forma
estándar. Para ello en la restricción de tipo ≤ incorporamos la variable de holgura 𝑠1. Para
convertir la restricción de tipo ≥ en una restricción de igualdad, se definen la variable de
exceso 𝑠2 y la variable artificial 𝐴2 .
La función objetivo toma la forma:
Minimizar 𝑍 = 1,5. 𝑥1 + 2. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 𝑀. 𝐴2

Sujeto a:
2. 𝑥1 + 2𝑥2 + 𝑠1 = 8
2. 𝑥1 + 6. 𝑥2 + 𝐴2 − 𝑠2 = 12
𝑥1 , 𝑥2 , 𝑠1 , 𝑠2 , 𝐴2 ≥ 0
Las variables que involucra el problema son 𝑥1 , 𝑥2 𝑠1, 𝑠2, donde 𝑥1 , 𝑥2 son variables de
decisión y 𝑠1, 𝑠2 son variables de holgura y 𝐴2 es la variable artificial.
Donde 𝑠1, 𝐴2 son variables básicas.
Paso 2: Formar la tabla simplex o tabla inicial.

29
PROGRAMACIÓN LINEAL

Paso 3: Selección columna pivote: Como estamos resolviendo un problema de minimización,


de los indicadores (coeficientes del renglón 𝑐𝑗 − 𝑧𝑗 ) se toma el que tenga el mayor valor
negativo (número menor) y se selecciona toda la columna. La variable de esta columna es la
que entra al sistema (pasa a ser básica).
Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥2 , y a la fila que lo contiene la
denominamos fila pivote.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 6.

Por medio de operaciones elementales entre renglones, los demás elementos de la columna
pivote por medio del elemento pivote se deben convertir en ceros; con esto se obtiene una
nueva columna de la matriz identidad.
La variable entrante es 𝑥2 y la variable saliente es 𝐴2 . Eliminando la columna 𝐴2 , obtenemos
la siguiente tabla:

30
PROGRAMACIÓN LINEAL

Puesto que el mínimo se alcanza cuando se cumple que:


𝑐𝑗 − 𝑧𝑗 ≥ 0 ∀𝑗

El proceso finaliza y:
𝑠1 = 4
𝑥2 = 2: Número de toneladas de papel tamaño oficio.
𝑍𝑚𝑖𝑛 = 4 dólares
Como:
2. 𝑥1 + 2𝑥2 + 𝑠1 = 8
Se obtiene:
2. 𝑥1 + 2(2) + 4 = 8 ⟹ 𝑥1 = 0
𝑥1 = 0: Número de toneladas de papel tamaño carta.
Ejemplo: Una compañía fabrica dos productos, 𝐴 y 𝐵. El volumen de ventas de 𝐴 es por lo
menos 80% de las ventas totales de 𝐴 y de 𝐵. Sin embargo, la compañía no puede vender
más de 100 unidades de 𝐴 por día. Ambos productos utilizan una materia prima, cuya
disponibilidad diaria máxima es de 240 lb. Las tasas de consumo de la materia prima son de
2 lb por unidad de 𝐴 y de 4 lb por unidad de 𝐵. Las utilidades de 𝐴 y de 𝐵 son $20 y $50,
respectivamente.
Determine la combinación óptima de productos para la compañía.
Solución:
Definamos primero las variables de decisión:
𝑥1 : Número de unidades del producto 𝐴.
𝑥2 : Número de unidades del producto 𝐵.
Función objetivo:

31
PROGRAMACIÓN LINEAL

Maximizar: 𝑍 = 20. 𝑥1 + 50. 𝑥2

Restricciones:
𝑥1 ≥ 0,8(𝑥1 + 𝑥2 ), equivalentemente: 𝑥1 ≥ 0,8. 𝑥1 + 0,8. 𝑥2 ⇒ 0,2. 𝑥1 − 0,8. 𝑥2 ≥ 0
𝑥1 ≤ 100
2. 𝑥1 + 4. 𝑥2 ≤ 240
𝑥1 , 𝑥2 ≥ 0
Paso 1: Comenzamos el método Simplex transformando las restricciones a su forma
estándar. Para ello en la restricción de tipo ≤ incorporamos la variable de holgura 𝑠1. Para
convertir la restricción de tipo ≥ en una restricción de igualdad, se definen la variable de
exceso 𝑠2 y la variable artificial 𝐴2 .
La función objetivo toma la forma:
Maximizar 𝑍 = 20. 𝑥1 + 50. 𝑥2 + 0. 𝑠1 + 0. 𝑠2 + 0. 𝑠3 − 𝑀. 𝐴1

Sujeto a:
0,2. 𝑥1 − 0,8. 𝑥2 − 𝑠1 + 𝐴1 = 0
1. 𝑥1 + 1. 𝑠2 = 100
2. 𝑥1 + 4. 𝑥2 + 1. 𝑠3 = 240
𝑥1 , 𝑥2 , 𝑠1 , 𝑠2 , 𝐴1 ≥ 0
Las variables que involucra el problema son 𝑥1 , 𝑥2 𝑠1, 𝑠2, 𝑠3, donde 𝑥1 , 𝑥2 son variables de
decisión y 𝑠1, 𝑠2, 𝑠3 son variables de holgura y 𝐴1 es la variable artificial.
Donde 𝑠2, 𝑠3, 𝐴1 son variables básicas.
Paso 2: Formar la tabla simplex o tabla inicial.

Paso 3: Selección columna pivote: Como estamos resolviendo un problema de


maximización, de los indicadores (coeficientes del renglón 𝑐𝑗 − 𝑧𝑗 ) se toma el que tenga

32
PROGRAMACIÓN LINEAL

el mayor valor positivo (número mayor) y se selecciona toda la columna. La variable de esta
columna es la que entra al sistema (pasa a ser básica).
Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥1 , y a la fila que lo contiene la
denominamos fila pivote.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 0,2.

La variable entrante es 𝑥1 y la variable saliente es 𝐴1 . Eliminando la columna 𝐴1 , obtenemos


la siguiente tabla:

Puesto que el máximo se alcanza cuando se cumple que:


𝑐𝑗 − 𝑧𝑗 ≤ 0 ∀𝑗

Debemos repetir el procedimiento anterior:


Elegimos el mayor indicador positivo y se selecciona toda la columna. La variable de esta
columna es la que entra al sistema (pasa a ser básica).
Escogemos ahora el menor cociente positivo 𝑏𝑖 /𝑥2 , y a la fila que lo contiene la
denominamos fila pivote.
La intersección de la fila pivote con la columna pivote es el elemento pivote: 12.

33
PROGRAMACIÓN LINEAL

La variable entrante es 𝑥2 y la variable saliente es 𝑠3:

Puesto que el máximo se alcanza cuando se cumple que:


𝑐𝑗 − 𝑧𝑗 ≤ 0 ∀𝑗
Elo procedimiento termina y:

𝑥1 = 80: Número de unidades del producto 𝐴.

𝑥2 = 20: Número de unidades del producto 𝐵.

𝑍𝑚𝑎𝑥 = 2600

34

También podría gustarte