capítulo 7.rurban.icidac.org/index_archivos/notas/capitulo_vii_programacion_lineal.pdf ·...

45
250 Capítulo 7. Programación lineal.

Upload: others

Post on 27-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

250

Capítulo 7. Programación lineal.

Page 2: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

251

"Los que mandan generalmente mueven las manos y dicen 'He considerado todas las alternativas'. Pero eso es casi siempre basura. Lo más probable es que no pudiesen estudiar todas las combinaciones."

George B. Dantzig1 7.1 Antecedentes La economía de casi cualquier país del mundo se caracteriza por el uso irracional de los recursos naturales, problemas financieros y la competencia entre las empresas. La utilización racional de estos recursos se convierte en una necesidad cada día más importante. Debido al impacto de estos problemas, debemos de hacernos de los instrumentos disponibles que nos ayuden a tomar decisiones razonadas y bien sustentadas y no basadas en razonamientos instintivos o cálculos apresurados. La investigación de operaciones, antecedente de la programación lineal, surge en la segunda guerra mundial en Inglaterra, con la formación de equipos de científicos para estudiar los problemas estratégicos y tácticos involucrados en las operaciones militares. El objetivo era encontrar la mejor asignación de óptima de los recursos militares limitados mediante el uso de técnicas matemáticas. La base de la Investigación de operaciones es construir modelos matemáticos que represente suficientemente la realidad. La programación lineal es un artilugio de la investigación de operaciones muy útil para la toma de decisiones. Es una herramienta genérica que sirve para resolver problemas lineales. Utiliza el método científico para analizar el problema y proporcionar conclusiones positivas y comprensibles a los tomadores de decisiones cuando sea necesario para apoyar la toma de las mejores posibilidades para una organización. En forma general, en investigación de operaciones, si los valores que toman las variables que intervienen en un problema de programación lineal están en los números reales, se utiliza, la programación lineal propiamente dicha; por otro lado, si la variable asume solamente números enteros, utilizamos la programación entera. La solución de un problema con variables enteras es mucho más complicada que un problema de números reales y no es nuestro objeto de estudio. Muchas de las decisiones que se toman en las organizaciones, están dirigidas a optimizar sus recursos, como puede ser el uso de la maquinaria, capital, materias primas, etc. Estos recursos son utilizados en la producción de bienes que a final de cuentas representan ingresos para la empresa. La Programación Lineal es una técnica matemática diseñada para asistir y a los tomadores de decisión de la empresa en la planificación y uso racional de los recursos con que cuenta. Existen muchos ejemplos exitosos en la literatura de 1 George B. Dantzig, considerado el creador de la Programación lineal, en una entrevista publicada en The College Mathematical Journal, Washington USA, marzo de 1986

Page 3: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

252

aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta y el de transporte. El problema de la dieta fue uno de los primeros problemas sobre optimización, motivado por el deseo del ejército americano de asegurar unos requerimientos nutricionales al menor coste. El problema fue analizado y resuelto por George Stigler2 usando la programación lineal en 1947. La formulación general de este problema es:

Para que una dieta sea equilibrada deben ingerirse n elementos nutritivos básicos en cantidades mínimas b1, b2,..., bs. Estos elementos se encuentran en m alimentos. Conocemos cuál es la cantidad de cada elemento en cada unidad de cada uno de los alimentos y el coste de la unidad de cada alimento. Se debe minimizar el coste de la dieta, pero cubriendo las necesidades nutritivas mínimas.

Por ejemplo, un especialista en nutrición elabora un plan para determinado tipo de pacientes basado en tres grupos de alimentos; a) verduras, b) carne y pescado y c) harinas, trigo y maíz. Estos se deben combinar para que cumplan con ciertos requisitos nutritivos mínimos de proteínas y calorías de 2600 calorías y 60 g de proteína por día. El contenido de cada alimento por cada 100gr se muestra en la tabla 7.1. Las verduras tienen 100 calorías y 2 gr de proteína, la carne y el pescado en promedio 500 calorías y 35 gr de proteína; las harinas combinadas ofrecen en promedio 120 calorías y 8 gr de proteína. Si los precios por cada 100 gr de verdura, proteína y harinas son de $8.0, $25.0 y $3.0 respectivamente ¿Cuál debe ser la combinación de alimentos de manera que el costo sea mínimo y se satisfagan las condiciones de nutrición por día? Tabla 7.1

Verduras (𝑥𝑥)

Carne y pescado (𝑦𝑦)

Harinas (𝑧𝑧)

Requisitos mínimos

Calorías 100 cal 500 cal 120 cal 2600 cal

Proteínas 2 gr 35 gr 8 gr 60 gr

Precios por 100 gramos

$ 8.0 $ 25.0 $ 3.0

Más adelante resolvemos este problema.

2 Nace en Seattle, Washington en 1911. En 1946 publica su trabajo "El coste de la subsistencia", en el que desarrolla el "problema de la dieta". Obtuvo el Nobel de Economía en 1982. http://es.wikipedia.org/wiki/George_Stigler

Page 4: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

253

El otro problema clásico es el del transporte. La formulación general de éste es que un cierto producto se elabora en varios centros, n, y en su producción intervienen los productos a1,a2,...,as. Este producto debe ser enviado a m destinos cuyo coste por envío desde cada planta a cada destino son conocidos. Además se deben enviar en cantidades b1,b2,...,bs. El objetivo es minimizar el coste total del transporte. Ejemplo. Una empresa tiene dos plantas de producción en la ciudad de México, una en el norte y otra en el sur. El nivel de producción diaria de la planta del sur es de 1500 unidades y la del norte de 3500. Las ventas de la empresa se distribuyen en las ciudades de Cuernavaca 850 unidades, Guadalajara 4000 unidades, Monterrey 3500 unidades.

Planta México Sur México Norte

Producción 1500 3500

Y las ventas,

Ventas Cuernavaca Guadalajara Monterrey

Demanda 850 4000 3500

El costo de transporte se por unidad se muestra en la siguiente tabla.

Planta Sur Planta Norte

Cuernavaca 30 (𝑥𝑥1) 32 (𝑦𝑦1)

Guadalajara 240 (𝑥𝑥2) 235 (𝑦𝑦2)

Monterrey 320 (𝑥𝑥3) 315 (𝑦𝑦3)

La pregunta es ¿determinar el número de unidades que debe enviar desde cada planta a cada ciudad para que los costos sean mínimos?

𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑧𝑧𝑀𝑀𝑀𝑀 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 = 30𝑥𝑥1 + 240𝑥𝑥2 + 320𝑥𝑥3 + 32𝑦𝑦1 + 235𝑦𝑦2 + 315𝑦𝑦3 Sujeta a las restricciones

𝐷𝐷𝐷𝐷 𝑐𝑐𝑀𝑀𝑐𝑐𝑀𝑀𝑐𝑐𝑀𝑀𝑐𝑐𝑀𝑀𝑐𝑐 30𝑥𝑥1 + 240𝑥𝑥2 + 320𝑥𝑥3 ≤ 1500 (𝑐𝑐𝑝𝑝𝑀𝑀𝑀𝑀𝐶𝐶𝑀𝑀 𝐶𝐶𝑠𝑠𝑀𝑀)

32𝑦𝑦1 + 235𝑦𝑦2 + 315𝑦𝑦3 ≤ 3500 (𝑐𝑐𝑝𝑝𝑀𝑀𝑀𝑀𝐶𝐶𝑀𝑀 𝑀𝑀𝐶𝐶𝑀𝑀𝐶𝐶𝐷𝐷)

𝐷𝐷𝐷𝐷 𝑐𝑐𝐷𝐷𝑀𝑀𝑀𝑀𝑀𝑀𝑐𝑐𝑀𝑀 𝑥𝑥1 + 𝑦𝑦1 ≥ 850 (𝐶𝐶𝑠𝑠𝐷𝐷𝑀𝑀𝑀𝑀𝑀𝑀𝐶𝐶𝑀𝑀𝑐𝑐𝑀𝑀)𝑥𝑥2 + 𝑦𝑦2 ≥ 4000 (𝐺𝐺𝑠𝑠𝑀𝑀𝑐𝑐𝑀𝑀𝑝𝑝𝑀𝑀𝐺𝐺𝑀𝑀𝑀𝑀𝑀𝑀)𝑥𝑥3 + 𝑦𝑦3 ≥ 3500 (𝑀𝑀𝐶𝐶𝑀𝑀𝐶𝐶𝐷𝐷𝑀𝑀𝑀𝑀𝐷𝐷𝑦𝑦)

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3,𝑦𝑦1,𝑦𝑦2,𝑦𝑦3 ≥ 0 𝑀𝑀𝐶𝐶 𝑀𝑀𝐷𝐷𝑛𝑛𝑀𝑀𝐶𝐶𝑀𝑀𝐶𝐶𝑀𝑀𝑐𝑐𝑀𝑀𝑐𝑐

Page 5: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

254

7.2 La programación lineal.

Los problemas de programación tienen como objetivo principal la asignación óptima de los recursos con que cuenta una empresa, la mayoría de las veces muy limitados, para alcanzar objetivos específicos. Por esta razón los recursos, definidos en forma de restricciones, pueden ser de distintos orígenes. Estas van desde las restricciones de producción como las impuestas por el mercado. También, pueden ser resultado de las limitaciones de material en almacén o en reserva. Al final, el objetivo es maximizar o minimizar una función de beneficio, como podrían ser la utilidad máxima o el mínimo costo. Trataremos de determinar la mejor solución posible bajo ciertas restricciones, tales como el trabajo, maquinaria y la existencia de insumos necesarios para la fabricación de los productos de la empresa.

La primera fase para emprender la solución a un problema de Programación Lineal es formular y obtener el modelo. Considerada esta etapa la más importante del proceso de aplicación, en la cual se necesita definir claramente el problema y conceptualizar de una manera correcta el problema que presente el sistema sobre el cual se pretende realizar la aplicación. La etapa siguiente en el proceso es alcanzar la solución del modelo.

7.3 Modelado de un programa lineal.

La formulación del programa lineal es fundamental para obtener una buena solución a nuestros problemas. Este proceso comprende los siguientes pasos,

1. La formulación del problema y la identificación de las variables de decisión, las que representan el interés fundamental del problema a resolver.

2. Formular la función económica, o función objetivo. 3. Formular en forma de inecuaciones las restricciones del modelo, pueden ser de

producción, de presupuesto, etc.

Ejemplos.

Construir el modelo de programación lineal para el problema de la dieta. El especialista en nutrición desea formular una dieta basado en tres tipos de alimentos; verduras, carne y pescado, y harinas. El objetivo es encontrar la combinación de alimentos de manera que el costo sea mínimo y se satisfagan las condiciones de nutrición por día.

La formulación del programa lineal sería el siguiente

Las variables de decisión son; 𝑥𝑥1 verdura, 𝑥𝑥2 proteína, 𝑥𝑥3 harinas. Se trata de un programa de minimización de los costos.

Page 6: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

255

a) Función objetivo. Donde Z es la función económica

𝑀𝑀𝑀𝑀𝑀𝑀 𝑍𝑍 = 8𝑥𝑥1 + 25𝑥𝑥2 + 3𝑥𝑥3

b) Sujeta a las restricciones. Hipótesis de linealidad del modelo; es decir para obtener 2600 calorías diarias se requiere una combinación 100𝑥𝑥1 de verdura, 500𝑥𝑥2 calorías obtenidas de carne y pescado y 12𝑥𝑥3 de harinas de trigo y maíz. La misma consideración se hace para las proteínas.

100𝑥𝑥1 + 500𝑥𝑥2 + 12𝑥𝑥3 ≥ 2600 Restricción de calorías 2𝑥𝑥1 + 35𝑥𝑥2 + 8𝑥𝑥3 ≥ 60 Restricción de proteínas

c) No negatividad de las variables

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0

Ejemplo. Una organización cafetalera indígena desea comercializar 2 tipos de productos orgánicos; café y pimienta. El café orgánico se vende en $80 pesos/kilo y la pimienta $160 pesos/kilo. Para transportar los productos a la ciudad más cercana cuenta con un camión que solo puede transportar 20,000 kg y un volumen de 1200 m3. Si el café ocupa 0.025 m3 y la pimienta 0.01 m3 por cada kg, ¿cuántos kilos de cada producto debe cargar en el camión para maximizar su ganancia?

Las variables de decisión son; 𝑥𝑥1 café y 𝑥𝑥2 pimienta. Se trata de un programa de maximizar las utilidades de la organización.

De esta manera la función a maximizar es.

𝑀𝑀𝑀𝑀𝑥𝑥 𝑍𝑍 = 80𝑥𝑥1 + 160𝑥𝑥2

a) Sujeta a las restricciones. Hipótesis de linealidad del modelo; por un lado, el camión solo puede transportar una combinación de 𝑥𝑥1 de café y 𝑥𝑥2 de pimienta que no deben rebasar un peso de 20,000 kg. Por otro lado, el volumen de 0.025𝑥𝑥1 de café y 0.01𝑥𝑥2 de pimienta pueden ocupar un volumen no mayor a 1200 𝑀𝑀3.

𝑥𝑥1 + 𝑥𝑥2 ≤ 20,000 Restricción de capacidad 0.025𝑥𝑥1 + 0.01𝑥𝑥2 ≤ 1200 Restricción de volumen

b) No negatividad de las variables

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0

Como hemos visto, un programa lineal pone en juego cuatro categorías de elementos; las actividades, las constantes económicas, las restricciones y los coeficientes técnicos.

Page 7: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

256

i. Las actividades son las variables de decisión del modelo en estudio. Se trata de seleccionar aquellas que correspondan a la función a optimizar. Usualmente utilizamos letras como 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, …. O bien 𝑥𝑥, 𝑦𝑦, 𝑧𝑧, 𝐶𝐶, …

ii. Las constantes económicas miden el nivel de realización asociado al beneficio de cada recurso de la organización, o de la empresa. De esta manera a cada 𝑥𝑥𝑗𝑗 le asociamos un beneficio 𝑐𝑐𝑗𝑗.

iii. Las restricciones del problema. Estas pueden ser de naturaleza muy diversa, dependen del problema. Son los elementos que limitan el problema, las restricciones. Estas pueden ser las limitaciones de producción, de presupuesto, etc.

iv. Los coeficientes técnicos, son las cantidades de cada recurso que son necesarios para producir una unidad de producto. Al recurso i y a la actividad j le corresponderá el coeficiente técnico 𝑀𝑀𝑖𝑖𝑗𝑗

Si las variables son continuas y los coeficientes técnicos y económicos son independientes de los valores de las variables, el problema de programación lineal se puede presentar de la siguiente manera.

