Aplicaciones de la Programación Lineal APLICACIONES DE LA PROGRAMACIÓN LINEAL Autores: Javier Faulin ([email protected]), Ángel A. Juan ([email protected]). ESQUEMA DE CONTENIDOS___________________________________________ Finanzas Asignación tareas Aplicaciones Prog. Lineal Producción Marketing Otras decisiones Mezclas INTRODUCCIÓN Logística ___________________ Después de estudiar detalladamente los conceptos básicos de Programación Lineal ubicados en un contexto de aplicaciones de la Investigación Operativa en el mundo empresarial e industrial, se hace preciso describir cómo es posible aplicar los conceptos anteriores en diferentes situaciones prácticas. Este desarrollo de situaciones del mundo real constituye el auténtico desarrollo de la programación lineal. No se tratan de meras aplicaciones, sino del campo específico natural de desarrollo de la programación lineal. Sin casos prácticos como los que aquí se van a desarrollar no se hubiera dado el auge real de esta técnica operacional. Por otra parte, el conocimiento de aplicación de los principales conceptos de programación lineal permite plantear la resolución de nuevos casos prácticos que surgen día a día en la Empresa, la Industria y la Ingeniería. De esta forma, el objetivo de este capítulo es mostrar el vasto número de problemas de la vida real que pueden ser abordados mediante las técnicas de programación lineal. Presentaremos aplicaciones a áreas tan diversas como dirección de la producción, investigación de mercados, marketing, logística, finanzas, etc. En todos esos ámbitos, la programación lineal se revela como herramienta insustituible en la toma de decisiones. Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 1 Aplicaciones de la Programación Lineal OBJETIVOS • • • • ________________________ Conocimiento detallado de la Programación Lineal en el mundo real. Conocimiento detallado de los principales problemas que resuelve la Programación Lineal. Adquisición de habilidades para el planteamiento y resolución de nuevos casos reales. Manejo del paquete LINDO en la resolución de casos reales. CONOCIMIENTOS PREVIOS ___________________________________ Se recomienda haber leído los mathblocks de Introducción a la Investigación Operativa y de Programación Lineal y Programación Lineal Entera con Excel y LINDO. CONCEPTOS FUNDAMENTALES ______________________________ Programación lineal y método simplex: Una vez se tiene un concepto general de lo que es la programación lineal, es importante conocer la forma de actuación particular de los algoritmos que resuelven programas lineales. De entre todos los algoritmos destaca por su importancia histórica y práctica el método simplex. Dicho método fue desarrollado por Dantzig en 1947, alcanzando un éxito inusitado en las décadas posteriores con el desarrollo de los computadores. El conocimiento básico de dicho método ayuda a la comprensión de las diferentes formas de resolución de programas lineales. Dicho método puede ser estudiado en alguno de los manuales que se presentan a continuación: Hillier y Liebermann (2001) (Capítulos 4 y 5) o bien Winston (1994) (Capítulos 3 y 4). Por otra parte, el estudio de aplicaciones de la Programación Lineal es exhaustivo en los textos de Hillier, Hillier y Liebermann (2000); Eppen et al.(1998); o bien de Anderson, Sweeney y Williams (2001). Clasificación de las aplicaciones de PL: La Programación Lineal presenta un gran número de aplicaciones en multitud de ámbitos empresariales, industriales, de gestión y en general, de toma de decisiones. En este mathblock tan sólo se hace una exposición sucinta de las aplicaciones más clásicas. Sin embargo, se aconseja al lector la consulta de los documentos de Internet siguientes: http://www.fred.ifas.ufl.edu/courses/AEB5516/Lectures/blending.doc http://dsc.gsu.edu/dscthw/Optimize/LP.PDF En el primero se describen los problemas clásicos de mezclas y de la dieta, mientras en el segundo se desarrolla un elenco de aplicaciones que sirven muy bien para completar los casos aquí descritos. En otro orden de cosas, en el presente mathblock se van a desarrollar campos de aplicación de la programación lineal en los ámbitos siguientes: Marketing, Producción, Asignación de Tareas, Finanzas, Logística y Mezclas. Esta clasificación no es exhaustiva: existen otros muchos campos de aplicación de la Programación Lineal que aquí no aparecen citados, todos ellos relacionados con tomas de decisiones operativas y tácticas en la gestión empresarial. En algún caso, también aparecen aplicaciones en tomas de decisiones estratégicas. Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 2 Aplicaciones de la Programación Lineal APLICACIONES DE LA PROGRAMACIÓN LINEAL EN MARKETING_______ __ SELECCIÓN DE MEDIOS PUBLICITARIOS La Programación Lineal se utiliza en el campo del marketing y la publicidad como una herramienta que nos permite determinar cuál es la combinación más efectiva de medios para anunciar nuestros productos. En muchas ocasiones partiremos de un presupuesto para publicidad fijo y nuestro objetivo será distribuirlo entre las distintas opciones que se nos ofrecen (televisión, radio, periódicos, revistas, etc.) de forma que nuestros productos tengan la mayor difusión posible. En otros casos, las restricciones no serán presupuestarias sino que vendrán dadas por la disponibilidad de cada medio y por las políticas publicitarias de nuestra propia empresa. Supongamos, por ejemplo, que trabajamos para una cadena nacional de bingos, el director de la cual nos otorga un presupuesto de 8.000 € por semana para publicidad. Este dinero debe dedicarse a publicar anuncios en cuatro tipos de medios de difusión: TV, periódicos, y dos emisoras de radio. Nuestro objetivo final no será otro que el de conseguir la mayor audiencia posible. En el cuadro que se muestra a continuación se recoge información referente a la audiencia esperada por anuncio, el coste del mismo, y el nº máximo de anuncios que es posible insertar en cada medio por semana: MEDIO TV Periódico Radio 1 Radio 2 AUDIENCIA POR ANUNCIO 5.000 8.500 2.400 2.800 COSTE POR ANUNCIO (€) 800 925 290 380 Nº MÁXIMO POR SEMANA 12 5 25 20 Además, los acuerdos contractuales de nuestra empresa requieren la contratación al menos 5 anuncios de radio por semana, aunque la dirección insiste en no dedicar a este medio más de 1.800 € por semana. Usaremos LINDO para plantear y resolver este problema: ! SELECCIÓN DE MEDIOS ! ! ! ! X1 X2 X3 X4 MAX ST X1 X2 X3 X4 = = = = "anuncios "anuncios "anuncios "anuncios en en en en TV por semana" periódico por semana" radio 1 por semana" radio 2 por semana" 5000 X1 + 8500 X2 + 2400 X3 + 2800 X4 <= 12 <= 5 <= 25 <= 20 800 X1 + 925 X2 + 290 X3 + 380 X4 <= 8000 X3 + X4 >= 5 290 X3 + 380 X4 <= 1800 END GIN 4 LP OPTIMUM FOUND AT STEP 3 OBJECTIVE VALUE = 67240.3047 SET SET X1 TO <= X4 TO <= 2 AT 0 AT 1, BND= 2, BND= NEW INTEGER SOLUTION OF 66900.0000 BOUND ON OPTIMUM: 66900.00 0.6699E+05 TWIN= 0.6514E+05 0.6690E+05 TWIN= 0.6690E+05 AT BRANCH 2 PIVOT Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 27 31 31 3 Aplicaciones de la Programación Lineal DELETE X4 AT LEVEL 2 DELETE X1 AT LEVEL 1 ENUMERATION COMPLETE. BRANCHES= 2 PIVOTS= 31 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE X1 X2 X3 X4 ROW 2) 3) 4) 5) 6) 7) 8) 66900.00 VALUE 2.000000 5.000000 6.000000 0.000000 REDUCED COST -5000.000000 -8500.000000 -2400.000000 -2800.000000 SLACK OR SURPLUS 10.000000 0.000000 19.000000 20.000000 35.000000 1.000000 60.000000 NO. ITERATIONS= 31 BRANCHES= 2 DETERM.= DUAL PRICES 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000E 0 Por tanto, la forma más efectiva de distribuir nuestro capital en base a las condiciones preestablecidas, será emitiendo dos anuncios semanales en televisión, 5 en el periódico, y 6 en la radio 1. Ello hará que unos 66.900 potenciales compradores conozcan nuestros productos. ESTUDIOS DE MERCADO La programación lineal es aplicable también a la investigación de mercados. En el siguiente ejemplo se muestra cómo los estadísticos pueden hacer uso de la Programación Lineal a la hora de diseñar encuestas: Supongamos que pretendemos realizar una encuesta para determinar la opinión de los españoles acerca del problema de la inmigración. A fin de que la misma sea significativa desde un punto de vista estadístico, exigiremos que ésta deba cumplir los siguientes requisitos: 1. Entrevistar al menos un total de 2.300 familias españolas. 2. De las familias entrevistadas, al menos 1.000 deben cumplir que su cabeza de familia no supere los 30 años de edad. 3. Al menos 600 de las familias entrevistadas tendrán un cabeza de familia con edad comprendida entre los 31 y los 50 años. 4. El porcentaje de entrevistados que pertenecen a zonas con elevada tasa de inmigración no debe ser inferior a un 15% del total. 5. Finalmente, no más de un 20% de los entrevistados mayores de 50 años pertenecerán a zonas con alta tasa de inmigración. Además, todas las encuestas deberán realizarse en persona. A continuación indicamos el coste estimado de cada encuesta según la edad del encuestado y si procede o no de una zona con una alta tasa de inmigración: ZONA Tasa de inmig. elevada Tasa de inmig. baja EDAD < 31 AÑOS 7.50 € 6.90 € EDAD 31-50 6.80 € 7.25 € EDAD > 50 5.50 € 6.10 € Obviamente, nuestro objetivo será cumplir todos los requisitos anteriores minimizando el coste: Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 4 Aplicaciones de la Programación Lineal ! ESTUDIO DE MERCADO - ENCUESTA ! I3 = "nº encuestados de edad <= 30 y que viven en zonas de mucha inmigración" ! I4 = "nº encuestados de edad entre 31-50 que viven en zonas de mucha inmigración" ! I5 = "nº encuestados de edad > 50 que viven en zonas de mucha inmigración" ! N3 = "nº encuestados de edad <= 30 y que NO viven en zonas de mucha inmigración" ! N4 = "nº encuestados de edad entre 31-50 que NO viven en zonas de mucha inmigración" ! N5 = "nº encuestados de edad > 50 que NO viven en zonas de mucha inmigración" MIN 7.50 I3 + 6.80 I4 + 5.50 I5 + 6.90 N3 + 7.25 N4 +6.10 N5 ST I3 + I4 + I5 + N3 + N4 + N5 >= 2300 I3 + N3 >= 1000 I4 + N4 >= 600 I3 + I4 + I5 - .15 I3 - .15 I4 - .15 I5 - .15 N3 -.15 N4 - .15 N5 >= 0 I5 - .2 I5 - .2 N5 <= 0 END GIN 6 LP OPTIMUM FOUND AT STEP 4 OBJECTIVE VALUE = 15166.0000 FIX ALL VARS.( 2) WITH RC > 0.000000E+00 NEW INTEGER SOLUTION OF 15166.0000 AT BRANCH BOUND ON OPTIMUM: 15166.00 ENUMERATION COMPLETE. BRANCHES= 0 PIVOTS= 4 0 PIVOT 4 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE I3 I4 I5 N3 N4 N5 ROW 2) 3) 4) 5) 6) 15166.00 VALUE 0.000000 600.000000 140.000000 1000.000000 0.000000 560.000000 SLACK OR SURPLUS 0.000000 0.000000 0.000000 395.000000 0.000000 NO. ITERATIONS= 4 BRANCHES= 0 DETERM.= 1.000E REDUCED COST 7.500000 6.800000 5.500000 6.900000 7.250000 6.100000 DUAL PRICES 0.000000 0.000000 0.000000 0.000000 0.000000 0 Así pues, deberíamos realizar la encuesta exclusivamente a 600 individuos del tipo I4, a 140 del tipo I5, a 1.000 del tipo N3 y a 560 del tipo N5. Ello supondría unos costes estimados de 15.166 €. Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 5 Aplicaciones de la Programación Lineal APLICACIONES DE LA PROGRAMACIÓN LINEAL EN PRODUCCIÓN______ __ COMBINACIÓN ÓPTIMA DE BIENES A menudo las técnicas de PL permiten decidir sobre la cantidad más adecuada que una empresa debe producir de cada uno de sus productos a fin maximizar los beneficios sin dejar de cumplir con unos determinados requisitos (financieros, de demanda, contractuales, de disponibilidad de materias primas, etc.). Una empresa dedicada a la elaboración y venta de ropa para hombre produce cuatro tipos de corbatas, una de seda, otra de poliester, y dos de poliester/algodón. La tabla siguiente muestra el coste de cada uno de estos materiales y su disponibilidad: MATERIAL Seda Poliester Algodón COSTE POR METRO (€) 21 6 9 METROS DISPONIBLES / MES 800 3.000 1.600 La empresa tiene contratos de larga duración para suministrar corbatas a cinco cadenas de tiendas de ropa. En dichos contratos se especifica que la empresa deberá suministrar unas cantidades mínimas mensuales de cada tipo de corbata y, que en caso de recibir una demanda superior al mínimo, será la propia empresa la que decida si puede o no servir la cantidad extra solicitada. A continuación aparecen los datos relevantes: TIPO DE CORBATA Seda Poliester Algodón # 1 PRECIO DE VENTA (€) 6.70 3.55 4.31 MÍNIMO A SERVIR 6.000 10.000 13.000 DEMANDA MENSUAL 7.000 14.000 16.000 METROS NECESARIOS 0.125 0.08 0.10 Algodón # 2 4.81 6.000 8.500 0.10 COMPOSICIÓN 100% seda 100% poliester 50% poliester 50% algodón 30% poliester 70% algodón El objetivo de la empresa es elegir el plan de producción que maximice sus beneficios mensuales. Lo primero en este problema será determinar qué beneficios nos reporta cada una de las corbatas vendidas y fabricadas. Así por ejemplo, cada corbata de seda requiere de 0.125 metros de este material, a un coste de 21 € por metro, lo que nos da un coste por corbata de 2.62 €. Como la vendemos por 6.70 €, el beneficio que obtenemos será de 4.08 € por cada unidad producida y vendida. El mismo razonamiento se aplicará a los restantes tres tipos de corbata, con lo que obtendremos el siguiente planteamiento: ! COMBINACIÓN DE BIENES A PRODUCIR ! ! ! ! S = "Nº corbatas de seda a producir" P = "Nº corbatas de poliester a producir" A1 = "Nº corbatas de algodón #1 a producir" A2 = "Nº corbatas de algodón #2 a producir" MAX 4.08 S + 3.07 P + 3.56 A1 + 4.00 A2 ST .125 S <= 800 .08 P + .05 A1 + .03 A2 <= 3000 .05 A1 + .07 A2 <= 1600 S S P P A1 A1 >= <= >= <= >= <= 6000 7000 10000 14000 13000 16000 Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 6 Aplicaciones de la Programación Lineal A2 >= A2 <= 6000 8500 END GIN 4 Observar que la solución a nuestro caso será producir cada mes 6.400 corbatas de seda, 14.000 de poliéster, 16.000 de algodón #1, y 8.500 de algodón #2. Ello nos dará unos beneficios de 160.052 € por mes. LP OPTIMUM FOUND AT STEP 2 OBJECTIVE VALUE = 160052.000 NEW INTEGER SOLUTION OF 160052.000 AT BRANCH BOUND ON OPTIMUM: 160052.0 ENUMERATION COMPLETE. BRANCHES= 0 PIVOTS= 2 0 PIVOT 2 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE S P A1 A2 ROW 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 160052.0 VALUE 6400.000000 14000.000000 16000.000000 8500.000000 REDUCED COST -4.080000 -3.070000 -3.560000 -4.000000 SLACK OR SURPLUS 0.000000 825.000000 204.999985 400.000000 600.000000 4000.000000 0.000000 3000.000000 0.000000 2500.000000 0.000000 DUAL PRICES 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 NO. ITERATIONS= 2 BRANCHES= 0 DETERM.= 1.000E 0 PLANIFICACIÓN DE LA PRODUCCIÓN El establecer un plan de producción para un período de semanas o meses resulta ser una tarea difícil e importante en la mayoría de las plantas de producción. El director de operaciones debe considerar muchos factores: mano de obra, costes de inventario y almacenamiento, limitaciones de espacio, demanda, etc. Por lo general la mayoría de las plantas producen más de un bien, con lo que la tarea anterior se complica aún más. Como veremos en el siguiente ejemplo, el problema de la planificación se asemeja bastante al de la combinación óptima de bienes, pudiendo ser el objetivo maximizar beneficios o bien minimizar los costes de producción más almacenamiento. La empresa Motores de Almazora, S.A. fabrica dos tipos de motores eléctricos los cuales vende a la compañía Electrodomésticos Villareal, S.A. Tres veces al año, el director de compras de esta última empresa envía a la primera un pedido que abarca los siguientes cuatro meses. A Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 7 Aplicaciones de la Programación Lineal continuación se muestra una tabla con el pedido para el período enero-abril para cada modelo de motor: MODELO ENERO ME3A ME3B 800 1.000 FEBRERO MARZO ABRIL 700 1.200 1.000 1.400 1.100 1.400 La planificación de la producción en Motores de Almazora, S.A. debe considerar cuatro factores: 1. El deseo de producir el mismo nº de motores cada mes. Esto simplificaría la planificación y los horarios de trabajadores y máquinas. 2. La necesidad de mantener lo más bajo posible los costes de estucos. Esto sugiere que en cada mes se ha de ajustar la producción a lo estrictamente requerido en el mismo. 3. Limitaciones de almacenes, las cuales son de 3.300 unidades máximo de cada tipo. 4. La política de no despidos de la compañía, la cual garantiza que un mínimo de la capacidad productiva estará en activo cada mes. Concretamente se asegura un nivel no inferior a las 2.240 horas mensuales de mano de obra, pudiéndose ampliar tal recurso hasta las 2.560 horas mensuales si fuese necesario. Deberemos tener en cuenta que los costes de producción son de 10 € por unidad de ME3A y de 6 € por unidad de ME3B, si bien debido a un acuerdo con los sindicatos, éstos costes se incrementarán en un 10% a partir del 1 de marzo. Además, cada motor de tipo ME3A que permanezca en estoc supone un coste de 0.18 € por mes, mientras que almacenar uno de tipo ME3B genera un coste de 0.13 € mensuales. Por otro lado, se desea tener un inventario de seguridad de 450 ME3A y 300 ME3B a finales de abril. Indicar finalmente que cada ME3A requerirá de 1.3 horas de mano de obra, mientras que cada ME3B necesita de 0.9 horas. TITLE PLAN DE PRODUCCIÓN ! XAi = "nº de ME3A producidos durante el mes i" ! XBi = "nº de ME3B producidos durante el mes i" i=1,2,3,4 ! IAi = "nº de ME3A en inventario al final del mes i" ! IBi = "nº de ME3B en inventario al final del mes i" MIN 10XA1 + 10XA2 + 11XA3 + 11XA4 + 6XB1 + 6XB2 + 6.6XB3 + 6.6XB4 + .18IA1 + .18IA2 + .18IA3 + .18IA4 + .13IB1 + .13IB2 + .13IB3 + .13IB4 ! costes de producción y costes de inventario ST XA1 - IA1 = 800 ! demanda de enero XB1 - IB1 = 1000 XA2 + IA1 - IA2 = 700! demanda de febrero XB2 + IB1 - IB2 = 1200 XA3 + IA2 - IA3 = 1000! demanda de marzo XB3 + IB2 - IB3 = 1400 XA4 + IA3 - IA4 = 1100! demanda de abril XB4 + IB3 - IB4 = 1400 IA4 = 450 IB4 = 300 IA1 + IB1 <= 3300 IA2 + IB2 <= 3300 IA3 + IB3 <= 3300 Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 8 Aplicaciones de la Programación Lineal IA4 + IB4 <= 3300 1.3XA1 + .9XB1 >= 2240! mínimo uso de mano de obra en enero 1.3XA1 + .9XB1 <= 2560 1.3XA2 + .9XB2 >= 2240! mínimo uso de mano de obra en febrero 1.3XA2 + .9XB2 <= 2560 1.3XA3 + .9XB3 >= 2240! mínimo uso de mano de obra en marzo 1.3XA3 + .9XB3 <= 2560 1.3XA4 + .9XB4 >= 2240! mínimo uso de mano de obra en abril 1.3XA4 + .9XB4 <= 2560 END GIN 16 El ejemplo anterior nos muestra la elaboración de un plan de producción relativamente sencillo ya que sólo se consideran dos productos. Sin embargo, el mismo procedimiento usado aquí es aplicable a planes de producción con decenas de productos y centenares de restricciones. LP OPTIMUM FOUND AT STEP 13 OBJECTIVE VALUE = 76301.6172 SET SET SET SET SET XA2 IB2 IA1 IB3 IA3 TO TO TO TO TO <= <= <= >= >= 1138 0 476 2 757 AT AT AT AT AT 1, 2, 3, 4, 5, BND= BND= BND= BND= BND= -0.7630E+05 -0.7630E+05 -0.7630E+05 -0.7630E+05 -0.7630E+05 TWIN=-0.7630E+05 TWIN=-0.7630E+05 TWIN=-0.1000E+31 TWIN=-0.7630E+05 TWIN=-0.7630E+05 NEW INTEGER SOLUTION OF 76302.7188 AT BRANCH 5 PIVOT BOUND ON OPTIMUM: 76301.62 FLIP IA3 TO <= 756 AT 5 WITH BND= -76302.602 SET XA2 TO >= 1138 AT 6, BND= -0.7630E+05 TWIN=-0.1000E+31 SET IA1 TO >= 476 AT 7, BND= -0.7630E+05 TWIN=-0.1000E+31 SET IB1 TO <= 0 AT 8, BND= -0.7630E+05 TWIN=-0.1000E+31 SET IB3 TO >= 3 AT 9, BND= -0.7630E+05 TWIN=-0.1000E+31 SET IA3 TO >= 756 AT 10, BND= -0.7630E+05 TWIN=-0.7630E+05 ... ... ... 48 51 55 58 65 65 65 65 65 66 68 ... ... ... OBJECTIVE FUNCTION VALUE 1) VARIABLE XA1 XA2 XA3 XA4 XB1 XB2 XB3 XB4 IA1 IA2 IA3 IA4 IB1 IB2 IB3 IB4 ROW 2) 3) 76301.87 VALUE 1270.000000 1144.000000 843.000000 793.000000 1010.000000 1192.000000 1399.000000 1699.000000 470.000000 914.000000 757.000000 450.000000 10.000000 2.000000 1.000000 300.000000 SLACK OR SURPLUS 0.000000 0.000000 REDUCED COST 10.000000 10.000000 11.000000 11.000000 6.000000 6.000000 6.600000 6.600000 0.180000 0.180000 0.180000 0.180000 0.130000 0.130000 0.130000 0.130000 DUAL PRICES 0.000000 0.000000 Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 9 Aplicaciones de la Programación Lineal 4) 5) 6) 7) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 8) 0.000000 0.000000 9) 10) 11) 12) 13) 14) 15) 16) 17) 18) 19) 20) 21) 22) 23) 0.000000 0.000000 0.000000 2820.000000 2384.000000 2542.000000 2550.000000 319.999908 0.000085 319.999908 0.000083 114.999924 205.000076 319.999908 0.000078 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 NO. ITERATIONS= 245 BRANCHES= 62 DETERM.= 1.000E 0 APLICACIONES DE LA PROGRAMACIÓN LINEAL A LA DISTRIBUCIÓN DE TAREAS______ ________ ________ ________ ________ ________ _____ ASIGNACIÓN DE TRABAJOS El objetivo aquí será asignar de la forma más eficiente posible un trabajo a cada empleado o máquina. Ejemplos de este tipo de asignación serían la distribución de coches patrulla por las calles de una ciudad o la destino de cada jefe de ventas a una determinada zona geográfica. El objetivo puede ser bien minimizar los tiempos o costes de desplazamiento, o bien maximizar la efectividad de las asignaciones. Aparte de poder utilizar los algoritmos tradicionales (Simplex y Karmarkar), este tipo de problemas también puede resolverse usando técnicas especialmente diseñadas para sus características como el método húngaro, el cual necesita de menos iteraciones para dar con la solución. Una propiedad particular de los problemas de asignación es que tanto los coeficientes tecnológicos cómo los términos independientes (right-hand-side) siempre toman el valor 1. Además, todas las variables serán binarias, tomando el valor 1 si la asignación propuesta se lleva a cabo y 0 en caso contrario. Veamos un ejemplo: Un gabinete de abogados tiene en su nómina cuatro hábiles licenciados en derecho a los cuales quiere utilizar de forma óptima asignando a cada uno el caso que más se ajuste a sus características. El 1 de marzo llegan a la compañía cuatro clientes en busca de asesoramiento, y el director del gabinete decide asignar cada caso a cada uno de sus cuatro empleados según sus especialidades y preferencias. A continuación se muestra una tabla donde se estima la efectividad (valorada en una escala del 1 al 9) de cada trabajador para cada uno de los casos que presentan los clientes: ABOGADO DIVORCIO A1 6 FUSIÓN EMPRESAS 2 ABSORCIÓN EMPRESAS 8 EXHIBICIONISMO Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 5 10 Aplicaciones de la Programación Lineal A2 A3 A4 9 4 6 3 8 7 5 3 6 8 4 4 Para resolver esta situación, consideraremos las variables Xij, donde i = 1, 2, 3, 4 según abogado, y j = 1, 2, 3, 4 según caso. Así, la variable Xij tomará el valor 1 si el abogado i es asignado al caso j, y 0 en caso contrario. TITLE MAX DESPACHO DE ABOGADOS 6X11 + 2X12 + 8X13 + 5X14 + 9X21 + 3X22 + 5X23 + 8X24 + 4X31 + 8X32 + 3X33 + 4X34 + 6X41 + 7X42 + 6X43 + 4X44 ! Maximizamos la efectividad total ST X11 X12 X13 X14 + + + + X21 X22 X23 X24 + + + + X31 X32 X33 X34 + + + + X41 X42 X43 X44 = = = = 1 1 1 1 ! ! ! ! Caso Caso Caso Caso divorcio fusión absorción exhibicionismo X11 X21 X31 X41 + + + + X12 X22 X32 X42 + + + + X13 X23 X33 X43 + + + + X14 X24 X34 X44 = = = = 1 1 1 1 ! ! ! ! Abogado Abogado Abogado Abogado 1 2 3 4 END INT 16 ! Todas las variables son binarias LP OPTIMUM FOUND AT STEP 14 OBJECTIVE VALUE = 30.0000000 FIX ALL VARS.( 9) WITH RC > 1.00000 NEW INTEGER SOLUTION OF 30.0000000 AT BRANCH BOUND ON OPTIMUM: 30.00000 ENUMERATION COMPLETE. BRANCHES= 0 PIVOTS= 14 0 PIVOT 14 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE X11 X12 X13 X14 X21 X22 X23 X24 X31 X32 X33 X34 X41 X42 X43 X44 ROW 2) 30.00000 VALUE 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 SLACK OR SURPLUS 0.000000 REDUCED COST -6.000000 -2.000000 -8.000000 -5.000000 -9.000000 -3.000000 -5.000000 -8.000000 -4.000000 -8.000000 -3.000000 -4.000000 -6.000000 -7.000000 -6.000000 -4.000000 DUAL PRICES 0.000000 Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 11 Aplicaciones de la Programación Lineal 3) 4) 5) 6) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 7) 0.000000 0.000000 8) 9) 0.000000 0.000000 0.000000 0.000000 NO. ITERATIONS= 14 BRANCHES= 0 DETERM.= 1.000E 0 Queda claro pues que el abogado 1 se ocupará del caso de absorción empresarial, el abogado 2 del caso de exhibicionismo, el abogado 3 del caso de la fusión, y el abogado 4 del divorcio. PLANIFICACIÓN DE HORARIOS La planificación de horarios intenta dar una respuesta efectiva a las necesidades de personal durante un período concreto de tiempo. La aplicación de la PL a este tipo de problemas resulta especialmente útil cuando los directivos disponen de cierta flexibilidad a la hora de asignar tareas a empleados polifuncionales. Un sector típico donde se hace uso de la PL para tomar decisiones sobre planificación de horarios son las entidades bancarias. Supongamos que una oficina bancaria necesita diariamente entre 10 y 18 cajeros en función de la hora según se especifica en la tabla siguiente: FRANJA HORARIA 9 a.m. – 10 a.m. 10 a.m. – 11 a.m. 11 a.m. – 12 a.m. 12 a.m. – 1 p.m. 1 p.m. – 2 p.m. 2 p.m. – 3 p.m. 3 p.m. – 4 p.m. 4 p.m. – 5 p.m. Nº DE CAJEROS NECESARIOS 10 12 14 16 18 17 15 10 En la actualidad la oficina tiene 12 trabajadores a jornada completa (“full-time”), y dispone de una larga lista de gente dispuesta a trabajar a media jornada (“part-time”). Un cajero que trabaje a media jornada ha de estar operativo 4 horas al día, y estar disponible para comenzar su trabajo a cualquier hora entre las 9 a.m. y la 1 p.m. Por su parte, los trabajadores a jornada completa están operativos de 9 a.m. a 5 p.m., teniendo libre una hora para comer (la mitad de ellos lo harán de 11 a.m. a 12 a.m. y la otra mitad de 12 a.m. a 1 p.m.). Observar que cada uno de estos cajeros tiene una jornada semanal de 35 horas. Las normas de la entidad limitan el número de horas realizadas por los “part-time” a, como máximo, el 50% de las horas diarias requeridas. Los “part-time” ganan una media de 4 € la hora (es decir, 16 € al día), por 50 € diarios que ganan los “full-time”. El banco pretende establecer un horario que minimice sus costes salariales, estando dispuesto a desprenderse de algún trabajador “full-time” si ello resulta conveniente. TITLE ! ! ! ! HORARIOS BANCO F = "nº trabajadores full-time" P1 = "nº trabajadores part-time operativos de 9 a.m. a 1 p.m." P2 = "nº trabajadores part-time operativos de 10 a.m. a 2 p.m." P3 = "nº trabajadores part-time operativos de 11 a.m. a 3 p.m." Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 12 Aplicaciones de la Programación Lineal ! ! P4 = "nº trabajadores part-time operativos de 12 a.m. a 4 p.m." P5 = "nº trabajadores part-time operativos de 1 p.m. a 5 p.m." MIN 50 F + 16 P1 + 16 P2 + 16 P3 + 16 P4 + 16 P5 ! Queremos minimizar los costes salariales ST F F .5F .5F F F F F + + + + P1 P1 + P2 P1 + P2 + P1 + P2 + + P2 + + P3 P3 + P4 P3 + P4 + P3 + P4 + + P4 + + P5 P5 P5 P5 >= >= >= >= >= >= >= >= 10 12 14 16 18 17 15 10 ! Necesidades de 9 a.m. a 10 a.m. F <= 12 4P1 + 4P2 + 4P3 + 4P4 + 4P5 <= 56 ! Los part-time harán a lo sumo el 50% de las horas END GIN 6 LP OPTIMUM FOUND AT STEP 8 OBJECTIVE VALUE = 724.000000 OBJECTIVE FUNCTION VALUE 1) 724.0000 VARIABLE F P1 P2 P3 P4 P5 ROW 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) VALUE 10.000000 0.000000 2.000000 7.000000 5.000000 0.000000 SLACK OR SURPLUS 0.000000 0.000000 0.000000 3.000000 6.000000 5.000000 0.000000 0.000000 2.000000 0.000000 NO. ITERATIONS= 8 BRANCHES= 0 DETERM.= 1.000E REDUCED COST 50.000000 16.000000 16.000000 16.000000 16.000000 16.000000 DUAL PRICES 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0 Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 13 Aplicaciones de la Programación Lineal APLICACIONES DE LA PROGRAMACIÓN LINEAL A LAS FINANZAS______ ___ SELECCIÓN DE UNA CARTERA DE VALORES Un problema al que se tienen que enfrentar de forma habitual los directivos de bancos, fondos de inversión, y compañías de seguros es la selección de una serie de inversiones concretas de entre la gran variedad de alternativas existentes en el mercado. Por norma general, el objetivo de estos directivos es maximizar los beneficios esperados de estas inversiones, las cuales se ven sometidas a un conjunto de restricciones, algunas legales y otras provenientes de la propia empresa (como puede ser el nivel de riesgo que se desea asumir o la cantidad máxima que se permite invertir). Supongamos que nuestro banco se dedica a invertir en créditos al consumo, bonos corporativos, depósitos de oro, y préstamos a la construcción. Con el fin de diversificar la cartera de valores, la Junta Directiva del banco ha puesto límite a las cantidades que se permiten invertir en cada una de las opciones anteriores. En la actualidad disponemos de 5 millones de € para invertir, y pretendemos: (1) Maximizar el interés esperado para los próximos seis meses, y (2) cumplir con la diversificación propugnada por la Junta Directiva según se especifica en la tabla siguiente: TIPO DE INVERSIÓN INTERÉS ESPERADO Crédito al consumo Bonos corporativos Depósitos de oro Préstamos a la construcción 7% 11% 19% 15% LÍMITE DE INVERSIÓN ( MILLONES DE € ) 1.0 2.5 1.5 1.8 Además, la Directiva requiere que al menos un 5% de los fondos se dediquen a depósitos de oro y préstamos a la construcción, mientras que el porcentaje dedicado a créditos al consumo no debe superar el 15%. TITLE ! ! ! ! X1 X2 X3 X4 MAX ST SELECCIÓN DE UNA CARTERA = = = = "Cantidad "Cantidad "Cantidad "Cantidad invertida invertida invertida invertida en en en en créditos al consumo" bonos corporativos" depósitos de oro" préstamos a la construcción" .07 X1 + .11 X2 + .19 X3 + .15 X4 X1 X2 X3 X4 X3 X1 X1 <= 1000000 <= 2500000 <= 1500000 <= 1800000 + X4 - .55X1 - .55X2 - .55X3 - .55X4 >= 0 - .15X1 - .15X2 - .15X3 - .15X4 >= 0 + X2 + X3 + X4 <= 5000000 END Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 14 Aplicaciones de la Programación Lineal LP OPTIMUM FOUND AT STEP 4 OBJECTIVE FUNCTION VALUE 1) 712000.0 VARIABLE X1 X2 X3 X4 ROW 2) 3) 4) 5) 6) 7) 8) VALUE 750000.000000 950000.000000 1500000.000000 1800000.000000 REDUCED COST 0.000000 0.000000 0.000000 0.000000 SLACK OR SURPLUS 250000.000000 1550000.000000 0.000000 0.000000 550000.000000 0.000000 0.000000 NO. ITERATIONS= DUAL PRICES 0.000000 0.000000 0.080000 0.040000 0.000000 -0.040000 0.104000 4 APLICACIONES DE LA PROGRAMACIÓN LINEAL A LA LOGÍSTICA____ _____ El PROBLEMA DEL TRANSPORTE El llamado problema del transporte se refiere al proceso de determinar el número de bienes o mercancías que se han de transportar desde cada uno de los orígenes a cada uno de los destinos posibles. El objetivo suele ser minimizar costes de transporte, y las restricciones vienen dadas por las capacidades productivas de cada origen y las necesidades de cada destino. Este tipo de problema es un caso específico de PL, por lo que existen métodos y algoritmos especiales que facilitan su resolución (Regla de la Esquina NorOeste, Método de Vogel, Método de Paso Secuencial, y Método de distribución modificada o MODI). Una compañía de ámbito nacional produce y distribuye una línea de bicicletas de alta competición. La empresa tiene líneas de montaje en dos ciudades, Castellón y Sabadell, mientras que sus tres principales cadenas de distribución están localizadas en Madrid, Barcelona, y Vitoria. La oficina de Madrid presenta una demanda anual de 10.000 bicicletas, mientras que la de Barcelona solicita 8.000 y la de Vitoria 15.000. La planta de Castellón puede producir hasta 20.000 bicicletas anuales, por 15.000 la de Sabadell. Los costes de transporte por unidad son los siguientes: ORIGEN Castellón Sabadell Madrid 2€ 3€ DESTINO Barcelona 3€ 1€ Vitoria 5€ 4€ La compañía pretende establecer un plan de distribución que minimice sus costes anuales de transporte. TITLE ! ! ! ! ! ! CM CB CV SM SB SV EL PROBLEMA DEL TRANSPORTE = = = = = = "nº bicicletas a transportar desde Castellón hasta Madrid" "nº " " " " " Barcelona" "nº " " " " " Vitoria" "nº " " " Sabadell " Madrid" "nº " " " " " Barcelona" "nº " " " " " Vitoria" Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 15 Aplicaciones de la Programación Lineal MIN ST 2 CM + 3 CB + 5 CV + 3 SM + 1 SB + 4 SV CM + SM = 10000 CB + SB = 8000 CV + SV = 15000 CM + CB + CV <= 20000 SM + SB + SV <= 15000 END GIN 6 LP OPTIMUM FOUND AT STEP 2 OBJECTIVE VALUE = 96000.0000 OBJECTIVE FUNCTION VALUE 1) 96000.00 VARIABLE CM CB CV SM SB SV ROW 2) 3) 4) 5) 6) VALUE 10000.000000 0.000000 8000.000000 0.000000 8000.000000 7000.000000 REDUCED COST 2.000000 3.000000 5.000000 3.000000 1.000000 4.000000 SLACK OR SURPLUS 0.000000 0.000000 0.000000 2000.000000 0.000000 DUAL PRICES 0.000000 0.000000 0.000000 0.000000 0.000000 NO. ITERATIONS= 2 BRANCHES= 0 DETERM.= 1.000E 0 APLICACIONES DE LA PROGRAMACIÓN LINEAL A MEZCLAS_ ______ _____ El PROBLEMA DE LA DIETA Este problema representa una de las primeras aplicaciones de la PL, y comenzó a utilizarse en los hospitales para determinar la dieta más económica con la que alimentar a los pacientes a partir de unas especificaciones nutritivas mínimas. En la actualidad también se aplica con éxito en el ámbito agrícola con la misma idea de encontrar la combinación óptima de alimentos que, logrando un aporte nutritivo mínimo, suponga el menor coste posible. Un centro de nutrición utiliza tres tipos de granos para elaborar un cereal natural que vende por kilos. El eslogan del centro es que cada 125 gramos de su cereal, tomados con medio vaso de leche entera, cubre las necesidades alimenticias de un adulto en cuanto a proteínas, hidratos de carbono, fósforo y magnesio. El coste de cada tipo de grano y sus contenidos por kg. se reflejan en la siguiente tabla: GRANO A B C COSTE POR KG. 0.33 € 0.47 € 0.38 € PROTEINAS HIDRATOS C FÓSFORO MAGNESIO (unidades/kg) (unidades/kg.) (unidades/kg) (unidades/kg) 22 16 8 5 28 14 7 0 21 25 9 6 Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 16 Aplicaciones de la Programación Lineal Los requisitos nutricionales mínimos por día para un adulto son 3 unidades de proteínas, 2 de hidratos de carbono, 1 de fósforo, y 0.425 de magnesio. Se tratará pues de establecer la mezcla adecuada de granos que logra cubrir estas necesidades con el mínimo coste para el centro. TITLE PROBLEMA DE LA DIETA ! ! ! XA = "kgs. grano tipo A que usaremos en 125 gramos de cereal" XB = "kgs. " " B " " " cereal" XC = "kgs. " " C " " " cereal" MIN .33 XA + .47 XB + .38 XC ST 22 16 8 5 XA + 28 XB + 21 XC >= 3 XA + 14 XB + 25 XC >= 2 XA + 7 XB + 9 XC >= 1 XA + 6 XC >= .425 XA + XB + XC = .125 END LP OPTIMUM FOUND AT STEP 3 OBJECTIVE FUNCTION VALUE 1) 0.5075001E-01 VARIABLE XA XB XC ROW 2) 3) 4) 5) 6) VALUE 0.025000 0.050000 0.050000 SLACK OR SURPLUS 0.000000 0.350001 0.000000 0.000000 0.000000 NO. ITERATIONS= REDUCED COST 0.000000 0.000000 0.000000 DUAL PRICES -0.390000 0.000000 0.000000 -0.440000 10.450000 3 Queda claro pues que la solución ideal será usar 25 gramos de grano tipo A, 50 de grano tipo B y otros 50 de grano tipo C. Con ello logramos cumplir con nuestro eslogan al menor coste posible. BIBLIOGRAFÍA ______________________________________________ 1) Anderson, D.R., Sweeney, D. J. y Williams, T.A. (2001): Quantitative Methods for Business. West Publishing Company. (Existe versión en español). 2) Anderson, D.R., Sweeney, D. J. y Williams, T.A. (2000): An Introduction to Management Science. Quantitative Approach to Decision Making. West Publishing Company. (Existe versión en español) 3) Anderson, D.R., Sweeney, D. J. y Williams, T.A. (1999): Contemporary Management Science with Spreadsheets. International Thomson Publishing Company. 4) Camm, J. y Evans, J.R. (2000): Management Science and Decision Technology. South Western College Publishing. Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 17 Aplicaciones de la Programación Lineal 5) Eppen, G.D., Gould, F.J., Schmidt, C.P., Moore, J.H., Weatherford, L.R. (1998): Introductory Management Science. Decision Modeling with Spreadsheets. Upper Saddle River. (Existe versión en español) 6) Hillier, F.S. y Liebermann, G.J. (2001): Introducción a la Investigación de Operaciones. Ed. McGraw-Hill. 7) Hillier, F.S., Hillier, M.S. y Liebermann, G.J. (2000): Introduction to Management Science. A Modeling and Case Studies Approach with Spreadsheets. Irwin-McGraw-Hill. 8) Lawrence, A.L. y Pasternack, B.A. (1998): Applied Management Science. A Computer Integrated Approach for Decision Making. Ed. Wiley. 9) Moore, L.J., Lee, S.M. y Taylor, B.W. (1993): Management Science. Allyn and Bacon. 10) Taha, H.A. (1997): Operations Research. An Introduction. McMillan Publishing Company. (Existe versión en español) 11) Winston, W. (1994): Investigación de Operaciones. Aplicaciones y Algoritmos. Grupo Editorial Iberoamericano. 12) Winston, W. y Albright, S. C. (1997): Practical Management Science. Spreadsheet Modeling and Applications. Duxbury Press. ENLACES ___________________________________ http://www-fp.mcs.anl.gov/otc/Guide/CaseStudies/ Página web de ejemplos de aplicación de programación matemática. http://www.statslab.cam.ac.uk/~rrw1/opt/diet_history.html Historia del problema de la dieta. http://www.e-optimization.com/directory/trailblazers/dantzig/interview_dietg.cfm Cómo George Dantzig resolvió el problema de la dieta. http://www.maths.abdn.ac.uk/~igc/tch/index/mx3503/notes/node14.html Curso básico de Programación Lineal y temas afines de la Universidad de Aberdeen. http://www.fred.ifas.ufl.edu/courses/AEB5516/Lectures/blending.doc Ejemplos de mezclas y de dietas resueltos con Programación Lineal. http://dsc.gsu.edu/dscthw/Optimize/LP.PDF Artículo de 65 páginas con ejemplos clásicos de aplicación de la Programación Lineal. http://www.pitt.edu/~jrclass/or/or-intro.doc Artículo introductorio a la Investigación Operativa y sus aplicaciones. http://www.kem.ae.poznan.pl/Books/Excel-Solver/T1/T1.htm Tutorial sobre optimización con Excel-Solver. http://www.faqs.org/faqs/linear-programming-faq/ Web dedicada a preguntas más comunes acerca de Programación Lineal. http://carbon.cudenver.edu/~hgreenbe/courseware/LPshort/intro.html Se trata de un curso breve de Programación Lineal. Proyecto e-Math Financiado por la Secretaría de Estado de Educación y Universidades (MECD) 18