Un programa lineal en la forma canónica se escribe de la siguiente manera,

Maximizar 𝑍𝑍 = 𝑐𝑐1𝑥𝑥1 + 𝑐𝑐2𝑥𝑥2 + ⋯⋯+ 𝑐𝑐𝑛𝑛𝑥𝑥𝑛𝑛

sujeto a: 𝑀𝑀𝑖𝑖1𝑥𝑥1 + 𝑀𝑀𝑖𝑖22𝑥𝑥2 + ⋯⋯+ 𝑀𝑀𝑖𝑖𝑛𝑛𝑥𝑥𝑛𝑛 �≤≥𝑏𝑏𝑖𝑖 𝑀𝑀 = 1,2,3, … . ,𝑀𝑀

𝑥𝑥𝑗𝑗 ≥ 0 En términos económicos,

Para resolver el programa lineal, deberemos buscar los valores de las variables de decisión como 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, … que optimizan la función económica 𝑍𝑍, o si así fuera el caso demostrar que el modelo no tiene solución. Para establecer un lenguaje común damos las siguientes definiciones;

• Llamaremos solución factible, cualquier grupo de valores de las variables de decisión como 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, … Que verifican el sistema de inecuaciones anterior.

• Solución óptima toda solución que optimiza la función Z. • El conjunto de todas las soluciones factibles de un programa lineal le llamaremos

dominio de soluciones factibles

𝑥𝑥𝑗𝑗 Cantidad de producto j a producir.

𝑐𝑐𝑗𝑗 Beneficio asociado a una unidad de producción del producto j

𝑀𝑀𝑖𝑖𝑗𝑗 Cantidad del recurso i requerido para producir una unidad del producto j

𝑏𝑏𝑖𝑖 Cantidad del recurso i disponible.

Z Beneficio total o función económica

Page 8: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

257

Todo problema de programación lineal debe cumplir con lo siguiente;

a) Las soluciones del problema serán, en general, números reales. Para aquellos problemas en los cuales sólo tenga sentido obtener soluciones enteras, se tendrá que aplicar los métodos de solución de la Programación Lineal Entera.

b) No negatividad. Las variables de nuestro modelo tomarán siempre valores positivos, esto es muy útil para las aplicaciones económicas ya que no tiene sentido hablar de cantidades negativas de objetos físicos.

c) Todas las restricciones deben formularse como ecuaciones. d) La parte derecha de una restricción no puede ser negativa Desde el momento en que George Dantzig desarrolla el método simplex ha sido considerado el único método útil y aplicable a la gran mayoría de problemas de programación lineal. Sin embargo, para poder alcanzar una fuerte comprensión del método simplex se hace necesario estudiar inicialmente el método de solución gráfica.

7.4 Solución gráfica

El método gráfico de resolución es útil cuando trabajamos programas lineales de dos variables. Para aquellos casos en que el número de variables del problema sea superior a dos, es complicado encontrar la solución a partir de un gráfico bidimensional y, por tanto, tendremos que usar métodos de resolución más complejos. Aun así, el método gráfico es de un gran valor pedagógico dado que nos permite vislumbrar de una forma intuitiva las ideas básicas de la Programación Lineal.

Ejemplo. Una empresa electrónica fabrica dos tipos de memoria para computadora, 𝑀𝑀1 y 𝑀𝑀2. Para su producción se requiere pasar por dos máquinas distintas, 𝐴𝐴 y 𝐵𝐵. La máquina 𝐴𝐴 requiere de 75 minutos para la memoria 𝑀𝑀1 y 25 para la memoria 𝑀𝑀2 . La máquina 𝐵𝐵 necesita de 20 y 12 minutos respectivamente. Además, por razones de mantenimiento, la máquina 𝐴𝐴 solo puede trabajar 30 horas por semana y la 𝐵𝐵 13 horas. Si el beneficio por unidad de la memoria 𝑀𝑀1 es de $60 pesos y el de la memoria 𝑀𝑀2 es de $45. ¿Cuánto debemos producir de cada tipo de memoria para obtener el máximo beneficio?

Para simplificar nuestro problema denotamos por 𝑥𝑥1: el número de unidades producidas por semana de la memoria 𝑀𝑀1 y por 𝑥𝑥2 al número de memorias producidas de 𝑀𝑀2

El programa lineal será entonces;

𝑀𝑀𝑀𝑀𝑥𝑥𝑀𝑀𝑀𝑀𝑀𝑀𝑧𝑧𝑀𝑀𝑀𝑀 𝑧𝑧 = 60𝑥𝑥1 + 45𝑥𝑥2 Sujeto a: 75𝑥𝑥1 + 25𝑥𝑥2 ≤ 1800 (30 ∗ 60) 𝑀𝑀𝐷𝐷𝐶𝐶𝐶𝐶𝑀𝑀𝑀𝑀𝑐𝑐𝑐𝑐𝑀𝑀ó𝑀𝑀 𝑀𝑀á𝑞𝑞𝑠𝑠𝑀𝑀𝑀𝑀𝑀𝑀 𝐴𝐴 20𝑥𝑥1 + 12𝑥𝑥2 ≤ 780 (13 ∗ 60) 𝑀𝑀𝐷𝐷𝐶𝐶𝐶𝐶𝑀𝑀𝑀𝑀𝑐𝑐𝑐𝑐𝑀𝑀ó𝑀𝑀 𝑀𝑀á𝑞𝑞𝑠𝑠𝑀𝑀𝑀𝑀𝑀𝑀 𝐵𝐵 𝑥𝑥1, 𝑥𝑥2 ≥ 0 𝑀𝑀𝐶𝐶 𝑀𝑀𝐷𝐷𝑛𝑛𝑀𝑀𝐶𝐶𝑀𝑀𝐶𝐶𝑀𝑀𝑐𝑐𝑀𝑀𝑐𝑐 𝑐𝑐𝐷𝐷 𝑝𝑝𝑀𝑀𝐶𝐶 𝐶𝐶𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑏𝑏𝑝𝑝𝐷𝐷𝐶𝐶

Page 9: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

258

Si graficamos estas dos restricciones lineales en el plano real, la intersección de estas líneas forma lo que se conoce como región factible, o poliedro convexo3.

La teoría matemática establece que, dado un problema de Programación Lineal que tenga solución, ésta vendrá dada por uno de los vértices (o puntos extremos) del polígono que configura la región factible. Por tanto, será suficiente hallar las coordenadas de dichos vértices (intersecciones de rectas) y determinar (sustituyendo en la función objetivo) cuál de ellos es la solución óptima. En nuestro ejemplo, tendríamos sólo cuatro puntos candidatos a ser solución del problema (los cuatro vértices del polígono), sustituyendo sus coordenadas en la función objetivo obtenemos:

𝑍𝑍(0,0) = 0; 𝑍𝑍(24,0) = 1440; 𝑍𝑍 �21

4, 2254� = 2846.25; 𝑍𝑍(0, 65) = 2925

Como en este caso buscábamos maximizar 𝑍𝑍(𝑋𝑋,𝑌𝑌), concluiremos que el punto óptimo es el (0,65), dado que con él obtenemos el valor máximo de la función objetivo.

Ejemplo. Una cooperativa rural produce tres tipos de muebles de madera; bancos, mesas y sillas. Cuenta con dos talleres ubicados en el norte y en el sur de la localidad donde se encuentran. En cada una de ellas produce los muebles en las siguientes cantidades por hora,

Taller norte Taller sur Bancos 1 2 Mesas 1 4 Sillas 6 3

3 Un poliedro convexo es una figura geométrica en la que al trazar un segmento que une dos puntos, estos puntos están contenidos dentro del poliedro.

Page 10: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

259

La cooperativa recibe un pedido de 90 bancos, 120 mesas y 180 sillas. El costo de operación del taller sur es de $450 pesos y del taller norte $600 pesos por hora. ¿Cuál es el programa de producción para minimizar los costos del pedido? Solución. Sean 𝑥𝑥1 y 𝑥𝑥2 el numero de horas que funcionan los talleres Norte y Sur para surtir el pedido. El programa lineal es,

Minimizar 𝑍𝑍 = 450𝑥𝑥1 + 600𝑥𝑥2 sujeto a: 𝑥𝑥1 + 2𝑥𝑥2 ≥ 90

𝑥𝑥1 + 4𝑥𝑥2 ≥ 120 6𝑥𝑥1 + 3𝑥𝑥2 ≥ 180

𝑥𝑥1, 𝑥𝑥2 ≥ 0 Este ejemplo de producción puede ser representado gráficamente porque no tiene más de dos variables. Antes de buscar la solución del problema, definamos en la gráfica la región y los puntos que satisfacen las cuatro restricciones. La restricción de no negatividad de las variables nos indica que esta región solo incluirá aquellos valores que sean positivos.

El beneficio para cada punto extremo, A, B y C es el siguiente;

𝐴𝐴(0,60) Los costos son 𝑍𝑍 = 450(0) + 600(60) = $36,000 𝐵𝐵(10,40) Este punto se obtiene al resolver el sistema de ecuaciones siguiente

𝑥𝑥1 + 2𝑥𝑥2 = 90 ⇒ 6𝑥𝑥1 + 3𝑥𝑥2 = 180 ⇒

𝑥𝑥1 = 90 − 2𝑥𝑥2 𝑥𝑥1 = 180 − 3𝑥𝑥2

90 − 2𝑥𝑥2 = 180 − 3𝑥𝑥2 𝑥𝑥2 = 40 y 𝑥𝑥1 = 10

Los costos son de 𝑍𝑍 = 450(10) + 600(40) = $28,500

Page 11: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

260

𝐶𝐶(60,15) Para obtener este punto resolvemos el siguiente sistema de ecuaciones,

𝑥𝑥1 + 2𝑥𝑥2 = 90 ⇒ 𝑥𝑥1 + 4𝑥𝑥2 = 120 ⇒

𝑥𝑥1 = 90 − 2𝑥𝑥2 𝑥𝑥1 = 120 − 4𝑥𝑥2

90 − 2𝑥𝑥2 = 120 − 4𝑥𝑥2 𝑥𝑥2 = 15 y 𝑥𝑥1 = 60

Los costos son de 𝑍𝑍 = 450(60) + 600(15) = $36,000

𝐷𝐷(120,0) 𝑍𝑍 = 450(120) = $54,000 La solución óptima es 𝑥𝑥1 = 10 y 𝑥𝑥2 = 40. El costo de producción es de $28,500

Casos especiales Hasta ahora, los problemas resueltos gráficamente tienen una solución óptima, lo que no siempre sucede. A la hora de resolver un problema de Programación Lineal, nos podríamos encontrar con cualquiera de estas tres situaciones especiales que conviene conocer:

• No Factibilidad: Podría ocurrir que el problema propuesto no tuviese solución. Éste sería el caso en que las restricciones fuesen incompatibles, i.e., que ningún punto del plano (o, en general, del espacio real n-dimensional) puede cumplir simultáneamente todas las limitaciones a las que estamos sometidos, es decir, la región factible es un conjunto vacío. Por ejemplo, para el siguiente programa lineal

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 2𝑥𝑥2 𝐶𝐶.𝑀𝑀

𝑥𝑥1 + 𝑥𝑥2 ≤ 2 𝑥𝑥1 − 𝑥𝑥2 ≤ 4 𝑥𝑥1,𝑥𝑥2 ≥ 0

• No Acotación: En ocasiones, podemos encontrarnos con problemas que no tengan una solución finita; así, por ejemplo, en un problema de maximización podríamos tener alguna variable que pudiese incrementarse indefinidamente sin violar ninguna de las restricciones, permitiendo a la función objetivo tomar valores tan grandes como se desee. Gráficamente, tendríamos una región factible no acotada.

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 2𝑥𝑥2 𝐶𝐶. 𝑀𝑀

10𝑥𝑥1 + 𝑥𝑥2 ≥ 20 6𝑥𝑥1 + 3𝑥𝑥2 ≥ 30 𝑥𝑥1,𝑥𝑥2 ≥ 0

Page 12: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

261

• Redundancia: Algunas restricciones pueden “estar de más” por no aportar nada nuevo a la “forma” de la región factible, ya que hay otras que resultan ser más restrictivas (esto suele ocurrir en problemas extensos, donde resulta difícil reconocer restricciones redundantes).

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 2𝑥𝑥2 𝐶𝐶.𝑀𝑀

𝑥𝑥1 + 𝑥𝑥2 ≤ 2 𝑥𝑥1 + 2𝑥𝑥2 ≤ 4

2𝑥𝑥1 + 3𝑥𝑥2 ≤ 6 𝑥𝑥1, 𝑥𝑥2 ≥ 0

• Soluciones Múltiples: Un problema de Programación Lineal puede tener más de

una solución óptima (e incluso infinita). En el caso gráfico de dos variables, si dos vértices consecutivos de la región factible son solución óptima del problema, entonces todos los puntos del segmento comprendido entre ellos también serán óptimos.

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 2𝑥𝑥2 𝐶𝐶.𝑀𝑀

3𝑥𝑥1 + 3𝑥𝑥2 ≤ 6 𝑥𝑥1, 𝑥𝑥2 ≥ 0

Ejercicios.

1) Resolver por el método gráfico los siguientes programas lineales. Indique la región factible

a) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 2𝑥𝑥1 + 5𝑥𝑥2 𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 5𝑥𝑥2 ≤ 16

2𝑥𝑥1 + 4𝑥𝑥2 ≤ 20

𝑥𝑥1, 𝑥𝑥2 ≥ 0

c) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 3𝑥𝑥1 + 4𝑥𝑥2 𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 2𝑥𝑥2 ≥ 8

3𝑥𝑥1 + 3𝑥𝑥2 ≥ 15 2𝑥𝑥1 + 𝑥𝑥2 ≥ 6 𝑥𝑥1,𝑥𝑥2 ≥ 0

b) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 2𝑥𝑥2 𝐶𝐶.𝑀𝑀

2𝑥𝑥1 + 𝑥𝑥2 ≤ 3 𝑥𝑥1 + 3𝑥𝑥2 ≥ 4 4𝑥𝑥1 + 𝑥𝑥2 ≤ 4 𝑥𝑥1, 𝑥𝑥2 ≥ 0

d) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 4𝑥𝑥1 + 5𝑥𝑥2 𝐶𝐶.𝑀𝑀

𝑥𝑥1 + 𝑥𝑥2 ≤ 5 3𝑥𝑥1 + 2𝑥𝑥2 ≥ 6 𝑥𝑥1 + 4𝑥𝑥2 ≥ 8 𝑥𝑥1,𝑥𝑥2 ≥ 0

2) Un nutriólogo debe preparar una dieta compuesta de dos alimentos A y B que

contenga al menos 300gr de proteínas y 400 gr de carbohidratos. Cada unidad de alimento A cuesta $8 pesos y contiene 10gr de proteínas y 16gr de carbohidratos.

Page 13: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

262

El producto B cuesta $12 pesos por unidad y contiene 12.5 gr de proteínas y 10gr de carbohidratos. Determine la mezcla más barata que satisface los requerimientos nutritivos.

3) Un agricultor tiene 40 hectáreas de tierra. Él quiere sembrar maíz y frijol en esta superficie. El costo de producción del maíz es de 200 pesos por hectárea y 500 pesos por hectárea de frijol. Por limitaciones técnicas, el agricultor puede trabajar un día por cada hectárea de maíz y 1

2 día por hectárea de frijol; cuenta con 30 días

para realizar esta actividad. Si el agricultor cuenta con un capital de 18,000 pesos y puede vender sus productos en el mercado a un precio de 8,000 por hectárea de maíz y 9,000 de frijol. ¿Cuántas hectáreas debe sembrar de cada producto para obtener el máximo beneficio?

7.5 Método SIMPLEX

El método gráfico para resolver un programa lineal con dos variables es útil para resolver problemas sencillos, desafortunadamente en situaciones reales, los problemas se complican con más de dos inecuaciones y variables, de aquí que el método del simplex se utiliza, para resolver problemas de programación lineal en los que intervienen tres o más variables. La base del método es el álgebra matricial y el proceso de eliminación de Gauss-Jordan.

Este método simplex fue formulado por George B. Dantzig en 1947, y parte de un programa lineal; es decir, una función objetivo y un conjunto de restricciones lineales. El método de solución es un algoritmo, o proceso iterativo que busca alcanzar el máximo, o el mínimo, de un conjunto de variables de la función objetivo, que deben de cumplir con condiciones impuestas por un grupo de restricciones lineales en forma de inecuaciones. El punto de partida es el origen, que es la solución inicial del sistema. Después, el método en forma iterativa busca otro punto extremo que mejore al anterior. La búsqueda se realiza siempre a través de los lados del polígono (o de las aristas del poliedro, si el número de variables es mayor).

El algoritmo del simplex se basa en las siguientes propiedades,

• Si la función objetivo, f, no toma su valor máximo en el punto extremo A, entonces hay una arista que parte de A, a lo largo de la cual el valor de la función objetivo aumenta.

• Si existe al menos una solución factible, entonces existe una solución básica. • Si existe una solución óptima; entonces, admite al menos una solución básica que

es óptima.

Page 14: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

263

7.5.1 Forma canónica y forma estándar

Cualquier programa lineal se puede representar de dos formas equivalentes, forma estándar y forma canónica. La forma canónica es de utilidad principalmente para explorar el programa dual, que veremos más tarde en este capítulo, es la forma inicial de representación de nuestro problema. En forma matricial.

Donde c𝑥𝑥, es un vector con 𝑀𝑀 variables de decisión, 𝑏𝑏 es un vector columna de 𝑀𝑀 componentes y 𝐴𝐴 es una matriz de 𝑀𝑀 𝑥𝑥 𝑀𝑀

Un programa lineal está en forma canónica, si las variables son no negativas y las restricciones son ≤ para la maximización ó ≥ para la minimización.

El método Simplex está diseñado para ser utilizado únicamente con problemas en la forma estándar. Es decir,

a) Las restricciones son igualdades. b) Las variables son no negativas c) Los componentes del vector 𝑏𝑏, de las restricciones, son todos positivos.

El Método Simplex necesita que el programa lineal se pase a la forma estándar, para ello hay que convertir estas inecuaciones en ecuaciones mediante la incorporación de las siguientes variables.

• Si la desigualdad es del tipo ≤, agregamos una variable de holgura positiva del lado izquierdo de la inecuación. Para igualar el lado izquierdo con el derecho.

�𝑀𝑀𝑖𝑖𝑗𝑗 ≤ 𝑏𝑏𝑖𝑖 Se agrega una variable con signo

positivo 𝐶𝐶𝑖𝑖, donde 𝑀𝑀, representa el número de restricción.

�𝑀𝑀𝑖𝑖𝑗𝑗 + 𝐶𝐶𝑖𝑖 ≤ 𝑏𝑏𝑖𝑖 𝐶𝐶𝑖𝑖 ≥ 0

• En el caso de que la inecuación tenga signo ≥ se agrega una variable de holgura negativa del lado izquierdo de la restricción.

�𝑀𝑀𝑖𝑖𝑗𝑗 ≥ 𝑏𝑏𝑖𝑖 Se agrega una variable con signo

positivo 𝐶𝐶𝑖𝑖, donde 𝑀𝑀, representa el número de restricción.

�𝑀𝑀𝑖𝑖𝑗𝑗 − 𝐶𝐶𝑖𝑖 ≥ 𝑏𝑏𝑖𝑖 𝐶𝐶𝑖𝑖 ≥ 0

• Asimismo, las igualdades pueden ser transformadas en dos desigualdades.

�𝑀𝑀𝑖𝑖𝑗𝑗 = 𝑏𝑏𝑖𝑖 ∑𝑀𝑀𝑖𝑖𝑗𝑗 ≤ 𝑏𝑏𝑖𝑖 y

∑𝑀𝑀𝑖𝑖𝑗𝑗 ≥ 𝑏𝑏𝑖𝑖

Maximizar (o Minimizar) 𝑍𝑍 = 𝑐𝑐𝑥𝑥

sujeto a: 𝐴𝐴𝑥𝑥 �≤≥=� 𝑏𝑏

𝑥𝑥 ≥ 0

Page 15: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

264

Teniendo en cuenta las consideraciones anteriores estamos en posibilidad de resolver un programa lineal de 𝑀𝑀 variables y 𝑀𝑀 ecuaciones. En un programa lineal, 𝑀𝑀 de las variables se llaman variables básicas, son aquellas variables que resuelven el sistema, de tal manera que entonces 𝑀𝑀 −𝑀𝑀 variables son iguales a cero que llamaremos variables no básicas. La solución óptima es una solución básica y si estas variables son cero o positivas se les llama Solución básica factible; así, todas las variables básicas son estrictamente positivas. De este modo, el método Simplex consiste en:

1. Determinar una solución básica. 2. Probar si esta solución es una solución óptima

a. Si la solución es óptima el problema se termina b. En caso contrario pasamos al siguiente punto.

3. Buscar una nueva solución básica factible y Cambiar la solución de la base y retomar el proceso a partir del punto 1. Cada cambio de base es una iteración diferente del Simplex.

4. En muchos problemas prácticos, las restricciones suelen ser una combinación de inecuaciones de diferente tipo; por lo que es mejor tratar la metodología del Simplex con la ayuda de algunos ejemplos.

Ejemplo de Maximización. Sea el programa lineal siguiente:

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 3𝑥𝑥 + 4𝑦𝑦 𝐶𝐶. 𝑀𝑀

2𝑥𝑥 + 3𝑦𝑦 ≤ 180 2𝑥𝑥 + 𝑦𝑦 ≤ 120 𝑥𝑥 + 3𝑦𝑦 ≤ 150 𝑥𝑥,𝑦𝑦 ≥ 0

Pasos para resolver un programa lineal por el método Simplex

1. Pasar el programa lineal a la forma estándar. Se trata de convertir las desigualdades en igualdades. Para cada restricción, se incluye una variable de holgura, para convertirlas en igualdades, resultando el sistema de ecuaciones lineales:

2𝑥𝑥 + 3𝑦𝑦 + 𝑆𝑆1 = 180 2𝑥𝑥 + 𝑦𝑦 + 𝑆𝑆2 = 120 𝑥𝑥 + 3𝑦𝑦 + 𝑆𝑆3 = 150

𝑥𝑥,𝑦𝑦, 𝑆𝑆1, 𝑆𝑆2, 𝑆𝑆3 ≥ 0

Page 16: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

265

Para cada solución factible el valor de las variables 𝑥𝑥,𝑦𝑦, 𝑧𝑧, lado izquierdo de cada inecuación, no podrá superar el valor del lado derecho, las variables de holgura tendrán un valor que es la diferencia entre los dos lados de la ecuación. Entonces, la primera solución factible será cuando las variables 𝑥𝑥 = 𝑦𝑦 = 𝑧𝑧 = 0 y las variables de holgura serán entonces básicas con valores de 𝑆𝑆1 = 180, 𝑆𝑆2 = 120 y 𝑆𝑆3 = 150. Es el punto de partida del algoritmo

2. Igualar la función objetivo a cero, e incluimos las variables de holgura anteriores

−3𝑥𝑥 − 4𝑦𝑦 − 0𝑆𝑆1 − 0𝑆𝑆2 − 0𝑆𝑆3 + 𝑍𝑍 = 0

3. Escribir la tabla inicial simplex. El proceso de cálculo es más ordenado si construimos un arreglo de datos que llamaremos Tabla del Simplex. En las columnas tendremos las variables del problema y, en las filas, los coeficientes de las igualdades, una fila para cada restricción. Finalmente, la última fila completa la tabla con los coeficientes de la función objetivo.

Tabla inicial del simplex

Variables Base Variable de decisión Variable de holgura Valor

X Y S1 S2 S3

S1 2 3 1 0 0 180

S2 2 1 0 1 0 120

S3 1 3 0 0 1 150

Z -3 -4 0 0 0 0

4. Elegir la variable básica y la variable de holgura que sale de la base, elección del pivote que será de utilidad para pasar de un punto extremo a otra solución factible. Para escoger la variable que entra en la base y la que sale, realizamos los siguientes pasos, a) Escogemos la variable con el coeficiente negativo mayor de la función objetivo,

última línea del arreglo del simplex. En nuestro ejemplo, la columna de la variable ‘𝑌𝑌’ con coeficiente – 4. A esta columna la llamaremos columna pivote.

i. Si existiesen dos o más coeficientes iguales que cumplan la condición anterior, entonces se elige cualquiera de ellos.

ii. Si en fila 𝑍𝑍 no hay ningún coeficiente negativo, entonces se ha alcanzado la solución óptima y por consiguiente el final del proceso del método simplex.

b) Para encontrar la variable que tiene debe salir de la base, se divide cada término de la columna resultado por el coeficiente correspondiente de la columna pivote,

Page 17: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

266

siempre que estos últimos sean mayores que cero. En nuestro caso: 1803

= 60, 1201

= 120 𝑦𝑦 1503

= 50. El menor cociente positivo indicará la fila de la variable que sale de la base, en nuestro caso S3. Esta fila se llama fila pivote. y el valor 3 es el pivote.

i. Si algún valor, de la última columna, es menor o igual que cero no se considera. En el caso de que todos los elementos fuesen menores o iguales a cero, entonces tendríamos una solución no acotada y el proceso de cálculo se detiene.

ii. Si al calcular los cocientes, dos o más son iguales, indica que cualquiera de las variables correspondientes puede salir de la base.

c) En la intersección de la fila pivote y columna pivote tenemos el pivote, para nuestro ejercicio está en el renglón 3 y columna 2; el valor del pivote es 3.

5. Encontrar los coeficientes de la nueva tabla. En primer lugar, cambiamos la variable de la base del renglón pivote por la variable de decisión que corresponda a la columna pivote. En nuestro ejercicio, sale la variable S3 y entra a la base la variable de decisión y.

Los nuevos coeficientes del renglón y se obtienen dividiendo todos los coeficientes de la fila pivote S3 por el pivote, 3, que es el que hay que convertir en 1. Por reducción gaussiana el resto de los coeficientes de la columna son cero, incluso los de la función objetivo.

1ª. Iteración del simplex Variables

Base Variable de decisión Variable de holgura Valor

X Y S1 S2 S3 S1

0

S2

0

y 1 3⁄ 1 0 0 1 ⁄ 3 50 Z

0

El siguiente paso es completar la nueva tabla. Para el recalculo vamos a utilizar la tabla anterior. Los valores de las celdas vacías se obtienen de la siguiente forma:

Si 𝑀𝑀𝑖𝑖𝑗𝑗 es el coeficiente del renglón 𝑀𝑀 y la columna 𝐺𝐺.

𝑀𝑀𝑖𝑖𝑗𝑗 = 𝑀𝑀𝑖𝑖𝑗𝑗 −𝑀𝑀𝑖𝑖𝑖𝑖𝑀𝑀𝑟𝑟𝑖𝑖

𝑀𝑀𝑟𝑟𝑗𝑗 𝑀𝑀 ≠ 𝑀𝑀

Donde 𝑀𝑀𝑟𝑟𝑖𝑖 es la posición del pivote; es decir, el renglón pivote r y la columna pivote k.

Page 18: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

267

En nuestro ejemplo, para calcular el coeficiente 𝑀𝑀11, primer renglón de la primera columna. El pivote está en 𝑀𝑀𝑟𝑟𝑖𝑖 = 𝑀𝑀32 = 3.

𝑀𝑀11 = 𝑀𝑀11 −𝑀𝑀12𝑀𝑀32

𝑀𝑀31 = 2 −33

(1) = 1

1ª. Iteración del simplex

Variables Base Variable de decisión Variable de holgura Valor

X Y S1 S2 S3

S1 𝑀𝑀11 = 𝑀𝑀11 −𝑀𝑀12𝑀𝑀32

𝑀𝑀31 = 2 −33

(1) = 𝟏𝟏 0

S2 𝑀𝑀21 = 𝑀𝑀21 −𝑀𝑀22𝑀𝑀32

𝑀𝑀31 = 2 −13

(1) =𝟓𝟓𝟑𝟑

0

Y 1 ⁄ 3 1 0 0 1 ⁄ 3 50

Z 𝑀𝑀41 = 𝑀𝑀41 −𝑀𝑀42𝑀𝑀32

𝑀𝑀31 = −3 −−43

(1) = −𝟓𝟓𝟑𝟑

0

El resto de los coeficientes se recalculan de la misma manera.

2ª. Iteración del simplex

Variables Base

Variable de decisión Variable de holgura Valor

x Y S1 S2 S3

S1 1 0 1 0 -1 30 �301

= 30�

S2 5 3⁄ 0 0 1 −1/3 70 � 705 3⁄

= 42�

𝑦𝑦 1 3⁄ 1 0 0 1/3 50 � 501 3⁄

= 150�

Z −5 3⁄ 0 0 0 4/3 200

Como en la fila 𝑍𝑍, aún tenemos coeficientes negativos −5 3⁄ , significa que no hemos llegado todavía a la solución óptima. Hay que repetir el proceso:

a) La variable que entra en la base es x, por ser la variable que corresponde al coeficiente −5 3⁄

Page 19: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

268

b) Para calcular la variable que sale, dividimos los términos de la última columna entre los términos correspondientes de la nueva columna pivote y como el menor cociente positivo es 30, la variable de holgura que sale de la base es S1.

c) El elemento pivote, ya tiene el valor de 1.

Operando de forma análoga a la anterior obtenemos la nueva tabla: 3ª. Iteración del simplex

Variables Base

Variable de decisión Variable de holgura Valor

X Y S1 S2 S3

𝑥𝑥 1 0 1 0 -1 30 �30−1

= −30�

S2 0 0 −5 3⁄ 1 4 3⁄ 20 � 204 3⁄

= 15�

𝑦𝑦 0 1 −1 3⁄ 0 2 3⁄ 40 � 402 3⁄

= 60�

Z 0 0 5 3⁄ 0 −1 3⁄ 250

Nuevamente tenemos un valor negativo, en la fila de Z, por lo tanto, continuamos el proceso de búsqueda de solución óptima.

a) La variable que entra en la base es S3, por ser la variable que corresponde al coeficiente −1 3⁄

b) Dividimos los coeficientes de la última columna entre los términos correspondientes de la nueva columna pivote y como el menor cociente positivo es 15, tenemos que la variable de holgura que sale es S2.

c) El elemento pivote, que ahora hay que hacer 1, es −1 3⁄ .

Solución óptima

Variables Base Variable de decisión Variable de holgura Valores solución

X Y S1 S2 S3

𝑥𝑥 1 0 −1 4⁄ 3 4⁄ 0 45

S3 0 0 −5 4⁄ 3 4⁄ 1 15

𝑦𝑦 0 1 1 2⁄ −1 2⁄ 0 30

Z 0 0 5 4⁄ 1 4⁄ 0 255

Como todos los coeficientes de la fila de la función objetivo son positivos, hemos llegado a la solución óptima.

Page 20: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

269

La solución óptima viene dada por el valor de Z en la columna de los valores solución, en nuestro caso: 255. En la misma columna se puede observar el vértice donde se alcanza, observando las filas correspondientes a las variables de decisión que han entrado en la base: 𝒙𝒙 = 𝟒𝟒𝟓𝟓, 𝒚𝒚 = 𝟑𝟑𝟑𝟑

7.5.3 Interpretación geométrica del método simplex.

El proceso iterativo del simplex nos ha llevado a construir diferentes tablas de datos. En cada una de ellas calculamos el valor de la función objetivo en los distintos vértices, puntos extremos, en cada caso se realizó un procedimiento de prueba para saber si se encontró el óptimo.

El proceso iterativo del Simplex inicia en el punto 𝐼𝐼(0,0) con un valor de la función objetivo 𝑍𝑍 = 0.

Posteriormente, el simplex nos lleva a probar el punto 𝐴𝐴(0,50). En esta iteración la función objetivo se recalcula al valor de 𝑍𝑍 = 200.

El tercer paso, nos lleva al punto 𝐵𝐵(30,40), los datos se pueden verificar en la tabla que corresponde a la esta tercera iteración. El valor de la función objetivo nuevamente se calcula y nos entrega el valor de 𝑍𝑍 = 250.

El proceso iterativo termina al llegar al punto 𝐶𝐶(45,30) punto óptimo. El valor que corresponde a la función objetivo es el máximo 𝑍𝑍 = 255.

Aún tendríamos un último punto en 𝐷𝐷(60,0). Su valor no supera el encontrado en el punto anterior. En el ejercicio anterior 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 punto extremo del dominio de puntos factible, por lo cual, la búsqueda secuencial del algoritmo se basa en la evaluación progresiva de estos vértices hasta encontrar el óptimo. Sin embargo, no todos los problemas se presentan de esta forma, como el caso de la minimización o más aún cuando tenemos restricciones diferentes, como de igualdad o de mayor o igual. En estos casos tendremos que utilizar una transformación mediante la incorporación de variables artificiales.

Page 21: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

270

7.5.4 Método de la gran M

No siempre es posible en la tabla del Simplex disponer de un conjunto de vectores que, convenientemente ordenados, formen la matriz identidad. Una transformación adecuada es con la incorporación de variables artificiales.

En primer lugar, pasamos el programa lineal a su forma canónica, con variables de holgura si es necesario; después, se incorporan las variables artificiales. Para que estas variables introducidas no afecten a la solución del problema, lo deseable es que dejen de ser básicas rápidamente y de esta manera se anulen. La forma de conseguirlo es añadiéndolas a la función objetivo con un valor positivo grande 𝑀𝑀. De esta manera, para quitarlas de la función objetivo deben anularse en alguna de las iteraciones del método Simplex y que estas variables artificiales dejen de ser básicas y a partir de ese momento puede prescindirse de ellas.

El siguiente ejemplo ilustra el uso de variables artificiales. Encontrar la solución óptima.

Maximizar 𝑍𝑍 = 3𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 sujeto a: 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≤ 6

2𝑥𝑥1 − 𝑥𝑥2 + 𝑥𝑥3 ≥ 5 𝑥𝑥1 + 2𝑥𝑥2 + 2𝑥𝑥3 ≥ 2

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0

De acuerdo con las condiciones para resolver un programa lineal se requiere que,

a) No negatividad. Las variables de nuestro modelo tomarán siempre valores positivos b) Todas las restricciones deben formularse como ecuaciones. c) La parte derecha de una restricción no puede ser negativa De esta manera, necesitamos pasar de un programa en forma canónica a un sistema de ecuaciones ordinarias. Así,

i. Como en el ejercicio anterior, para restricciones del tipo ≤ se añade una variable de holgura, en la restricción.

ii. Por cada restricción del tipo ≥, se resta una variable de holgura negativa iii. A las restricciones de = y ≥, se les añade una variable artificial.

Las variables de holgura quedan con coeficiente cero en la función objetivo y las variables artificiales son negativas en el caso de maximización y positivas para minimización.

Para nuestro ejemplo, se incluyen variables de holgura positivas, para las restricciones ≤(𝑆𝑆1) y negativas para las restricciones ≥ (−𝑆𝑆2𝑦𝑦 −𝑆𝑆3). Finalmente incorporamos variables artificiales para compensar estas variables negativas (𝑤𝑤2 𝑦𝑦 𝑤𝑤3).

Page 22: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

271

𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 + 𝑆𝑆1 = 6 2𝑥𝑥1 − 𝑥𝑥2 + 𝑥𝑥3 − 𝑆𝑆2 + 𝑤𝑤2 = 5 𝑥𝑥1 + 2𝑥𝑥2 + 2𝑥𝑥3 − 𝑆𝑆3 + 𝑤𝑤3 = 2

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, 𝑆𝑆1,𝑆𝑆2, 𝑆𝑆3,𝑤𝑤1,𝑤𝑤2 ≥ 0

Finalmente, tendremos que incluir las variables artificiales en la función de beneficio. Si se trata de maximizar la función objetivo, se modifica con estas variables,

Maximizar 𝑆𝑆 = 3𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 + 0𝑆𝑆1 − 0𝑆𝑆2 − 0𝑆𝑆3 − 𝑀𝑀𝑤𝑤2 −𝑀𝑀𝑤𝑤3

La transformación de la función que se incluirá en la tabla requiere que se despejen las variables artificiales de las restricciones y sustituir y agrupar términos en la función objetivo.

𝑤𝑤2 = 5 − 2𝑥𝑥1 + 𝑥𝑥2 − 𝑥𝑥3 + 𝑆𝑆2 𝑦𝑦 𝑤𝑤3 = 2 − 𝑥𝑥1 − 2𝑥𝑥2 − 2𝑥𝑥3 + 𝑆𝑆3

Sustituimos en la función objetivo y tendremos,

𝑍𝑍 = 3𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 − 0𝑆𝑆1 − 0𝑆𝑆2 − 0𝑆𝑆3 − 𝑀𝑀(5 − 2𝑥𝑥1 + 𝑥𝑥2 − 𝑥𝑥3 + 𝑆𝑆2 ) −𝑀𝑀(2 − 𝑥𝑥1 − 2𝑥𝑥2 − 2𝑥𝑥3 + 𝑆𝑆3) Agrupando términos nos queda la transformación. 𝑍𝑍 = (3 + 3𝑀𝑀)𝑥𝑥1 + (2 + 𝑀𝑀)𝑥𝑥2 + (1 + 3𝑀𝑀)𝑥𝑥3 + 0𝑆𝑆1 − (0 + 𝑀𝑀)𝑆𝑆2 − (0 + 𝑀𝑀𝑆𝑆3) − 7𝑀𝑀 Pasamos al lado izquierdo la expresión y nos queda finalmente, 𝑍𝑍 − (3 + 3𝑀𝑀)𝑥𝑥1 − (2 + 𝑀𝑀)𝑥𝑥2 − (1 + 3𝑀𝑀)𝑥𝑥3 − 0𝑆𝑆1 + 𝑀𝑀𝑆𝑆2 + 𝑀𝑀𝑆𝑆3 = −7𝑀𝑀 La tabla inicial del simplex queda entonces,

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑤𝑤2 𝑤𝑤3 𝑆𝑆2 𝑆𝑆3 Valores 𝑆𝑆1 1 2 3 1 0 0 0 0 6 𝑤𝑤2 2 -1 1 0 1 0 -1 0 5 𝑤𝑤3 1 2 2 0 0 1 0 -1 2 Z -3-3M -2-M -1-3M 0 0 0 M M -7M

La columna pivote es la primera, más negativa. Para encontrar el renglón pivote obtenemos los cocientes, 6, 5

2, 2. El menor de estos cocientes es el tercer renglón; por lo

tanto, el pivote es el elemento 𝑀𝑀1,3 = 1. La variable de decisión 𝑥𝑥1, entra a la base.

Page 23: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

272

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑤𝑤2 𝑤𝑤3 𝑆𝑆2 𝑆𝑆3 Valores 𝑆𝑆1 0 0 1 1 0 -1 0 1 4 𝑤𝑤2 0 -5 -3 0 1 -2 -1 2 1 𝑥𝑥1 1 2 2 0 0 1 0 -1 2 Z 0 4+5M 5+3M 0 0 3+3M M -3-2M 6-M

Entra a la base la variable 𝑆𝑆3, que es la columna pivote, y el renglón pivote de acuerdo con los cocientes 4, 1 2⁄ ; por lo tanto, sale de la base la variable artificial 𝑊𝑊2, que corresponde al segundo renglón. El pivote es el elemento 𝑀𝑀2,6 = 2. En este caso entra a la base una variable de holgura.

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑤𝑤2 𝑤𝑤3 𝑆𝑆2 𝑆𝑆3 Valores 𝑆𝑆1 0 5 2⁄ 5 2⁄ 1 −1 2⁄ 0 1

2� 0 7 2⁄

𝑆𝑆3 0 −5 2⁄ −3 2⁄ 0 1 2⁄ -1 −1 2⁄ 1 1 2⁄ 𝑥𝑥1 1 −1 2⁄ 1 2⁄ 0 1 2⁄ 0 −1 2⁄ 0 5 2⁄ Z 0 −7

2 1

2 0 32 + 𝑀𝑀 M −3

2 0 152

Ahora el pivote es el elemento 𝑀𝑀1,2 = 2.5. La variable de decisión 𝑥𝑥2 entra a la base.

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑤𝑤2 𝑤𝑤3 𝑆𝑆2 𝑆𝑆3 Valores 𝑥𝑥2 0 1 1 2 5⁄ −1 5⁄ 0 1 5⁄ 0 7 5⁄ 𝑆𝑆3 0 0 1 1 0 -1 0 1 4 𝑥𝑥1 1 0 1 1 5⁄ 2 5⁄ 0 −2 5⁄ 0 16 5⁄ Z 0 0 4 7

5 45 + 𝑀𝑀 M −45 0 62

5

Ahora el pivote es el elemento 𝑀𝑀1,4 = 0.2. Deja la base la variable de decisión 𝑥𝑥2 y entra la variable de holgura 𝑆𝑆2.

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑤𝑤2 𝑤𝑤3 𝑆𝑆2 𝑆𝑆3 Valores 𝑆𝑆2 0 5 5 2 -1 0 1 0 7 𝑆𝑆3 0 0 1 1 0 -1 0 1 4 𝑥𝑥1 1 2 3 1 0 0 0 0 6 Z 0 4 8 3 M M 0 0 18

Finalmente, el proceso se detiene, no tenemos coeficientes negativos en la función objetivo el máximo beneficio y la solución es 𝑥𝑥1 = 6; 𝑥𝑥2 = 0; 𝑥𝑥3 = 0, para 𝑍𝑍 = 18 Una consideración final sobre las variables artificiales. Si en la tabla final del simplex; en la base, tenemos al menos una variable artificial no negativa, el problema no tiene solución. No existe un área de soluciones factible.

Page 24: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

273

Caso Minimización

En un problema de minimización, a diferencia de la maximización, para que una variable entre a la base, se elige la variable cuyo valor, en la función objetivo, es la que tiene el coeficiente positivo más grande, la consideración del renglón pivote no cambia. Tenemos una solución óptima cuando todos los coeficientes del renglón Z son todos menores o iguales a cero.

Ejemplo. Sea el siguiente programa lineal;

Minimizar 𝑍𝑍 = 3𝑥𝑥1 + 4𝑥𝑥2 + 5𝑥𝑥3 sujeto a: 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 5 2𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥3 ≥ 6 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0

Las restricciones del tipo ≥ nos obliga a trasformar el problema para utilizar variables artificiales. De esta forma el programa lineal trasformado será el siguiente:

Ajustamos el modelo, con la incorporación de variables de holgura negativa y para compensar variables artificiales.

Se incluyen con signo positivo la constante M en la función objetivo y se despejan variables artificiales de las restricciones y se sustituyen en la función objetivo.

𝑤𝑤1 = 5 − 𝑥𝑥1 − 2𝑥𝑥2 − 3𝑥𝑥3 + 𝑆𝑆1 𝑦𝑦 𝑤𝑤2 = 6 − 2𝑥𝑥1 − 𝑥𝑥2 − 2𝑥𝑥3 + 𝑆𝑆2

Sustituir en la función objetivo 𝑍𝑍 = 3𝑥𝑥1 + 4𝑥𝑥2 + 5𝑥𝑥3 + 𝑀𝑀(5 − 𝑥𝑥1 − 2𝑥𝑥2 − 3𝑥𝑥3 + 𝑆𝑆1) + 𝑀𝑀(6 − 2𝑥𝑥1 − 𝑥𝑥2 − 2𝑥𝑥3 + 𝑆𝑆2)

Al factorizar queda

𝑍𝑍 = (3 − 3𝑀𝑀)𝑥𝑥1 + (4 − 3𝑀𝑀)𝑥𝑥2 + (5 − 5𝑀𝑀)𝑥𝑥3 + 𝑀𝑀𝑆𝑆1 + 𝑀𝑀𝑆𝑆2 + 11𝑀𝑀

𝑍𝑍 − (3 − 3𝑀𝑀)𝑥𝑥1 − (4 − 3𝑀𝑀)𝑥𝑥2 − (5 − 5𝑀𝑀)𝑥𝑥3 − 𝑀𝑀𝑆𝑆1 − 𝑀𝑀𝑆𝑆2 = 11𝑀𝑀

Minimizar Sujeto a

𝑍𝑍 = 3𝑥𝑥1 + 4𝑥𝑥2 + 5𝑥𝑥3 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 − 𝑆𝑆1 + 𝑤𝑤1 = 5

2𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥3 − 𝑆𝑆2 + 𝑤𝑤2 = 6 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, 𝑆𝑆1, 𝑆𝑆2,𝑤𝑤1,𝑤𝑤2 ≥ 0

Minimizar

𝑍𝑍 = 3𝑥𝑥1 + 4𝑥𝑥2 + 5𝑥𝑥3 + 𝑀𝑀𝑤𝑤1 + 𝑀𝑀𝑤𝑤2

sujeto a: 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 − 𝑆𝑆1 + 𝑤𝑤1 = 5 2𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥3 − 𝑆𝑆2 + 𝑤𝑤2 = 6

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, 𝑆𝑆1, 𝑆𝑆2,𝑤𝑤1,𝑤𝑤2 ≥ 0

Page 25: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

274

El arreglo Simplex será el siguiente:

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝐶𝐶1 𝐶𝐶2 𝑤𝑤1 𝑤𝑤2 Valores 𝑤𝑤1 1 2 3 -1 0 1 0 5 𝑤𝑤2 2 1 2 0 -1 0 1 6 Z -3+3M -4+3M -5+5M -M -M 0 0 11M

Para elegir la columna pivote, seleccionamos el coeficiente de 𝑍𝑍 más grande. Partiendo de que M tiene un valor positivo suficientemente grande, entonces la columna de 𝑥𝑥3 es la que entra a la base. Por otro lado, para elegir la variable que sale de la base, dividimos la columna de valores por su correspondiente coeficiente de la columna pivote. En nuestro caso tenemos los valores de: 5

3= 1.66 𝑦𝑦 𝑐𝑐𝐷𝐷 6

2= 3. Por lo tanto, el pivote será el primer

elemento de la columna base, 3. Así, entra a la base la variable 𝑥𝑥3 y sale la variable artificial 𝑤𝑤1. El nuevo arreglo del simplex, de acuerdo con el procedimiento de cálculo anteriormente expuesto, es el siguiente:

1ª, Iteración del simplex Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑆𝑆2 𝑤𝑤1 𝑤𝑤2 Valores 𝑥𝑥3 1

3� 2/3 1 -1/3 0 1 3⁄ 0 5/3

𝑤𝑤2 4/3 -1/3 0 2/3 -1 -2/3 1 8/3

Z −43

+ 43𝑀𝑀 −2

3−𝑀𝑀3

0 −53

+23𝑀𝑀

-M 53−

53𝑀𝑀

0 253

+83𝑀𝑀

Para la elección del nuevo pivote repetimos el procedimiento, el más positivo del coeficiente de Z. La variable 𝑥𝑥1 es candidata para entrar a la base y sale la variable artificial 𝑤𝑤2. Finalmente tendremos un nuevo arreglo.

2ª, Iteración del simplex Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑆𝑆2 𝑤𝑤1 𝑤𝑤2 Valores 𝑥𝑥3 0 ¾ 1 -1/2 1/4 ½ 1/4 1 𝑥𝑥1 1 -1/4 0 1/2 -3/4 -1/2 3/4 2 Z 0 -1 0 -1 -1 1-M 1-M 11

Hemos encontrado el óptimo, todos los coeficientes del renglón Z son negativos. Los valores para este punto óptimo son 𝑍𝑍 = 11 y 𝑥𝑥1 = 2, 𝑥𝑥2 = 0 𝑦𝑦 𝑥𝑥3 = 1. 7.5.5 Modificar un programa de minimización a Maximización. Un programa de minimización puede convertirse muy fácilmente en un problema de maximización, si multiplicamos por −1 la función objetivo y conservamos las restricciones sin cambio. De esta manera no se requeriría más que aplicar un solo conjunto de reglas. Para el ejercicio anterior, nos quedaría el programa así,

Page 26: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

275

Minimizar 𝑍𝑍 = 3𝑥𝑥1 + 4𝑥𝑥2 + 5𝑥𝑥3 Maximizar 𝑍𝑍 = −3𝑥𝑥1 − 4𝑥𝑥2 − 5𝑥𝑥3

sujeto a: 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 5 sujeto a: 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 5

𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 5 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 5

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0 Así, el programa lineal transformado sería,

𝑍𝑍 = −3𝑥𝑥1 − 4𝑥𝑥2 − 5𝑥𝑥3 −𝑀𝑀𝑤𝑤1 −𝑀𝑀𝑤𝑤2

𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 − 𝑆𝑆1 + 𝑤𝑤1 = 5

2𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥3 − 𝑆𝑆2 + 𝑤𝑤2 = 6 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, 𝑆𝑆1, 𝑆𝑆2,𝑤𝑤1,𝑤𝑤2 ≥ 0

De la misma manera, aplicamos el método de la gran M

𝑤𝑤1 = 5 − 𝑥𝑥1 − 2𝑥𝑥2 − 3𝑥𝑥3 + 𝑆𝑆1 𝑦𝑦 𝑤𝑤2 = 6 − 2𝑥𝑥1 − 𝑥𝑥2 − 2𝑥𝑥3 + 𝑆𝑆2

Así, al sustituir en la función objetivo tendremos

𝑍𝑍 = −3𝑥𝑥1 − 4𝑥𝑥2 − 5𝑥𝑥3 − 𝑀𝑀(5 − 𝑥𝑥1 − 2𝑥𝑥2 − 3𝑥𝑥3 + 𝑆𝑆1)−𝑀𝑀(6 − 2𝑥𝑥1 − 𝑥𝑥2 − 2𝑥𝑥3 + 𝑆𝑆2)− 11𝑀𝑀

Agrupando términos y finalmente

𝑍𝑍 = (−3 + 3𝑀𝑀)𝑥𝑥1 + (−4 + 3𝑀𝑀)𝑥𝑥2 + (−5 + 5𝑀𝑀)𝑥𝑥3 − 𝑀𝑀𝑆𝑆1 − 𝑀𝑀𝑆𝑆2 − 11𝑀𝑀

El arreglo Simplex es entonces,

Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝐶𝐶1 𝐶𝐶2 𝑤𝑤1 𝑤𝑤2 Valores 𝑤𝑤1 1 2 3 -1 0 1 0 5 𝑤𝑤2 2 1 2 0 -1 0 1 6 Z 3-3M 4-3M 5-5M M M 0 0 -11M

De acuerdo con el método de la gran M, la variable 𝑥𝑥3 entra a la base. Por otro lado, sale de la base la variable 𝑤𝑤1, ya que los cocientes son 5

3= 1.66 𝑦𝑦 6

2= 3. El pivote es el

primer elemento de la columna base, 3. El nuevo arreglo del simplex queda así,

1ª, Iteración del simplex Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑆𝑆2 𝑤𝑤1 𝑤𝑤2 Valores 𝑥𝑥3 1

3� 2/3 1 -1/3 0 1 3⁄ 0 5/3

𝑤𝑤2 4/3 -1/3 0 2/3 -1 -2/3 1 8/3

Z 43− 4

3𝑀𝑀 2

3+𝑀𝑀3

0 53−

23𝑀𝑀

M −53

+53𝑀𝑀

0 −253−

83𝑀𝑀

La variable 𝑥𝑥1 es candidata para entrar a la base y sale la variable artificial 𝑤𝑤2.

Page 27: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

276

2ª, Iteración del simplex Base 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑆𝑆1 𝑆𝑆2 𝑤𝑤1 𝑤𝑤2 Valores 𝑥𝑥3 0 ¾ 1 -1/2 1/4 ½ ¼ 1 𝑥𝑥1 1 -1/4 0 1/2 -3/4 -1/2 ¾ 2 Z 0 1 0 1 1 -1+M -1+M -11

Hemos encontrado el óptimo, que son; 𝑍𝑍 = −11 y 𝑥𝑥1 = 2, 𝑥𝑥2 = 0 𝑦𝑦 𝑥𝑥3 = 1. Recordemos que antes multiplicamos la función objetivo por el factor -1, por esa razón regresamos a Z su signo original de 𝑍𝑍 = 11, que es la solución.

Un último ejercicio nos muestra el uso de las variables artificiales, cuando tenemos restricciones de diferentes tipos. El procedimiento es similar ya sea se trata de un programa de maximización o de minimización.

Ejemplo. Una empresa que fabrica alimento para aves produce y empaca dos tipos de comida para patos y pollos, en sacos de 20 kilos. El costo semanal de fabricar un saco de comida para pollos es de $5 pesos y de $7 para patos. La empresa va a comercializar un alimento mixto que sirva para los dos tipos de aves. Al alimento para pollos se le añade un máximo de 200 unidades de vitaminas mientras que la comida para patos deberá tener un mínimo de 100 unidades. El total de unidades de vitaminas para la mezcla deberá ser exactamente 800 unidades. La formulación del programa es el siguiente.

𝑀𝑀𝑀𝑀𝑀𝑀 𝑍𝑍 = 5𝑥𝑥1 + 7𝑥𝑥2 𝑆𝑆.𝐴𝐴. 𝑥𝑥1 ≤ 200 (Vitaminas para pollos) 𝑥𝑥2 ≥ 100 (Vitaminas para patos) 𝑥𝑥1 + 𝑥𝑥2 = 800 (Total de vitaminas) 𝑥𝑥1, 𝑥𝑥2 ≥ 0

Donde 𝑥𝑥1 = Vitaminas para pollos. 𝑥𝑥2 = Vitaminas para patos.

Al igual que en el caso de maximización, se inicia con incluir las variables de holgura y artificiales necesarias para transformar el sistema en una forma estándar. De esta manera, la primera restricción, 𝑥𝑥1 ≤ 200, se rescribe sumando una variable de holgura positiva.

𝑥𝑥1 + 𝐶𝐶1 = 200 La segunda restricción, 𝑥𝑥2 ≥ 100 por su forma requiere una variable de holgura negativa, o de excedente. Este valor negativo representa la falta de recurso. No se puede asignar una cantidad negativa de vitaminas. Para remediar esta situación se le asignará una variable “artificial” a la restricción al lado izquierdo en adición a la variable de holgura negativa. La variable artificial absorberá la negatividad de la variable de holgura.

𝑥𝑥2 − 𝐶𝐶2 + 𝑤𝑤2 = 100

Page 28: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

277

La tercera restricción, 𝑥𝑥1 + 𝑥𝑥2 = 800 (total de unidades de vitaminas), se le añadirá una variable artificial para no violentar la restricción. A menos que la restricción pase por el origen, de lo contrario existirá una diferencia entre el origen y la igualad de la restricción. La variable artificial absorberá esta diferencia.

𝑥𝑥1 + 𝑥𝑥2 = 800

Como en los ejemplos anteriores, siempre que se incorpore una variable de holgura o artificial a una restricción, habrá que agregarlas a la función objetivo. En una solución óptima, las variables artificiales no pueden ser variables básicas ya que estas absorben la negatividad de la variable de holgura. Para la solución de este programa vamos a utilizar el método de la gran M. El método permitirá eliminar las variables artificiales. Se le asigna un costo extremadamente alto para los casos de minimización y una reducción grande en las ganancias para los casos de maximización. En problemas de minimización las variables con costos bajos son deseables y son las primeras en entrar a la solución y las variables con costos altos serán rápidamente eliminadas. Al incorporar las variables artificiales el programa lineal queda:

𝑀𝑀𝑀𝑀𝑀𝑀 𝑍𝑍 = 5𝑥𝑥1 + 7𝑥𝑥2 + 0𝑆𝑆1 + 0𝑆𝑆2 + 𝑀𝑀𝑤𝑤2 + 𝑀𝑀𝑤𝑤3 Función de costos 𝑆𝑆.𝐴𝐴. 𝑥𝑥1 + 𝑆𝑆1 = 200

𝑥𝑥2 − 𝑆𝑆2 + 𝑤𝑤2 = 100 𝑥𝑥1 + 𝑥𝑥2 + 𝑤𝑤3 = 800 𝑥𝑥1, 𝑥𝑥2, 𝑆𝑆1, 𝑆𝑆2,𝑤𝑤1,𝑤𝑤2 ≥ 0

Despejamos las variables artificiales y sustituir en la función objetivo

𝑤𝑤2 = 100 − 𝑥𝑥2 + 𝑆𝑆2 𝑦𝑦 𝑤𝑤3 = 800 − 𝑥𝑥1 − 𝑥𝑥2

𝑍𝑍 = 5𝑥𝑥1 + 7𝑥𝑥2 + 𝑀𝑀(100 − 𝑥𝑥2 + 𝑆𝑆2) + 𝑀𝑀(800 − 𝑥𝑥1 − 𝑥𝑥2) )

Agrupando términos nos queda la transformación.

𝑍𝑍 = (5 −𝑀𝑀)𝑥𝑥1 + (7 − 2𝑀𝑀)𝑥𝑥2 + 𝑀𝑀𝑆𝑆2 + 900𝑀𝑀

El arreglo Simplex será el siguiente:

Base 𝑥𝑥1 𝑥𝑥2 𝐶𝐶1 𝐶𝐶2 𝑤𝑤2 𝑤𝑤3 Valores 𝐶𝐶1 1 0 1 0 0 0 200 𝑤𝑤2 0 1 0 -1 1 0 100

𝑤𝑤3 1 1 0 0 0 1 800

Z -5+M -7+2M 0 -M 0 0 900M Las variables básicas son 𝐶𝐶1, 𝑤𝑤2 𝑦𝑦 𝑤𝑤3, mientras que 𝑥𝑥1, 𝑥𝑥2 𝑦𝑦 𝐶𝐶2 son variables no básicas, porque tienen cambios positivos y sus valores son cero. El valor de la variable básica 𝐶𝐶1 es

Page 29: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

278

de 200 lo que indica la existencia de 200 unidades de vitaminas para pollos. Las variables artificiales, en la base, significan que no se ha cumplido con la restricción. El valor de 𝑤𝑤2 =100, indique que se agreguen por lo menos 100 unidades a la restricción de alimento para patos y su incumplimiento se debe a que la solución inicial está en el punto (0,0). Lo mismo sucede con la variable 𝑤𝑤3.

La variable que entra a la base es 𝑥𝑥2, es la más positiva de 𝑍𝑍. La elección de la variable que sale de la base es 𝑤𝑤2, la que tiene el menor cociente. El nuevo arreglo del simplex es:

Base 𝑥𝑥1 𝑥𝑥2 𝑆𝑆1 𝑆𝑆2 𝑤𝑤2 𝑤𝑤3 Valores 𝐶𝐶1 1 0 1 0 0 0 200 𝑥𝑥2 0 1 0 -1 1 0 100

𝑤𝑤3 1 0 0 1 -1 1 700

Z -5+M 0 0 -7+M 7-2M 0 700+700M El análisis del cuadro anterior nos indica que el costo para la mezcla es de 700 + 700𝑀𝑀, que es alto. El punto extremo (0,100) indica una combinación de 0 unidades de vitaminas para pollos y 100 para patos. La variable de holgura 𝐶𝐶1=200. Esto indica una disponibilidad de 200 unidades. En el caso de la variable básica 𝑤𝑤3, el valor de 700, al sustituir en la restricción aumentada incumple la condición ya que 𝑥𝑥1 + 𝑥𝑥2 + 700 = 800

Base 𝑥𝑥1 𝑥𝑥2 𝑆𝑆1 𝑆𝑆2 𝑤𝑤2 𝑤𝑤3 Valores 𝑥𝑥1 1 0 1 0 0 0 200 𝑥𝑥2 0 1 0 -1 1 0 100

𝑤𝑤3 0 0 -1 1 -1 1 500

Z 0 0 5-M -7+M 7-2M 0 1700+500M En esta tercera iteración del simplex, las variables básicas son 𝑥𝑥1 con valor de 200, 𝑥𝑥2 que vale 100 y 𝑤𝑤3 con 500. El costo para esta solución sigue siendo muy alto, $1700 + $500M, esto se debe a que la variable artificial 𝑤𝑤3 está en la base. No se detiene el proceso iterativo hasta que en el renglón de Z todos los coeficientes sean negativos. De esta manera, la variable que entra a la base es 𝑆𝑆2 ya que es la única con un coeficiente positivo −7 + 𝑀𝑀, y el único cociente que está definido es el de 𝑤𝑤3. Así el nuevo programa lineal es,

Base 𝑥𝑥1 𝑥𝑥2 𝑆𝑆1 𝑆𝑆2 𝑤𝑤2 𝑤𝑤3 Valores 𝑋𝑋1 1 0 1 0 0 0 200 𝑋𝑋2 0 1 -1 0 0 1 600

𝑆𝑆2 0 0 -1 1 -1 1 500

Z 0 0 -2 0 -M 7-M 5200

Page 30: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

279

Los valores de los 𝑍𝑍𝑗𝑗, de 0 y negativos indican que la solución es óptima. Las variables básicas son: 𝑥𝑥1 con un valor de 200 unidades, 𝑥𝑥2 con 600 y 𝑆𝑆2 con 500 unidades. La variable 𝑆𝑆1 al igual que las artificiales, son variables no básicas. Se puede apreciar en el arreglo anterior, que la matriz identidad pasó al lado izquierdo de la tabla. El costo mínimo es de 𝑍𝑍 = $5,200. Así, se utilizarán 200 unidades de vitaminas para pollos y 600 para patos a un costo semanal de $5,200. La variable 𝑆𝑆2 = 500 representa un exceso de 500 unidades de las vitaminas para patos sobre el mínimo necesario de 100 unidades.

Page 31: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

280

Ejercicios. 1. Resolver por el método simplex, los siguientes programas lineales

a) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3

𝐶𝐶.𝑀𝑀 2𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥3 ≤ 2 4𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 ≤ 2

𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0

e) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 2𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 𝐶𝐶.𝑀𝑀 2𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 5 𝑥𝑥1 + 3𝑥𝑥2 + 2𝑥𝑥3 ≥ 3 𝑥𝑥1 + 2𝑥𝑥2 + 2𝑥𝑥3 = 6

𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0 b) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 2𝑥𝑥1 + 3𝑥𝑥2 + 5𝑥𝑥3

𝐶𝐶.𝑀𝑀 2𝑥𝑥1 + 𝑥𝑥2 + 3𝑥𝑥3 ≤ 22 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≥ 18

𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0

f) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 6𝑥𝑥1 + 5𝑥𝑥2 𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 3𝑥𝑥2 ≤ 24 𝑥𝑥1 + 𝑥𝑥2 ≥ 10

2𝑥𝑥1 + 𝑥𝑥2 = 18 𝑥𝑥1,𝑥𝑥2 ≥ 0

c) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 𝑥𝑥2 𝐶𝐶.𝑀𝑀

3𝑥𝑥1 + 𝑥𝑥2 ≤ 23 𝑥𝑥1 + 2𝑥𝑥2 ≤ 12 2𝑥𝑥1 + 𝑥𝑥2 = 15 𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0

g) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 10𝑥𝑥1 + 30𝑥𝑥2 𝐶𝐶.𝑀𝑀

3𝑥𝑥1 + 2𝑥𝑥2 ≥ 6 6𝑥𝑥1 + 𝑥𝑥2 ≥ 6 𝑥𝑥2 ≥ 2

d) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 3𝑥𝑥2 − 2𝑥𝑥3

𝐶𝐶.𝑀𝑀 −𝑥𝑥1 − 2𝑥𝑥2 − 2𝑥𝑥3 = −6 −𝑥𝑥1 − 𝑥𝑥2 + 𝑥𝑥3 ≥ 6 𝑥𝑥1,𝑥𝑥2,𝑥𝑥3 ≥ 0

h) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 3𝑥𝑥1 + 2𝑥𝑥2 + 4𝑥𝑥3 𝐶𝐶.𝑀𝑀

2𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 15 2𝑥𝑥1 + 3𝑥𝑥2 + 𝑥𝑥3 ≤ 12

𝑥𝑥1,𝑥𝑥2,𝑥𝑥3 ≥ 0

2. Supongamos una empresa que requiere realizar una inversión para lo cual acuden a un asesor financiero que les aconseja invertir en acciones tipo A, B, C y D. Las acciones tipo A, son de una empresa de informática, el tipo B son de una compañía telefónica, las acciones tipo C corresponden a una empresa bancaria y el tipo D corresponden a un fondo de inversión. El asesor financiero les aconseja diversificar sus inversiones para reducir el riesgo y les presenta las rentabilidades de cada acción. De acuerdo con sus estadísticas el supone que las acciones A, B, C y D tienen el 3%, 7%,9% y el 11% de rentabilidad, respectivamente.

La empresa dispone de 5 Millones de pesos y después de un análisis de la información llegan a la conclusión de no invertir más de 3.5 millones en acciones tipo A y B, y en las acciones tipo C y D realizar una inversión no mayor a 1.5 millones de pesos, además, no tienen interés en invertir más de 750,000 pesos en las acciones tipo B. ¿Cuál sería su programa de inversión para obtener el máximo beneficio?

Page 32: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

281

7.6 Método Dual

El concepto de dualidad fue desarrollado por Von Neumann en 1947. Tiene una interpretación económica muy importante en tanto que nos introduce al concepto de precios sombra. También llamados precios de referencia. Los precios sombra vienen dados por los valores de las variables en el óptimo del programa dual de un problema de programación lineal. Son precios de equilibrio que responden al aprovechamiento más eficiente de los recursos productivos; una especie de precios naturales o precios justos; los precios que deberían regir en el mercado si el modelo de competencia funcionara correctamente. Vamos a explicar este procedimiento mediante un ejercicio.

Una sociedad agrícola produce 2 cultivos, frijol y maíz, representados por las variables 𝑥𝑥1 𝑦𝑦 𝑥𝑥2. Estos cultivos tienen un precio de venta de $4 y $8 pesos por kilo. En la producción utilizan entre otros 2 insumos; fertilizante y semilla. Las cantidades de cada insumo necesarias para obtener un kilo de cada cultivo son las siguientes:

Entradas 𝑥𝑥1 𝑥𝑥2 Cantidad Fertilizante 1 1 10

Semilla 1 4 20

a) Encontrar el plan de producción que maximiza la utilidad b) Se desea asegurar los cultivos contra una pérdida eventual, helada, baja en

producción, etc. Por lo tanto, se desea encontrar el pago de prima de seguro mínimo para cada cultivo, conservando la utilidad y nivel de producción.

c) Una interpretación económica de b)

Regresando a nuestro ejercicio, el programa lineal primal es;

Maximizar 𝑍𝑍 = 4𝑥𝑥1 + 8𝑥𝑥2

𝑥𝑥1 + 𝑥𝑥2 ≤ 10

𝑥𝑥1 + 4𝑥𝑥2 ≤ 20

𝑥𝑥1, 𝑥𝑥2 ≥ 0

Para dibujar las restricciones,

𝑥𝑥2 = 10 − 𝑥𝑥1 ; si 𝑥𝑥1 = 0, 𝑥𝑥2 = 10 𝑥𝑥1 = 10, 𝑥𝑥2 = 0 𝑥𝑥2 = 5 − 1

4𝑥𝑥1 ; si 𝑥𝑥1 = 0, 𝑥𝑥2 = 5 𝑥𝑥1 = 20, 𝑥𝑥2 = 0

Page 33: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

282

Si sustituimos los puntos extremos en Z. 𝑍𝑍(0,0) = 0; 𝑍𝑍(10,0) = 40; 𝑍𝑍(0, 5) = 40

El beneficio óptimo ocurre cuando 𝑍𝑍 �203

, 103� = 53.33

Para encontrar las primas de seguro más bajas, para cubrir completamente las pérdidas; es decir, remplazar el ingreso por ventas en caso de siniestro. Hagamos 𝑠𝑠1 y 𝑠𝑠2 las primas de seguro para el fertilizante y la semilla de manera que la prima total para cada insumo es 𝑏𝑏1𝑠𝑠1 y 𝑏𝑏2𝑠𝑠2 respectivamente. Además, la prima asegurada no puede ser negativa.

𝑠𝑠1,𝑠𝑠2 ≥ 0 Si el costo del aseguramiento es la suma de las primas por la fertilización y la semilla,

𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑧𝑧𝑀𝑀𝑀𝑀 𝑍𝑍∗ = 𝑏𝑏1𝑠𝑠1 + 𝑏𝑏2𝑠𝑠2 No importa cuales sean los valores individuales de los diferentes insumos es evidente que el seguro combinado de todos los insumos necesarios para producir una unidad del primer cultivo debe ser iguale a 𝑐𝑐1; esta condición se puede representar así,

𝑀𝑀11𝑠𝑠1 + 𝑀𝑀12𝑠𝑠2 ≥ 𝑐𝑐1 𝑀𝑀21𝑠𝑠1 + 𝑀𝑀22𝑠𝑠2 ≥ 𝑐𝑐2

Por lo tanto, para obtener la prima de seguro más adecuada, es necesario asegurar que la prima total de todos los insumos requeridos para producir un kg de cada cultivo sea igual a los kg de cultivo vendidos. De acuerdo a lo anterior, para nuestro ejemplo, obtenemos el programa lineal siguiente:

𝑀𝑀𝑀𝑀𝑀𝑀 𝑍𝑍∗ = 10𝑠𝑠1 + 20𝑠𝑠2 𝑠𝑠1 + 𝑠𝑠2 ≥ 4 𝑠𝑠1 + 4𝑠𝑠2 ≥ 8 𝑠𝑠1,𝑠𝑠2 ≥ 0

Utilizamos el método gráfico para encontrar su solución. 𝑠𝑠1 + 𝑠𝑠2 = 4 ; si 𝑠𝑠1 = 0, 𝑠𝑠2 = 4 𝑠𝑠1 = 4, 𝑠𝑠2 = 0 𝑠𝑠1 + 4𝑠𝑠2 = 8 ; si 𝑠𝑠1 = 0, 𝑠𝑠2 = 2 𝑠𝑠1 = 8, 𝑠𝑠2 = 0

Page 34: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

283

Los valores de 𝑍𝑍∗ para los puntos extremos son los siguientes;

𝑍𝑍∗(8,0) = 80; 𝑍𝑍∗ �83

, 43� = 53.33; 𝑍𝑍∗(0, 4) = 80

El beneficio óptimo, costo de la prima menor, ocurre cuando 𝑍𝑍 �83

, 43� = 53.33

A fin de darle sentido económico a las variables duales, aumentamos el recurso 1 en una unidad. El programa lineal primal, maximización, se modifica en la primera restricción. Resolvemos las restricciones como un sistema de ecuaciones.

𝑥𝑥1 + 𝑥𝑥2 = 11 (-1) 𝑥𝑥1 + 4𝑥𝑥2 = 20 3𝑥𝑥2 = 9 → 𝑥𝑥2 = 3; 𝑐𝑐𝐶𝐶𝑀𝑀 𝑝𝑝𝐶𝐶 𝐶𝐶𝑀𝑀𝑀𝑀𝐶𝐶𝐶𝐶 𝑥𝑥1 = 11 − 3 = 8 La variación en el beneficio es

𝑍𝑍 = 4(8) + 8(3) = 32 + 24 = 56 = 1603

+ 83

Como puede verificarse, la cantidad 83 representa el valor de 𝑠𝑠1 en la solución óptima del

programa dual. Si aumentamos el recurso 2 en una unidad. El programa lineal primal, maximización, se modifica en la restricción 2. 𝑥𝑥1 + 𝑥𝑥2 = 10 (−1) 𝑥𝑥1 + 4𝑥𝑥2 = 21 3𝑥𝑥2 = 11 → 𝑥𝑥2 = 11

3; 𝑥𝑥1 = 10 − 11

3= 19

3

La variación en el beneficio es 𝑍𝑍 = 4 �19

3� + 8 �11

3� = 76

3+ 88

3= 164

3= 160

3+ 4

3

Como puede verificarse, la cantidad 4

3 representa el valor de 𝑠𝑠2 en la solución óptima del

programa dual. Es evidente que el sentido económico de las variables duales varía en función del sentido económico del vector 𝐶𝐶, que es el beneficio asociado a una unidad de producción del producto. Así, si 𝐶𝐶 expresa los beneficios unitarios, entonces 𝑠𝑠 representa los beneficios marginales imputables al aumento de la cantidad disponible de un recurso.

Page 35: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

284

7.7 Programa dual a partir del primal

Como hemos visto antes, un programa lineal se puede presentar de dos formas diferentes: en la forma canónica y en la estándar.

Maximizar 𝑍𝑍 = 𝑐𝑐𝑥𝑥 Sujeto a: 𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏 𝑥𝑥 ≥ 0

Minimizar 𝑧𝑧∗ = 𝑏𝑏𝑠𝑠 Sujeto a: 𝐴𝐴𝑠𝑠 ≥ 𝑐𝑐 𝑠𝑠 ≥ 0

Estos dos programas lineales se denominan comúnmente el primal y el dual. El problema consiste en encontrar el programa dual a partir del primal, Como se muestra en el esquema anterior. Se trata de pasar de un problema de maximización a uno de minimización, con restricciones del tipo mayor o igual y donde las variables de decisión son mayores o iguales a cero. Las variables no son las mismas, rescribimos las variables 𝑥𝑥`𝐶𝐶 a 𝑠𝑠´𝐶𝐶. Los precios o valores de estas nuevas variables en la función objetivo a minimizar son las constantes de las restricciones del programa primal. A cada restricción del primal corresponde una variable dual. Las nuevas constantes de las restricciones del programa dual corresponden a los valores de la función objetivo del primal. Finalmente se cambia el sentido de las inecuaciones de las restricciones. El cuadro siguiente resume la forma de encontrar el programa dual a partir del primal.

Primal Dual

Variable Restricción Restricción Variable Max Min Beneficio unitario Término de la derecha Término de la derecha Costo unitario Línea Columna Columna Línea Restricción ≤ Restricción ≥ Restricción = Restricciones ≥ 𝑦𝑦 ≤

Ejemplo. Sea el programa lineal siguiente, considerado como el primal.

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 4𝑥𝑥1 + 3𝑥𝑥2 + 5𝑥𝑥3 𝐶𝐶.𝑀𝑀 2𝑥𝑥1 + 4𝑥𝑥2 + 𝑥𝑥3 ≤ 8

𝑥𝑥1 − 5𝑥𝑥3 ≤ 4 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0

Page 36: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

285

El programa dual que corresponde es el siguiente,

𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧∗ = 8𝑠𝑠1 + 4𝑠𝑠2 𝐶𝐶.𝑀𝑀 2𝑠𝑠1 + 𝑠𝑠2 ≥ 4 4𝑠𝑠1 ≥ 3 𝑠𝑠1 − 5𝑠𝑠2 ≥ 5 𝑠𝑠1,𝑠𝑠2,𝑠𝑠3 ≥ 0

Si representamos es primal en forma matricial, el dual correspondería a la transpuesta de esta matriz,

�2 4 1 81 0 −5 44 3 5 0

� y su transpuesta �

2 1 44 0 31 −5 58 4 0

� Que corresponde al programa dual

anterior

El método simplex-dual es útil para resolver problemas en los que la forma estándar es compleja, restricciones negativas o la aplicación del método simplex no es inmediata. Es decir, si en un problema lineal, después de igualar a cero la función objetivo y pasar a su forma estándar, utilizando las variables de holgura, al menos una restricción, cualquiera de las constantes del vector de disponibilidades 𝑏𝑏 es negativa y se asegura que se tiene solución óptima. Si tenemos el problema de programación lineal siguiente,

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 4𝑥𝑥2 𝐶𝐶.𝑀𝑀 3𝑥𝑥1 − 𝑥𝑥2 ≤ 12

𝑥𝑥1 − 3𝑥𝑥2 ≤ 6 𝑥𝑥1, 𝑥𝑥2 ≥ 0

Si hacemos 𝑥𝑥1 = 0, el valor de 𝑥𝑥2 puede crecer sin limite y las restricciones se satisfacen, entonces tenemos una solución óptima infinita. Su programa dual es,

𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧∗ = 12𝑠𝑠1 + 6𝑠𝑠2 𝐶𝐶.𝑀𝑀 3𝑠𝑠1 + 𝑠𝑠2 ≥ 1 −𝑠𝑠1 − 3𝑠𝑠2 ≥ 4

𝑠𝑠1,𝑠𝑠2 ≥ 0 En el caso del dual, la segunda inecuación no satisface el criterio de no negatividad, ni el primal ni el dual tienen soluciones realizables. Si en un programa lineal, primal o dual, tiene óptimo finito, también lo tiene el otro y los valores óptimos de la función objetivo son iguales; es decir la solución en uno de los programas es la misma en el otro. Si un problema no tiene una solución limitada, entonces el otro no tiene solución factible.

Page 37: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

286

De lo anterior nos lleva a las siguientes conclusiones.

I. Si uno de los dos problemas tiene solución óptima finita, entonces el otro también la tiene.

II. Si el problema primal tiene solución no acotada, entonces el dual no tiene solución óptima factible (el recíproco no es cierto).

Ejemplo: Un ahorrador, desea invertir $500,000 pesos en la bolsa de valores. Para este fin, solicita asesoría a un corredor quien le ofrece tres tipos acciones. Dos a una tasa de interés “segura” con un rendimiento del 5% y de 8% anual y un tercer juego de acciones de alto riesgo que puede llegar a ser del 16% anual.

a) Determinar las cantidades que maximizan su inversión, si el ahorrador no desea colocar más de 250,000 pesos en el tercer juego de acciones y $300,000 pesos cuando mucho en los paquetes de acciones dos y tres.

b) ¿Qué podríamos esperar de un cambio en estos techos de inversión?

En primer lugar, vamos a asignar las variables 𝑥𝑥1 y 𝑥𝑥2 a los paquetes de acciones de rendimiento seguro y 𝑥𝑥3 para el paquete de acciones con crecimiento especulativo. Para facilitar los cálculos, las variables se expresarán en diez miles de pesos. El programa de optimización es el siguiente,

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 0.05𝑥𝑥1 + 0.08𝑥𝑥2 + 0.16𝑥𝑥3 𝐶𝐶.𝑀𝑀 𝑥𝑥3 ≤ 250,000

𝑥𝑥2 + 𝑥𝑥3 ≤ 300,000 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 500000

𝑥𝑥1,𝑥𝑥2, 𝑥𝑥3 ≥ 0

Rendimiento Inversión

Lo reescribimos en la forma estándar, por el método usual

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 0.05𝑥𝑥1 + 0.08𝑥𝑥2 + 0.16𝑥𝑥3

𝐶𝐶.𝑀𝑀 𝑥𝑥3 + 𝐶𝐶1 = 250,000 𝑥𝑥2 + 𝑥𝑥3 + 𝐶𝐶2 = 300,000 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 + 𝐶𝐶3 = 500000

𝑥𝑥1,𝑥𝑥2, 𝑥𝑥3 ≥ 0

La tabla del simplex correspondiente es,

Variables básicas

𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 Valor

𝐶𝐶1 0 0 1 1 0 0 250,000

𝐶𝐶2 0 1 1 0 1 0 300,000

𝐶𝐶3 1 1 1 0 0 1 500,000

𝑧𝑧∗ -0.05 -0.08 -0.16 0 0 0 0

Page 38: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

287

Variables básicas

𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 Valor

𝑥𝑥3 0 0 1 1 0 0 250,000

𝐶𝐶2 0 1 0 -1 1 0 50,000

𝐶𝐶3 1 1 0 -1 0 1 250,000

𝑧𝑧∗ -0.05 -0.08 0 0.16 0 0 40,000

Variables básicas

𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 Valor

𝑥𝑥3 0 0 1 1 0 0 250,000

𝑥𝑥2 0 1 0 -1 1 0 50,000

𝐶𝐶3 1 0 0 0 -1 1 200,000

𝑧𝑧∗ -0.05 0 0 0.08 0.08 0.05 44,000

Variables básicas

𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 Valor

𝑥𝑥3 0 0 1 1 0 0 250,000

𝑥𝑥2 0 1 0 -1 1 0 50,000

𝑥𝑥1 1 0 0 0 -1 1 200,000

𝑧𝑧∗ 0 0 0 0.08 0.03 0.05 54,000

La solución óptima consiste en invertir 200,000 pesos en el primer paquete de acciones, 50,000 en el segundo y 250,000 en el tercer paquete, la utilidad es, 𝑍𝑍 = $54,000 pesos. El programa dual correspondiente, para obtener los costos marginales

𝑀𝑀𝑀𝑀𝑀𝑀 𝑈𝑈 = 250,000𝑠𝑠1 + 300,000𝑠𝑠2 + 500,000𝑠𝑠3

𝐶𝐶.𝑀𝑀 𝑠𝑠1 ≥ 0.05 𝑠𝑠1 + 𝑠𝑠2 ≥ 0.08 𝑠𝑠1 + 𝑠𝑠2 + 𝑠𝑠3 ≥ 0.16

𝑠𝑠1,𝑠𝑠2,𝑠𝑠3 ≥ 0

Inversión Rendimiento

Para resolver el dual, tendremos que utilizar el método de la gran M, de esta manera tendremos, sumas las variables de holgura negativas y las artificiales correspondientes para llevarla a la forma estándar.

Page 39: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

288

𝑀𝑀𝑀𝑀𝑀𝑀 𝑈𝑈∗ = 250,000𝑠𝑠1 + 300,000𝑠𝑠2 + 500,000𝑠𝑠3 + 𝑀𝑀𝑤𝑤1 + 𝑀𝑀𝑤𝑤2 + 𝑀𝑀𝑤𝑤3

𝐶𝐶.𝑀𝑀 𝑠𝑠3 − 𝐶𝐶1 + 𝑤𝑤1 = 0.05

𝑠𝑠2 + 𝑠𝑠3 − 𝐶𝐶2 + 𝑤𝑤2 = 0.08 𝑠𝑠1 + 𝑠𝑠2 + 𝑠𝑠3 − 𝐶𝐶3 + 𝑤𝑤3 = 0.16

𝑠𝑠1,𝑠𝑠2,𝑠𝑠3 ≥ 0 Despejamos las variables artificiales.

𝑤𝑤1 = 0.05 − 𝑠𝑠3 + 𝐶𝐶1 ; 𝑤𝑤2 = 0.08 − 𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶2 𝑦𝑦 𝑤𝑤3 = 0.16 − 𝑠𝑠1 − 𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶3 Sustituimos en la función objetivo y tendremos,

𝑈𝑈∗ = 250,000𝑠𝑠1 + 300,000𝑠𝑠2 + 500,000𝑠𝑠3 +𝑀𝑀(0.05− 𝑠𝑠3 + 𝐶𝐶1) + 𝑀𝑀(0.08 − 𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶2)

+ 𝑀𝑀(0.16 − 𝑠𝑠1 − 𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶3 )

Agrupando términos nos queda la transformación.

𝑈𝑈∗ = (250,000−𝑀𝑀)𝑠𝑠1 + (300,000− 2𝑀𝑀)𝑠𝑠2 + (500,000− 3𝑀𝑀)𝑠𝑠3 + 𝑀𝑀𝐶𝐶1 + 𝑀𝑀𝐶𝐶2 + 𝑀𝑀𝐶𝐶3

+ 0.29𝑀𝑀 La tabla del simplex correspondiente es, Var. básica

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 𝑤𝑤1 𝑤𝑤2 𝑤𝑤3 Valor

𝑤𝑤1 0 0 1 -1 0 0 1 0 0 0.05

𝑤𝑤2 0 1 1 0 -1 0 0 1 0 0.08

𝑤𝑤3 1 1 1 0 0 -1 0 0 1 0.16

𝑈𝑈∗ 𝑀𝑀 − 250,000 2𝑀𝑀 − 300,000 3𝑀𝑀 − 500,000 -M -M -M 0 0 0 0.29M

Var. básicas

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 𝑤𝑤1 𝑤𝑤2 𝑤𝑤3 Valor

𝑠𝑠3 0 0 1 -1 0 0 1 0 0 0.05

𝑤𝑤2 0 1 0 1 -1 0 -1 1 0 0.03

𝑤𝑤3 1 1 0 1 0 -1 -1 0 1 0.11

𝑠𝑠∗

𝑀𝑀− 250,000

2𝑀𝑀− 300,000

0 2𝑀𝑀− 500,000

−𝑀𝑀 −𝑀𝑀 −3𝑀𝑀+ 500,000

0 0 25,000+ 0.14𝑀𝑀

Page 40: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

289

Var. básicas

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 𝑤𝑤1 𝑤𝑤2 𝑤𝑤3 Valor

𝑠𝑠3 0 0 1 -1 0 0 1 0 0 0.05

𝑠𝑠2 0 1 0 1 -1 0 -1 1 0 0.03

𝑤𝑤3 1 0 0 0 1 -1 0 -1 1 0.088

𝑈𝑈∗ 𝑀𝑀− 250,000

0 0 -200,000 𝑀𝑀− 300,000

-M −𝑀𝑀+ 200,000

−2𝑀𝑀+ 300,000

0 34,000+ 0.08𝑀𝑀

Var. básicas

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 𝑤𝑤1 𝑤𝑤2 𝑤𝑤3 Valor

𝑠𝑠3 0 0 1 -1 0 0 1 0 0 0.05

𝑠𝑠2 0 1 0 1 -1 0 -1 0 0 0.03

𝑠𝑠1 1 0 0 0 1 -1 0 -1 1 0.08

𝑈𝑈∗ 0 0 0 -200,000 −50,000 -250,000 −𝑀𝑀+ 200,000

−𝑀𝑀+ 550,000

−𝑀𝑀+ 250,000

54,000

De esta manera. Si aumentamos el capital en el primer paquete de acciones 10,000 pesos, la utilidad aumentará en 0.05 ∗ 10,000 = 500 pesos. Un aumento de capital de 10,000 pesos en los paquetes 2 y 3 provocara una utilidad de 300 pesos y de 800 pesos, respectivamente. Ejemplo: Una organización de productores produce dos productos artesanales, collares y aretes que indicaremos como x1,, x2. Estos productos tienen un precio de venta de 14 y 12 pesos, respectivamente. Para la elaboración de estos productos se utilizan los siguientes ingredientes, madera, hilo y semillas, que indicaremos como b1,, b2, b3 en kilogramos. Estas relaciones se representan en la siguiente tabla.

Insumos 𝑥𝑥1 𝑥𝑥2 Disponible

𝑏𝑏1 2 3 20

𝑏𝑏2 3 2 25

𝑏𝑏3 1 1 15

a) Encontrar el plan de producción que maximiza las utilidades, utilizando el

programa dual.

b) ¿Cuál es el máximo beneficio? ¿Cuánto aumentaría este beneficio si se dispusiera de un kilogramo adicional de semillas?

Page 41: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

290

El programa de maximización es el siguiente:

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 14𝑥𝑥1 + 12𝑥𝑥2 𝐶𝐶.𝑀𝑀 2𝑥𝑥1 + 3𝑥𝑥2 ≤ 20 3𝑥𝑥1 + 2𝑥𝑥2 ≤ 25

𝑥𝑥1 + 𝑥𝑥2 ≤ 15 𝑥𝑥1, 𝑥𝑥2 ≥ 0

Programa dual

𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧∗ = 20𝑠𝑠1 + 25𝑠𝑠2 + 15𝑠𝑠3 𝐶𝐶.𝑀𝑀 2𝑠𝑠1 + 3𝑠𝑠2 + 𝑠𝑠3 ≥ 14 3𝑠𝑠1 + 2𝑠𝑠2 + 𝑠𝑠3 ≥ 12

𝑠𝑠1,𝑠𝑠2, 𝑠𝑠3 ≥ 0 Para resolver el dual, tendremos que utilizar el método de la gran M, de esta manera tendremos, sumas las variables de holgura negativas y las artificiales correspondientes para llevarla a la forma estándar.

𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧∗ = 20𝑠𝑠1 + 25𝑠𝑠2 + 15𝑠𝑠3 + 𝑀𝑀𝑤𝑤1 + 𝑀𝑀𝑤𝑤2

𝐶𝐶.𝑀𝑀 2𝑠𝑠1 + 3𝑠𝑠2 + 𝑠𝑠3 − 𝐶𝐶1 + 𝑤𝑤1 = 14 3𝑠𝑠1 + 2𝑠𝑠2 + 𝑠𝑠3 − 𝐶𝐶2 + 𝑤𝑤2 = 12

𝑠𝑠1,𝑠𝑠2,𝑠𝑠3, 𝐶𝐶1, 𝐶𝐶2,𝑤𝑤1,𝑤𝑤2 ≥ 0 Despejamos las variables artificiales.

𝑤𝑤1 = 14 − 2𝑠𝑠1 − 3𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶1 ; 𝑤𝑤2 = 12 − 3𝑠𝑠1 − 2𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶2 Sustituimos en la función objetivo y tendremos, 𝑈𝑈∗ = 20𝑠𝑠1 + 25𝑠𝑠2 + 15𝑠𝑠3 + 𝑀𝑀(14− 2𝑠𝑠1 − 3𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶1) +𝑀𝑀(12− 3𝑠𝑠1 − 2𝑠𝑠2 − 𝑠𝑠3 + 𝐶𝐶2)

Agrupando términos nos queda la transformación.

𝑈𝑈∗ = (20 − 5𝑀𝑀)𝑠𝑠1 + (25 − 5𝑀𝑀)𝑠𝑠2 +𝑀𝑀𝐶𝐶1 + 𝑀𝑀𝐶𝐶2 + 26𝑀𝑀 La tabla del simplex correspondiente es, Primera tabla del Simplex.

Variables básicas

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝑤𝑤1 𝑤𝑤2 Valor

𝑤𝑤1 2 3 1 -1 0 1 0 14

𝑤𝑤2 3 2 1 0 -1 0 1 12

𝑧𝑧∗ 5M-20 5M-25 -15 -M -M 0 0 26M

Page 42: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

291

La nueva tabla queda;

Variables básicas

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝑤𝑤1 𝑤𝑤2 Valor

𝑤𝑤1 0 53� 1

3� -1 23� 1 −2

3� 6

𝑠𝑠1 1 23� 1

3� 0 −13� 0 1

3� 4

𝑧𝑧∗ 0 5

3� 𝑀𝑀 − 353� −5

3� 𝑀𝑀 − 253� -M 2

3� 𝑀𝑀 − 203�

0 −53� 𝑀𝑀

+ 203�

6𝑀𝑀+ 80

Variables básicas

𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝑤𝑤1 𝑤𝑤2 Valor

𝑠𝑠2 0 1 15� −3

5� 25� 3

5� −25� 18

5�

𝑠𝑠1 1 0 15� 2

5� −35� −2

5� 35� 8

5�

𝑧𝑧∗ 0 0 −2𝑀𝑀 − 6 -7 −2 −𝑀𝑀+ 7

−𝑀𝑀+ 2

122

a) La solución es óptima con 𝑠𝑠1 = 85 , 𝑠𝑠2 = 18

15 y 𝑠𝑠3 = 0. Estos valores corresponden al

beneficio marginal que se obtendría al aumentar un kilogramo de madera, de hilo y de semilla respectivamente. El óptimo es 122.

b) Los valores de 𝑧𝑧∗(𝐶𝐶1, 𝐶𝐶2) = (−7,−2) corresponden a los valores de 𝑥𝑥1 = 7 𝑦𝑦 𝑥𝑥2 =2 del programa primal. El máximo beneficio es de 122. Podemos verificar este resultado si sustituimos en la función objetivo del primal

𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 14(7) + 12(2) = 122 Ejemplo. Finalmente, un ejemplo de solución del dual para un programa de minimización, como el siguiente,

𝑀𝑀𝑀𝑀𝑀𝑀 𝑍𝑍 = 2𝑥𝑥1 + 10𝑥𝑥2 + 8𝑥𝑥3 𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≥ 4 𝑥𝑥2 − 2𝑥𝑥3 ≥ 8 𝑥𝑥1 + 3𝑥𝑥2 + 2𝑥𝑥3 ≥ 6

𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3 ≥ 0

Page 43: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

292

El programa dual correspondiente,

𝑀𝑀𝑀𝑀𝑥𝑥 𝑈𝑈 = 4𝑠𝑠1 + 8𝑠𝑠2 + 6𝑠𝑠3 𝐶𝐶.𝑀𝑀 𝑠𝑠1 + 𝑠𝑠3 ≤ 2 𝑠𝑠1 + 𝑠𝑠2 + 3𝑠𝑠3 ≤ 10 𝑠𝑠1 − 2𝑠𝑠2 + 2𝑠𝑠3 ≤ 8

𝑠𝑠1,𝑠𝑠2,𝑠𝑠3 ≥ 0 Para resolver el dual, tendremos que utilizar el método de la gran M, de esta manera tendremos, sumas las variables artificiales para llevarla a la forma estándar.

𝑀𝑀𝑀𝑀𝑥𝑥 𝑈𝑈∗ = 4𝑠𝑠1 + 8𝑠𝑠2 + 6𝑠𝑠3 𝐶𝐶.𝑀𝑀 𝑠𝑠1 + 𝑠𝑠3 + 𝐶𝐶1 = 2

𝑠𝑠1 + 𝑠𝑠2 + 3𝑠𝑠3 + 𝐶𝐶2 = 10 𝑠𝑠1 − 2𝑠𝑠2 + 2𝑠𝑠3 + 𝐶𝐶3 = 8 𝑠𝑠1,𝑠𝑠2,𝑠𝑠3 ≥ 0

La tabla del simplex dual inicial quedaría de la siguiente forma,

Variables básicas 𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 Valor

𝐶𝐶1 1 0 1 1 0 0 2

𝐶𝐶2 1 1 3 0 1 0 10

𝐶𝐶3 1 -2 2 0 0 1 8

𝑈𝑈∗ -4 -8 -6 0 0 0 0

La variable que entra a la base es 𝑠𝑠2 y el único renglón factible es el dos, uno es cero y el otro negativo.

Variables básicas 𝑠𝑠1 𝑠𝑠2 𝑠𝑠3 𝐶𝐶1 𝐶𝐶2 𝐶𝐶3 Valor

𝐶𝐶1 1 0 1 1 0 0 2

𝑠𝑠2 1 1 3 0 1 0 10

𝐶𝐶3 3 0 8 0 2 1 28

𝑈𝑈∗ 4 0 18 0 8 0 80

a) La solución es óptima con 𝑠𝑠1 =, 𝑠𝑠2 = 10 y 𝑠𝑠3 = 0. El óptimo es 𝑈𝑈∗ = 80. b) Los valores de 𝑈𝑈∗(𝐶𝐶1, 𝐶𝐶2, 𝐶𝐶3) = (0,8,0) que para el caso de maximización

corresponden a los valores de 𝑥𝑥1 = 0 , 𝑥𝑥2 = 8 y 𝑥𝑥3 = 0 del programa primal. El máximo beneficio es de 80.

Page 44: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

293

7.8 Resumen del método simplex para problemas de maximización.

Para solucionar un problema de maximización estándar por el método simplex, seguimos los siguientes pasos:

1. Podemos convertir un problema de minimización, se multiplicamos la función objetivo por menos uno. Es decir,

𝑀𝑀𝑀𝑀𝑀𝑀 𝑍𝑍 = 3𝑥𝑥 + 4𝑦𝑦 − 8𝐶𝐶 → 𝑀𝑀𝑀𝑀𝑥𝑥 𝑍𝑍 = −3𝑥𝑥 − 4𝑦𝑦 + 8𝐶𝐶

2. Convierta las desigualdades en igualdades. • Cada restricción del tipo <= puede ser llevada a una ecuación de igualdad

usando una (nueva) variable de holgura no negativa, con coeficiente nulo en la función objetivo.

• Cada restricción del tipo >= puede ser llevada a una ecuación de igualdad usando una variable de exceso no negativa, con coeficiente nulo en la función objetivo, para compensar el efecto de la variable de holgura negativa en la restricción completamos con una variable artificial.

• Las restricciones del tipo “=”, Se les añade una variable artificial para no violentar la restricción. A menos que la restricción pase por el origen, de lo contrario existirá una diferencia entre el origen y la igualad de la restricción. La variable artificial absorberá esta diferencia.

En una solución óptima, las variables artificiales no pueden ser variables básicas. La razón para que estas se excluyan en la solución óptima es que estas absorben la negatividad de la variable de holgura.

3𝑥𝑥 − 4𝑦𝑦 ≤ 12 3𝑥𝑥 − 4𝑦𝑦 + 𝑆𝑆1 = 12 𝑥𝑥 + 2𝑦𝑦 + 𝐶𝐶 ≥ 4 𝑥𝑥 + 2𝑦𝑦 − 𝑆𝑆2 + 𝐴𝐴2 = 4

4𝑥𝑥 − 2𝑦𝑦 + 5𝐶𝐶 = 12 4𝑥𝑥 − 2𝑦𝑦 + 5𝐶𝐶 + 𝐴𝐴3 = 12 3. Escriba la tabla inicial simplex. 4. Elegir la columna pivote. Encuentre el número negativo mayor (en valor absoluto)

en el último renglón, Z. Su columna es la columna pivote. (Si hay más que una candidata, escoja alguna.) Si no hay números negativo en último renglón, solo existen valores positivos o cero, entonces hemos encontrado el punto óptimo. Es decir, la solución básica que maximiza la función objetivo.

5. Escoja el pivote en la columna pivote: El pivote debe ser una entrada positiva. Para cada entrada positiva b en la columna pivote, calcule la razón a/b, donde a es la entrada de la última columna (valores solución) del renglón. De estos cocientes, elegir el valor positivo menor. La entrada correspondiente b es el pivote.

6. Use el pivote para recalcular la tabla del simplex, de acuerdo con el método descrito antes. Sustituya la variable que sale de la base por la nueva variable básica. 𝑀𝑀𝑖𝑖𝑗𝑗 = 𝑀𝑀𝑖𝑖𝑗𝑗 −

𝑎𝑎𝑖𝑖𝑖𝑖𝑎𝑎𝑟𝑟𝑖𝑖

𝑀𝑀𝑟𝑟𝑗𝑗 𝑀𝑀 ≠ 𝑀𝑀 Donde 𝑀𝑀𝑟𝑟𝑖𝑖 es la posición del pivote; k es la columna pivote y r el renglón pivote.

7. Repetir pasos 3 al 5 hasta encontrar el óptimo.

Page 45: Capítulo 7.rurban.icidac.org/index_archivos/Notas/Capitulo_VII_Programacion_lineal.pdf · aplicaciones de programación lineal, los ejemplos clásicos son, el problema de la dieta

294

Ejercicios. 1. Escribir el programa dual de los siguientes programas lineales (sin resolver)

a) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 3𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3

𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≥ 6

𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥3 ≤ 20 𝑥𝑥3 ≤ 2 𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0

d) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 𝑥𝑥1 − 3𝑥𝑥2 + 2𝑥𝑥3 𝐶𝐶.𝑀𝑀

3𝑥𝑥1 − 𝑥𝑥2 + 2𝑥𝑥3 ≤ 7 −2𝑥𝑥1 + 4𝑥𝑥2 ≤ 12 −4𝑥𝑥1 + 3𝑥𝑥2 + 8𝑥𝑥3 ≤ 10

𝑥𝑥1,𝑥𝑥2, 𝑥𝑥3 ≥ 0

b) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 𝐶𝐶.𝑀𝑀

𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 = 15 2𝑥𝑥1 + 3𝑥𝑥2 + 2𝑥𝑥3 ≤ 4

4𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≥ 10 𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0

e) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 3𝑥𝑥1 + 2𝑥𝑥2 − 2𝑥𝑥3 𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 3 𝑥𝑥2 + 𝑥𝑥3 ≥ 2 𝑥𝑥1 + 𝑥𝑥3 ≤ 1 𝑥𝑥1,𝑥𝑥2, 𝑥𝑥3 ≥ 0

c) 𝑀𝑀𝑀𝑀𝑥𝑥 𝑧𝑧 = 4𝑥𝑥1 + 7𝑥𝑥2 + 3𝑥𝑥3

𝐶𝐶.𝑀𝑀 𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 ≤ 18

3𝑥𝑥1 − 𝑥𝑥2 + 2𝑥𝑥3 = 4 𝑥𝑥1, 𝑥𝑥2,𝑥𝑥3 ≥ 0

f) 𝑀𝑀𝑀𝑀𝑀𝑀 𝑧𝑧 = 3𝑥𝑥1 + 2𝑥𝑥2 + 4𝑥𝑥3 𝐶𝐶.𝑀𝑀

2𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≥ 15 2𝑥𝑥1 + 3𝑥𝑥2 + 𝑥𝑥3 ≤ 12

𝑥𝑥1,𝑥𝑥2, 𝑥𝑥3 ≥ 0

2. Una empresa produce cuatro productos 𝑃𝑃1,𝑃𝑃2,𝑃𝑃3,𝑃𝑃4, usando dos insumos, madera y acero como materias primas, en kg. Estas cantidades de materia prima se muestran en la tabla siguiente,

𝑃𝑃1,𝑃𝑃2,𝑃𝑃3,𝑃𝑃4 Disponibilidad

Madera 4 9 7 10 6,000

Acero 2 2 4 20 4,000

Beneficio 12 26 20 60

a) Comprobar que fabricar 500 unidades del producto 𝑃𝑃1 y 150 de 𝑃𝑃2 es la producción óptima

b) Escribir el programa dual e identificar su solución óptima, a partir del programa dual.

c) ¿Encontrar el beneficio máximo? Y cuanto aumentaría si dispusiera de una unidad adicional de madera y de acero.