INVESTIGACION OPERATIVA Tercer curso de Ingeniería Técnica de Gestión CURSO 2010-2011 Profesor: Alejandro Quintela del Río TEMA 0: Historia de la investigación de operaciones. La Investigación Operativa en la segunda guerra mundial: -La máquina Enigma, El sónar, El proyecto Manhattan. TEMA 1: MODELOS DE PROGRAMACION LINEAL y APLICACIONES. . Formulación de modelos de programación lineal. Ejemplos. . Solución gráfica de problemas de programación lineal con dos variables. Interpretación. Definiciones básicas. . Problemas de programación lineal en forma estándar. . Sistemas de ecuaciones lineales simultáneas. Definiciones básicas: solución factible, variables básicas y no básicas, sistema canónico, solución básica, solución factible básica. TEMA 2: EL METODO DEL SIMPLEX. . Esquema básico de funcionamiento del método del Simplex. Beneficios relativos, criterio de entrada, criterio de salida (regla de la mínima proporción), elemento pivote, pivotaje. . El método del Simplex por tablas. . Problemas de cálculo: empates en el criterio de entrada, empates en el criterio de salida, degeneración, ciclaje. . Obtención de una solución factible básica inicial: Método de las Dos Fases y Método de las Penalizaciones. - Otros: Consideraciones computacionales, Método del punto interior. TEMA 3: EL METODO REVISADO DEL SIMPLEX. . El método revisado: Conceptos básicos. Vector de Multiplicadores. . Desarrollo del método. . Ventajas del método revisado del Simplex sobre el método del Simplex regular. TEMA 4: TEORIA DE LA DUALIDAD. . Fomulación del problema dual. . Problemas primal-dual simétrico. Propiedades y relaciones de los problemas primal y duaL . Teoremas de la dualidad. . Condiciones de holguras complementarias. . Problemas asimétricos primal-duaL . Lectura de la solución dual óptima en la tabla óptima primaL TEMA 5: EL METODO DUAL DEL SIMPLEX. . Conceptos fundamentales. Bases factibles dual y primaL . Desarrollo del método dual del Simplex. . Identificación de problemas no factibles. TEMA 6: ANALISIS DE SENSIBILIDAD PARAMETRICA. . Modificaciones en los coeficientes de la función del objetivo. . Modificaciones en las constantes de la derecha de las restricciones. . Modificaciones en la matriz de coeficientes de las restricciones. . Adición de nuevas variables. . Adición de nuevas restricciones. . Variación paramétrica de los coeficientes de la función del objetivo. . Variación paramétrica de las constantes de la derecha de las restricciones. TEMA 7: PROGRAMACION LINEAL ENTERA. . Formulación de modelos. . Algoritmo de ramificación y acotación. . Aspectos computacionales. Y PROGRAMACION PROBLEMAS ESPECIALES DE PROGRAMACION LINEAL. 1 Problemas de Transporte. . Formulación del Problema Standard del Transporte. . Obtención de una solución factible básica inicial: método de la esquina noroeste y método del coste mínimo. . Algoritmo de Stepping-Stone. 2 Problemas de Asignación. . Formulación del Problema Standard de Asignación. . Método Húngaro. BIBLIOGRAFÍA . ANDERSON, D.R. - SWEENEY, D.J. - WILLIAMS, T.A. Introducción a los modelos cuantitativos para administración. Grupo Editorial Iberoamericana. . ARREOLA, J. – ARREOLA, A. Programación lineal. Una introducción a la toma de decisiones cuantitativa. Thomson . BRONSON. R. Teoría y problemas de investigación de operaciones. Schaum, McGrawHill . DANTZIG, G.B. Linear programming and extensions Princeton University Press . GARCIA, J. - FERNANDEZ, L. - TEJERA, P. Técnicas de investigación operativa. Ed. Paraninfo. . HILLIER,F. - LIEBERMAN, G. Introducción a la investigación de operaciones. McGraw-Hill . INFANTE MACIAS, R. Métodos de programación matemática. UNED . MATHUR - SOLOW Investigación de operaciones. Prentice Hall . PARDO, L. Programación lineal continua: aplicaciones prácticas en la empresa. Ed. Díaz de Santos. . PARDO, L. Programación lineal entera: aplicaciones prácticas en la empresa. Ed. Díaz de Santos. . RAVINDRAN, A. - PHILLIPS, D. - SOLBERG, J. Operations Research. Principles and Practice. Wiley. . RIOS INSUA, S. Investigación Operativa. Optimización. Ed. Centro de Estudios Ramón Areces. . GASS, S. – ASSAD, AR. An annotated timeline of operations research. An informal history. Kluwer Academic Publishers . TAHA, H. Investigación de Operaciones. Prentice Hall INVESTIGACIÓN OPERATIVA. XESTIÓN. CURSO 2010-2011. PROBLEMAS DE PROGRAMACIÓN LINEAL 1.-) Una compañía armamentística americana desea proyectar la fabricación de un cohete antitanque casero para vender en supermercados. La Compañía ha considerado 3 modelos y su departamento de producción ha elaborado la siguiente tabla: modelo Trabajo A B C (horas 7 3 6 4 5 20$ 30$ por unidad) Material (titanio 4 Por unidad) Beneficios (por 40$ unidad fabricada) El suministro de material se restringe a 200 kg de titanio por día, y la disponibilidad total diaria de los trabajadores es de 150 horas. Formular un problema de programación lineal para determinar la producción diaria de cada modelo, en orden a maximizar el beneficio total. 2.- ) El gobierno provisional ha decidido repartir cereales en los colegios iraquíes a la hora de la merienda. Los niños podrán tomar Cereales "A" o Cereales "B", o bien una mezcla de ambos. Por recomendación de la ONU, los niños deben recibir en su desayuno, cuando menos, 1 miligramo de tiamina, 5 miligramos de miacina y 400 calorías. Una unidad (100 gramos) de cereales "A" tiene 0.10 mg de tiamina, 1 mg de miacina y 110 calorías, mientras que una unidad de cereales "B" tiene 0.25 mg de tiamina, 0.25 de miacina y 120 calorías. La unidad de cereales "A" cuesta 180 centavos de dólar y la de cereales "B" 234 centavos de dólar. Formular un problema de programación lineal que sirva para establecer la dieta óptima más barata. Problemas 1 3.- ) El administrador de un club de carretera ha elaborado una lista de necesidad de camareras para su establecimiento cada 24 horas Periodo Horas Numero mínimo de camareras 1 6 a 10 60 2 10 a 14 70 3 14 a 18 60 4 1 8 a 22 50 5 6 22 a 2 2a6 20 30 El administrador ha acordado con las camareras que éstas comiencen a trabajar al principio de cada periodo y trabajen 8 horas seguidas. El administrador quiere determinar el número mínimo de camareras que sea suficiente para la atención correcta del establecimiento. Formular un modelo de programación lineal para este caso. 4.-) Una organización terrorista da trabajo a 1000 personas. En una semana, cada uno de ellos puede producir 2 barriles de sustancias químicas “mantrax” para enviar a países del eje del mal, o bien transformar un barril en otro de un arma de destrucción masiva “agente amarillo” (tras mezclado de sustancias indicadas por un químico español aburrido de no cobrar un duro como becario), pero no ambas cosas a la vez. Actualmente, la fábrica tiene un amplio surtido de materia prima porque se la envió Irak poco antes de la invasión. Después de tres semanas de producción, los barriles de “mantrax” se venden a 20$ unidad y los barriles de “agente amarillo” a 75 por unidad. Plantear un problema de programación- lineal que nos sirva para calcular cuántos terroristas deben dedicarse a la fabricación de cada producto durante cada semana, en orden a obtener el máximo beneficio (supóngase que un barril de mantrax puede convertirse en agente amarillo tan sólo a la semana siguiente de su fabricación). 5.- ) Para la fabricación de dos herramientas de defensa personal A y B son necesarias 2 operaciones. Cada unidad de la herramienta A requiere de 2 horas de la operación 1 y 3 horas de la operación 2. Cada unidad de la herramienta B requiere de 3 horas de la operación 1 y 4 horas de la operación 2. La operación 1 puede desarrollarse durante 16 horas y la 2 durante 24 horas. Problemas 2 Al fabricar la herramienta B también se produce un polvillo mata-suegras sin coste adicional, pero sólo una parte puede venderse con provecho en sobres en quioscos; el resto debe destruirse. Se obtienen 2 sobres del polvillo C por cada herramienta B fabricada, y sólo se podrán vender 5 sobres de C para que la policía no sospeche y clausure la fábrica La ganancia de la herramienta A es de 4 euros por unidad y la de B es de 10 euros. por unidad. El producto C, si se vende proporciona una ganancia de 3 euros/unidad, pero si se destruye su coste es de 2 euros/unidad. Plantear un problema de p.l.. de manera que se maximicen las ganancias. 6.-) Una tienda de máquinas tiene un taladro a presión y 5 máquinas moledoras, las cuales son utilizadas para producir un destornillador-navaja que consta de dos piezas A(destornillador) y B (navaja). La productividad de cada máquina para las dos piezas viene dada por: Tiempo de producción en minutos por pieza TALADRO MOLEDORA PIEZA A 3 20 PIEZA B 5 15 Se desea mantener un equilibrio entre todas las máquinas de lal forma que ninguna máquina trabaje 30 minutos por día más que otra (se supone que la carga de trabajo de cada moledora es la media de las 5 máquinas). Plantear un problema de programación lineal para obtener el número máximo de herramientas completas en 8 horas diarias de trabajo. 7.-) Un alumno de Quinto de Ingeniería Informática al que sólo le queda Álgebra y Estadística para licenciarse, y que sólo dispone de 30 días para prepararlas, recibe de su padre la siguiente proposición: Por cada asignatura que apruebe le premiará de la siguiente forma: . Por cada punto que saque en Álgebra le dará 900 euros. . Por cada punto que saque en Estadística le dará 500 euros. Al alumno le ha salido un curre como striper por el que le pagan a 15 euros la hora, y no puede hacer más de 200 horas al mes sin que su abuela (católica ferviente desde que nació) se entere y lo desherede. El alumno piensa que: . Tiene que dormir necesariamente 8 horas diarias. Problemas 3 . Va a dedicar, sin excusa alguna, 100 horas en chats y hackeos a los ordenadores de varios alumnos pelotas que han subido el nivel de estudios ese año. Sabe que para cada punto de álgebra necesitará 30 horas de estudio, y de Estadística 20 horas. ¿Cómo distribuirá su tiempo para obtener máximo beneficio económico, si no está realmente obligado a aprobar, puesto que un arreglo con un Vicedecano (al que pagaría 600 euros) le permite obtener el título igual ¿Cuánto dinero le queda una vez transcurridos estos 30 dias tan apurados? Nota: El padre le paga por la nota que saque, pero solo si aprueba. Se aprueba con nota mayor o igual a 5. El problema es más difícil de plantear de lo habitual, pero fácil de resolver. 8.-) Utilizando el método del simplex resolver: Maximizar Z =x1 + 3x2 s uj e t o a x1 ≤ 5 x1 + 2x2 ≤ 10 x2 ≤ 4 x1,x2 ≥ 0 Dibujar la región factible. Seguir gráficamente los pasos del método del simples, interpretando el cambio de una solución factible básica a la siguiente en dicha región factible. 9.-) Sean Y1, Y2 2 soluciones óptimas de un p.p.l en forma estándar. Max (o Min) Z=CX AX = b X ≥0 Demostrar que cualquier vector de la forma Y=a1 Y1+a2Y2 con a1+a2=1, a1,a2≥0 es también una solución óptima. Generalización.- demostrar que, si en vez de tener 2 soluciones óptimas se tienen n, el vector Y= a1 Y1+…+anYn con a1+a2+…+an=1, a1,a2,…,an≥0 es también una solución óptima. 10.-) Resolver el siguiente problema utilizando el método de las penalizaciones: MINIMIZAR Z = 2X1 - X2 + 2X3 SUJETO A -X1 + X2 + X3 = 4 Problemas 4 - X1 + X2 - X3 ≤ 6 X1≤0, X2≥0, X3 cualquier signo 11.-) Obtener tres soluciones óptimas del siguiente problema: Minimizar Z = 3X1+ X2+ X3 + X4 sujeto a - 2X1 + 2X2 + X3= 4 3X1 + X2+ X4 = 6 Xi≥ 0 12.-) Se ha resuelto un problema de programación lineal y se ha obtenido solución óptima múltiple. Se tiene que Y1 = (2,3,0), y2 = (3,1,1) Y y3 = (1,2,2) son tres soluciones óptimas. ¿Puede saberse si y4 = (2,2,1) es también una solución óptima? Justifíquese la respuesta. PROBLEMAS DE PROGRAMACION LINEAL AVANZADA. 1.-) Dado MINIMIZAR Z = 2x1 - x2 + 3x3 Sujeto a X1 -2x3 ≥ 6 2x1 - x2 + 2x3 ≥ -2 x1,x3 ≥ 0, x2 cualquier signo a) Escribir el problema dual y resolverlo gráficamente. b) A partir de la solución dual calcular la del primal utilizando las condiciones de holguras complementarias. 2.-) La tabla óptima de un p.p.1. de maximización con 3 restricciones del tipo ≤ y 2 incógnitas (x1 ,x2) es Base x3 x2 x1 Cj- Xl 0 0 1 0 x2 0 1 0 0 x3 x4 Xs Constantes 1 1 -1 2 0 1 0 6 0 -1 1 2 0 -3 -2 Donde x3,x4,x5 son variables de holgura. Calcular el valor óptimo de la función del Problemas 5 objetivo de 2 formas diferentes. 3.-) Sabiendo que los 2 siguientes sistemas de restricciones i) 2x1+x2+4x3 ≤10, 3x1+2x2-x3≥1, 2x1-x2+x3≤ 5; xi≥ 0 ii) 4y1+y2+y3≥ 5, -2y1+3y2-2y3≤ 1, -y1+2y2+y3≤ 1, yi≥ 0 son los conjuntos de restricciones de un problema de p.l. y de su dual, respectivamente (las restricciones no están ordenadas), determinar cuáles de las siguientes parejas de soluciones dadas por las ternas (x1,x2,x3) e (y1,y2,y3) pueden ser soluciones óptimas de los correspondientes p.p.l, justificando la respuesta. a) b) c) d) (1,1,1) (1,0,2) (1,0,2) (1,2,0) y y y y (1,1,0) (1,1,0) (0,2,1) (0,2,1) 4-) Dado el p.p.l Max Z= 15x1 + 25x2 + 10x3 Sujeto a -6x2+3x3≥ 12 3x1+12x2+6x3=30 xi≥ 0 a) resolver el problema dual gráficamente b) a partir de la solución óptima del problema dual, calcular la solución óptima del primal utilizando las condiciones de holgura complementarias 5.-) Comprobar, utilizando el método del simplex dual, que el siguiente problema no tiene solución: MAXIMIZAR Z= -4X1 – 3X2 Sujeto a X1 + x2 <=1; -x2 <=-1; -x1+2x2<=1; x1,x2>=0 6.-) Resolver el siguiente p.p.l., utilizando el método dual del simplex: Min Z =40x1+36x2 Sujeto a x1<=8 X2 <=10 Problemas 6 5x1+3x2>=45 x1,x2 >=0 y enteros 7.-) Considérese el problema maximizar Z= 5x1 – 6x2 –6x3 sujeto a x1+5x2 + 2x3 <= b1 x1 – x2 - x3 <= b2 xi>=0 para unos valores específicos de b1 y b2 la solución óptima es: Base X1 X4 cj X1 1 0 0 X2 b c a X3 -1 3 -1 X4 0 1 d X5 1 -1 e ctes 30 10 Z=150 Calcular a) Los valores de b1 y b2 que proporcionan la solución óptima especificada b) los valores de a, b y c en la tabla óptima c) si se requiriera aumentar Z0 óptimo, ¿debería aumentarse b1 ó b2 y en cuánto? d) Supongamos que la función objetivo del problema anterior se cambia a minimizar, esto es, queda Min Z=5x1 – 6x2 –6x3. Obtener la nueva solución óptima y el nuevo Z óptimo a partir de la solución óptima inicial, sin resolver el problema otra vez 8.-) Una banda de “querubines del purgatorio” posee un laboratorio clandestino en el que fabrican 3 tipos diferentes de droga: “Peleona” (P), “Juliana” (J) y “Marijuana” (M). Para la fabricación son necesarios, además de pastillas sedantes, pegamento y caldo avecrem –para los cuales no hay limitación de disponibilidad-, crack y cocaína, que limitan la cantidad diaria de producción. La siguiente tabla nos da la cantidad necesaria de estos 2 últimos recursos para producir 1 kg de cada una de las distintas drogas, los kg disponibles de cada recurso, y el beneficio por kg de droga producida Crack Cocaína Beneficio (en millones de euros) P 2 1 4 J 1 2 7 M 2 2 3 disponibilidad 30 45 El jefe de la banda es un experto en IO, y calcula la producción óptima mediante la programación lineal. Obtiene que, como más dinero ganarán será fabricando 5 kg de droga P, 20 de J y no fabricando la M. Problemas 7 Responder: a) ¿Por qué no sale rentable fabricar la droga Marijuana? ¿Qué debería ocurrir para que sí se fabricase? b) Resulta que, por cada kg de crack que sobre, hay un millonario colgado que se lo compra, pagándolo a 2 millones el kg. ¿Sigue siendo la solución inicial la óptima? c) La policía ha incautado en el puerto un alijo de crack procedente de Nueva Zelanda. Un policía corrupto le vende a la banda 6 kg a cambio de 5 millones. ¿Les compensa comprárselos? d) Un robo salvaje a una banda rival les proporciona nada menos que 63 kg más de crack. Lógicamente, ahora la solución inicial no puede seguir siendo la óptima. Calcular la nueva. e) Gracias a una nueva formula robada en el Monsergas, no es necesario utilizar cocaína para fabricar la droga M.¿Cuánto dinero ganará la banda con esta nueva fórmula? f) Se introduce en el plan de producción la posibilidad de añadir tomate, de forma que la fabricación de 1 kg de droga P requiere 3 kg de tomate, 1 kg de J requiere 1 kg de tomate, y 1 kg de M requiere también 1 kg de tomate. Se tienen 30 kg de tomate. ¿Cómo varía la solución óptima? Si es el caso, calcular la nueva g) A la chorba del jefe se le ocurre fabricar un nuevo tipo de droga que coloque más rapidamente (Veloz), que requiere 1 kg de crack y 1 kg de cocaína por kg fabricado, y supone que les reportará 5 millones de euros por kg. Ella dice que la fabricación de esta droga les hará ganar más dinero. ¿Es cierto lo que piensan los de la banda acerca de que el jefe es un calzonazos, y que su novia está equivocada? ¿Cuánto ganan o pierden con esta idea? 9.-) Una empresa fabrica los productos A, B y C, para lo que son necesarios recursos de trabajo y material. Se quiere determinar la producción que maximiza la ganancia. Para ello se plantea el siguiente p.p.l. Maximizar Z= 3x1 + x2 + 5x3 Sujeto a 6x1 + 3x2 + 5x3 <= 45 (trabajo) 3x1 + 4x2 + 5x3 <= 30 (material) xi>=0 y se obtiene la siguiente solución óptima x1=5, x3=3, x2=0. Utilizando el análisis de sensibilidad, responder a las siguientes cuestiones a) calcular el campo de variación de c1 que mantiene esta solución óptima, y calcular la solución óptima para c1=2 b) disponemos de 6 unidades adicionales de material a un coste de 10 (en total). ¿Es rentable adquirirlas? c) Encontrar la solución óptima cuando el material disponible es de 60 unidades. d) Si el material que se necesita para el producto B fuese de 2 unidades, ¿afectaría a la solución óptima? e) Se añade al problema una condición de control 2x1+x2+3x3<=20. ¿Cómo afecta esto a las soluciones primal y dual? 10.-) La siguiente tabla da una solución óptima a un p.p.l estándar donde suponemos que x4 y x5 forman la base inicial (son variables de holgura) Problemas 8 Base X1 X2 cj X1 1 0 0 X2 0 1 0 X3 -1 2 -3 X4 3 -1 -3 X5 -1 1 -1 ctes 1 2 a) calcular el campo de variación de λ para que la solución actual siga siendo óptima si el vector original b de constantes de la derecha es reemplazado por b+λb*, con b*=(1,-1). Encontrar la solución óptima para λ=1/2 b) calcular la solución óptima si se añade la nueva restricción x1 + x3>=2 al problema original. c) calcular los precios sombra de las restricciones. 11.-) Dado el p.p.l. paramétrico siguiente Maximizar Z = (4-λ)x1 + (3-2λ)x2 + (6-λ)x3 Sujeto a 3x1 + x2 + 3x3 <=30 2x1 + 2x2 + 3x3 <= 40 xi>=0 calcular la solución óptima y el valor de λ que daría un beneficio óptimo de 62. 12.-) Resolver el siguiente p.p.l. entera, usando el algoritmo de ramificación y acotación Min Z =10x1+9x2 Sujeto a x1<=8 X2 <=10 5x1+3x2>=45 x1,x2 >=0 y enteros PROBLEMAS DE TRANSPORTE 1.-) Una compañía de conservas tiene 2 plantas de producción. Tres cultivadores le surten de fruta fresca en las siguientes cantidades Felipe: 200 toneladas a 10.000 unidad Carrascal: 300 toneladas a 9000 unidad Problemas 9 Andrés: 400 toneladas a 8000 unidad Los costes de transporte en miles de euros por tonelada son Hacia Desde Planta A Planta B Felipe 2 2.5 Carrascal 1 1.5 Andrés 5 3 Las capacidades de las plantas y los costes de producción son: Planta A: Capacidad 450 toneladas a 25000 euros la tonelada Planta B: Capacidad 550 toneladas a 20000 euros la tonelada La fruta en conserva se vende a 50000 la tonelada. La compañía puede vender a este precio todo lo que produce. ¿Qué cantidad se deberá enviar desde cada cultivador a cada planta de manera que la compañía obtenga el máximo beneficio? Plantearlo como un problema de transporte y resolverlo. 2.-) Se pretende distribuir a los estudiantes de tres barrios de una ciudad (A,B,C) entre 4 colegios (E,O,N,S). Hay 50 estudiantes en cada barrio y los colegios admiten 20,40,30 y 60 estudiantes, respectivamente. El coste de tranporte en autobús viene dado en la siguiente tabla BARRIOS A B C E 7 9 8 COLEGIOS O 6 7 8 N 5 3 7 S 4 6 3 La delegación de educación desea planificar la distribución de los estudiantes minimizando el coste del transporte. a) calcular la solución óptima a partir de una solución inicial calculada por el método del coste mínimo. b) Debido a un rodeo que hay que dar por obras para llegar a la escuela E, el coste del transporte desde cada barrio hasta dicha escuela se incrementa una unidad. Explicar cómo modificará este hecho la solución óptima obtenida en el apartado anterior. 3.-) Desde 3 pantanos se envía agua a 4 ciudades. La capacidad de los pantanos es de 15, 20 y 25 millones de litros diarios. Las demandas de las ciudades es de 8, 10, 12 y 15. El coste de bombeo por millón de litros está dado en la siguiente tabla: Problemas 10 PANTANO CIUDAD B 3 2 1 A 2 3 4 1 2 3 C 4 5 2 D 5 2 3 Utilizando el algoritmo del transporte, planificar los envíos de agua a las ciudades con el mínimo coste. 4.-) Un problema de transporte se caracteriza por la siguiente matriz D1 D2 D3 D4 D5 Existencias 14 16 17 12 18 120 18 12 21 16 22 190 20 15 19 18 19 60 17 13 25 20 21 160 80 100 120 110 60 En donde cada uno de los números de la matriz denota el coste unitario de transporte del origen al destino correspondiente y los restantes números las existencias y las demandas. Plantear la tabla de transporte con la que empezar a resolver el problema (No resolverlo), teniendo en cuenta que no se pueden transportar más de 70 unidades desde O1 hasta D4. 01 02 03 04 PROBLEMAS DE ASIGNACIÓN 1.-) Una escuela de Ingeniería decide realizar seminarios sobre 4 temas de actualidad. Estos seminarios se realizarán una vez por semana. Al planificarlos, se ha procurado que el número de estudiantes que no pueda asistir a un seminario sea mínimo. Un cuidadoso estudio indica que el número de estudiantes que no pueden asistir a un seminario particular un día específico es el siguiente Lunes Martes Miércoles Jueves Viernes Ecología 50 40 60 30 10 Energía 40 30 20 30 20 Transporte 60 40 30 30 10 Bioingeniería 20 30 20 30 30 Obtener la planificación óptima de los seminarios. 2.-) Para realizar 4 tareas (A,B,C,D), un empresario dispone de 3 empleados, cada uno de los cuales cobra las siguientes cantidades por realizar cada tarea. Problemas 11 1 2 3 A 10 14 18 B 12 18 15 C 8 16 16 D 15 12 14 Para poder realizar las cuatro tareas, el empresario puede optar entre: a) contratar a un nuevo empleado, que cobraría 20 por realizar cualquier tarea, o b) que uno de sus empleados realice 2 tareas, una de ellas en horas extraordinarias, de forma que tendría que pagarle un 20 por ciento más que si la realizara en horario normal. Determinar cuál de las 2 opciones es más ventajosa para el empresario, y determinar la asignación de los empleados a las tareas, de forma que el coste total sea mínimo. 3.-) Un millonario tiene 4 hijas muy feas, que no logran conseguir marido. Después de muchos avatares, consigue convencer a 4 incautos, sobornándoles de acuerdo a los gustos de cada uno, para que se casen con ellas. La cantidad de millones que tendrá que pagar a los interesados amantes según con quien elijan casarse viene dado en la siguiente tabla Torrente Rodríguez Carpintero Felipe Lotas Bartol O. Me Hija 1 2 10 Hija 2 3.5 22 Hija 3 5 34 Hija 4 6.5 46 8 0 14 6 20 12 26 18 Decidir los emparejamientos que comporten el menor gasto para el sufrido padre Problemas 12 Referencia Histórica de la Investigación Operativa Suele ser difícil hacer una referencia histórica de la Investigación Operativa. Principalmente, porque no es sencillo establecer sus orígenes. Son muchas las áreas que componen la Investigación Operativa, y hasta que apareció un elemento aglutinador en los años 40 del siglo XX, cada una tuvo su propia referencia histórica, haciendo muy difícil establecer la fecha exacta del nacimiento de la Investigación Operativa. La necesidad de tomar decisiones es tan antigua como el hombre mismo, por ello, hemos de preguntarnos por qué la Investigación Operativa nace en un momento histórico preciso. Esto fue así, porque la realidad humana se fue complicando poco a poco y las decisiones que en un principio eran triviales, se convirtieron en decisiones difíciles. Con la llegada de la Revolución Industrial, la sociedad se hizo mucho más compleja y las decisiones habían de tomarse con más cuidado porque involucraban a más personas en sus consecuencias. Veamos a continuación lo que esto supuso históricamente. Proceso Introductorio Las diferentes ciencias han de ser comprendidas con profundidad antes de poder ser analizadas desde un punto de vista histórico. Quizás no sea fácil establecer los orígenes de la Investigación Operativa, porque no se tuvo conciencia de la misma hasta mucho más tarde de que algunas de sus ramas nacieran y se desarrollaran. No obstante, es necesario relacionar el alumbramiento de la Investigación de Operaciones, por lo menos nominalmente, con el transcurso de la II Guerra Mundial. Por esta razón, hemos de pensar en los orígenes de la ciencia operacional como en los de una técnica de naturaleza militar. Dichos orígenes han supuesto una impronta decisiva en el tratamiento de las técnicas operacionales. En este sentido, cuando se pretende trazar una historiografía de una ciencia es muy importante delimitar la frontera de la misma en los terrenos conceptual e histórico. Prolegómenos y rudimentos de la Investigación Operativa: la ciencia de la gestión La gestión y la organización han sido necesarias para la humanidad desde sus albores. La necesidad de planificación y organización aparece ya en el antiguo Egipto hacia el año 4.000 a.C. y se va desarrollando a través de toda la Antigüedad hasta el advenimiento del Imperio Romano. En Israel y China también aparecen tímidos escarceos de organización y dirección hacia el año 1.000 a.C. Nabucodonosor establece algunas ideas sobre control de la producción hacia el año 600 a.C. En Grecia, se desarrollan en el 350 a.C. los primeros métodos de organización del trabajo y del tiempo. Alrededor del año 30 a.C., Julio César establece diversas ideas de planificación, control y unidad de mando, que luego pone en práctica en todo el Imperio Romano. Todos los estudios y planteamientos organizacionales de la Antigüedad tienen su proyección, que no su continuación, a lo largo de toda la Edad Media, en donde se aprovechan sin posteriores desarrollos. Durante el siglo XV, en la Italia renacentista se Historia 1 vuelven a plantear de nuevo las cuestiones organizativas y aparecen diversos estudios sobre costes y sobre control de existencias. No es fácil establecer otros hitos acerca de la organización hasta el siglo XVIII, cuando Pierre de Montmort inicia sus primeras ideas directivas que luego dan lugar a la teoría de juegos. Con los inicios de la I Revolución Industrial, el sentido y la forma de estudio de la Ciencia de la Gestión adquieren su ser más pleno. Por otra parte, el desarrollo de las matemáticas durante los siglos XVIII y XIX permite disponer de las herramientas necesarias para la futura construcción de la Investigación de Operaciones. De esta forma, en 1767, Gaspard Monge descubre la manera geométrica de resolver un programa lineal. Posteriormente, Adam Smith establece el principio de especialización en los trabajos, y Robert Owen, ya en el siglo XIX, realiza un estudio sobre tareas en un proceso productivo, y advierte de la necesidad de adiestramiento en las mismas por parte de los operarios. Una aportación fundamental la realiza Babbage, en 1832, construyendo lo que se podría llamar el primer computador digital, que vendría a ser el antecesor de los modernos ordenadores. A finales del siglo XIX, Joseph Wharton hace de la dirección estratégica e industrial un saber universitario. No obstante, el auge de las revoluciones industriales del XIX permiten establecer un caldo de cultivo adecuado para el estudio de la ciencia operacional. Así, Frederick W. Taylor y Henry L. Gantt, ante la necesidad de planificación de la producción, establecen el método científico de dirección y las gráficas de programación productiva (de Gantt), respectivamente. A partir de este momento aparece la aportación nuclear del siglo XX a la Investigación de Operaciones, sabiendo que es en esta centuria cuando se produce su nacimiento real. Génesis de la Investigación Operativa en el siglo XX Entre otros hechos que ayudaron a construir lo que se llamaría “investigación de operaciones” o “investigación operativa” citaremos: a) los rudimentos de la teoría de colas, con A.K. Erlang, y b) la construcción del modelo económico del tamaño del lote, con F.W. Harris. Sin embargo, estos hitos que luego constituyeron elementos clave de la Investigación Operativa, no permitieron establecer la misma como un saber independiente. Es hacia 1935 cuando Inglaterra se da cuenta de que necesita dar una respuesta adecuada al creciente poderío militar alemán. Por esta razón, el gobierno inglés urge a un grupo de científicos a que realicen experimentos que conduzcan a un mejor control del espacio aéreo. Fruto de esta experimentación aparece el radar, que constituye el inicio de la lucha por la supremacía aérea. Este grupo de investigadores tomó su base en Bawdsey, y por esta razón se llamó grupo de Bawdsey. De forma paralela, se estableció otro grupo durante 1936 para desarrollar el experimento Biggin Hill, que permitía la simulación de aviones enemigos y su detección. La conjunción de estos dos grupos, permitió ofrecer a la RAF (Royal Air Force) una estructura operacional, para sus equipos materiales y humanos, que le posibilitó librar la batalla de Inglaterra en 1940-41. El grupo de Bawdsey fue dirigido en 1938 por A.P. Rowe, el cual acuñó la expresión 'Operations Research', que posteriormente se extendió dentro del ámbito científico al resto de países occidentales. Historia 2 La batalla de Inglaterra se recrudece en el otoño de 1940. Por esta razón, se solicita la ayuda de P.M.S. Blackett, un físico que después conseguirá el Premio Nobel por sus trabajos en rayos cósmicos, con objeto de establecer una sección de Investigación Operativa dentro de los comandos de acción de la RAF. Del mismo modo, Blackett fue consultado en diciembre de 1941, sobre la posibilidad de constituir una sección similar dentro de la Armada. Dicha sección fue constituida en enero de 1942. Los dos primero miembros del grupo eran fisiólogos, otros dos eran físicosmatemáticos, un astrofísico, un oficial del Ejército y un ex-topógrafo. El equipo se completó más tarde con un tercer fisiólogo, un físico general y dos matemáticos. Se les conoció como el “ Circo de Blackett “, Es evidente que en este grupo de 11 científicos se tenía una amplia gama de disciplinas. El grupo creció y luego se dividió en dos, uno del Ejército y otro de la Marina, con lo cual, las fuerzas militares de la Gran Bretaña tuvieron todas un grupo de investigación de operaciones encargado de la investigación militar. Cuando los Estados Unidos entran en la guerra, son conscientes de la necesidad de tales grupos operativos y de la constitución de secciones operacionales para el éxito de los mismos. De esta manera, constituyen en 1942 un grupo operacional de lucha antisubmarina (ASWORG - Anti-Submarine Warfare Operations Research Group) que recoge toda la experiencia inglesa desarrollada por Blackett. De forma similar, la Fuerza Aérea Americana estructura diversos grupos operacionales para llevar a cabo sus labores logísticas. Al final de la guerra, la Armada americana disponía de un departamento de Investigación Operativa compuesto por más de setenta científicos, y la Fuerza Aérea disponía de más de dos docenas de secciones operacionales. No puede decirse que las potencias del Eje hicieran uso de las técnicas operacionales durante la II Guerra Mundial, mientras que el número de científicos e investigadores involucrados en Investigación Operativa en la contienda por parte de ingleses, americanos y canadienses superó los setecientos. Las aportaciones que hicieron todos estos investigadores supusieron un giro copernicano en la manera de concebir la Ciencia de la Gestión en los años siguientes. De alguna manera, todos estos estudiosos que trabajaban de manera aislada en los años treinta se aglutinaron holísticamente con ocasión de la guerra, y produjeron un conjunto de técnicas y teorías que ocasionaron el alumbramiento de la Investigación de Operaciones como ciencia. Investigaciones sobresalientes durante la segunda guerra mundial: El sónar ("Sound navigation ranging") Técnica para detectar y determinar la distancia y dirección de objetos bajo el agua mediante señales acústicas. Las ondas sonoras emitidas por o reflejadas desde el objeto son detectadas por el aparato de sónar y analizadas para extraer la información. Historia 3 El sónar se propuso en un primer momento para la detección de icebergs. El interés en el sónar aumentó con su aplicación en los submarinos de la primera guerra mundial. En el campo militar hay un largo número de sistemas que detectan, identifican y localizan submarinos. El sónar se usa también para la detección de minas, torpedos. Usos no militares son búsqueda de peces, mapeado del fondo del mar y localización acústica de barcos. El descifrado de códigos emitidos por la máquina cifradora Enigma. (referencia: “códigos secretos” de Simon Singh) Historia 4 Historia 5 Bletchley Park es el nombre de una instalación militar localizada en Buckinghamshire, Inglaterra en la que se realizaron los trabajos de descifrado de códigos alemanes durante la Segunda Guerra Mundial. Recibe su nombre de la mansión victoriana que domina el enclave. La primera computadora Colossus fue diseñada y construida en Bletchley Park permitiendo romper los códigos de la máquina alemana Enigma. Existía un centro, en otro pueblo, dónde interceptaban las señales de radio de los alemanes, con multitud de antenas para la intercepción. Posteriormente se hacían 2 copias; una se quedaba en este centro y la otra se enviaba a Bletchley para su descifrado. Ahí el trabajo se dividía en la que se denominaban cabañas, con numeración para cada una de ellas, cabaña 1, cabaña 2,...Dentro de las cabañas se dividían en sectores, y los sectores en secciones. El personal era civil y era reclutado en función de sus aptitudes para cada una de las secciones, sectores y cabaña correspondiente, yendo de la gente de la cabaña 8 con gente que se dedicaba a descifrar los mensajes alemanes con analistas en criptografía, que provenían de distintas nacionalidades y también de distintas disciplinas como matemáticos, físicos, ... , como también ocurre en Investigación de Operaciones que está integrada por distintas disciplinas; mientras que la cabaña 2 se dedicaba únicamente a pasar los textos y a archivar información, con personal mayoritariamente femenino, aún pudiendo tener aptitudes para estar en cabaña 8 pero por ser mujeres se las relegaba a puestos administrativos. El director de la sección naval enigma era Alan Turing. Historia 6 Después de la guerra, su carrera profesional de Turing se vio truncada cuando lo procesaron por su homosexualidad. En 1952 Arnold Murray, el amante de Turing, ayudó a un cómplice a entrar en la casa de Turing para robarle. Turing acudió a la policía a denunciar el delito. Como resultado de la investigación policial, Turing fue acusado de mantener una relación sexual con un varón de 19 años y se le imputaron los cargos de "indecencia grave y perversión sexual". Convencido de que no tenía de qué disculparse, no se defendió de los cargos y fue condenado. Según su ampliamente difundido proceso judicial, se le dio la opción de ir a prisión o de someterse a un tratamiento hormonal de reducción de la libido. Finalmente escogió las inyecciones de estrógenos, que duraron un año y le produjeron importantes alteraciones físicas, como la aparición de pechos o un apreciable aumento de peso, y que además le convirtieron en impotente. Dos años después del juicio, en 1954, murió por envenenamiento con cianuro, aparentemente tras comerse una manzana envenenada que no llegó a ingerir completamente. La mayoría piensa que su muerte fue intencionada y se la consideró oficialmente como un suicidio Gordon Brown se disculpa ante Alan Turing Publicado el 11-9-2009 a las 08:48 por F. Figueroa Fagandini Estatua conmemorativa de Alan Turing en Sackville Park (cc) Wikimedia Commons El sitio Number 10 es, según ellos mismos dicen, el sitio oficial del Primer Ministro del Reino Unido. No el sitio de Gordon Brown sino el de todos los primeros ministros que han habitado la casa que está en Downing Street número 10 desde 1721. A través de ese canal, la gente puede entre otras cosas enviar peticiones, y la más bullada del último tiempo fue la exigencia, 55 años después de su muerte, de disculpas públicas para Alan Turing. Historia 7 Este señor, para los que no lo sepan, trabajó con el gobierno británico durante la segunda guerra mundial desencriptando códigos interceptados a la Alemania nazi, una tarea a través de la cual desarrolló gran parte de lo que hoy conocemos como ciencias de la computación. Estableció las bases para distintas líneas de estudio que hoy son nuestra fuente de trabajo: la cibernética, la inteligencia artificial, el concepto de algoritmo y diagrama de flujo para ejecución de programas y la Tésis de Church-Turing que a su modo es la piedra pilar de la computación actual. Alan Turing tuvo un final muy triste, luego de que reconociera abiertamente su homosexualidad -a la sazón un delito en el Reino Unido- y fuera condenado a la castración química, una circunstancia que lo llevó al suicidio un par de años más tarde. Ayer, Gordon Brown emitió un comunicado reconociendo que el trato recibido por Alan Turing fue inaceptable. En un extenso comunicado recorre someramente los méritos de Turing para cerrar diciendo: “Lo siento Alan Turing, merecías algo mucho mejor”. Link: Treatment of Alan Turing was “appalling” - PM (Number10) Historia 8 El Proyecto Manhattan El 6 de diciembre de 1941, un día antes del ataque japonés a Pearl Harbor, Vannevar Bush, jefe del Departamento de Investigación y Desarrollo Científico de Estados Unidos, lograba la aprobación presidencial de un plan de acción total en el ámbito de la investigación atómica. En 1942, el primer ministro británico W. Churchill y el presidente norteamericano F. D. Roosevelt acordaron concentrar en el territorio estadounidense los equipos científicos de ambos países que ya trabajaban en la bomba. La dirección general del llamado Proyecto Manhattan recayó en el Comité Militar Político, compuesto por tres militares, los generales Styer, Groves, y el almirante Purnell, y por dos civiles, V. Bush y J. B. Conant. Vannevar Bush, ingeniero electricista, había sido vicepresidente del Massachusetts Institute of Technology, y James B. Conant, químico orgánico, había sido presidente de la Universidad de Harvard. Cerca de 150 000 personas llegaron a participar en el Proyecto, la mayoría de ellas sin saber cuál era su objetivo. No más de una docena de individuos tenía una visión global de la empresa. Los científicos que accedieron a entregarse totalmente a la construcción de un arma nuclear lo hicieron convencidos de la necesidad de contar con tal recurso si es que Hitler también lo obtenía. Muchos opinaban que, una vez logrado un equilibrio entre ambos bandos en guerra, se debería renunciar al uso del artefacto. La existencia de una bomba alemana era una idea siempre presente en sus mentes, hasta el punto de referirse a ella como si fuese una realidad. El 17 de septiembre de 1942, el general Leslie Richard Groves fue nombrado jefe del supersecreto y superprioritario Proyecto Manhattan. Se construyeron tres ciudades para realizar los diferentes trabajos: - Oak Ridge en el estado de Tennessee, donde se trabajaba en la separación del uranio para obtener el isótopo fisionable 235. Hanford en el estado de Washington, donde se producía otro isótopo fisionable, el plutonio 239. Los Álamos en Nuevo México, donde se diseñaban y fabricarían las primeras tres bombas. Muy importante para estos proyectos fue la labor dirigida por Fermi en el Laboratorio Metalúrgico de la Universidad de Chicago, que culminó con la puesta en marcha en diciembre de 1942 del primer reactor nuclear. Inmediatamente después de este logro, el gobierno norteamericano destinó 400 millones de dólares al Proyecto Manhattan. Los costos totales se estiman en unos 3 000 millones de dólares. Historia 9 Fermi Einstein, Historia 10 Oppenheimer Niels Bohr y Albert Einstein debatiendo la teoría cuántica en casa de Paul Ehrenfest en Leiden (deciembre de 1925). El crecimiento de la Investigación Operativa, de 1945 a la actualidad Es muy difícil condensar en unas líneas todo lo que han supuesto las décadas anteriormente mencionadas para la ciencia operacional, habida cuenta de su importancia y de la riqueza de trabajos producidos. Realmente, se ha construido más ciencia operacional durante estos Historia 11 años que en todo el resto de la historia de la humanidad. Puede decirse, por tanto, que la verdadera historia de la Investigación Operativa se ha desarrollado durante este período: se han establecido líneas de investigación, han aparecido sociedades profesionales, se han creado revistas de investigación, se han publicado libros y se ha incluido la materia dentro del currículum educativo. Una vez finalizó la segunda guerra mundial y habida cuenta del éxito cosechado por las técnicas operativas, éstas continuaron desarrollándose dentro del ámbito militar, puesto que era el ejército quien poseía la mayor parte de los investigadores y quien estaba interesado en proseguir dicha línea de trabajo. A mediados de los años cincuenta se desplazó el centro de gravedad de interés de la Investigación Operativa, y alcanzó el terreno industrial y el académico. Aparece el interés por la Ciencia de la Gestión (Management Science). En la década de los setenta, ha continuado el desarrollo expansivo de la Investigación Operativa, llegando al ámbito de la administración pública, tratando los siguientes tipos de problemas: transporte urbano, administración de justicia, construcción de edificios públicos, educación, hospitales y servicios sociales. De esta manera, el peso investigador de la Investigación Operativa se desplaza desde el Reino Unido a los Estados Unidos, en donde se constituyen diversos institutos y organizaciones de estudio, como The Urban Institute (1968) y The New York CityRand Institute (1969). También, son muchas las empresas que, a partir de los años cincuenta, se ayudan de técnicas operativas para diseñar sus políticas de producción y de distribución. Por ejemplo, a partir de una encuesta que realiza Turban en 1972 en Estados Unidos sobre las 500 empresas más importantes del país (de acuerdo con la revista Fortune), se deduce que la mitad de las empresas que contestaron la encuesta poseían un departamento especial dedicado a tareas de Investigación de Operaciones o Ciencia de la Administración. No obstante, la Investigación Operativa forma cada día más, una parte de las actividades normales de la empresa moderna y, por tanto, ya no se trata de una función especializada que deba llevarse a cabo en un departamento separado. De acuerdo con este estudio las técnicas operacionales más empleadas eran el análisis estadístico, la simulación, la programación lineal, la teoría de inventarios y la programación dinámica. Otras técnicas empleadas, aunque de menor uso, eran la programación no lineal, las líneas de espera, la teoría de juegos, el análisis de decisión de Bayes y la programación entera. Posteriormente, se realizaron otras encuestas de resultados similares: a) en 1977, Leadbetter y Cox (1977); b) en 1979, Thomas y DaCosta (1979); c) en 1983, Forgionne (1983). En todas ellas se comprueba cómo cada vez son mayores en número las técnicas operativas empleadas, y cómo dichas técnicas aparecen con más frecuencia en otras áreas o departamentos de la empresa. Estudios de otro tipo fueron los de Fabozzi y Valente (1976) que encuestaron, en 1976, mil compañías americanas en relación con el uso de la programación matemática (programación lineal, no lineal y dinámica). Estos autores descubrieron que era la dirección de Producción (mezclas de productos, asignación de recursos, diseño de planta y maquinaria,...) el área en donde más se aplicaba la Investigación de Operaciones dentro del ámbito de la empresa. En número de aplicaciones le seguía el área de Inversión y Financiación. Especificaciones y concreciones históricas de la Investigación Operativa: la programación matemática Historia 12 La Programación Matemática ha formado parte de la Investigación Operativa desde la constitución de la misma como ciencia hasta la actualidad. Sin embargo, muchos de los problemas tratados por la Programación Matemática eran conocidos desde mucho antes. Grandes matemáticos de los siglos XVIII y XIX, como Euler, Gauss y Lagrange trabajaron en problemas de optimización con restricciones y establecieron las primeras condiciones de optimalidad. Lo cual quiere decir que los problemas que la Programación Matemática planteaba en los años cuarenta de nuestro siglo no eran nuevos en su formulación, pero sí en su enfoque. Los métodos matemáticos clásicos no estaban pensados para una resolución en dimensiones altas, como iban a requerir las nuevas necesidades industriales. Esta fue la aportación de la ciencia operacional, máxime cuando se desarrollaron las técnicas computacionales que permitieron hacer realidad el cálculo rápido y a gran escala. La Investigación Operativa supuso un giro copernicano en la manera de tratar los programas matemáticos. Se implementaron algoritmos que computacionalmente eran más eficientes que los clásicos y, de esta manera, problemas que tradicionalmente habían sido complejos, ahora resultaron asequibles. El cambio de mentalidad era notable y, por tanto, un nuevo modelo científico se estaba abriendo paso. Para el desarrollo de las distintas técnicas algorítmicas, era básico el estudio de los sistemas de desigualdad como habían hecho los matemáticos Julius Farkas, Jean Baptiste Fourier y T.S. Motzkin. El análisis de los problemas económicos se debe a John Von Neumann y a Abraham Wald. No obstante, cuando se trata de presentar una descripción histórica de la Programación Matemática, hay que tener en cuenta la gran aportación de Dantzig con su método simplex para programación lineal. Este hito ha supuesto la demarcación de la época fundacional de la Programación Matemática. Dicho evento se ha considerado como el inicio de la Investigación Operativa, puesto que lo ha sido de la programación lineal, y ha traído consigo la resolución de muchos problemas operacionales. George Bernard Dantzig nació en 1914 y murió en 2005. Su padre era profesor de Matemáticas, se retiró dejando su puesto de Jefe del Departamento de Matemáticas en la Universidad de Maryland poco después de la Segunda Guerra Mundial. Su madre era una lingüista especializada en idiomas eslavos. Dantzig estudió su carrera en la Universidad de Maryland, donde se graduó en 1936. Le disgustaba el hecho de no haber visto "ni una sola aplicación en alguno de los cursos de Matemáticas que había tomado en Maryland". Al año siguiente hizo estudios de posgrado en la escuela de Matemáticas de la Universidad de Michigan. Sin embargo, exceptuando la Estadística, le pareció que los cursos eran demasiado abstractos; "tan abstractos, que él sólo deseaba una cosa: abandonar sus estudios de posgrado y conseguir Historia 13 un trabajo". En 1937 Dantzig dejó Michigan para trabajar como empleado en Estadística en el Bureau of Labor Statistics. Dos años después se inscribía en Berkeley para estudiar un Doctorado en Estadística. La historia de la tesis doctoral de Dantzig es ahora parte del anecdotario de las Matemáticas. Durante su primer año en Berkeley, llevó un curso de Estadística con el famoso Jerzy Neymann. En una ocasión llegó tarde a una de las clases de Neymann. En la pizarra estaban escritos dos problemas que él supuso eran problemas de tarea. Dantzig, consecuentemente, los copió y los resolvió, aun cuando le parecieron "un poco más difíciles que los problemas ordinarios". Unos días después se los entregó a Neymann, disculpándose por haber llegado tarde. Aproximadamente seis semanas después -a las 8:00 de un domingo por la mañana-, Neymann llegó aporreando la puerta de Dantzig, explicándole que había escrito una introducción a uno de los artículos de Dantzig y que quería que la leyera a fin de poder enviar el artículo para su publicación. Los dos "problemas de tarea" que Dantzig había resuelto eran, en realidad, dos famosos problemas no resueltos de la Estadística. Las soluciones de estos problemas se convirtieron en su tesis doctoral, a sugerencia de Neymann. NOTA: Parece ser que esta anécdota inspiró escenas de la película que lanzó a la fama a Matt Damon “El indomable Will Hunting”. Lo que el propio Dantzig reveló es que se trata de una leyenda urbana, pues dista mucho de la realidad. Poco después del comienzo de la Segunda Guerra Mundial se unió a la Fuerza Aérea de Estados Unidos y trabajó con el Combat Analysis Branch of Statistical Control. En 1946, Después de recibir su Doctorado, regresó a la Fuerza Aérea como el asesor de Matemáticas del U. S. Air Force Controller. Fué en ese trabajo donde encontró los problemas que le llevaron a hacer sus grandes descubrimientos. La Fuerza Aérea necesitaba una forma más rápida de calcular el tiempo de duración de las etapas de un programa de despliegue, entrenamiento y suministro logístico. El trabajo de Dantzig generalizó lo hecho por el economista, ganador del Premio Nobel, Wassily Leontief. Dantzig pronto se dio cuenta de que los problemas de planeación con los que se encontraba eran demasiado complejos para las computadoras más veloces de 1947 (y aun para las de la actualidad). La siguiente es la explicación de Dantzig acerca de las dificultades que tuvo que encarar: "Un ejemplo sencillo ilustra la dificultad fundamental de formular un problema de planeación utilizando un enfoque de análisis de actividades. Considere el problema de asignar 70 hombres a 70 empleos. Una "actividad" consiste en asignar el iésimo hombre al jésimo empleo. Las restricciones son dos: en primer lugar hay 70 hombres, cada uno de los cuales debe asignarse a un puesto y en segundo lugar, cada uno de los 70 puestos existentes debe estar ocupado. El nivel de una actividad puede ser 1, lo cual indica que está siendo usada, o 0, lo cual significa que no. En consecuencia hay 2 x 70 = 140 restricciones y 70 x 70 = 4900 actividades con 4900 variables correspondientes de decisión uno-cero. Por desgracia también hay factorial de 70 permutaciones o formas de hacer las asignaciones. El problema consiste en comparar el factorial de las 70 formas y elegir la que sea la óptima o "mejor" según algún criterio Historia 14 previamente establecido. En el ejemplo anterior,factorial de 70 es un número muy grande. A fin de tener una idea de qué tan grande es, supóngase que se hubiese tenido una computadora IBM del tipo mainframe en el instante en el que ocurrió el Big Bang hace quince millones de años. ¿Habría podido, entre ese entonces y ahora, examinar todas las soluciones posibles? ¡No! No obstante, supóngase que se hubiese tenido una computadora aun más poderosa, una que pudiese examinar mil millones de asignaciones por segundo. La respuesta seguiría siendo negativa. Aún si la tierra se llenase con computadoras cuyas rapideces fueran de nanosegundos, todas ellas trabajando en paralelo, la respuesta aún sería no. Sin embargo, si existiesen diez tierras, todas llenas con computadoras del tipo mencionado, todas programadas en paralelo desde el instante del Big Bang hasta que el sol fuese una esfera fría, entonces quizás la respuesta podría ser sí. Lo notable es que el método símplex, con la ayuda de una computadora moderna, puede resolver este problema en una fracción de segundo". Antes de que Dantzig pudiese descubrir el método símplex, le fue necesario primero tener un modelo práctico de Programación Lineal. He aquí la descripción de Dantzig del proceso: "Cuando el problema de la planeación fue formulado inicialmente para la Fuerza Aérea, no existía la noción exacta de una función objetivo, la idea de una meta claramente definida. Por supuesto, teníamos sólo un falso respeto hacia el concepto de objetivo. En el discurso de los militares escuché a menudo decir, "nuestro objetivo es ganar la guerra" En el mundo de los negocios se escucharía quizás "nuestro objetivo es obtener ganancias". Sin embargo, era imposible hallar alguna relación directa entre la meta establecida y las acciones emprendidas para tal fin. Si se estudiaba con cuidado el paso siguiente, se podía ver que algún líder había promulgado un montón de reglas básicas que, en su concepto, llevarían hacia la meta. Esto distaba mucho de lo que sería honestamente estudiar todas las combinaciones alternativas de las acciones para elegir la mejor combinación. Los que mandan generalmente mueven las manos y dicen "He considerado todas las alternativas", pero es casi siempre basura. Lo más probable es que no pudiesen estudiar todas las combinaciones. Antes de 1947 era inconcebible pensar en la existencia de una herramienta como la Programación Lineal que permitiese examinar millones de combinaciones. No había algoritmo o herramienta computacional que pudiera hacer eso. No descubrí el modelo de la Programación Lineal en un instante, sino que tuvo un proceso de evolución. Se dedicó casi un año completo a la tarea de decidir si mi modelo podría ser utilizado en la formulación de problemas prácticos de distribución de tiempos. Como usted sabe, la planeación y la distribución de tiempos se llevaron a una escala inmensa durante la guerra.El funcionamiento de la Fuerza Aérea fue equivalente al funcionamiento de la economía de toda una nación. En el proceso intervinieron cientos de miles de personas. La logística tuvo una magnitud difícil de entender para alguien que no haya estado ahí. Mi colega Marshall Wood y yo revisamos miles de situaciones tomadas de nuestra experiencia durante la guerra. Esta intuición llevó a la primera formulación del método símplex en el verano de 1947. El primer problema práctico que se resolvió con este método fue uno de nutrición (el famoso problema de la dieta). El 3 de octubre de l947 Dantzig visitó el Institute for Advanced Study donde conoció a John von Neumann, quien por entonces era considerado por muchos como el mejor Matemático del mundo. Von Neumann le platicó a Dantzig del trabajo conjunto que estaba realizando con Oscar Morgenstern acerca de la teoría de juegos. Fue entonces cuando Dantzig supo por primera vez del importante teorema de la dualidad. En 1976 el presidente Gerald Ford otorgó a Dantzig la Medalla Nacional de Ciencias, que es la mención más alta de los Estados Unidos en Ciencia. En la ceremonia en la Casa Blanca se citó a George Bernard Dantzig "Por haber inventado la Programación Lineal, por haber descubierto métodos que condujeron a aplicaciones científicas y técnicas en gran escala a problemas importantes en logística, elaboración de programas, optimización de redes y al uso de las computadoras para hacer un empleo eficiente de la teoría matemática". Historia 15 FOTO DE G. B. DANTZIG Y L. G. KHACHIAN Realmente, el nuevo estilo marcado por el método simplex ha construido el auténtico espíritu de la optimización matemática. A principios de la década de los sesenta, Abraham Charnes y William Cooper (1961) publicaron un libro de gran influencia para los años posteriores: Management Models and Industrial Applications of Linear Programming. Esta obra supuso un gran impacto en el desarrollo de la práctica y de las aplicaciones industriales de la programación lineal (principalmente en las compañías petrolíferas y químicas). Pudo comprobarse la potencia de esta nueva herramienta, a la hora de resolver los problemas decisionales de las grandes empresas. De igual modo, se aplicó la programación lineal a la teoría económica como muestran las aportaciones de Historia 16 Robert Dorfman, Paul Samuelson y Robert Solow (1958), o las de David Gale (1960), o bien las de Gérard Debreu (1963). Nuevos desarrollos de la programación lineal La Programación Lineal fue una de las primeras herramientas cuantitativas con la que contó la Investigación Operativa. Rápidamente se descubrió su eficiencia. Por esta razón, era muy interesante conseguir nuevos métodos de resolución que hicieran la competencia al algoritmo simplex. Como una innovación destacable en los años ochenta aparece un nuevo y poderoso algoritmo para la resolución de programas lineales: en 1984, Narendra Karmarkar (1984) de AT&T Laboratories publicó un artículo presentando esquemáticamente un método para resolver programas lineales de gran tamaño. Este método llamado algoritmo de Karmarkar se presenta como un buscador de óptimos a partir de puntos interiores, siendo ésta la gran novedad en relación con el método simplex. Dicho artículo de Karmarkar no describe totalmente el método resolutorio y, además, afirma que es mucho más rápido que el simplex para problemas de gran dimensión. El intento de descubrimiento de un remedo de dicho método puso a toda la comunidad científica en pie de búsqueda. Pasaron cuatro años hasta que se logró un conocimiento general del método y su distribución comercial. Esta extensión del algoritmo de Karmarkar fue debida a AT&T Laboratories, que llamó a esta versión 'AT&T KORBX Linear Programming System'. La instalación completa de esta versión tuvo un costo inicial de $8.900.000. Desde un principio se realizaron multitud de comparaciones entre el método simplex y el de Karmarkar, con objeto de determinar cuál de los dos era el más eficiente. Sin embargo, esto no es fácil de determinar puesto que hay que especificar qué es exactamente lo que significa eficiencia. Es necesario efectuar la comparación en multitud de situaciones diversas y a partir de ellas establecer la correspondiente tesis. Se han realizado estudios que cotejan el método de Karmarkar con un paquete informático estándar del método simplex llamado MINOS. Para problemas de tamaño grande (a partir de varios miles de restricciones) las mejoras en tiempo de cálculo del método de Historia 17 Karmarkar sobre el simplex son notables (factores entre 10 y 50 son comunes). No obstante, esta situación no supone la supremacía del método de Karmarkar en todo tipo de problemas. No hay que olvidar que para problemas de dimensión pequeña, el método simplex es más intuitivo y fácil de aplicar. También es posible realizar algunos comentarios acerca de la complejidad computacional de cada uno de los métodos. El método de Karmarkar es un algoritmo de tiempo polinomial, mientras que el simplex no goza de esta propiedad, sino que es de tiempo exponencial. De esta forma, tenemos explicada la razón por la cual el método de Karmarkar obtiene mejores resultados para problemas de gran dimensión. Es llamativo que los problemas que hasta hace unos años necesitaban de computadoras de tamaño medio, ahora sean resolubles mediante ordenadores personales. En la actualidad, prácticamente cualquier usuario de la Investigación Operativa puede resolver problemas lineales mediante LINDO (u otro paquete informático semejante) en un ordenador portátil. De esta manera, mediante LINDO se pueden manejar problemas con hasta 50.000 restricciones y 200.000 variables. De igual modo, se desarrolló el paquete MINOS (empleando para programación lineal el método simplex) en el Systems Optimization Laboratory del Departamento de Investigación Operativa de la Universidad de Stanford, que ha sido usado más frecuentemente como herramienta optimizadora en programación no lineal. Otros lenguajes de modelización se han desarrollado para ordenadores personales. Así, ha aparecido GAMS/MINOS que es una combinación de los dos programas bien conocidos con objeto de construir un lenguaje de modelización algebraica implementado por IBM. De la misma forma, ha aparecido el paquete XPRESS-LP; y el lenguaje MPL (Mathematical Programming Language) desarrollado por Maximal Software en Islandia. Esta misma casa produjo la utilidad Turbo-Simplex. En los años noventa fueron apareciendo otras utilidades informáticas, como son las hojas de cálculo y sus complementos asociados, capaces de resolver programas lineales. Entre algunos de estos complementos se pueden citar los siguientes: Solver, VINO, What's Best? y XA. Casi todas estas utilidades fueron construidas por IBM para sus propias computadoras, sin embargo, poco a poco, se van obteniendo versiones para Macintosh. Aunque estas son las más recientes aplicaciones informáticas de los últimos cinco años, en los próximos años se mejorarán, a la vez que se extenderán los lenguajes y paquetes informáticos que permitirán resolver con relativa facilidad problemas de programación lineal complejos. Películas relacionadas: Enigma (2001). Director: Michael Apted. Dougray Scott, Kate Winslet, Saffron Burrows, Jeremy Northam, Corin Redgrave, Tom Hollander, Nikolaj Coster-Waldau, Donald Sumpter, Matthew Macfadyen Historia 18 U-571 (2000). Director: Jonathan Mostow. Matthew McConaughey, Bill Paxton, Harvey Keitel, Jon Bon Jovi, David Keith, Thomas Kretschmann, Jake Weber, Jack Noseworthy Una mente maravillosa (2001). Director: Ron Howard. Russell Crowe, Jennifer Connelly, Ed Harris, Paul Bettany, Adam Goldberg, Christopher Plummer, Judd Hirsch, Josh Lucas, Anthony Rapp Otras: Sobre Hitler: Hitler, el reinado del mal (2003). DIRECTOR Christian Duguay Robert Carlyle, Stockard Channing, Jena Malone, Julianna Margulies, Matthew Modine, Liev Schreiber, Peter Stormare, Friedrich von Thun, Peter O'Toole Sobre Pearl Harbor (y/o equipos de descifrado de código) Pearl Harbor (2001) DIRECTOR Michael Bay REPARTO Ben Affleck, Josh Hartnett, Kate Beckinsale, Cuba Gooding Jr., Alec Baldwin, Jon Voight, Tom Sizemore, Dan Aykroyd, Colm Feore, Cary-Hiroyuki Tagawa, Matthew Davis, Ewen Bremner, Jaime King, William Fichtner, John Diehl, Leland Orser, Tomas Arana, Jennifer Garner Tora! Tora! Tora! (1970) DIRECTOR Richard Fleischer, REPARTO Jason Robards, Martin Balsam, Soh Yamamura, Tatsuya Mihashi, E.G. Marshall, Joseph Cotten, James Whitmore, George Macready, Neville Brand La batalla de Midway (1976). DIRECTOR Jack Smight REPARTO Charlton Heston, Edward Albert, Henry Fonda, James Coburn, Glenn Ford, Robert Mitchum, Toshiro Mifune, Hal Holbrook, Cliff Robertson, Robert Wagner Creadores de Sombras (1990) DIRECTOR Roland Joffé REPARTO Paul Newman, Dwight Schulz, Laura Dern, Bonnie Bedelia, John Cusack, Natasha Richardson, John McGinley, Ron Vawter, Ron Frazier, Clark Gregg Historia 19 INVESTIGACIÓN OPERATIVA: Es la aplicación del método científico para asignar los recursos o actividades de forma eficaz, en la gestión y organización de sistemas complejos Tema 1. Modelos de programación lineal y aplicaciones. Formulación de modelos de programación lineal Un problema de programación se refiere, en general, al uso o asignación (reparto) de una serie de recursos (dinero, material, trabajadores,...) de “la mejor manera posible”, es decir, de manera que se maximicen las ganancias o se minimicen los costes (de utilización de dichos recursos). Para que un problema de programación se diga lineal ha de cumplir dos características: 1. La regla o criterio para seleccionar los mejores valores de las variables usadas para construir el problema se puede escribir como una ecuación lineal de las mismas (sin potencias de grado mayor que 1 - Metodo del Simplex uno, sin productos cruzados, ...), que habrá que maximizar / minimizar. A esta función se la llama función del objetivo. Z=c1x1+c2x2+...+cnxn 2. Las relaciones existentes entre las variables del problema (también llamadas restricciones) se pueden escribir como un conjunto de ecuaciones o inecuaciones lineales de las variables anteriores. A este conjunto de ecuaciones se le denomina conjunto de restricciones. a11x1+a12x2+...+a1nxn (≤, ≥, =) b1 a21x1+a22x2+...+a2nxn (≤, ≥, =) b2 ... am1x1+am2x2+...+amnxn (≤, ≥, =) bm m filas o ecuaciones y n variables o incógnitas ¿Cómo “escribir” un problema de programación lineal? Debemos conocer (en este orden): 1) Las variables del problema xi (variables de decisión o actividad) 2) El conjunto de restricciones 3) La función del objetivo que habrá que maximizar o minimizar, Z 2 - Metodo del Simplex Ejemplo: "Una compañía armamentística americana desea proyectar la fabricación de un cohete antitanque casero para vender en supermercados. La compañía ha considerado 3 modelos y su departamento de producción ha elaborado la siguiente tabla: MODELO A B C Trabajo (horas/unidad) 7 3 6 Material (titanio/unidad) 4 4 5 Beneficios (por unidad fabricada) 40$ 20$ 30$ El suministro de material se restringe a 200 kg de titanio por día, y la disponibilidad total diaria de los trabajadores es de 150 horas. Formular un problema de programación lineal para determinar la producción diaria de cada modelo, en orden a maximizar el beneficio total." 1. Identificación de las variables: X1= "unidades diarias a producir del modelo A" X2 = "unidades diarias a producir del modelo B" X3 = "unidades diarias a producir del modelo C" 2. Restricciones: Las restricciones vienen dadas por los límites de disponibilidad de los dos recursos: trabajo y material. 1 unidad modelo A lleva 7 horas de trabajo, entonces X1 unidades -> 7· X1 1 unidad modelo B lleva 3 horas ... X2 unidades -> 3· X2 1 unidad modelo C lleva 6 horas ... X3 unidades -> 6· X3 TOTAL Horas de trabajo: 7· X1+3· X2+6· X3 1 unidad modelo A necesita 4 ... X1unidades -> 4· X1 1 unidad modelo B necesita 4 ... X2 unidades -> 4· X2 1 unidad modelo C necesita 4 ... X3 unidades -> 5· X3 TOTAL Material: 4· X1+4· X2+5· X3 Tendremos, por tanto que: 3 - Metodo del Simplex 7· X1+3· X2+6· X3 ≤150 4· X1+4· X2+5· X3 ≤200 3. Función objetivo: MODELO BENEFICIO POR UNIDAD UNIDADES PRODUCIDAS A 40 X1 40 X1 B 20 X2 20 X2 C 30 X3 30 X3 Tendremos, por tanto: Z = 40· X1 + 20· X2 + 30· X3 Por último, tendríamos la formulación completa del problema: Maximizar Z = 40X1 + 20X2 + 30X3 Sujeto a: 7X1+3X2+6X3 ≤150 4X1+4X2+5X3 ≤200 X1 ≥ 0 X2 ≥ 0 X3 ≥ 0 X1, X2, X3 enteros 4 - Metodo del Simplex Solución gráfica de problemas de programación lineal con 2 variables Z = 40x1+36x2 x1 ≤ Ejemplo: Minimizar Sujeto a 8 x2 ≤ 10 5x1+3x2 ≥ 45 x1,x2 ≥ 0 Resolver el p.p.l. es encontrar un par de valores (x1opt, x2opt) que cumplan las restricciones y hagan mínima la función del objetivo a) x1=8 x2=10 Satisface las restricciones b) x1=7 x2=9 Satisface las restricciones ambas son soluciones factibles Z(a)=40•8+36•10=680 Z(b)=40•7+36•9=604 b es “mejor” solución que a (estamos minimizando) El conjunto de todas las soluciones factibles de un problema de programación lineal (p.p.l.) se llama región factible. Resolver un p.p.lineal es encontrar la mejor solución factible en la región factible. Esta última se llama solución óptima. Gráficamente: 5 - Metodo del Simplex 5x1+3x2≥45 puntos Æ5x1+3x2=45 Ec. Recta pasa por los x1=0 Æ x2=15 x1=9 Æ x2=0 · Se coge un punto cualquiera, por ejemplo X1=X2=0, el punto (0,0), y vemos: 5·0 + 3·0 <= 45 6 - Metodo del Simplex 5·0 + 3·0 >= 45 NO CIERTO · La región factible será el triángulo formado por los puntos A, B y C, con los bordes incluidos. Función objetivo 40 x1+36x2 40x1+36x2 = cte Por ejemplo Z=0 40x1+36x2=0 10/9 es la ecuación de una recta x1= 0 Æ x2= 0 x1=1 Æ x2= -40/36 = - 7 - Metodo del Simplex Z=36 40 x1+36 x2=36 Z= -36 40 x1+36 x2=-36 x1= 0 Æ x2= 1 x2= 0 Æ x1= 36/40 = 9/10 x1= 0 Æ x2= -1 x2= 0 Æ x1= -36/40 = -9/10 8 - Metodo del Simplex Resumiendo: Con los tres valores de la cte, Z: - Constante positiva Æ la recta se mueve a la derecha - Constante negativa Æ la recta se mueve a la izquierda · Hemos de probar en qué parte esta ecuación nos da el valor óptimo. Como estamos minimizando, queremos que nos dé el menor valor posible. Gráficamente esto supone bajar la recta lo más posible en la región factible: 9 - Metodo del Simplex A = (x1, x2) = (8, 5/3) minimiza Z ⇒ es la solución óptima y Z=380 es el valor óptimo para el problema. Este es un ejemplo de solución óptima única. 10 - Metodo del Simplex Otro ejemplo: Max Z = x2 Sujeto a 2x1 - x2= -2 x1 + 2x2= 8 2x1 - x2 ≥ -2 x1 + 2x2 ≤ 8 x1, x2 ≥ 0 x1= 0 Æ x2= 2 x2= 0 Æ x1= -1 x1= 0 Æ x2= 4 x2= 0 Æ x1= 8 Max Z = x2 11 - Metodo del Simplex Max Z = 3x1 + 2x2 12 - Metodo del Simplex 13 - Metodo del Simplex Soluciones óptimas múltiples o alternativas Max Sujeto a Z = x1+ 2x2 x1+ 2x2 ≤ 10 x1 + x2 ≥ 1 x2 ≤ 4 x1, x2 ≥ 0 14 - Metodo del Simplex Todos los puntos de la línea BC son soluciones óptimas. 15 - Metodo del Simplex Solución no acotada En una situación real no existe. Ej: construcción pisos Max Z = x1 + 2x2 Sujeto a x 1 + x2 ≥ 1 x2 ≤ 4 x1, x2 ≥0 16 - Metodo del Simplex 17 - Metodo del Simplex ZOPT Æ+∞ No existe óptimo finito. El p.p.l. se dice que tiene solución no acotada. En este caso porque queremos Max Z, si fuese Min Z la solución sería el punto A 18 - Metodo del Simplex Problema no factible Min Sujeto a Z = x1 + x 2 x 1 + x2 ≤ 1 4x1 + 2x2 ≥ 6 x1, x2 ≥ 0 x1 + x2 = 1 pasa por los puntos (0,1) y (1,0) 4x1 + 2x2 = 6 pasa por los puntos (0,3) y (1.5,0) No hay intersección entre los dos planos Æ no hay ninguna solución que cumpla las restricciones. R=Ø 19 - Metodo del Simplex En 3 variables: 20 - Metodo del Simplex 21 - Metodo del Simplex 22 - Metodo del Simplex 23 - Metodo del Simplex Forma estándar de un PPL con m restricciones y n variables Maximizar (minimizar) Z = c1x1 + c2x2 + ... + cnxn a11x1 + a12x2 + ... + a1nxn = b1 a21x1 +a22 x2 + ... + a2nxn = b2 ... am1x1 + am2x2 + ... + amnxn = bm siendo b1, b2,…, bm ≥ 0 En notación matricial: Maximizar (minimizar) Z = cX AX = b X≥0 (b ≥ 0) siendo: A= (m x n) X= (n x 1) x1 x2 ... xn a11 a21 ... am1 a12 a22 ... am2 ... ... ... ... a1n a2n ... amn b= (m x 1) b1 b2 ... bm c = (c1, c2, ..., cn) (1 x n) (Un vector X ≥ 0 ⇔ xi ≥ 0 ∀i = 1, ..., n) A ≡ matriz de coeficientes X ≡ vector solución, de actividades o decisiones b ≡ vector de restricciones, recursos o constantes de la derecha c ≡ vector de costes o beneficios o coeficientes de la función del objetivo 24 - Metodo del Simplex Z = cX AX = b X≥0 Ejemplo: (que incumple la forma estándar) Max Z = 2x1 + 3x2 – 4x3 Sujeto a -3x1 + x2 - x3 ≥ 5 c - x1 + x2 + x3 ≤ 10 d 3x1 + x2 - 2x3 = -7 e x1≥0, x2≤0, x3 cq signo 1º) modificamos las variables, trabajamos con yi : y1 = x1 ≥ 0 y2 = -x2 ≥ 0 x3 = y3 - y4 con y3, y4 ≥ 0 2º) e 3x1 + x2 - 2x3 = -7 ⇒ -3x1 - x2 + 2x3 = 7 -3y1 + y2 + 2y3 –2y4 = 7 c -3x1 + x2 - x3 ≥ 5 ⇒ -3y1 - y2 - y3 + y4 – y5 = 5, y5≥ 0 d - x1 + x2 + x3 ≤ 10 ⇒ -y1 - y2 + y3 - y4 + y6 = 10, y5, y6 se llaman variables de holgura. 3º) Max Z = 2y1 – 3y2 – 4y3 + 4y4 -3y1 - y2 - y3 + y4 – y5 = 5 -y1 - y2 + y3 - y4 + y6 = 10 -3y1 + y2 + 2y3 – 2y4 = 7 yi ≥ 0 ∀i= 1, ..., 6 25 - Metodo del Simplex y6 ≥ 0 Sistemas de ecuaciones lineales Ejemplo: (a) (b) –2x1 + x2 - x3 + x4 – x5 = -2 x1 + 2x2 + 3x3 - x4 + 2x5 = 4 Más incógnitas que ecuaciones ⇒ ∞ soluciones A ≡ matriz m x n m > n ⇒ no hay solución n > m ⇒ hay ∞ soluciones n = m ⇒ hay una solución La colección de todas las posibles soluciones de un conjunto de ecuaciones lineales se denomina conjunto solución. Dos sistemas de ecuaciones se dicen equivalentes si ambos tienen el mismo conjunto solución. (a) (-1) 2x1 - x2 + x3 - x4 + x5 = 2 (b) = x1 + 2x2 + 3x3 - x4 + 2x5 = 4 Sistema equivalente al anterior (a) ½ x1 - ½ x2 + ½ x3 - ½ x4 + ½ x5 = 1 (b) – (a) 5/2 x2 + 5/2 x3 – ½ x4 + 3/2 x5 = 3 Sistema equivalente al anterior x1 - ½ x2 + ½ x3 - ½ x4 + ½ x5 = 1 (b) 2/5 x2 + x3 - 1/5 x4 + 3/5 x5 = 6/5 Sistema equivalente al anterior (a) + ½ (b) x1 + x3 - 6/10 x4 + 6/10 x5 = 16/10 x2 + x3 - 1/5 x4 + 3/5 x5 = 6/5 Sistema equivalente al anterior Ahora eligiendo x3 = x4 = x5 = 0 queda: x1 = 16/10 x2 = 6/5 que es solución de todos los sistemas equivalentes que hemos estado construyendo. Es una de las infinitas soluciones. 26 - Metodo del Simplex 27 - Metodo del Simplex Definiciones Un sistema de ecuaciones se dice canónico si en cada ecuación aparece una variable básica, que es aquella que posee en dicha ecuación coeficiente 1 y en las otras ecuaciones coeficiente 0. Las variables que no cumplan esto se llaman variables no básicas. x1 x2 + 2x3 + 3x3 -5 x3 + x4 + 3x5 – 7x6 = 5 + 2x5 + 1/3 x6 = 4 + 3 x5 - 20/12 x6 =100/31 x1, x2, x4 variables básicas x1 variable básica respecto a la 1ª ecuación x2 variable básica respecto a la 2ª ecuación x4 variable básica respecto a la 3ª ecuación x3, x5, x6 variables no básicas por tanto es un sistema de ecuaciones canónico. Un pivotaje es una sucesión de operaciones elementales que reduce un sistema de ecuaciones dado a uno equivalente canónico. Solución básica es la solución que se obtiene de un sistema canónico eligiendo para las variables no básicas el valor cero, y resolviéndolo para las básicas. (ejemplo anterior) x3 = x5 = x6 = 0 x1 = 5, x2 = 4, x4 = 100/31 Si los valores de las variables básicas son no negativos, se llama solución factible básica. (s.f.b) Si el sistema es: a11x1 + a12x2 + ... + a1nxn = b1 a21x1 + a22x2 + ... + a2nxn = b2 ... ... am1x1 + am2x2 + ... + amnxn = bm n>m n nº de sol básicas posibles ≤ Nº combinatorio, aunque sea muy grande siempre es finito m A partir de este sistema, mediante el pivotaje obtenemos un sistema canónico, por tanto una variable básica en cada ecuación. Cada vértice de la figura es una solución factible básica. 28 - Metodo del Simplex Tema 2. El método del Simplex. George B. Dantzig (1947). Esquema básico de funcionamiento del método del Simplex. El método del simplex es un procedimiento iterativo para resolver problemas de programación lineal (p.p.l.) expresados en forma estándar: Z = cx Ax = b (b≥0) x≥0 El método requiere que las ecuaciones de las restricciones conformen un sistema canónico con una solución factible básica fácil de obtener. PASOS GENERALES: 1. Empezar con una solución factible básica (s.f.b.) inicial obtenida del sistema de ecuaciones expresado en forma canónica. 2. Mejorar dicha solución si ello es posible. 3. Repetir hasta encontrar la mejor solución factible básica (solución óptima). Ejemplo: Max Z = 5x1 + 2x2 + 3x3 - x4 + x5 =8 Sujeto a x1 + 2x2 + 2x3 + x4 + x5 = 7 3x1 + 4x2 + x3 xi ≥ 0 ∀i = 1, ..., 5 está en forma estándar → todas las variables son ≥ 0 todas las restricciones son igualdades ( = ) las constantes de la derecha son ≥ 0 x4 variable básica de la primera ecuación x5 variable básica de la segunda ecuación Solución básica inicial: x4 = 8 ≥ 0 x1 = x2 = x3 = 0 ⇒ solución factible básica x5 = 7 ≥ 0 Tenemos 29 - Metodo del Simplex Z = 5•0+2•0+3•0-1•8+1•7 = -1 Ahora hay que examinar si esta solución es óptima. Si lo es, hemos acabado. En caso de que no lo sea, se va a calcular una s.f.b. adyacente (difiere de la anterior en una variable básica). Var Básica Æ Var NO Bás Var NO Bás Æ Var Básica (>0) Æ (=0) (=0) Æ (>0) x1 + 2x2 + 2x3 + x4 =8 3x1 + 4x2 + x3 + x5 = 7 s.f.b. actual x1 = x2 = x3 = 0 x4 = 4, x5 = 7 variables no básicas variables básicas Vamos a aumentar x1 manteniendo x2 = x3 = 0 x4 =8⇒ x4 = 8 – x1 (*) x1+ + x5 = 7 ⇒ x5 = 7 – 3 x1 (**) 3x1 ⇒ x4 = 7, x5 = 4 Si x1=1 Z = 5•1+2•0+3•0-1•7+1•4 = 2 No es sol. óptima, hay que calcular una adyacente Así pues el beneficio relativo de x1, ∆x1=1 Æ ∆Z = 2 – (-1) = 3 El beneficio relativo de una variable no básica es el cambio que se produce en la función del objetivo por unidad aumentada en dicha variable no básica. (*) x4 = 8 – x1 ⇒ (**) x5 = 7 – 3 x1 ⇒ x4 < 0 si x1 > 8 x5 < 0 si x1 > 7/3 x1> 8 y x1 >7/3 son los valores que limitan el crecimiento de x1 Entonces no podrá se mayor del mínimo: máximo valor posible para x1 = mín{8, 7/3 }. x1 = 7/3 ⇒ x5 = 0 x4 = 17/3 Sol. Fact. Básica adyacente de la anterior x2 = x3 = 0 y Z = 6 el valor de la función objetivo aumenta en 7 unidades Si 30 - Metodo del Simplex Ahora, de nuevo hay que comprobar si esta s.f.b. es óptima. Si no, hay que mejorarla. RESUMEN (problema de maximización) 1. Empezar con una solución factible básica inicial obtenida a partir del sistema de restricciones en forma canónica. 2. Comprobar si la solución factible básica es óptima. Para ello calcular los beneficios relativos de las variables no básicas (éstos representan el cambio neto en el valor de la función del objetivo por unidad aumentada en dicha variable). Si estos beneficios relativos (de todas las variables no básicas) son ≤ 0, la solución actual es óptima. En otro caso, seguir (hasta que se cumpla lo anterior). 3. Seleccionar una variable no básica como nueva variable básica en la solución. La regla general será seleccionar la variable no básica con el mayor beneficio relativo. 4. Determinar la variable básica que sustituya a la no básica. Esto se hace mediante la regla de la mínima proporción: Examinamos las restricciones. Para aquellas en las que la variable no básica tiene coeficiente positivo, el límite que puede alcanzar dicha variable viene dado por el cociente entre la constante de la derecha de dicha restricción y ese coeficiente positivo. 5. Resolver el nuevo sistema y volver al paso 2. Si por el contrario el problema es de minimización, cambiarían el paso 2 y el 3: 2. Si todos los beneficios relativos son ≥ 0, la solución actual es óptima. 3. ...seleccionar la variable no básica con el menor ... 31 - Metodo del Simplex El método del Simplex por tablas. Max Sujeto a Z = 5x1 + 2x2 + 3x3 - x4 + x5 =8 x1 + 2x2 + 2x3 + x4 + x5 = 7 3x1 + 4x2 + x3 xi≥0 ∀i = 1, ..., 5 CB Cj Base 5 x1 2 x2 3 x3 -1 x4 1 x5 b ( ctes ) -1 1 x4 x5 1 3 2 4 2 1 1 0 0 1 8 7 De la tabla se obtiene: variables básicas = ctes, x4 = 8 x5 = 7 x1 = x2 = x3 = 0 _ 8 Z = CB•b = (-1, 1) • 7 el resto (no básicas) = 0. = -8+7 = -1 Para ver si la s.f.b. es óptima, necesitamos los beneficios relativos de las variables no básicas. c j = c j − cB Pj Columna de xj siendo CB el vector de variables básicas, (-1,1), y cj los coeficientes de la función del objetivo Solución óptima si c j ≤ 0 ∀j (Regla de parada) 32 - Metodo del Simplex _ 1 C1 = 5 – (-1,1) 3 = 5 – (-1+3) = 3 _ 2 C2 = 2 – (-1,1) 4 = 2 – (-2+4) = 0 beneficio relativo _ 2 C3 = 3 – (-1,1) 1 = 3 – (-2+1) = 4 (si x3 crece una unidad, Z crece 4) _ _ C4 = C5 = 0 (siempre son 0, no hace falta calcularlo) Tabla 1 CB -1 1 Cj Base x4 x5 cj 5 x1 1 3 3 2 x2 2 4 0 3 x3 2 1 4 -1 x4 1 0 0 1 x5 0 1 0 b 8 7 Z = -1 _ Cj ≥ 0 ⇒ la s.f.b actual no es óptima Hay que calcular una s.f.b adyacente: • Una v. no básica entra en la base • Una v. básica sale de la base _ Criterio de entrada: max {Cj > 0 } → max{3,4}= 4 ⇒ entra x3 (en la base) Criterio de salida: mínima proporción Min {8/2, 7/1} = 8/2 ⇒ sale x4 y el 2 es el pivote Tabla 2. CB 3 1 Cj Base x3 x5 5 x1 ½ 5/2 2 x2 1 3 3 x3 1 0 -1 x4 ½ -½ 1 x5 0 1 b 4 3 cj 1 -4 0 -2 0 Z = 15 • Fila del privote → se divide por el pivote • Cualquier otra fila = fila anterior – (elemento de la columna del pivote) x (nueva fila pivote) D(3,4,1,0,1,7) – (1)(½,1,1,½,0,4) = (3,4,1,0,1,7)-( ½,1,1,½,0,4) = (5/2,3,0,½,1,3) 33 - Metodo del Simplex D(3,0,4,0,0) – (4)(½,1,1,½,0) = (3,0,4,0,0) - (2,4,4,2,0) = (1,-4,0,-2,0) _ 4 DZ = CB•b = (3,1) 3 = 12+3 = 15 Regla del cuadrado: b•c a' = a − pivote Nueva a• •c b• •pivote solución que se obtiene de la tabla: x5 = 3 x1= x2 = x4 =0 x3 = 4 ⎛ 4⎞ Z = cB • b = (3,1)⎜⎜ ⎟⎟ = 12 + 3 = 15 ⎝ 3⎠ _ Como c1 > 0 la tabla 2 no es óptima. Criterio de entrada: max{c j > 0} ⇒ entra x1 Criterio de salida min {4/(½), 3/(5/2)} = min {8, 6/5} = 6/5 ⇒ sale x5 y pivote 5/2 Tabla 3. CB 3 5 Cj Base x3 x1 _ Cj 5 x1 0 1 2 x2 2/5 6/5 3 x3 1 0 -1 x4 3/5 -1/5 1 x5 -1/5 2/5 b 17/5 6/5 0 -26/5 0 -9/5 -2/5 Z = 81/5 Todos los c j son ≤ 0 ⇒ ésta es la solución óptima x1 = 6/5 x2 = 0 x3 = 17/5 Z = 81/5 es el valor óptimo del problema x 4 = x5 = 0 Resumen (Problema de maximización). 1. Expresar el problema en forma estándar. 2. Obtener una s.f. básica inicial y construir la 1ª tabla. 3. Construir la fila de los c ( c j = c j − cB Pj ) j 34 - Metodo del Simplex 4. Si todos los c j ≤ 0, la solución actual es óptima. En otro caso, hacer entrar en la base la variable con mayor valor c j positivo. 5. Aplicar la regla de la mínima proporción para ver qué variable deja 6. 7. la base. Efectuar el pivotaje para obtener la nueva tabla y la nueva solución factible básica. Volver al paso 4. Problema de minimización (ídem. Sólo cambia el punto 4) 4. Si todos los c j ≥ 0 ⇒ solución óptima. En otro caso, entra en la base aquella variable con valor c j negativo más pequeño. También puede tenerse en cuenta que Min Z <=> Max (-Z) Se resuelve Max (-Z). La solución de los dos problemas será la misma, mientras que el valor de Z óptimo cambia en el signo. Max Z = 3x1 + 2x2 sujeto a -x1 + 2x2 ≤ 4 3x1 + 2x2 ≤14 x1 - x2 ≤3 x1, x2 ≥0 pasamos a la forma estándar: Max Z = 3x1 + 2x2 sujeto a -x1 + 2x2 + x3 =4 3x1 + 2x2 + x4 = 14 x1 - x2 + x5 =3 xi ≥ 0 ∀ i = 1,...,5 CB 0 0 0 Cj Base x3 x4 x5 _ Cj 3 x1 -1 3 1 2 x2 2 2 -1 0 x3 1 0 0 0 x4 0 1 0 0 x5 0 0 1 b 4 14 3 3 2 0 0 0 Z=0 x1 = 0, x2 = 0, x3 = 4, x4 = 14, x5 = 3 CB 0 0 3 Cj Base x3 x4 x1 _ Cj vértice A 3 x1 0 0 1 2 x2 1 5 -1 0 x3 1 0 0 0 x4 0 1 0 0 x5 1 -3 1 b 7 5 3 0 5 0 0 -3 Z=9 x1 = 3, x2 = 0, x3 = 7, x4 = 5, x5 = 0 vértice B 35 - Metodo del Simplex Cj Base x3 x2 x1 _ Cj CB 0 2 3 3 x1 0 0 1 2 x2 0 1 0 0 x3 1 0 0 0 x4 - 1/5 1/5 1/5 0 x5 8/5 - 3/5 2/5 b 6 1 4 0 0 0 -1 0 Z = 14 x1 = 4, x2 = 1, x3 = 6, x4 = x5 = 0 _ Z = 14 Solución optima (todos los Cj ≤ 0) vértice C Equivalencias Tabla s.f.b. vértice → Tabla siguiente → s.f.b adyacente → vértice adyacente 36 - Metodo del Simplex 37 - Metodo del Simplex Óptimo alternativo. En la tabla 3, x5 tiene beneficio relativo cero. Esto significa: ∆x5 = 1 ⇒ ∆Z = 0 Si hacemos entrar en la base a x5: criterio de salida min {6/(8/5), 4/(2/5)} = 30/8 ⇒ sale x3 Tabla 4: CB 0 2 3 Cj Base x5 x2 x1 3 x1 0 0 1 2 x2 0 1 0 0 x3 5/8 3/8 - 1/4 0 x4 - 1/8 1/8 1/4 0 x5 1 0 0 b 15/4 13/4 5/2 cj 0 0 0 -1 0 Z = 14 Solución óptima alternativa: x1 = 5/2, x2 = 13/4, x3 = x4 = 0, x5 = 15/4 En general, una solución óptima alternativa viene indicada siempre que exista una variable no básica cuyo beneficio relativo ( c j ) es cero en la tabla óptima. Si los c j de las variables no básicas son < 0 ⇒ óptimo único (maximizando) Id. > 0 id. (minimizando) Problemas de cálculo. Empates en la selección de variables no básicas Si existe más de una variable con c j >0 máximo ⇒ se coge uno cualquiera o el primero de todos (en un problema de maximización). Si existe más de una variable con c j <0 máximo ⇒ se coge uno cualquiera o el primero de todos (minimización). cj . . . . • 7 .....•5•.....•7•.....•3•..... <0 <0 <0 Empates en el criterio de salida. (empate en la regla de la mínima proporción) 38 - Metodo del Simplex Ejemplo: Max Z = 2x4 + 3/2 x6 + x4 - x 5 =2 x1 + 2 x4 + x6 = 4 x2 x3 + x4 + x5 + x6 = 3 xi ≥0 CB 0 0 0 CB 2 0 0 Cj Base x1 x2 x3 0 x1 1 0 0 0 x2 0 1 0 0 x3 0 0 1 2 x4 1 2 1 0 x5 -1 0 1 3/2 x6 0 1 1 b 2 4 3 ci 0 0 0 2 0 3/2 Z=0 Base x4 x2 x3 x1 1 -2 -1 x2 0 1 0 x3 0 0 1 x4 1 0 0 x5 -1 2 2 x6 0 1 1 b 2 0 1 ci -2 0 0 0 2 3/2 Z=4 Solución factible básica DEGENERADA CB 2 0 0 Base x4 x5 x3 ci x1 0 -1 1 x2 1/2 1/2 -1 x3 0 0 1 x4 1 0 0 x5 0 1 0 x6 1/2 1/2 0 b 2 0 1 0 -1 0 0 0 1/2 Z=4 Solución factible básica DEGENERADA ¿Debemos parar o seguir? ¿es posible? Tabla n1 • • • • Tabla n2 = n1 Esto último se llama ciclaje. A día de hoy, sólo se conocen “dos” ejemplos de problemas que ciclen. (Descontando los que aparecen en los exámenes) 39 - Metodo del Simplex Resumen. Empate en el criterio de salida ⇒ s.f.b. degenerada ⇒ + iteraciones ⇒ + trabajo ¿⇒? ciclaje (en la vida real continuar hasta llegar a la solución óptima). Técnicas que evitan ciclaje ⇒ las hay, pero no “suelen” utilizarse. Probabilidad de encontrarse con un problema que cicle en la vida real = Probabilidad de encontrarse con un político honrado = Probabilidad de que los extraterrestres te lleven en su platillo = Probabilidad de que el mundo termine hoy a las 23h41minutos…. Soluciones no acotadas. Max Z = 2x1 + 3x2 Sujeto a: x1 - x2 ≤ 2 -3x1 + x2 ≤ 4 x1, x2 ≥ 0 CB 0 0 Cj Base x3 x4 2 x1 1 -3 3 x2 -1 1 0 x3 1 0 0 x4 0 1 b 2 4 ci 2 3 0 0 Z=0 x1 = 0, x2 = 0 (vértice A) CB 0 0 Base x3 x2 x1 -2 -3 x2 0 1 x3 1 0 x4 1 1 b 6 4 ci 11 0 0 -3 Z = 12 x1 = 0, x4 = 4 (vértice B) Entra x1, y ¿cuál sale? Habría que calcular la regla de la mínima proporción, pero en x1 son todos menores de cero, por tanto solución no acotada. 40 - Metodo del Simplex En forma de ecuaciones: -2x1 + x3 + x4 = 6 -3x1 + x2 + x4 = 4 x4 = 0 x3 = 6 + 2x1 x2 = 4 + 3x1 Si x1 crece, x3 y x2 nunca se hacen cero Fallo en el criterio de salida ⇒ solución no acotada. 41 - Metodo del Simplex Obtención de una solución factible básica inicial: Método de las Dos Fases y Método de las Penalizaciones. 1. Método de ensayo y error 2. Uso de variables artificiales. Ejemplo: Min Z = -3x1 + x2 + x3 x1 - 2x2 + x3 ≤ 11 -4x1 + x2 + 2x3 ≥ 3 2x1 - x3 = -1 xi ≥ 0 Pasamos a la forma estándar: Min Z = -3x1 + x2 + x3 x1 - 2x2 + x3 + x4 = 11 -4x1 + x2 + 2x3 –x5 = 3 -2x1 + x3 =1 xi≥ 0 No tenemos una variable básica por ecuación, por lo tanto no podemos empezar a usar el simples. x4 es variable básica, pero x5 no es variable básica porque tiene coeficiente negativo. Introducimos variables artificiales: x1 - 2x2 + x3 + x4 = 11 -4x1 + x2 + 2x3 –x5 + x6 = 3 Sistema artificial -2x1 + x3 + x7= 1 xi≥ 0 El sistema artificial tiene una solución factible básica inicial x1 = x2 = x3 = 0 x4 = 11 x5 = 0 x6 = 3 x7= 1 pero no es solución factible básica del problema de partida. Ahora bien, cualquier solución factible básica del sistema artificial con las variables artificiales iguales a cero es solución factible básica del sistema de partida. Por tanto, hay que reducir las variables artificiales para que se hagan cero. 1. MÉTODO DE LAS PENALIZACIONES O DE LA M (PENALTY METHOD, BIG M). Se le asigna a las variables artificiales un coste (penalización) muy alto en la función objetivo. En nuestro ejemplo: Min Z = -3x1 + x2 + x3 + M ·(Σ variables artificiales) ( x6 y x7 en este ejemplo) Siendo M un coste muy grande, M>0, M→ ∞ Min Z = -3x1 + x2 + x3 + M x6 +M x7 (Nota) Max Z = -3x1 + x2 + x3+ (- M) · (Σ variables artificiales) Siendo (-M) un beneficio muy pequeño, M>0, M→ ∞ 42 - Metodo del Simplex CB 0 M M CB 0 M 1 CB 0 1 1 CB -3 1 1 Cj Base x4 x6 x7 -3 x1 1 -4 -2 1 x2 -2 1 0 1 x3 1 2 1 0 x4 1 0 0 0 x5 0 -1 0 M x6 0 1 0 M x7 0 0 1 b 11 3 1 ci -3+6M 1-M 1-3M 0 M 0 0 Z = 4M Base x4 x6 x3 x1 3 0 -2 x2 -2 1 0 x3 0 0 1 x4 1 0 0 x5 0 -1 0 x6 0 1 0 x7 -1 -2 1 b 10 1 1 ci -1 1-M 0 0 M 0 3M-1 Z = M+1 Base x4 x2 x3 x1 3 0 -2 x2 0 1 0 x3 0 0 1 x4 1 0 0 x5 -2 -1 0 x6 2 1 0 x7 -5 -2 1 b 12 1 1 ci -1 0 0 0 1 M-1 M+1 Z=2 Base x1 x2 x3 x1 1 0 0 x2 0 1 0 x3 0 0 1 x4 1/3 0 2/3 x5 -2/3 -1 -4/3 x6 2/3 1 4/3 x7 -5/3 -2 -7/3 b 4 1 9 ci 0 0 0 1/3 1/3 M - 1/3 M - 2/3 Z = -2 Zopt = -2 43 - Metodo del Simplex Notas: 1) Una vez que una variable artificial es reemplazada por una variable real, no es necesario mantenerla en las tablas 2) Cuando el método termina con una solución óptima en la que hay una o más variables artificiales en la base mayores que cero ⇒ el problema original no tiene ninguna solución factible, porque no podemos encontrar ninguna solución con las variables del problema de partida 3) En el ordenador M = ? Si el método está programado en ordenador no se trabaja con la letra M. Hay que asignar un valor a la constante M. 2. MÉTODO DE LAS 2 FASES (TWO PHASES). Se resuelve en dos fases: Fase 1: Se resuelve el problema Min W = ∑v.artificiales Sujeto a sistema artificial Si llegamos a que el valor mínimo es cero ⇒ W = ∑v.artificiales(≥0) = 0 ⇒ Todas son cero y tenemos una solución factible básica del sistema original. En caso de que el valor mínimo sea positivo, W > 0 ⇒ alguna v.artificial es >0 ⇒ el problema original no tiene ninguna solución factible. Fase 2: La tabla final de la fase 1 pasa a ser la inicial de la fase 2 cambiando la función del objetivo por la original. Se aplica el simplex. Nota. cero). La fase 1 puede terminar con Wopt=0 y alguna variable artificial en la base (que tendrá valor En este caso, se pasa a la fase 2 (escribiendo su Cj=0) y se procede a echarla de la base aunque para ello se viole el criterio de salida. En el momento en que haya salido de la base eliminamos su columna. 44 - Metodo del Simplex Fase 1. (Min W = x6 + x7, sujeto a sistema artificial) CB 0 1 1 CB 0 1 0 CB 0 0 0 Cj Base x4 x6 x7 0 x1 1 -4 -2 0 x2 -2 1 0 0 x3 1 2 1 0 x4 1 0 0 0 x5 0 -1 0 1 x6 0 1 0 1 x7 0 0 1 b 11 3 1 ci 6 -1 -3 0 1 0 0 W=4 Base x4 x6 x3 x1 3 0 -2 x2 -2 1 0 x3 0 0 1 x4 1 0 0 x5 0 -1 0 x6 0 1 0 x7 -1 -2 1 b 10 1 1 ci 0 -1 0 0 1 0 3 W=1 Base x4 x2 x3 x1 3 0 -2 x2 0 1 0 x3 0 0 1 x4 1 0 0 x5 -2 -1 0 x6 2 1 0 x7 -5 -2 1 b 12 1 1 ci 0 0 0 0 0 1 1 W=0 x1 = 0, x2 = 1, x3 = 1, x4 =12, x5 = x6 = x7 = 0 45 - Metodo del Simplex Fase 2. (y volvemos a la función objetivo inicial, es decir, valores iniciales de Cj) CB 0 1 1 CB -3 1 1 Cj Base x4 x2 x3 -3 x1 3 0 -2 1 x2 0 1 0 1 x3 0 0 1 0 x4 1 0 0 0 x5 -2 -1 0 b 12 1 1 ci -1 0 0 0 1 Z=2 Base x1 x2 x3 x1 1 0 0 x2 0 1 0 x3 0 0 1 x4 1/3 0 2/3 x5 -2/3 -1 -4/3 b 4 1 9 0 0 0 1/3 1/3 Z = -2 ci x1 = 4, x2 = 1, x3 = 9, x4 = x5 = 0 Ejemplo relativo a la nota anterior: Max Z = 2x1 + x2 + x3 4x1 + 6x2 + 3x3 ≤ 8 3x1 - 6x2 - 4x3 - x4 ≤ 1 2x1 + 3x2 - 5x3 - x4 = 4 Zopt= -2 4x1 + 6x2 + 3x3 + x5 =8 3x1 - 6x2 - 4x3 - x4 + x6 = 1 2x1 + 3x2 - 5x3 - x4 + x7 = 4 (x5 v.holgura) (x6 v.holgura) (x7 v.artificial) Fase 1: Min W = x7 CB 0 0 1 Cj Base x5 x6 x7 ci CB 0 0 1 Base x2 x6 x7 ci 0 x1 4 3 2 0 x2 6 -6 3 0 x3 3 -4 -5 0 x4 0 -1 -1 0 x5 1 0 0 0 x6 0 1 0 1 x7 0 0 1 b 8 1 4 -2 -3 5 1 0 0 0 W=4 x1 2/3 7 0 x2 1 0 0 x3 1/2 -1 -13/2 x4 0 -1 -1 x5 1/6 1 -1/2 x6 0 1 0 x7 0 0 1 b 4/3 9 0 0 0 13/2 1 1/2 0 0 W=0 Final fase 1. 46 - Metodo del Simplex Fase 2 se mantiene CB 1 0 0 Cj Base x2 x6 x7 ci CB 1 2 0 Base x2 x1 x7 ci CB 1 2 1 Base x2 x1 x3 ci 2 x1 2/3 7 0 1 x2 1 0 0 1 x3 1/2 -1 -13/2 0 x4 0 -1 -1 0 x5 1/6 1 -1/2 0 x6 0 1 0 0 x7 0 0 1 b 4/3 9 0 4/3 0 1/2 0 -1/6 0 0 Z = 4/3 x1 0 1 0 x2 1 0 0 x3 25/42 -1/7 -13/2 x4 2/21 -1/7 -1 x5 9/126 1/7 -1/2 x6 -2/21 1/7 0 x7 0 0 1 b 10/21 9/7 0 0 0 29/42 4/21 -5/14 -4/21 0 Z = 64/21 x1 0 1 0 x2 1 0 0 x3 0 0 1 x4 1/273 -11/91 2/13 x5 1/39 2/13 1/13 x6 -2/21 1/7 0 x7 25/273 -2/91 -2/13 b 10/21 9/7 0 0 0 0 23/273 -16/39 -4/21 29/273 Z = 64/21 No prestamos atención a esta columna CB 1 2 0 Base x2 x1 x4 ci x1 0 1 0 x2 1 0 0 x3 -1/42 11/14 13/2 x4 0 0 1 x5 1/42 3/14 1/2 x6 -2/21 1/7 0 0 0 -23/42 0 -19/42 -4/21 x7 b 10/21 9/7 0 Z = 64/21 óptima Comparación entre el Método Big M y el Método de las 2 fases. 9 9 9 9 Igual número de tablas en general. ⇓ Igual número de cálculos en general. M ≡ “problemas” en el ordenador 2 fases ≡ “problemas” si hay una o más variables artificiales = 0 en la base en la última tabla de la 1ª fase. 47 - Metodo del Simplex Eficiencia computacional del Método del Simplex. 9 El número de tablas es sensible al número de restricciones (Simplex revisado). La rapidez del simplex depende más del número de restricciones que del número de variables. 9 Problema de minimizar con muchas variables: ci >0 >0 >0 ... <0 la primera variable con ci <0 entra la base 9 Otros métodos: ¾ Elipsoides (KHACHIAN). ¾ Punto interior (Karmarkar). 48 - Metodo del Simplex 49 - Metodo del Simplex x2 = 6/5 que es solución de todos los sistemas equivalentes que hemos estado construyendo. Es una de las infinitas soluciones. 50 - Metodo del Simplex Definiciones Un sistema de ecuaciones se dice canónico si en cada ecuación aparece una variable básica, que es aquella que posee en dicha ecuación coeficiente 1 y en las otras ecuaciones coeficiente 0. Las variables que no cumplan esto se llaman variables no básicas. x1 x2 + 2x3 + 3x3 -5 x3 + x4 + 3x5 – 7x6 = 5 + 2x5 + 1/3 x6 = 4 + 3 x5 - 20/12 x6 =100/31 x1, x2, x4 variables básicas x1 variable básica respecto a la 1ª ecuación x2 variable básica respecto a la 2ª ecuación x4 variable básica respecto a la 3ª ecuación x3, x5, x6 variables no básicas por tanto es un sistema de ecuaciones canónico. Un pivotaje es una sucesión de operaciones elementales que reduce un sistema de ecuaciones dado a uno equivalente canónico. Solución básica es la solución que se obtiene de un sistema canónico eligiendo para las variables no básicas el valor cero, y resolviéndolo para las básicas. (ejemplo anterior) x3 = x5 = x6 = 0 x1 = 5, x2 = 4, x4 = 100/31 Si los valores de las variables básicas son no negativos, se llama solución factible básica. (s.f.b) Si el sistema es: a11x1 + a12x2 + ... + a1nxn = b1 a21x1 + a22x2 + ... + a2nxn = b2 ... ... am1x1 + am2x2 + ... + amnxn = bm n>m n nº de sol básicas posibles ≤ Nº combinatorio, aunque sea muy grande siempre es finito m A partir de este sistema, mediante el pivotaje obtenemos un sistema canónico, por tanto una variable básica en cada ecuación. Cada vértice de la figura es una solución factible básica. 51 - Metodo del Simplex Tema 2. El método del Simplex. George B. Dantzig (1947). http://www2.informs.org/History/dantzig/photo.htm Esquema básico de funcionamiento del método del Simplex. El método del simplex es un procedimiento iterativo para resolver problemas de programación lineal (p.p.l.) expresados en forma estándar: Z = cx Ax = b (b≥0) x≥0 El método requiere que las ecuaciones de las restricciones conformen un sistema canónico con una solución factible básica fácil de obtener. PASOS GENERALES: 5. Empezar con una solución factible básica (s.f.b.) inicial obtenida del sistema de ecuaciones expresado en forma canónica. 6. Mejorar dicha solución si ello es posible. 7. Repetir hasta encontrar la mejor solución factible básica (solución óptima). Ejemplo: Max Z = 5x1 + 2x2 + 3x3 - x4 + x5 =8 Sujeto a x1 + 2x2 + 2x3 + x4 + x5 = 7 3x1 + 4x2 + x3 xi ≥ 0 ∀i = 1, ..., 5 está en forma estándar → todas las variables son ≥ 0 todas las restricciones son igualdades ( = ) las constantes de la derecha son ≥ 0 x4 variable básica de la primera ecuación x5 variable básica de la segunda ecuación Solución básica inicial: x4 = 8 ≥ 0 solución factible básica x1 = x2 = x3 = 0 ⇒ x5 = 7 ≥ 0 Tenemos 52 - Metodo del Simplex Z = 5•0+2•0+3•0-1•8+1•7 = -1 Ahora hay que examinar si esta solución es óptima. Si lo es, hemos acabado. En caso de que no lo sea, se va a calcular una s.f.b. adyacente (difiere de la anterior en una variable básica). Var Básica Æ Var NO Bás Var NO Bás Æ Var Básica (>0) Æ (=0) (=0) Æ (>0) x1 + 2x2 + 2x3 + x4 =8 3x1 + 4x2 + x3 + x5 = 7 s.f.b. actual x1 = x2 = x3 = 0 x4 = 4, x5 = 7 variables no básicas variables básicas Vamos a aumentar x1 manteniendo x2 = x3 = 0 x4 =8⇒ x4 = 8 – x1 (*) x1+ + x5 = 7 ⇒ x5 = 7 – 3 x1 (**) 3x1 ⇒ x4 = 7, x5 = 4 Si x1=1 Z = 5•1+2•0+3•0-1•7+1•4 = 2 No es sol. óptima, hay que calcular una adyacente Así pues el beneficio relativo de x1, ∆x1=1 Æ ∆Z = 2 – (-1) = 3 El beneficio relativo de una variable no básica es el cambio que se produce en la función del objetivo por unidad aumentada en dicha variable no básica. (*) x4 = 8 – x1 ⇒ (**) x5 = 7 – 3 x1 ⇒ x4 < 0 si x1 > 8 x5 < 0 si x1 > 7/3 x1> 8 y x1 >7/3 son las ecuaciones que limitan el crecimiento de x1 Entonces no podrá se mayor del mínimo: máximo valor posible para x1 = mín{8, 7/3 }. x1 = 7/3 ⇒ x5 = 0 x4 = 17/3 Sol. Fact. Básica adyacente de la anterior x2 = x3 = 0 y Z = 6 el valor de la función objetivo aumenta en 7 unidades Si 53 - Metodo del Simplex Ahora, de nuevo hay que comprobar si esta s.f.b. es óptima. Si no, hay que mejorarla. RESUMEN (problema de maximización) 6. Empezar con una solución factible básica inicial obtenida a partir del sistema de restricciones en forma canónica. 7. Comprobar si la solución factible básica es óptima. Para ello calcular los beneficios relativos de las variables no básicas (éstos representan el cambio neto en el valor de la función del objetivo por unidad aumentada en dicha variable). Si estos beneficios relativos (de todas las variables no básicas) son ≤ 0, la solución actual es óptima. En otro caso, seguir (hasta que se cumpla lo anterior). 8. Seleccionar una variable no básica como nueva variable básica en la solución. La regla general será seleccionar la variable no básica con el mayor beneficio relativo. 9. Determinar la variable básica que sustituya a la no básica. Esto se hace mediante la regla de la mínima proporción: Examinamos las restricciones. Para aquellas en las que la variable no básica tiene coeficiente positivo, el límite que puede alcanzar dicha variable viene dado por el cociente entre la constante de la derecha de dicha restricción y ese coeficiente positivo. 10. Resolver el nuevo sistema y volver al paso 2. Si por el contrario el problema es de minimización, cambiarían el paso 2 y el 3: 2. Si todos los beneficios relativos son ≥ 0, la solución actual es óptima. 3. ...seleccionar la variable no básica con el menor ... 54 - Metodo del Simplex El método del Simplex por tablas. Max Sujeto a Z = 5x1 + 2x2 + 3x3 - x4 + x5 =8 x1 + 2x2 + 2x3 + x4 + x5 = 7 3x1 + 4x2 + x3 xi≥0 ∀i = 1, ..., 5 CB Cj Base 5 x1 2 x2 3 x3 -1 x4 1 x5 b ( ctes ) -1 1 x4 x5 1 3 2 4 2 1 1 0 0 1 8 7 De la tabla se obtiene: variables básicas = ctes, x4 = 8 x5 = 7 x1 = x2 = x3 = 0 _ 8 Z = CB•b = (-1, 1) • 7 el resto (no básicas) = 0. = -8+7 = -1 Para ver si la s.f.b. es óptima, necesitamos los beneficios relativos de las variables no básicas. c j = c j − cB Pj Columna de xj siendo CB el vector de variables básicas, (-1,1), y cj los coeficientes de la función del objetivo Solución óptima si c j ≤ 0 ∀j (Regla de parada) 55 - Metodo del Simplex _ 1 C1 = 5 – (-1,1) 3 = 5 – (-1+3) = 3 _ 2 C2 = 2 – (-1,1) 4 = 2 – (-2+4) = 0 beneficio relativo _ 2 C3 = 3 – (-1,1) 1 = 3 – (-2+1) = 4 (si x3 crece una unidad, Z crece 4) _ _ C4 = C5 = 0 (siempre son 0, no hace falta calcularlo) Tabla 1 CB -1 1 Cj Base x4 x5 cj 5 x1 1 3 3 2 x2 2 4 0 3 x3 2 1 4 -1 x4 1 0 0 1 x5 0 1 0 b 8 7 Z = -1 _ Cj ≥ 0 ⇒ la s.f.b actual no es óptima Hay que calcular una s.f.b adyacente: • Una v. no básica entra en la base • Una v. básica sale de la base _ Criterio de entrada: max {Cj > 0 } → max{3,4}= 4 ⇒ entra x3 (en la base) Criterio de salida: mínima proporción Min {8/2, 7/1} = 8/2 ⇒ sale x4 y el 2 es el pivote Tabla 2. CB 3 1 Cj Base x3 x5 5 x1 ½ 5/2 2 x2 1 3 3 x3 1 0 -1 x4 ½ -½ 1 x5 0 1 b 4 3 cj 1 -4 0 -2 0 Z = 15 • Fila del privote → se divide por el pivote • Cualquier otra fila = fila anterior – (elemento de la columna del pivote) x (nueva fila pivote) D(3,4,1,0,1,7) – (1)(½,1,1,½,0,4) = (3,4,1,0,1,7)-( ½,1,1,½,0,4) = (5/2,3,0,½,1,3) 56 - Metodo del Simplex D(3,0,4,0,0) – (4)(½,1,1,½,0) = (3,0,4,0,0) - (2,4,4,2,0) = (1,-4,0,-2,0) _ 4 DZ = CB•b = (3,1) 3 = 12+3 = 15 Regla del cuadrado: b•c a' = a − pivote Nueva a• •c b• •pivote solución que se obtiene de la tabla: x5 = 3 x1= x2 = x4 =0 x3 = 4 ⎛ 4⎞ Z = cB • b = (3,1)⎜⎜ ⎟⎟ = 12 + 3 = 15 ⎝ 3⎠ _ Como c1 > 0 la tabla 2 no es óptima. Criterio de entrada: max{c j > 0} ⇒ entra x1 Criterio de salida min {4/(½), 3/(5/2)} = min {8, 6/5} = 6/5 ⇒ sale x5 y pivote 5/2 Tabla 3. CB 3 5 Cj Base x3 x1 _ Cj 5 x1 0 1 2 x2 2/5 6/5 3 x3 1 0 -1 x4 3/5 -1/5 1 x5 -1/5 2/5 b 17/5 6/5 0 -26/5 0 -9/5 -2/5 Z = 81/5 Todos los c j son ≤ 0 ⇒ ésta es la solución óptima x1 = 6/5 x2 = 0 x3 = 17/5 Z = 81/5 es el valor óptimo del problema x 4 = x5 = 0 Resumen (Problema de maximización). 8. Expresar el problema en forma estándar. 9. Obtener una s.f. básica inicial y construir la 1ª tabla. 10. Construir la fila de los c ( c j = c j − cB Pj ) j 57 - Metodo del Simplex 11. Si todos los c j ≤ 0, la solución actual es óptima. En otro caso, hacer entrar en la base la variable con mayor valor c j positivo. 12. Aplicar la regla de la mínima proporción para ver qué variable deja la base. 13. Efectuar el pivotaje para obtener la nueva tabla y la nueva solución factible básica. 14. Volver al paso 4. Problema de minimización (ídem. Sólo cambia el punto 4) 8. Si todos los c j ≥ 0 ⇒ solución óptima. En otro caso, entra en la base aquella variable con valor c j negativo más pequeño. También puede tenerse en cuenta que Min Z <=> Max (-Z) Se resuelve Max (-Z). La solución de los dos problemas será la misma, mientras que el valor de Z óptimo cambia en el signo. Max Z = 3x1 + 2x2 sujeto a -x1 + 2x2 ≤ 4 3x1 + 2x2 ≤14 x1 - x2 ≤3 x1, x2 ≥0 pasamos a la forma estándar: Max Z = 3x1 + 2x2 sujeto a -x1 + 2x2 + x3 =4 3x1 + 2x2 + x4 = 14 x1 - x2 + x5 =3 xi ≥ 0 ∀ i = 1,...,5 CB 0 0 0 Cj Base x3 x4 x5 _ Cj 3 x1 -1 3 1 2 x2 2 2 -1 0 x3 1 0 0 0 x4 0 1 0 0 x5 0 0 1 b 4 14 3 3 2 0 0 0 Z=0 x1 = 0, x2 = 0, x3 = 4, x4 = 14, x5 = 3 CB 0 0 3 Cj Base x3 x4 x1 _ Cj vértice A 3 x1 0 0 1 2 x2 1 5 -1 0 x3 1 0 0 0 x4 0 1 0 0 x5 1 -3 1 b 7 5 3 0 5 0 0 -3 Z=9 x1 = 3, x2 = 0, x3 = 7, x4 = 5, x5 = 0 vértice B 58 - Metodo del Simplex Cj Base x3 x2 x1 _ Cj CB 0 2 3 3 x1 0 0 1 2 x2 0 1 0 0 x3 1 0 0 0 x4 - 1/5 1/5 1/5 0 x5 8/5 - 3/5 2/5 b 6 1 4 0 0 0 -1 0 Z = 14 x1 = 4, x2 = 1, x3 = 6, x4 = x5 = 0 _ Z = 14 Solución optima (todos los Cj ≤ 0) vértice C Equivalencias Tabla s.f.b. vértice → Tabla siguiente → s.f.b adyacente → vértice adyacente 59 - Metodo del Simplex 60 - Metodo del Simplex Óptimo alternativo. En la tabla 3, x5 tiene beneficio relativo cero. Esto significa: ∆x5 = 1 ⇒ ∆Z = 0 Si hacemos entrar en la base a x5: criterio de salida min {6/(8/5), 4/(2/5)} = 30/8 ⇒ sale x3 Tabla 4: CB 0 2 3 Cj Base x5 x2 x1 3 x1 0 0 1 2 x2 0 1 0 0 x3 5/8 3/8 - 1/4 0 x4 - 1/8 1/8 1/4 0 x5 1 0 0 b 15/4 13/4 5/2 cj 0 0 0 -1 0 Z = 14 Solución óptima alternativa: x1 = 5/2, x2 = 13/4, x3 = x4 = 0, x5 = 15/4 En general, una solución óptima alternativa viene indicada siempre que exista una variable no básica cuyo beneficio relativo ( c j ) es cero en la tabla óptima. Si los c j de las variables no básicas son < 0 ⇒ óptimo único (maximizando) Id. > 0 id. (minimizando) Problemas de cálculo. Empates en la selección de variables no básicas Si existe más de una variable con c j >0 máximo ⇒ se coge uno cualquiera o el primero de todos (en un problema de maximización). Si existe más de una variable con c j <0 máximo ⇒ se coge uno cualquiera o el primero de todos (minimización). cj . . . . • 7 .....•5•.....•7•.....•3•..... <0 <0 <0 Empates en el criterio de salida. (empate en la regla de la mínima proporción) 61 - Metodo del Simplex Ejemplo: Max Z = 2x4 + 3/2 x6 + x4 - x 5 =2 x1 + 2 x4 + x6 = 4 x2 x3 + x4 + x5 + x6 = 3 xi ≥0 CB 0 0 0 CB 2 0 0 Cj Base x1 x2 x3 0 x1 1 0 0 0 x2 0 1 0 0 x3 0 0 1 2 x4 1 2 1 0 x5 -1 0 1 3/2 x6 0 1 1 b 2 4 3 ci 0 0 0 2 0 3/2 Z=0 Base x4 x2 x3 x1 1 -2 -1 x2 0 1 0 x3 0 0 1 x4 1 0 0 x5 -1 2 2 x6 0 1 1 b 2 0 1 ci -2 0 0 0 2 3/2 Z=4 Solución factible básica DEGENERADA CB 2 0 0 Base x4 x5 x3 ci x1 0 -1 1 x2 1/2 1/2 -1 x3 0 0 1 x4 1 0 0 x5 0 1 0 x6 1/2 1/2 0 b 2 0 1 0 -1 0 0 0 1/2 Z=4 Solución factible básica DEGENERADA ¿Debemos parar o seguir? ¿es posible? Tabla n1 • • • • Tabla n2 = n1 Esto último se llama ciclaje. A día de hoy, sólo se conocen “dos” ejemplos de problemas que ciclen. (Descontando los que aparecen en los exámenes) 62 - Metodo del Simplex Resumen. Empate en el criterio de salida ⇒ s.f.b. degenerada ⇒ + iteraciones ⇒ + trabajo ¿⇒? ciclaje (en la vida real continuar hasta llegar a la solución óptima). Técnicas que evitan ciclaje ⇒ las hay, pero no “suelen” utilizarse. Probabilidad de encontrarse con un problema que cicle en la vida real = Probabilidad de encontrarse con un político honrado = Probabilidad de que los extraterrestres te lleven en su platillo = Probabilidad de que el mundo termine hoy a las 23h41minutos…. Soluciones no acotadas. Max Z = 2x1 + 3x2 Sujeto a: x1 - x2 ≤ 2 -3x1 + x2 ≤ 4 x1, x2 ≥ 0 CB 0 0 Cj Base x3 x4 2 x1 1 -3 3 x2 -1 1 0 x3 1 0 0 x4 0 1 b 2 4 ci 2 3 0 0 Z=0 x1 = 0, x2 = 0 (vértice A) CB 0 0 Base x3 x2 x1 -2 -3 x2 0 1 x3 1 0 x4 1 1 b 6 4 ci 11 0 0 -3 Z = 12 x1 = 0, x4 = 4 (vértice B) Entra x1, y ¿cuál sale? Habría que calcular la regla de la mínima proporción, pero en x1 son todos menores de cero, por tanto solución no acotada. 63 - Metodo del Simplex En forma de ecuaciones: -2x1 + x3 + x4 = 6 -3x1 + x2 + x4 = 4 x4 = 0 x3 = 6 + 2x1 x2 = 4 + 3x1 Si x1 crece, x3 y x2 nunca se hacen cero Fallo en el criterio de salida ⇒ solución no acotada. 64 - Metodo del Simplex Obtención de una solución factible básica inicial: Método de las Dos Fases y Método de las Penalizaciones. 3. Método de ensayo y error 4. Uso de variables artificiales. Ejemplo: Min Z = -3x1 + x2 + x3 x1 - 2x2 + x3 ≤ 11 -4x1 + x2 + 2x3 ≥ 3 2x1 - x3 = -1 xi ≥ 0 Pasamos a la forma estándar: Min Z = -3x1 + x2 + x3 x1 - 2x2 + x3 + x4 = 11 -4x1 + x2 + 2x3 –x5 = 3 -2x1 + x3 =1 xi≥ 0 No tenemos una variable básica por ecuación, por lo tanto no podemos empezar a usar el simples. x4 es variable básica, pero x5 no es variable básica porque tiene coeficiente negativo. Introducimos variables artificiales: x1 - 2x2 + x3 + x4 = 11 -4x1 + x2 + 2x3 –x5 + x6 = 3 Sistema artificial -2x1 + x3 + x7= 1 xi≥ 0 El sistema artificial tiene una solución factible básica inicial x1 = x2 = x3 = 0 x4 = 11 x5 = 0 x6 = 3 x7= 1 pero no es solución factible básica del problema de partida. Ahora bien, cualquier solución factible básica del sistema artificial con las variables artificiales iguales a cero es solución factible básica del sistema de partida. Por tanto, hay que reducir las variables artificiales para que se hagan cero. 1. MÉTODO DE LAS PENALIZACIONES O DE LA M (PENALTY METHOD, BIG M). Se le asigna a las variables artificiales un coste (penalización) muy alto en la función objetivo. En nuestro ejemplo: Min Z = -3x1 + x2 + x3 + M ·(Σ variables artificiales) ( x6 y x7 en este ejemplo) Siendo M un coste muy grande, M>0, M→ ∞ Min Z = -3x1 + x2 + x3 + M x6 +M x7 (Nota) Max Z = -3x1 + x2 + x3+ (- M) · (Σ variables artificiales) Siendo (-M) un beneficio muy pequeño, M>0, M→ ∞ 65 - Metodo del Simplex CB 0 M M CB 0 M 1 CB 0 1 1 CB -3 1 1 Cj Base x4 x6 x7 -3 x1 1 -4 -2 1 x2 -2 1 0 1 x3 1 2 1 0 x4 1 0 0 0 x5 0 -1 0 M x6 0 1 0 M x7 0 0 1 b 11 3 1 ci -3+6M 1-M 1-3M 0 M 0 0 Z = 4M Base x4 x6 x3 x1 3 0 -2 x2 -2 1 0 x3 0 0 1 x4 1 0 0 x5 0 -1 0 x6 0 1 0 x7 -1 -2 1 b 10 1 1 ci -1 1-M 0 0 M 0 3M-1 Z = M+1 Base x4 x2 x3 x1 3 0 -2 x2 0 1 0 x3 0 0 1 x4 1 0 0 x5 -2 -1 0 x6 2 1 0 x7 -5 -2 1 b 12 1 1 ci -1 0 0 0 1 M-1 M+1 Z=2 Base x1 x2 x3 x1 1 0 0 x2 0 1 0 x3 0 0 1 x4 1/3 0 2/3 x5 -2/3 -1 -4/3 x6 2/3 1 4/3 x7 -5/3 -2 -7/3 b 4 1 9 ci 0 0 0 1/3 1/3 M - 1/3 M - 2/3 Z = -2 Zopt = -2 66 - Metodo del Simplex Notas: 4) Una vez que una variable artificial es reemplazada por una variable real, no es necesario mantenerla en las tablas 5) Cuando el método termina con una solución óptima en la que hay una o más variables artificiales en la base mayores que cero ⇒ el problema original no tiene ninguna solución factible, porque no podemos encontrar ninguna solución con las variables del problema de partida 6) En el ordenador M = ? Si el método está programado en ordenador no se trabaja con la letra M. Hay que asignar un valor a la constante M. 2. MÉTODO DE LAS 2 FASES (TWO PHASES). Se resuelve en dos fases: Fase 1: Se resuelve el problema Min W = ∑v.artificiales Sujeto a sistema artificial Si llegamos a que el valor mínimo es cero ⇒ W = ∑v.artificiales(≥0) = 0 ⇒ Todas son cero y tenemos una solución factible básica del sistema original. En caso de que el valor mínimo sea positivo, W > 0 ⇒ alguna v.artificial es >0 ⇒ el problema original no tiene ninguna solución factible. Fase 2: La tabla final de la fase 1 pasa a ser la inicial de la fase 2 cambiando la función del objetivo por la original. Se aplica el simplex. Nota. cero). La fase 1 puede terminar con Wopt=0 y alguna variable artificial en la base (que tendrá valor En este caso, se pasa a la fase 2 (escribiendo su Cj=0) y se procede a echarla de la base aunque para ello se viole el criterio de salida. En el momento en que haya salido de la base eliminamos su columna. 67 - Metodo del Simplex Fase 1. (Min W = x6 + x7, sujeto a sistema artificial) CB 0 1 1 CB 0 1 0 CB 0 0 0 Cj Base x4 x6 x7 0 x1 1 -4 -2 0 x2 -2 1 0 0 x3 1 2 1 0 x4 1 0 0 0 x5 0 -1 0 1 x6 0 1 0 1 x7 0 0 1 b 11 3 1 ci 6 -1 -3 0 1 0 0 W=4 Base x4 x6 x3 x1 3 0 -2 x2 -2 1 0 x3 0 0 1 x4 1 0 0 x5 0 -1 0 x6 0 1 0 x7 -1 -2 1 b 10 1 1 ci 0 -1 0 0 1 0 3 W=1 Base x4 x2 x3 x1 3 0 -2 x2 0 1 0 x3 0 0 1 x4 1 0 0 x5 -2 -1 0 x6 2 1 0 x7 -5 -2 1 b 12 1 1 ci 0 0 0 0 0 1 1 W=0 x1 = 0, x2 = 1, x3 = 1, x4 =12, x5 = x6 = x7 = 0 68 - Metodo del Simplex Fase 2. (y volvemos a la función objetivo inicial, es decir, valores iniciales de Cj) CB 0 1 1 CB -3 1 1 Cj Base x4 x2 x3 -3 x1 3 0 -2 1 x2 0 1 0 1 x3 0 0 1 0 x4 1 0 0 0 x5 -2 -1 0 b 12 1 1 ci -1 0 0 0 1 Z=2 Base x1 x2 x3 x1 1 0 0 x2 0 1 0 x3 0 0 1 x4 1/3 0 2/3 x5 -2/3 -1 -4/3 b 4 1 9 0 0 0 1/3 1/3 Z = -2 ci x1 = 4, x2 = 1, x3 = 9, x4 = x5 = 0 Ejemplo relativo a la nota anterior: Max Z = 2x1 + x2 + x3 4x1 + 6x2 + 3x3 ≤ 8 3x1 - 6x2 - 4x3 - x4 ≤ 1 2x1 + 3x2 - 5x3 - x4 = 4 Zopt= -2 4x1 + 6x2 + 3x3 + x5 =8 3x1 - 6x2 - 4x3 - x4 + x6 = 1 2x1 + 3x2 - 5x3 - x4 + x7 = 4 (x5 v.holgura) (x6 v.holgura) (x7 v.artificial) Fase 1: Min W = x7 CB 0 0 1 Cj Base x5 x6 x7 ci CB 0 0 1 Base x2 x6 x7 ci 0 x1 4 3 2 0 x2 6 -6 3 0 x3 3 -4 -5 0 x4 0 -1 -1 0 x5 1 0 0 0 x6 0 1 0 1 x7 0 0 1 b 8 1 4 -2 -3 5 1 0 0 0 W=4 x1 2/3 7 0 x2 1 0 0 x3 1/2 -1 -13/2 x4 0 -1 -1 x5 1/6 1 -1/2 x6 0 1 0 x7 0 0 1 b 4/3 9 0 0 0 13/2 1 1/2 0 0 W=0 Final fase 1. 69 - Metodo del Simplex Fase 2 se mantiene CB 1 0 0 Cj Base x2 x6 x7 ci CB 1 2 0 Base x2 x1 x7 ci CB 1 2 1 Base x2 x1 x3 ci 2 x1 2/3 7 0 1 x2 1 0 0 1 x3 1/2 -1 -13/2 0 x4 0 -1 -1 0 x5 1/6 1 -1/2 0 x6 0 1 0 0 x7 0 0 1 b 4/3 9 0 4/3 0 1/2 0 -1/6 0 0 Z = 4/3 x1 0 1 0 x2 1 0 0 x3 25/42 -1/7 -13/2 x4 2/21 -1/7 -1 x5 9/126 1/7 -1/2 x6 -2/21 1/7 0 x7 0 0 1 b 10/21 9/7 0 0 0 29/42 4/21 -5/14 -4/21 0 Z = 64/21 x1 0 1 0 x2 1 0 0 x3 0 0 1 x4 1/273 -11/91 2/13 x5 1/39 2/13 1/13 x6 -2/21 1/7 0 x7 25/273 -2/91 -2/13 b 10/21 9/7 0 0 0 0 23/273 -16/39 -4/21 29/273 Z = 64/21 No prestamos atención a esta columna CB 1 2 0 Base x2 x1 x4 ci x1 0 1 0 x2 1 0 0 x3 -1/42 11/14 13/2 x4 0 0 1 x5 1/42 3/14 1/2 x6 -2/21 1/7 0 0 0 -23/42 0 -19/42 -4/21 x7 b 10/21 9/7 0 Z = 64/21 óptima Comparación entre el Método Big M y el Método de las 2 fases. 9 9 9 9 Igual número de tablas en general. ⇓ Igual número de cálculos en general. M ≡ “problemas” en el ordenador 2 fases ≡ “problemas” si hay una o más variables artificiales = 0 en la base en la última tabla de la 1ª fase. 70 - Metodo del Simplex Eficiencia computacional del Método del Simplex. 9 El número de tablas es sensible al número de restricciones (Simplex revisado). La rapidez del simplex depende más del número de restricciones que del número de variables. 9 Problema de minimizar con muchas variables: ci >0 >0 >0 ... <0 la primera variable con ci <0 entra en la base 9 Otros métodos: ¾ Elipsoides (KHACHIAN). ¾ Punto interior (Karmarkar). 71 - Metodo del Simplex 72 - Metodo del Simplex Tema 3: Método del Simplex Revisado. El método revisado o método del simples con multiplicadores: Conceptos básicos. Vector de Multiplicadores. Se basa en los mismos principios que el simplex, pero en cada iteración no se calcula toda la tabla, y la información que se necesita para pasar de una solución factible básica a otra se obtiene directamente de las ecuaciones originales. Desarrollo del método. El método del simplex revisado trabaja con la idea fundamental de que cualquier tabla del simplex correspondiente a una solución factible básica puede generarse directamente de las ecuaciones originales por medio de operaciones matriciales. Max (o Min) Z = Cx Ax = b x≥0 x1 ... C = (C1, C2, ..., Cn) 1xn x= xm nx1 xn A= A= a11 a21 ... a12 a22 ... ... ... ... a1n a2n ... mxn am1 am2 ... amn m<n [ P1 P2 … Pn ] b= b1 b2 ... mx1 bm Pj = a1j a2j … amj mx1 ∀j = 1, ..., n Definición. Se llama matriz básica B a una submatriz B de A, formada por m columnas linealmente independientes. La idea fundamental del método del simplex revisado se basa en lo siguiente: Supongamos que tenemos una solución factible con variables básicas xi1 ... xim. Asociadas a estas variables, se construye una matriz básica B como B = (Pi1 ... Pim) ⎛ X b ⎞ ⎛b ⎞ ⎟⎟ = ⎜⎜ ⎟⎟ siendo y la solución factible básica asociada como X = ⎜⎜ ⎝ XN ⎠ ⎝0⎠ matrix m x m Programación lineal avanzada - 1 −1 −1 y b pudiéndose calcular como b = B b y cualquier columna de la tabla del simplex Pj = B Pj Para saber si la solución es óptima: Se llama vector de multiplicadores al vector π = (π1, π2, ..., πm) π = CB B-1 (mxm) (1xm) Se calculan los beneficios relativos c j = c j − cB Pj = c j − πPj Programación lineal avanzada - 2 Ejemplo: Min Z = -3x1 + x2 + x3 sujeto a x1 – 2x2 + x3 ≤ 11 -4x1 + x2 + 2x3 ≥ 3 2x1 - x3 = -1 xi ≥ 0 Min Z = -3x1 + x2 + x3 + Mx6 + Mx7 x1 - 2x2 + x3 + x4 = 11 -4x1 + x2 + 2x3 – x5 + x 6 =3 -2x1 + x3 + x7 = 1 xi ≥ 0 A= [ P1 P2 … P7] P1 = 1 -4 0 P2 = -2 1 1 P3 = P7 = 0 0 1 b= 11 3 1 1 2 0 P4 = 1 0 0 Base inicial { x4, x6, x7} ⇒ B = (P4 P6 P7 ) = P5 = 0 -1 0 P6 = 1 0 0 0 0 1 0 0 1 B-1 = I La tabla 1 del método del simplex revisado será: Base x4 x6 x7 1 0 0 B-1 0 1 0 0 0 1 _ b 11 3 1 A completar más adelante π = (π1, π2, π3) = CBB-1= (C4, C6, C7) B-1 = (0, M, M)•I = (0, M, M) Los beneficios relativos de las variables no básicas: _ Cj = Cj - πPj j = 1, 2, 3, 5 Programación lineal avanzada - 3 0 1 0 _ C1 = -3 – (0, M, M) 1 -4 -2 = -3 + 6M _ C2 = 1 – (0, M, M) -2 1 0 =1–M _ C3 = 1 – (0, M, M) 1 2 1 = 1 – 3M _ C5 = 0 – (0, M, M) 0 -1 0 =M Entra x3 en la base. La columna pivote es: 1 0 0 1 P3 = B P3 = 0 1 0 2 0 0 1 1 −1 1 = 2 1 Tabla 1. _ b 11 3 1 B-1 Base x4 x6 x7 1 0 0 0 1 0 0 0 1 _ Columna pivote P3 1 2 1 Var. que entra x3 Regla mínima proporción min{11/1, 3/2, 1/1} ⇒ sale x7 1 0 0 Nueva base {x4, x6, x3} ⇒ B = [P4 P6 P3] = ⇒ B-1 = _ b = B-1b = B-1 11 3 1 1 0 0 0 1 0 = 10 1 1 -1 -2 1 B-1 Base x4 x6 x3 0 1 0 1 0 0 0 1 0 -1 -2 1 _ b 10 1 1 π = CBB-1 = (C4, C6, C3)•B-1 = (0, M, 1)•B-1 = (0, M, -2M+1) Programación lineal avanzada - 4 1 2 1 ⇒ _ C1 = -3 - (0, M, -2M+1) 1 -4 -2 = -1 _ C2 = 1 – M _ C5 = M _ entra x2 en la base P2 = B-1 P2 = B-1 -2 1 0 -2 1 0 = Tabla 2. B-1 Base x4 x6 x3 1 0 0 0 1 0 0 0 1 _ b 10 1 1 _ P2 -2 1 0 var que entra x2 Regla mínima proporción min{10/-2, 1/1, 1/0} ⇒ sale x6 1 0 0 Nueva base {x4, x2, x3} ⇒ B = [P4 P2 P3] ⇒ B-1 = _ b = B-1b = -5 -2 1 12 1 1 B-1 Base x4 x2 x3 π = (0, 0, 1) 2 1 0 1 0 0 _ C1 = -1 ⇒ entra x1 1 0 0 2 1 0 -5 -2 1 _ b 12 1 1 2 1 0 -5 -2 1 = (0, 1, -1) _ P1 = 1 0 0 2 1 0 -5 -2 1 1 -4 -2 = _ C5 = 1 Tabla 3. Programación lineal avanzada - 5 3 0 -2 B-1 Base x4 x2 x3 1 0 0 2 1 0 -5 -2 1 _ b 12 1 1 Var que entra x1 _ P1 3 0 -2 Nueva base {x1, x2, x3} Tabla 4. B-1 Base 1 x1 x2 x3 1 π = (-3, 1, 1) _ C4 = 1/3 _ C5 = 1/3 2 /3 0 2 /3 /3 0 2 /3 /3 1 4 /3 2 /3 1 4 /3 -5/3 -2 -7/3 -5/3 -2 -7/3 _ b 4 1 9 = [-1/3, 1/3, 2/3] Por lo tanto, la tabla 4 es óptima y la solución óptima es: x1 = 4 x2 = 1 x3 = 9 x4 = x5 = 0 _ 4 Z = CB•b = (-3, 1, 1) 1 = -2 9 Ventajas del método revisado del Simplex sobre el método del Simplex regular. 1. El simplex revisado trabaja sobre una tabla cuyo tamaño lo determina el número de restricciones. 2. 3. Si se calcula B-1 en cada iteración directamente de los datos del principio, no se acumulan errores de redondeo. Los conceptos teóricos del método ayudan a entender conceptos de teoría de la dualidad y análisis de sensibilidad. Programación lineal avanzada - 6 Tema 4: Teoría de la Dualidad. 2x1 La teoría de la dualidad se centra en el hecho de que, asociado a cualquier problema de programación lineal, existe otro problema de programación lineal que se llama su dual, de manera que al resolver el primero se resuelve también el segundo sin coste computacional adicional. Problemas primal-dual simétrico. Propiedades y relaciones de los problemas primal y dual. Un problema de programación lineal está escrito en forma simétrica si todas las variables son no negativas, y todas las restricciones son desigualdades (si el problema es de maximizar, con ≤, y si es de minimizar, con ≥). PRIMAL Max Z = Cx Ax ≤ b x≥0 Min Z = Cx Ax ≥ b x≥0 Max Z = (C1, C2, …, Cn) … a11 a21 ... am1 x1 x2 … xn a12 a22 ... am2 ... ... ... ... a1n a2n ... amn x1 xn x1 x2 … xn ≤ b1 b2 ... bm ≥0 DUAL Min W = by yA ≥ C y = (y1, y2, …, ym) y≥0 ↓ Min W = b1y1 + b2y2 + … + bmym Programación lineal avanzada - 7 a11y1 + a21y2 + ... + am1ym ≥ C1 a12y1 + a22y2 + ... + am2ym ≥ C2 ... ... ... ... a1ny1 + a2ny2 + ... + amnym ≥ Cn … y1, y2, …, ym ≥ 0 1. 2. 3. 4. 5. 6. Reglas generales de construcción del problema dual. Definir una variable dual no negativa por cada restricción del problema primal. Hacer que el vector de costes del problema primal pase a ser el vector de las constantes de la derecha del problema dual. Hacer que el vector de constantes de la derecha del primal sea el vector de costes del dual. La traspuesta de la matriz de coeficientes del primal es la matriz de coeficientes del dual. Invertir la dirección de las desigualdades de las restricciones. Invertir Maximizar por Minimizar (y viceversa). Problema Primal Max Z = Cx Ax ≤ b x≥0 Problema Dual Min W = by yA ≥ C siendo A la matriz y ≥ 0 traspuesta de la matriz A del problema primal (y٠A ⇔ At٠yt) Amxn x n variables b m restricciones y m variables C n restricciones Teoremas de la dualidad. Teorema 1 (Teorema débil de la dualidad). Consideremos los problemas de programación lineal primal-dual simétricos: Max Z = Cx Ax ≤ b x≥0 ↔ Min W = yb yA ≥ C y≥0 Se tiene que el valor de la función del objetivo del problema dual (para toda solución factible del dual) es siempre mayor o igual que el valor de la función del objetivo primal (en cualquier solución factible del problema primal). Demostración. Sean x0 e y0 solución factible del primal y dual, respectivamente x0 solución factible del problema primal ⇒ Ax0 ≤ b x0 ≥ 0 (1) y0 solución factible del problema dual ⇒ y0A ≥ C y0 ≥ 0 (2) (la solución factible cumple las restricciones) (1) ⇒ y0Ax0 ≤ y0b (2) ⇒ y0Ax0 ≥ Cx0 Entonces (pues y0 ≥ 0) (pues x0 ≥ 0) Cx0 ≤ y0Ax0 ≤ y0b Z0 (primal) W0 (dual) (Z y W funciones objetivo) Programación lineal avanzada - 8 Corolarios. 1) El valor de la función del objetivo Z del problema primal para cualquier solución factible del primal es una cota inferior para el valor mínimo de la función del objetivo dual. 2) Análogamente, el valor de la función del objetivo del problema dual para cualquier solución factible es una cota superior para el valor máximo de la función del objetivo primal. 3) Si el problema primal tiene solución no acotada entonces el problema dual no tiene ninguna solución factible. 4) Análogamente, si el problema dual tiene solución no acotada entonces el primal no tiene ninguna solución factible. 5) Si el problema primal tiene solución, y el dual no, entonces el primal es no acotado. 6) Si el problema dual tiene solución, y el primal no, entonces el dual es no acotado. 7) Si el primal no tiene solución ⇒ el problema dual no tiene solución o es no acotado. 8) Si el problema dual no tiene solución ⇒ el problema primal no tiene solución o es no acotado. Ejemplo 1. Primal Dual Max Z = x1 + 2x2 + 3x3 + 4 x4 Sujeto a x1 + 2x2 + 2x3 + 3x4 ≤ 20 2x1 + x2 + 3x3 + 2x4 ≤ 20 xi ≥ 0 Min W = 20y1 + 20y2 Sujeto a y1 + 2y2 ≥ 1 2y1 + y2 ≥ 2 2y1 + 3y2 ≥ 3 3y1 + 2y2 ≥ 4 yi ≥ 0 ej. x0 = (x10, x20, x30, x40) (1, 1, 1, 1) Æ Z (x0) = 10 cualquier solución factible del problema dual verifica W ≥ 10 ⇒ Wopt ≥ 10 Ejemplo 2. Primal Dual Max Z = x1 + x2 - x 1 + x2 + x3 ≤ 2 -2x1 + x2 - x3 ≤ 1 xi ≥ 0 Min W = 2y1 + y2 - y1 - 2y2 ≥ 1 y1 + y2 ≥ 1 y1 - y2 ≥ 0 yi ≥ 0 El primal tiene solución (por ejemplo x0 = (0, 0, 0) es una solución factible del primal). Pero el dual no tiene ninguna solución factible (si yi ≥ 0, - y1 - 2y2 siempre ≤ 0). Por el corolario 5, el primal tiene solución no acotada. Programación lineal avanzada - 9 Ejemplo 3. Primal Dual Min Z = -2x1 – 3x2 x1 - x2 ≥ 2 - x 1 + x2 ≥ 1 x1, x2 ≥ 0 Max W = 2y1 + y2 y1 - y2 ≤ -2 - y1 + y2 ≤ -3 yi≥ 0 Ambos, primal y dual, no tienen soluciones factibles (corolarios 7 y 8). Teorema 2 (Criterio de optimalidad). Si existen soluciones factibles x0 e y0 para el problema primal y dual, respectivamente, tales que Cx0 = y0b ⇒ x0 e y0 son soluciones óptimas del problema primal y dual, respectivamente. Demostración (ejercicio) Primal En el Ejemplo 1 Max Z = x1 + 2x2 + 3x3 + 4 x4 Sujeto a x1 + 2x2 + 2x3 + 3x4 ≤ 20 2x1 + x2 + 3x3 + 2x4 ≤ 20 xi ≥ 0 Dual Min W = 20y1 + 20y2 Sujeto a y1 + 2y2 ≥ 1 2y1 + y2 ≥ 2 2y1 + 3y2 ≥ 3 3y1 + 2y2 ≥ 4 yi ≥ 0 si tomamos: x0 = (0, 0, 4, 4) y0 = (1’2, 0’2) Z0 = 28 W0 = 28 x0 e y0 óptimas del primal y dual respectivamente Teorema 3 (Teorema fundamental de la dualidad). Si el problema primal y el dual tienen soluciones factibles, entonces los dos tienen soluciones óptimas cuyos valores de la función objetivo coinciden. Teorema 4 (Teorema de las holguras complementarias). Sean x0 e y0 soluciones factibles del problema primal y dual: Max Z = Cx Min W = yb Ax ≤ b yA ≥ C x≥0 y≥0 x0 e y0 son soluciones óptimas ⇔ (y0A – C)x0 + y0(b – Ax0) = 0 Demostración. (y0A - C)x0 + y0(b - Ax0) = 0 ⇔ y0Ax0 – Cx0 + y0b – y0Ax0 = 0 ⇔ - Cx0 + y0b = 0 ⇔ Cx0 = y0b Programación lineal avanzada - 10 Entonces x0 e y0 óptimas ⇔ Cx0 = y0b “⇒” por el teorema 3 de la dualidad “⇐” por el teorema 2 Condiciones de holguras complementarias. Supongamos x0 solución factible del problema primal e y0 solución factible del problema dual: Ax0 ≤ b n variables y0A ≥ C m variables x0 ≥ 0 m ecuaciones y0 ≥ 0 n ecuaciones A٠ ⇕ x10 x20 … xn0 ⇕ b1 b2 … bm ≤ (y10, y20 , …, ym0)A ≥ (C1, C2, …, Cn) Si lo escribimos con holguras: A٠ x10 x20 … xn0 U1 0 U2 0 … Um 0 + b1 b2 … bm = (*) siendo Ui0 ≥ 0 ∀i = 1, 2, …, m el vector de holguras (y10, y20 , …, ym0)A – (V10, V20, …, Vn0) = (C1, C2, …, Cn) siendo Vi0 ≥ 0 ∀i = 1, 2, …, n el vector de holguras (**) Ax0 + U0 = b ⇒ U0 = b - Ax0 y0A – V0 = C ⇒ V0 = y0A - C (*) (**) El teorema 4 dice: x0 e y0 son soluciones óptimas óptimas ⇔ (y0A - C)x0 + y0(b - Ax0) = 0 ⇔ V0x0 + y0U0 = 0 ⇔ x1 0 x2 0 … xn 0 ⇔ (V10, V20, …, Vn0) n 0 0 m 0 0 ⇔ ∑ Vj xj + ∑ yj Uj = 0 j=1 j=1 Vj 0 ٠ xj 0 = 0 + ⇔ v. primal j-ésima holgura dual j-ésima (y10, y20 , …, ym0) … Vj 0xj 0 = 0 yj 0Uj 0 = 0 U1 0 U2 0 =0⇔ Um 0 j=1…n j=1…m yj 0Uj 0 = 0 sistema o condiciones de holguras complementarias holgura primal v. dual j-ésima Se obtiene: 1) Si xj 0 > 0 ⇒ Vj 0 = 0 2) Si Vj 0 > 0 ⇒ xj 0 = 0 3) Si yj 0 > 0 ⇒ Uj 0 = 0 Programación lineal avanzada - 11 4) Si Uj 0 > 0 ⇒ yj 0 = 0 Ejemplo 1: Max Z = x1 + 2x2 + 3x3 + 4 x4 Sujeto a x1 + 2x2 + 2x3 + 3x4 ≤ 20 2x1 + x2 + 3x3 + 2x4 ≤ 20 xi ≥ 0 → x + 2x + 2x + 3x + U = 20 → 2x + x + 3x + 2x + U = 20 1 2 1 3 2 4 3 1 4 2 xi, Ui ≥ 0 Min W = 20y1 + 20y2 Sujeto a y1 + 2y2 ≥ 1 2y1 + y2 ≥ 2 2y1 + 3y2 ≥ 3 3y1 + 2y2 ≥ 3 yi ≥ 0 → y + 2y - V = 1 → 2y + y - V = 2 →2y + 3y - V = 3 →3y + 2y - V = 4 1 1 1 1 2 1 2 2 2 3 2 4 yi, Vi ≥ 0 La solución óptima del dual es: y10 = 1’2 y20 = 0’2 W0 = 28 Condiciones de holgura complementarias: U1 0 y10 = 0 U2 0 y20 = 0 x1 0 V10 = 0 x2 0 V20 = 0 x3 0 V30 = 0 x4 0 V40 = 0 y10 = 1’2 > 0 ⇒ U1 0 = 0 y20 = 0’2 > 0 ⇒ U2 0 = 0 y10 + y20 = 1’6 > 1 ⇒ V10 > 0 ⇒ x1 0 = 0 2y10 + y20 = 2’6 > 2 ⇒ V20 > 0 ⇒ x2 0 = 0 2y10 + 3y20 = 3 ⇒ V30 = 0 ⇒ x3 0 ≥ 0 3y10 + 2y20 = 4 ⇒ V40 = 0 ⇒ x4 0 ≥ 0 Y nos queda del sistema de ecuaciones del problema primal: 2x3 0 + 3x4 0 = 20 x3 0 = 4 0 0 3x3 + 2x4 = 20 x4 0 = 4 x0 = (0, 0, 4, 4) Zopt = 28 (que tiene que coincidir con el valor óptimo de la función objetivo dual) Problemas asimétricos primal-dual. Consideremos un problema de programación lineal no simétrico, por ejemplo: Primal Max Z = 2x1 – 3x2 Sujeto a 6x1 – 3x2 ≤ 15 2x1 + 3x2 ≥ 5 - x1 + 4x2 = -1 Programación lineal avanzada - 12 x1 cq signo, x2 ≤ 0 Cualquier problema no simétrico puede convertirse en uno equivalente que sí lo sea Max Z = Cx Ax ≤ b x≥0 x1 = x1' – x2' x2 = - x3' - x1 + 4x2 = -1 ⇒ x3' ≥ 0 x1', x2' ≥ 0 - x1 + 4x2 ≥ -1 Æ x1 - 4x2 ≤ 1 - x1 + 4x2 ≤ -1 2x1 + 3x2 ≥ 5 Æ - 2x1 – 3x2 ≤ -5 Max Z = 2x1' – 2x2' – 3x3' Sujeto a 6x1' – 6x2' + 3x3' ≤ 15 -2x1' + 2x2' + 3x3' ≤ -5 x1' - x2' + 4x3' ≤ 1 - x1' + x2' - 4 x3' ≤ -1 xi'≥ 0 Dual Min W = 15w1 - 5w2 – w3 + w4 Sujeto a 6w1 – 2w2 + w3 - w4 ≥ 2 -6w1 + 2w2 - w3 + w4 ≥ -2 3w1 + 3w2 + 4w3 – 4w4 ≥ 3 wi ≥ 0 Min W = wb wA ≥ C w≥0 Llamamos y1 = w1 ≥ 0 y2 = - w2 ≤ 0 y3 = w3 - w4 ≥ 0 Min W = 15y1 + 5y2 – y3 Sujeto a 6y1 + 2y2 + y3 ≥ 2 -6y1 – 2y2 - y3 ≥ -2 3y1 – 3y2 + 4y3 ≥ 3 Min W = 15y1 + 5y2 – y3 6y1 + 2y2 + y3 = 2 3y1 – 3y2 + 4y3 ≥ 3 y1 ≥ 0, y2 ≤ 0, y3 cq signo 6y1 + 2y2 + y3 = 2 3y1 – 3y2 + 4y3 ≥ 3 Max Z = 2x1 – 3x2 6x1 – 3x2 ≤ 15 2x1 + 3x2 ≥ 5 - x1 + 4x2 = -1 x1 cq signo, x2 ≤ 0 Programación lineal avanzada - 13 PRIMAL (Maximizar) DUAL (Minimizar) ٠ A matriz de coeficientes ٠ Traspuesta ٠ Vector de constantes de ٠ Vector de coeficientes la derecha de la f. objetivo ٠ Vector de coeficientes ٠ Vector de constantes de de la f. objetivo la derecha ٠ i-ésima restricción con ٠ Variable i-ésima de = cualquier signo ٠ i-ésima restricción con ٠ Variable i-ésima ≥ 0 ≤ ٠ i-ésima restricción con ٠ Variable i-ésima ≤ 0 ≥ ٠ Variable j de cualquier ٠ Restricción j con = signo ٠ Variable j ≥ 0 ٠ Restricción j con ≥ ٠ Variable j ≤ 0 ٠ Restricción j con ≤ Programación lineal avanzada - 14 Ejercicio 1. Primal Max Z = x1 + 4x2 + 3x3 2x1 + 3x2 – 5x3 ≤ 2 3x1 - x2 + 6x3 ≥ 1 x1 + x2 + x3 = 4 x1 ≥ 0, x2 ≤ 0, x3 cq signo Dual Min W = 2y1 + y2 + 4y3 2y1 + 3y2 + y3 ≥ 1 3y1 - y2 + y3 ≤ 4 -5y1 + 6y2 + y3 = 3 y1 ≥ 0, y2 ≤ 0, y3 cq signo Ejercicio 2. Primal Min Z = 2x1 + x2 - x3 x1 + x2 - x3 = 1 x 1 - x 2 + x3 ≥ 2 x2 + x3 ≤ 3 x1 ≥ 0, x2 ≤ 0, x3 cq signo Dual Max W = y1 + 2y2 + 3 y3 y1 + y2 ≤ 2 y1 - y2 + y3 ≥ 1 -y1 + y2 + y3 = -1 y1 cq signo, y2 ≥ 0, y3≤ 0 Los teorema del 1 al 4 de la teoría de la dualidad también se aplican a los problemas asimétricos, con las modificaciones correspondientes. En el Ejercicio 2: x1 0 = 2 x2 0 = 0 solución factible primal x3 0 = 1 y10 = 1 y20 = 0 y30 = 0 solución factible dual Por el teorema 1 de la dualidad Z0 ≥ W0 ⇒ Cx0 = 3 > y0b = 1 En el Ejercicio 1: x1 0 = 0 x2 0 = 0 x3 0 = 4 Z0 = 12 W0 = 12 solución factible primal y10 = 0 y20 = 0 y30 = 3 Programación lineal avanzada - 15 Por el teorema 2 ambas son soluciones óptimas. Si el problema viene en forma estándar: Max Z = Cx (Min) su dual es Ax = b x≥0 Min W = yb yA ≥ C y cq signo Max W = yb yA ≤ C y cq signo Programación lineal avanzada - 16 Cálculo de la solución óptima del problema dual a partir de la tabla óptima del problema primal. Consideremos el problema de programación lineal en forma estándar: Min Z = Cx (dual) Max W = yb Ax = b yA ≤ C x≥0 y cq signo xB Sea x0 = la solución óptima del primal. xN xB = B-1b, siendo B la base óptima _ Cj = Cj – πPj ≥ 0 ∀j por ser solución óptima donde π = CBB-1 En notación matricial C – πA ≥ 0 ⇔ πA ≤ C ⇒ el vector π es una solución factible del problema dual. Además W(π) = πb = CBB-1b = CBxB = Zóptimo ⇒ π es óptima del problema dual. Ejemplo: Primal Min Z = -3x1 + x2 + x3 x1 - 2x2 + x3 ≤ 11 -4x1 + x2 + 2x3 ≥ 3 -2x1 + x3 = 1 xi ≥ 0 Dual Max W = 11y1 + 3y2 + y3 y1 - 4y2 – 2 y3 ≤ - 3 -2y1 + y2 ≤1 y1 + 2y2 + y3 ≤ 1 y1 ≤ 0, y2 ≥ 0, y3 cq signo Resolvemos el problema primal: la solución óptima es B = [P1 P2 P3] x1 = 4 x2 = 1 x3 = 9 Z0 = -2 -1 1 1 -2 1 /3 2/3 -1 -4 1 2 = (-3, 1, 1) 0 1 π = CBB = (-3, 1, 1) 2 -2 0 1 /3 4/3 Se comprueba que π es solución factible del problema dual y que W(π) = 11(-1/3) + 3(1/3) + 1(2/3) = -2 Programación lineal avanzada - 17 -5/3 -2 = [-1/3, 1/3, 2/3] -7/3 Cómo ver la solución dual óptima en la tabla óptima del simplex del problema primal. Base Solución ( b ) • • • _ Cj Sean {i1, i2, …, im} los índices de las variables básicas de la primera tabla del Simplex: 1ª tabla Base x1 x2 xi1 xi2 xi1 xi2 … xim ٠ ٠ … ٠ ٠ ٠ … ٠ 1 0 … 0 0 1 … 0 … xim … xn b ٠ ٠ 0 0 … 1 … ٠ En cualquier tabla, B-1 aparece en las columnas de las variables básicas iniciales. En particular, en la última tabla: Base xi1 xi2 _ _ … xim _ … Ci1 Ci2 _ _ _ (Ci1, Ci2, …, Cim) = (Ci1, Ci2, …, Cim) – π[Pi1 … Pim] = Programación lineal avanzada - 18 Cim b 1 0 … 0 = (Ci1, Ci2, …, Cim) – π 0 1 … 0 … … … … 0 0 … 1 _ _ _ ⇒ π = (Ci1, Ci2, …, Cim) – (Ci1, Ci2, …, Cim) Tema 5: Método del Simplex Dual. Conceptos fundamentales. Bases factibles dual y primal. Consideremos un problema de programación lineal estándar: Min Z = Cx Ax = b x≥0 Amxn x= b= b1 … bm A = (P1 … Pn) C = (C1, …, Cn) x1 … xn m<n Sea B ⊂ A una submatriz de A formada por m columnas de A linealmente independientes. Se dice que B es una base factible primal (o base factible del problema primal) si B-1b ≥ 0. Sea B ⊂ A una submatriz de A formada por m columnas de A linealmente independientes. Se dice que B es una base factible dual (o base factible del problema dual) si: C – CBB-1A ≥ 0 (C – CBB-1A ≤ 0 si el p. primal fuese de maximizar) Consecuencias de las definiciones. • Que B sea factible primal significa que se le puede asociar una solución: x= xB xN con xB = B-1b ≥ 0 • Que B sea factible dual significa que C – CBB-1A ≥ 0 ⇒ C ≥ CBB-1A. Llamando yB = CBB-1 → C ≥ yBA ⇔ yBA ≤ C ⇒ yB así definida es una solución factible del problema dual. Además C – yBA ≥ 0 . Como los beneficios relativos del problema primal se calculan como _ C = C – πA, = C – CBB-1A = C – yBA ≥ 0 ⇒ xB = B-1b es una solución factible y óptima del problema primal. Luego como Wo = yBb = CBB-1 = CBxB = Zopt Programación lineal avanzada - 19 yB y xB son soluciones óptimas del primal y dual. Resumiendo, si una matriz B es a la vez una base factible primal y dual, sus soluciones asociadas xB = B-1b e yB = CBB-1 son óptimas del primal y dual, respectivamente. Desarrollo del método dual del Simplex. Consideremos el ejemplo Min Z = x1 + 4x2 + 3x4 Sujeto a:x1 + 2x2 – x3 + x4 ≥ 3 -2x1 - x2 + 4 x3 + x4 ≥ 2 xi ≥ 0 Introducimos variables de holgura x5 y x6: x1 + 2x2 – x3 + x4 - x5 = 3 -2x1 - x2 + 4 x3 + x4 - x6 = 2 xi ≥ 0 Multiplicamos por -1: -x1 - 2x2 + x3 - x4 + x5 = -3 2x1 + x2 - 4 x3 - x4 + x6 = -2 xi ≥ 0 Cj 1 4 0 3 0 0 CB base x1 x2 x3 x4 x5 x6 b 0 0 x5 x6 -1 2 -2 1 1 -4 -1 -1 1 0 0 1 -3 -2 cj 1 4 0 3 0 0 B = [P5 P6] = I ⇒ B-1 = I ⇒ b = B-1 b ≱ 0 pero C - CBB-1A= C = (1,4,0,3,0,0) ≥ 0 Luego B no es factible primal (porque ≱ 0), pero sí factible dual. _ _ Si tenemos, por tanto, una tabla del Simplex Dual donde Cj ≥ 0 y b ≥ 0 ⇒ estaríamos ante la solución óptima. Programación lineal avanzada - 20 Situación general. Base x1 x1 1 … xr … xm xm+1 … xs … xn b y1,m+1 … y1s … y1n b1 0 … xr … 1 yr,m+1 … yrs … yr n Alguno menor que cero 0 … xm 1 0 0 br yn,m+1 … yns … ymn bm cn ≥0 0 cj cm +1 … cs … (min) El método del simplex dual va a calcular una solución factible básica dual adyacente, reemplazando una variable básica por una variable no básica. 1. Selección de la variable básica que deja la base. _ Se elige la variable básica con el mayor valor negativo bi. Sea br = min {bi} ⇒ xr deja la base, y la fila r es la fila pivote. bi < 0 2. Selección de la variable no básica que entra en la base (Regla de la máxima proporción). Entra en la base xs tal que c cs = max j yrs y rj < 0 yrj y el valor yrs es el pivote para construir la nueva tabla. En nuestro ejemplo: _ 1) El mayor valor negativo de los bi es -3 ⇒ x5 deja la base _ _ 2) Variable no básica yij Cj Cj/yij x1 -1 1 -1 x2 -2 4 -2 x4 -1 3 -3 max {-1, -2, -3} = -1 ⇒ x1 entra en la base y el pivote es -1. Aquí el pivote es negativo. Programación lineal avanzada - 21 Tabla 2 del m.s.d. Cj 1 4 0 3 0 0 CB base x1 x2 x3 x4 x5 x6 b 1 0 x1 x6 1 0 2 -3 -1 -2 1 -3 -1 2 0 1 3 -8 cj 0 2 1 2 1 0 sale x6 proporciones: _ Cj 2 1 2 yij -3 -2 -3 x2 x3 x4 -2/3 = -0’66 -1/2 = -0’5 -2/3 = -0’66 max {-0’66, -0’5} = -0’5 ⇒ entra x3 y el pivote es -2. Tabla 3 del m.s.d. CB base x1 x2 x3 x4 x5 x6 1 0 x1 x3 1 0 7 /2 3 /2 0 1 5 -2 -1 -1/2 -1/2 cj 0 1 0 1 2 /2 /2 3 /2 /2 1 /2 b 7 4 ≥0 ≥0 Z=7 _ _ Tabla óptima ⇔ Cj y b ≥ 0 Solución óptima del problema de programación lineal. OBSERVACIONES. 1.-) Resolución de problemas de maximización por el método del simplex dual. *La regla de salida es igual * Cambia la regla de entrada, que ahora va a ser de la mínima proporción Entra en la base xs tal que cj cs = min yrs yrj <0 yrj 2.-) ¿Qué sucede si falla el criterio de entrada? Es decir, todos los yij de la fila de la variable que sale son ≥ 0. Entonces el problema no tiene solución. ¿Por qué? ejercicio 3.-) ¿Cómo se puede saber, utilizando el método del simplex dual, que el problema original tiene solución no acotada? Ejercicio: pensarlo usando los corolarios 1-8 del teorema 1 de la dualidad Programación lineal avanzada - 22 Tema 6: Análisis de Sensibilidad y Programación Paramétrica 1. Análisis de sensibilidad. Se refiere al estudio de los cambios en la solución óptima y en el valor óptimo de Z debido a cambios en los datos del problema inicial, pero sin resolver el problema de nuevo desde el principio. Ejemplo. Una compañía fabrica 3 productos A, B y C. Los beneficios por unidad de estos productos son 2, 3 y 1 respectivamente, y para su fabricación son necesarios 2 recursos: trabajo y material. Supongamos que los valores óptimos a fabricar de los productos A, B y C se obtienen resolviendo el problema: Max Z = 2x1 + 3x2 + x3 1 Sujeto a: /3x1 + 1/3x2 + 1/3x3 ≤ 1 1 /3x1 + 4/3x2 + 7/3x3 ≤ 3 xi ≥ 0 (trabajo) (material) xi ≡ “unidades a fabricar del producto i” Tabla1 Cj 2 3 1 0 0 CB base x1 x2 x3 x4 x5 x4 x5 1 1 1 b 0 0 /3 7 /3 1 0 0 1 1 3 3 1 0 0 Z=0 0 1 -1/4 7 /4 1 0 -1/4 3 /4 1 /4 0 -17/4 0 -9/4 Z= x1 x2 1 0 0 1 -1 2 4 -1 -1 1 1 2 cj 0 0 -3 -5 -1 Z=8 cj Tabla2 0 3 /3 1 /3 2 x4 x2 1 cj 5 /4 /4 1 /3 4 /3 /4 /4 9 27 /4 Tabla3 2 3 x1 = 1 x2 = 2 Zopt = 8 Solución óptima Programación lineal avanzada - 23 1 P1 = /3 1 /3 1 P2 = /3 4 /3 1 P3 = /3 1 P4 = 7 /3 0 0 P5 = 1 C = (2,3,1,0,0) 1 b= 3 Max Z = Cx Ax = b x≥0 x1 ... C = (C1, C2, ..., Cn) 1xn x= xm nx1 xn A= A= a11 a21 ... a12 a22 ... ... ... ... a1n a2n ... mxn am1 am2 ... amn m<n [ P1 P2 … Pn ] b= b1 b2 ... mx1 bm Pi = a1i a2i … ami Supongamos que tenemos una solución factible obtenida a partir de una base B La solución básica xB = b = B −1b Z = CBb cualquier columna: Pj = B −1Pj ∀j de las variables no básicas Programación lineal avanzada - 24 mx1 ∀i = 1, ..., n π = CB B-1 Los beneficios relativos: c j = c j − πPj = c j − cB B −1Pj = c j − cB Pj ∀j de variables no básicas Programación lineal avanzada - 25 1. Modificaciones en los coeficientes de la función del objetivo. 1.1 Cambio en el Cj de una variable no básica. Variable no básica de interés → x3 (forma parte del problema pero no está en la base) c3 = −3 . Mientras c3 < 0 la solución actual (x1 y x2 en la base) sigue siendo óptima ⎛ − 1⎞ c3 = c3 − c B P3 = c3 − (2,3)⎜⎜ ⎟⎟ = c3 − 4 ⎝2⎠ c3 = c3 − 4 ≤ 0 ⇔ c3 ≤ 4 ⇒ si c3 > 4 entra x3 en la base Si, por ejemplo, c3=6 ⇒ c3 = 2 y haríamos una tabla más: CB 2 6 base x1 x2 x3 x4 x5 b x1 x3 1 0 1 /2 /2 0 1 7 1 /2 - /2 -1/2 1 /2 2 1 cj 0 -1 0 -4 -2 Z = 10 1 óptima 1.2 Cambio en el Cj de una variable básica. Analicemos, por ejemplo, como se altera la tabla óptima modificando C1: _ _ x1 y x2 están en la base ⇒ C1 = C2 = 0 _ _ C3 = C3 - CBP3 = 1 – (C1,3) _ C4 = 0 – (C1,3) _ C5 = 0 – (C1,3) -1 2 = C1 - 5 4 -1 = -4C1 + 3 -1 1 = C1 - 3 _ _ _ La tabla 3 seguirá siendo óptima mientras C3, C4 y C5 ≤ 0 (estamos maximizando). _ C3 ≤ 0 ⇔ C1 - 5 ≤ 0 ⇔ C1 ≤ 5 _ C4 ≤ 0 ⇔ -4C1 + 3 ≤ 0 ⇔ C1 ≥ 3/4 _ C5 ≤ 0 ⇔ C1 - 3 ≤ 0 ⇔ C1 ≤ 3 ⇒ si C1 ∈ [3/4,3] la tabla 3 sigue siendo óptima, si nos salimos del intervalo [3/4,3] la tabla ya no es óptima Programación lineal avanzada - 26 ≤5 ≥ 3/4 3 0 /4 3 ≤3 5 Si, por ejemplo C1 = 1 la solución de la tabla 3 (x1 = 1, x2 = 2) sigue valiendo, ⎛1⎞ ⎝ 2⎠ pero cambia Z opt = c B b = (1,3)⎜⎜ ⎟⎟ = 7 Cambio en Cj tanto de variables básicas como no básicas. Hagamos, por ejemplo, C1=1, C2=4, C3=2 En la tabla 3 hay que cambiar _ _ _ C1 = C2 = 0 (el Ci de las variables básicas siempre es 0) _ -1 C3 = 2 – (1,4) = -5 < 0 _ C4 = 0 – (1,4) _ C5 = 0 – (1,4) 2 4 =0 -1 -1 = -3 < 0 1 La solución de la tabla 3 sigue siendo óptima. Ahora Zopt=9 y tendríamos una solución óptima alternativa haciendo entrar a x4. Si alguno de los ci fuese > 0 la tabla no sería óptima y habría que seguir calculando tablas. En general, hay que recalcular la fila de los ci . Si la tabla deja de ser óptima, habría que continuar con el simplex. Programación lineal avanzada - 27 2. Modificaciones en las constantes de la derecha de las restricciones. Como, en cada tabla del simplex: Base = { xi1, xi2, …, xim } ⇒ B = [Pi1, Pi2, …, Pim] xB = b = B −1b es el vector solución Supongamos que en el problema del ejemplo se puede realizar 1 hora más de trabajo (b1 crece una unidad). ⎛ b ⎞ ⎛ 2⎞ b = ⎜⎜ 1 ⎟⎟ = ⎜⎜ ⎟⎟ ⎝ b2 ⎠ ⎝ 3 ⎠ b1 = 1 → b1 = 2 En la tabla óptima, B = (P1 P2) y B Luego −1 ⎛ 4 − 1⎞ ⎟⎟ = ⎜⎜ ⎝ −1 1 ⎠ ⎛ 4 − 1⎞⎛ 2 ⎞ ⎛ 5 ⎞ ⎟⎟⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ b = B −1b = ⎜⎜ ⎝ − 1 1 ⎠⎝ 3 ⎠ ⎝ 1 ⎠ Así, la nueva solución óptima es: x1 = 5 x2 = 1 x3 = 0 Zopt = 13 Entonces, por unidad aumentada en la disponibilidad del recurso 1, el beneficio que se obtiene es: 13-8 = 5 unidades. Definición- Se llama precio sombra, marginal o de equilibrio de la restricción (recurso) i al cambio que se produce en el valor de la función del objetivo por unidad aumentada en la disponibilidad del recurso i. Se prueba que los precios sombra de los recursos i = 1, …, m son la solución óptima yiopt del dual i = 1, …, m En nuestro caso: (y1opt,y2opt) = π 4 − 1⎞ ⎟⎟ = (5,1) ⎝ −1 1 ⎠ =CBB-1 = (2,3)⎛⎜⎜ Ahora bien, para que los precios sombra no den información errónea, debemos calcular cuál es el campo de variación de los bi en el que la solución sigue siendo óptima. Lo calculamos, por ejemplo, para b1: b1 b* = 3 Para que la tabla 3 siga siendo óptima, es preciso que B-1b* ≥ 0 4 -1 b1 4b1 – 3 4b1 – 3 ≥ 0 ⇔ b1 ≥ 3/4 -1 = ≥ 0⇔ B b* = -b1 + 3 ≥ 0 ⇔ b1 ≤ 3 -1 1 3 -b1 + 3 ⇒ Si b1 ∈ [3/4,3] la solución seguirá siendo óptima Programación lineal avanzada - 28 ⇒ x1 = 4b1 – 3 x2 = -b1 + 3 x3 = 0 Zopt = 2(4b1 – 3) + 3(-b1 + 3) = 5b1 + 3 13 Sea, por ejemplo b1 = 4, ahora B-1b = ≱0 -1 La tabla 3 queda: base x1 x2 x3 x4 x5 b x1 x2 1 0 0 1 -1 2 4 -1 -1 1 13 -1 cj 0 0 -3 -5 -1 Esta tabla no es factible primal, pero sí factible dual ⇒ aplicamos el Método del Simplex Dual: x2 deja la base y entra x4 base x1 x2 x3 x4 x5 x1 x4 b 9 1 Zopt = 18 ≥0 ≥0 3. Modificaciones en la matriz de coeficientes de las restricciones. 3.1Adición de una nueva actividad (variable). Supongamos que la compañía puede sacar a la venta un nuevo producto D, que requiere 1 unidad de trabajo y 1 unidad de material, con beneficio/unidad = 3. 1 Esto equivale a añadir una variable x6 y una columna en la tabla 1. _ 1 La tabla 3 seguirá siendo óptima si es C6 ≤ 0: ⎛1⎞ c6 = c6 − πP6 = 3 − (5,1)⎜⎜ ⎟⎟ = −3 ⎝1⎠ _ Luego la solución de la tabla 3 sigue siendo óptima. Si C6 > 0 se aplicaría el simplex. . 3.2 Variaciones en las condiciones de las variables existentes. 3.2.1 Cambios correspondientes a una variable no básica. Se hace como en 3.1 3.2.2 Cambios correspondientes a variables básicas. Mejor resolver el problema de nuevo, porque al cambiar la matriz básica B se cambian todas las columnas de la tabla. 3.3 Adición de nuevas restricciones. Supongamos que se añade una restricción referente a los servicios administrativos, de tal modo que los productos A, B y C requieren 1, 2 y 1 hora de servicios respectivamente, mientras las horas totales disponibles son 10. x1 + 2x2 + x3 ≤ 10 Programación lineal avanzada - 29 Si la solución óptima de la tabla 3 satisface la restricción, sigue siendo óptima: 1•1 + 2•2 + 1•0 ≤ 10, cumple la restricción Si la restricción fuese x1 + 2x2 + x3 ≤ 4: 1•1 + 2•2 + 1•0 ≰ 4 Añadimos la nueva restricción a la tabla 3: CB base x1 x2 x3 x4 x5 x6 b 2 3 0 x1 x2 x6 1 0 1 0 1 2 -1 2 1 4 -1 0 -1 1 0 0 0 1 1 2 4 cj 0 0 -3 -5 -1 0 (3ªF – 1ªF - 2•(2ªF)) CB base x1 x2 x3 x4 x5 x6 b x1 x2 x6 1 0 0 0 1 0 -1 2 -2 4 -1 -2 -1 1 -1 0 0 1 1 2 -1 cj 0 0 -3 -5 -1 0 x1 x2 x5 2 1 1 Zopt = 7 En la tabla 3, Zopt = 8 → ΔZopt = -1 Esto siempre es cierto: al añadir una restricción a un problema de programación lineal el nuevo valor de la función del objetivo es igual o peor que el anterior. Observaciones. Tiempo de resolución de un p.p.l ≡ f(m3), siendo m el número de restricciones A) Quitar restricciones inactivas o secundarias. B) Resolver C) Añadir y comprobar si las restricciones de A) son verificadas por la solución óptima. Programación paramétrica. 1. Costes (Beneficios) paramétricos Z = [C + λC*] x Ax = b Programación lineal avanzada - 30 x≥0 C = (C1, C2, …, Cn) λ ∈ℝ C = (C1*, C2*, …, Cn*) Primero se resuelve el problema para λ = 0. Sea B la base óptima: _ _ _ Cj ≤ 0 (Maximizando) Cj = Cj - CBPj _ _ _ _ _ _ Cj(λ) = (Cj + λCj*) – (CB + λCB*)Pj = (Cj - CBPj) + λ (Cj* - CB* Pj) = Cj + λCj* Programación lineal avanzada - 31 Ejemplo: Max Z = (2 + λ)x1 + (3 - λ)x2 + (1 + λ)x3 1 /3x1 + 1/3x2 + 1/3x3 ≤ 1 1 /3x1 + 4/3x2 + 7/3x3 ≤ 3 xi ≥ 0 Cj* Cj 1 2 -1 3 1 1 0 0 0 0 CB* CB base x1 x2 x3 x4 x5 b 1 -1 2 3 x1 x2 1 0 0 1 -1 2 4 -1 -1 1 1 2 cj 0 0 -3 -5 -1 0 0 4 -5 2 cj * Z = 8 = CBb Z * = −1 = C B* b ⎛ − 1⎞ ⎟⎟ = 4 ⎝2⎠ Por ejemplo, c3 = c3 − c B P3 = 1 − (1,−1)⎜⎜ * * * Z(λ) = Z + λZ* = 8 - λ _ C3(λ) = -3 + 4λ ≤ 0 ⇔ λ ≤ 3/4 _ C4(λ) = -5 -5λ ≤ 0 ⇔ λ ≥ -1 _ C5(λ) = -1 + 2λ ≤ 0 ⇔ λ ≤ 1/2 La solución sigue siendo óptima si λ ∈ [-1, 1/2]. Si λ > 1/2 ⇒ c5 (λ) > 0 (⇒ entra x5 y sale x2) base x1 x2 x3 x4 x5 b x1 x5 1 0 1 1 1 2 3 -1 0 1 3 2 cj 0 1 -1 -6 0 Z=6 0 -2 0 -3 0 Z* = 3 cj * La solución es óptima si c2 (λ ), c3 (λ ), c4 (λ ) ≤ 0 → ocurre si λ ≥ 1/2 Programación lineal avanzada - 32 y Z = 6 + 3λ Para λ < -1 c4 (λ ) > 0 base (⇒ sale x1 y entra x4) x1 x2 x3 x4 x5 x4 x2 1 0 1 -1/4 7 /4 1 0 -1/4 3 /4 1 cj 5 0 -17/4 0 -9/4 Z= 5 0 cj /4 /4 1 /4 * /4 11 /4 0 Z(λ) = 27/4 - 9/4λ Solución óptima si c1 (λ ), c3 (λ ), c5 (λ ) ≤ 0 ⇔ λ ≤ -1 Programación lineal avanzada - 33 3 /4 b /4 /4 9 27 /4 Z* = -9/4 2. Variación paramétrica del vector de recursos. Z = Cx Ax = b + αb* x≥0 b= b1 … bm b* = b1* … bm* α∈ℝ Primero resolvemos para α = 0. Sea B la base óptima: _ xB = b = B-1b _ _ _ Para b + αb*, xB = b = B-1(b + αb*) = B-1b + αB-1b* = b + αb* _ _ Si b + αb* ≥ 0 la base B seguirá siendo óptima. Ejemplo: Hagamos b* = 1 1+α b + αb* = -1 3-α Resolver para α = 0: base x1 x2 x3 x4 x5 b b* x1 x2 1 0 0 1 -1 2 4 -1 -1 1 1 2 5 -2 cj 0 0 -3 -5 -1 Z = 8 = CBb Z * = 4 = CBb * _ b = B-1b = 4 -1 1 1 = _ b* = B-1b = -1 1 3 4 -1 1 5 = -1 x1 = 1 + 5α x2 = 2 - 2α Zopt = 8 + 4α 2 1 -1 -2 ≥ 0 ⇔ α ≥ - 1/5 ≥0⇔α≤1 α ∈ [- 1/5,1] Si α > 1 ⇒ x2 < 0 y la solución actual no es factible, pero sí factible dual. Usando el Método del Simplex Dual obtenemos: CB base x1 x2 x3 x4 x5 b b* 2 0 x1 x4 1 0 4 -1 7 -2 0 1 3 -1 9 -2 -3 2 cj 0 -5 -13 0 -6 Z = 18 Z* = -6 Programación lineal avanzada - 34 x1 = 9 - 3α x2 = -2 + 2α Z = 18 -6α ≥ 0 si α ≤ 3 ≥ 0 si α ≥ 1 α ∈ [1,3] Si α > 3 ⇒ x1 < 0 y la solución actual no factible. Como en la fila de x1 no hay coeficientes negativos, el problema es NO FACTIBLE. Si α < - 1/5 ⇒ x1 < 0 ( y usamos Método del Simplex Dual: sale x1 y entra x5) base x1 x2 x3 x4 x5 b b* x5 x2 -1 1 0 1 1 1 -4 3 1 0 -1 3 -5 3 cj -1 0 -2 -9 0 Z=9 Z* = 9 x2 = 3 + 3α ≥0 x5 = -1 - 5α ≥0 si -1 ≤ α < - 1/5 Z = 9 + 9α Si α < -1 ⇒ x2 < 0 → problema NO FACTIBLE Programación lineal avanzada - 35 Programación lineal avanzada - 36 Programación lineal avanzada - 37 Tema 7. Programación lineal entera. Un p.p.l. entera es aquel en el que todas las variables de decisión (programación entera pura) o algunas de ellas (programación entera mixta) toman exclusivamente valores enteros. Una forma de tratar este problema es el redondeo (quedarse con la parte entera por arriba ó abajo teniendo cuidado de que la solución que así se obtenga sea factible) Algoritmo de ramificación y acotación (Branch and Bound Algorithm). Maximizar Z = 3x1+2x2 Sujeto a x1 ≤ 2 x2 ≤ 2 x1+ x2 ≤ 3.5 x1,x2 ≥ 0 y enteros. Soluciones enteras Z=3x1+2x2 Z(0,0)=0 Z(0,1)=2 Z(0,2)=4 Z(1,0)=3 Z(1,1)=5 Z(1,2)=7 Z(2,0)=6 Z(2,1)=8 óptimo Algoritmo. P.entera, transporte y asignación 1 Primero resolvemos el problema olvidándonos de la restricción de variables enteras (PL-1) Región factible ABCDE óptimo x1 =2, x2=1.5 ZOptimo=9 Sabemos que añadir las restricciones de que las variables sean enteras no puede mejorar la función del objetivo. Tenemos así que Z0=9 es una cota superior para el valor óptimo del problema inicial. Creamos ahora 2 nuevos problemas x2=1.5 x2≤1 x2≥2 P.entera, transporte y asignación 2 PL-2 Maximizar Z = 3x1+2x2 x1≤ 2 x2≤ 2 x1+ x2 ≤ 3.5 x2≤ 1 x1,x2 ≥ 0 PL-3 Maximizar Z = 3x1+2x2 x1≤ 2 x2≤ 2 x1+ x2 ≤ 3.5 x2≥ 2 x1,x2 ≥ 0 PL-2 P.entera, transporte y asignación 3 PL-3 Región factible = segmento AB La solución óptima de PL-2 es x1 =2, x2=1 ZOptimo=8 Así tenemos una s.f. entera de PL-1 (Fijarse que cada solución entera factible de PL-1 está contenida en PL-2 ó en PL-3). Aunque PL-2 pueda contener otras soluciones enteras, sus valores de la función objetivo no pueden ser más grandes que 8, ⇒ Z=8 es una cota inferior del valor máximo de Z en el PL-1. Luego 8≤ Zoptimo≤9 En PL-3 la solución óptima es x1 =1.5, x2=2 ZOptimo=8.5 x1 no es factible (no es entero) para PL-1 pero Z=8.5>8, ⇒ hay que construir 2 nuevos problemas PL-4 PL-3 + restricción x1≤ 1 PL-5 PL-3 + restricción x1≥ 2 P.entera, transporte y asignación 4 PL-5 No tiene región factible. PL-4 Solución óptima entera: x1 =1, x2=2 ZOptimo=7 pero es peor que 8. Por tanto la solución óptima es la de PL-2 x1 =2, x2=1 ZOptimo=8 El árbol obtenido es el siguiente: P.entera, transporte y asignación 5 DETALLES GENERALES · MIP (Mixed Integer Program) Maximizar Z = CX Sujeto a AX = b ≥ 0 X Xj entera para j perteneciente a I = {índices de las variables enteras} · Se resuelve el MIP sin condiciones enteras. A este problema le llamamos PL-1 con solución óptima Z1. Supongamos que la solución óptima toma valores no enteros en alguna variable entera, y por lo tanto no es solución del MIP. Sí es, en cambio, una cota superior del valor óptimo de Z en el MIP. Se elige una variable entera Xj que dio no entera. Si Xj = βj, se construyen 2 nuevos problemas: P.entera, transporte y asignación 6 PL-2: Maximizar Z = CX AX = b Xj ≤ βjX≥0 PL3: Maximizar Z = CX AX = b Xj≥ βj+ X≥0 · Para elegir la variable Xj en la que hacer la bifurcación hay las siguientes reglas: 1). A ojo o al azar. 2). Por prioridades, según... · La variable representa una decisión importante en el problema. · Su coste (o beneficio) es más grande que en las demás variables. · Decisión según resolución anterior del problema. · Como PL-2 y PL-3 son PL-1 con una nueva restricción añadida, podemos usar el MSD (Método del Simplex Dual) para encontrar sus soluciones óptimas. · Supongamos que las soluciones óptimas de PL-2 y de PL-3 siguen siendo fraccionarias. El siguiente paso consiste en seleccionar PL-2 o PL-3 para hacer una nueva ramificación. Para ello: a). Se elige aquel problema cuyo valor óptimo sea el mejor. b). Se selecciona el problema resuelto más recientemente (Last-in-First-out rule, LIFO) · Continuamos así la sucesión de ramificaciones y resolución de p.p.l hasta resolver uno que tenga solución entera. El valor de la función objetivo en este caso será una cota inferior del valor óptimo del MIP original. En este momento podemos dejar de considerar todos aquellos nodos cuyos valores de Z no sean mejores que la cota inferior. Se dice que esos nodos han sido saturados. · DEFINICIÓN: un nodo intermedio está explícita o implícitamente saturado siempre que se satisfaga una de las siguientes condiciones: 1). La solución óptima del p.p.l correspondiente es entera. 2). El p.p.l correspondiente es no factible. 3). El valor óptimo de Z para el p.p.l correspondiente no es mejor que la cota inferior actual. P.entera, transporte y asignación 7 · Del árbol mostrado en la figura superior: · El Nodo 4 está saturado. Cualquier solución del problema MIP no puede ser mejor que esta. · El Nodo 5 está saturado por ser no factible. · Supongamos que Z6 < Z4, el Nodo 6 está saturado implícitamente. · En el caso de que Z7 > Z4, habría que ramificar a partir del Nodo7. · Notas - La eficacia del método radica en la rapidez con que se saturen los nodos. - Es importante mantener el número de variables enteras lo menor posible. - Proporcionar cotas ajustadas superiores e inferiores de Zoptimo. - Al contrario que un p.p.l general, la adición de nuevas restricciones a un MIP generalmente reducirá el tiempo de computación, especialmente cuando las nuevas restricciones contengan variables enteras. - A veces llega con que: [(CotaSuperior Z - CotaInferior Z) / CotaSuperior Z] < [% pequeño del óptimo continuo] P.entera, transporte y asignación 8 Tema 8: Problemas Especiales de Programación Lineal. Problemas de Transporte. Consideremos: M almacenes con existencias a1, a2, …, aM N mercados con demandas b1, b2, …, bN Sea Cij ≡ coste por unidad enviada del almacén i al mercado j i = 1…M j = 1…N Se trata de calcular la cantidad a enviar desde cada almacén hasta cada mercado minimizando el coste total del transporte. ALMACÉN MERCADO 1 • 2 • • 1 • 2 i • … … M • … • j … • N Sea xij = “nº de unidades o cantidad enviada desde el almacén i al mercado j” M N Función objetivo: Min Z = ∑ ∑ Cij xij i=1 j=1 Sujeto a: Las restricciones vienen dadas por las capacidades de los almacenes y las exigencias de los mercados. 1 • i • … xij xi1 • 1 … xi1 + xi2 + … + xij + … + xiN cantidad total enviada desde el almacén i-ésimo • j ≤ ai M • … ∀i=1,2,…,M existencia en el almacén i-ésimo P.entera, transporte y asignación 9 xiN … • N 1 • i • … x1j xij • 1 … • j x1j + x2j + … + xij + … + xMj xMj … • N ∀j=1,2,…,N ≥bj cantidad total que recibe el mercado j M • … cantidad demandada por el mercado j M N Queda Min Z = ∑ ∑ Cij xij i=1 j=1 N sujeto a: ∑ xij ≤ ai i=1…M j=1 M ∑ xij ≥ bj j=1…N i=1 xij ≥ 0 ∀i,j M+N restricciones MxN variables Es evidente que el problema es factible (tiene solución) si: M N i=1 j=1 ∑ ai ≥ ∑ bj almacenado demandado M N i=1 j=1 Si ∑ ai = ∑ bj se tiene un problema de transporte estándar: M N Min Z = ∑ ∑ Cij xij i=1 j=1 sujeto a: N ∑ xij = ai j=1 M ∑ xij = bj i=1 i=1…M j=1…N xij ≥ 0 ∀i,j Desarrollaremos técnicas de resolución para problemas de este tipo, por ello, si no se cumple que: ∑ ai = ∑ bj P.entera, transporte y asignación 10 por ejemplo si: M N i=1 j=1 ∑ ai > ∑ bj (I) (La cantidad enviada es mayor que la cantidad demandada. Habrá una cierta cantidad que no se enviará. Se crea entonces un mercado ficticio, llamado N+1, con demanda precisamente igual a esa cantidad). 1 • 2 • … N • • • … • • b1 b2 bN bN+1 mercado ficticio El problema se reescribe: xi,N+1 M N i=1 j=1 = ∑ ai - ∑ bj con Ci,N+1 = 0 ∀i=1…N exceso de mercancía i=1,…,M lo que sobra en el almacén i M N+1 Min Z = ∑ ∑ Cij xij i=1 j=1 sujeto a: N+1 ∑ xij = ai i=1…M j=1 M ∑ xij = bj i=1 ∀i,j xij ≥ 0 Si: j=1…N+1 M N i=1 j=1 ∑ ai < ∑ bj ( II ) (La cantidad enviada es menor que la demandada. No se cumplirán todas las demandas y habrá una cierta pérdida en algún mercado. Se crea entonces un almacén ficticio, llamado M+1, con la cantidad que falta). P.entera, transporte y asignación 11 almacén ficticio a1 a2 • • • • b1 b2 aM aM+1 … • • … • N M = ∑ bj - ∑ ai con CM+1,j = 0 y xM+1,j es la j=1 i=1 la pérdida en el mercado j bN El problema se reescribe: M+1 N Min Z = ∑ ∑ Cij xij i=1 j=1 sujeto a: N ∑ xij = ai i=1…M+1 j=1 M+1 ∑ xij = bj j=1…N i=1 xij ≥ 0 ∀i,j El problema de Transporte estándar puede expresarse en forma de tabla con los datos (ai, bj, Cij). 1 Almacenes 1 x11 2 x21 2 x12 C11 C12 x22 C21 C22 Mercados 3 x13 C13 x23 C23 … N Existencias x1N C1N x12N C2N … i Demandas a2 … xi1 xi2 xi1 Ci1 xiN Ci2 Ci3 CiN … M a1 ai … xM1 xM2 CM1 b1 xMN xM3 CM2 b2 CM3 b3 CMN … Sumas xij por filas = existencias ⇒ RESTRICCIONES DE ALMACENAJE Sumas xij por columnas = demandas ⇒ RESTRICCIONES DE DEMANDAS P.entera, transporte y asignación 12 bN aM Obtención de una solución factible básica inicial: El problema de transporte tiene M+N restricciones ⇒ una solución factible básica necesita, en principio, M+N variables básicas. M N M i=1 j=1 i=1 Ahora bien, dado que ∑ ∑ xij = ∑ ai M (sumamos todas las ecuaciones ∑ xij = ai) j=1 M ∀j=1…N ∑ xij = bj i=1 N M N j=1 i=1 j=1 ∑ ∑ xij = ∑ bj M = ∑ ai i=1 Sistema de ecuaciones / suma de las M primeras filas = suma de las N restantes ⇒ 1 ecuación es linealmente dependiente de las demás ⇒ El problema de transporte estándar tiene M+N-1 restricciones linealmente independientes ⇒ Una solución factible básica necesita M+N-1 variables básicas. Hay diferentes métodos para resolver la solución factible básica inicial, nosotros sólo vemos 2. (1) Obtención de una solución factible básica inicial (2) Comprobar si es óptima NO SI FIN Se mejora obteniendo otra solución factible básica (3) (1) Hay varios métodos: esquina noroeste, coste mínimo, de Vogel, de aproximación de Russell… (2) Método U-V (3) Algoritmo de Steeping-Stone Método de la esquina noroeste. Consiste en elegir como variables básicas (>0) aquellas que ocupen la esquina noroeste en la tabla de transporte estándar. M1 M2 M3 M4 P.entera, transporte y asignación 13 capacidades A1 2 2 2 1 3 A2 10 8 5 4 7 A3 7 6 6 8 5 15 demandas 4 3 4 4 ‖ b1 ‖ b2 ‖ b3 ‖ b4 + + + = a1 + = a2 + = a3 Elegimos x11 = min{3,4} = 3 A1 A2 A3 M1 3 M2 0 M3 0 M4 0 4-3=1 3 4 4 M2 0 M3 0 M4 0 3 4 4 M2 0 3 0 0 M3 0 M4 0 4 4 M2 0 3 0 0 M3 0 3 M4 0 0 4-3=1 4 M2 0 3 0 M3 0 3 1 M4 0 0 4 3-3=0 7 5 Elegimos x21 = min{a2, b1’} = min{7,1} = 1 b1’ es el b1 después de restarle lo que enviamos A1 A2 A3 M1 3 1 0 1-1=0 0 7-1=6 5 Elegimos x22 = min{a2’, b2} = min{6,3} = 3 A1 A2 A3 M1 3 1 0 0 0 6-3=3 5 Elegimos x23 = min{b2’, a3} = min{3,4} = 3 A1 A2 A3 M1 3 1 0 0 0 0 5 Elegimos x33 = min{a3’, b3} = min{1,5} = 1 A1 A2 A3 M1 3 1 0 P.entera, transporte y asignación 14 0 0 5-1=4 0 0 0 4 M+N-1 = 4+3-1 = 6 variables básicas > 0. Z = 3•2 + 1•10 + 3•8 + 3•5 + 1•6 + 4•8 = 93 Método del coste mínimo. Consiste en ir eligiendo como variables básicas (>0) aquellas que tengan menor coste. A1 A2 A3 M1 2 10 7 4 Menor coste C14 = 1 A1 A2 A3 M2 2 8 6 3 A1 A2 A3 A1 A2 A3 M4 3 M1 0 M2 0 M3 0 4 3 4 3 7 5 M2 0 1 M3 0 4 3 4 M1 0 M2 0 M3 0 4 0 4 3 M1 0 M2 0 0 3 M1 0 2 2 4 0 7 5 x24 = min{7,1} = 1 M1 0 4 A1 A2 A3 M4 1 4 8 4 x14 = min{3,4} = 3 Menor coste de celdas sin ocupar C24 = 4 A1 A2 A3 M3 2 5 6 4 3 4 0 M2 0 0 3 0 M4 3 1 0 1 0 6 5 0 M4 3 1 0 0 M3 0 4 0 0 M4 3 1 0 0 M3 0 4 0 0 M4 3 1 0 0 P.entera, transporte y asignación 15 0 7 0 6 2 5 0 2 5 2 0 2 2 Z = 79 Método de Steeping-Stone (Mejora de la solución factible básica inicial). Primero es preciso saber si la solución factible básica inicial es óptima o no. En el ejemplo anterior: M1 M2 0 A1 0 2 4 5 3 0 7 4 1 1 8 2 A3 2 0 10 M4 3 2 2 A2 M3 0 4 0 6 3 6 4 8 4 3 7 5 Actualmente x11 = 0, si hacemos x11 = 1 M1 +1 -1 A1 A2 M4 -1 +1 _ C11 = C11•(cambio en x11) + C14•(cambio en x14) + C21•(cambio en x21) + C24•(cambio en x24) = 2•(1) + 1•(-1) + 10•(-1) + 4•(+1) = -5 beneficio relativo de x11 Se pueden calcular todos los beneficios relativos de las variables no básicas simultáneamente, mediante el método U-V o MODI (Modified Distribution Method). Método U-V. Se calculan números: Ui ∀i=1…M ∀j=1…N tales que: Cij = Ui + Vj para cada variable básica Vj _ Se tendrá que Cij = Cij - (Ui + Vj) para cada variable no básica. M1 A3 M3 M4 • A1 A2 M2 2 2 • 2 • 10 • 1 • 8 5 4 6 6 8 • 7 Hacemos U1 = 0 → V4 = 1→ U2 = 3 → V1 =7 y V3 = 2 _ C11 - (U1 + V1) = 2 – (0+7) = -5 _ A1 M4 U1 + V4 = 1 U2 + V1 = 10 U2 + V3 = 5 U2 + V4 = 4 U3 + V1 = 7 U3 + V2 = 6 U3 = 0 → V2 = 6 P.entera, transporte y asignación 16 C12 = 2 - (0 + 6) = -4 _ C13 = 2 – (0 + 2) = 0 _ C22 = 8 – (3 + 6) = -1 _ C33 = 6 – (0 + 2) = 4 _ C34 = 8 – (0 + 1) = 7 V1 = 7 V2 = 6 V3 = 2 V4 = 1 • U1 = 0 2 2 • U2 = 3 • 10 • U3 = 0 2 1 • 8 5 4 6 6 8 • 7 Las casillas sin marca • serán las variables no básicas. 2-7-0 = -5 2-6-0 = -4 V1 = 7 V2 = 6 -5 U1 = 0 -4 2 0 -1 U3 = 0 0 2 0 10 8 0 V4 = 1 0 2 U2 = 3 V3 = 2 0 5 4 7 1 0 6 4 7 6 Menor beneficio relativo negativo -5 ⇒ x11 entra en la base: +θ 2-θ 2 4 3 3 4 3-θ 1+θ 4 4 Máximo valor para θ = 2, porque sino en x21 pasaría a ser negativo y no puede ser. 3 7 5 (Steeping-Stone) Nueva solución factible básica: 2 0 2 4 3 1 3 Z = 69 P.entera, transporte y asignación 17 8 Miramos si es óptima (método U-V) V1 = 2 V2 = 1 1 × U1 = 0 4 10 × U3 = 5 7 V4 = 1 0 2 2 5 U2 = 3 V3 = 2 8 2 × 5 -1 × × 1 4 2 6 6 × 8 Solución no óptima; entra x33 en la base: 2+θ 2-θ 3 4-θ +θ 3 3 1 Máximo valor posible para θ = 1 1-θ 3+θ 3 1 4 Z = 68 y se comprueba que es la óptima. Problemas de Asignación. Formulación general de un problema de asignación estándar: Se tienen N máquinas y N trabajos diferentes. Cada máquina puede realizar un único trabajo y cada trabajo sólo puede efectuarlo una máquina. Se supone que el coste de realización de cada trabajo por cada máquina varía. El problema consiste en resolver qué trabajo realiza cada máquina de manera que el coste total de realización de los N trabajos sea mínimo. M1 M2 … MN N máquinas T1 T2 … TN N trabajos Mij ≡ la máquina i realiza el trabajo j con coste Cij, i = 1…N, j=1,…N Si la máquina i no puede realizar el trabajo j se escribirá Cij = M con M → ∞ Una manera intuitiva de resolver este problema es enumerar todas las posibilidades y calcular Z en ellas. ¿Cuántas asignaciones posibles hay? Ej// Para 2 máquinas y 2 trabajos: T1 T2 M1 C11 C12 P.entera, transporte y asignación 18 C21 C22 1ª asignación: M1 → T1 M2 → T1 M2 → T1 Coste = C11 + C22 Coste = C21 + C12 M2 2ª asignación: M1 → T2 Formulamos el problema de asignación como un problema de programación lineal. Sea xij = 1 si la máquina i realiza el trabajo j 0 no Dado que cada máquina realiza un único trabajo: N ∑ xij = 1 i = 1…N j=1 suma de trabajos que realiza la máquina i Dado que cada trabajo se le asigna a una única máquina: N ∑ xij = 1 j = 1…N i=1 cantidad de máquinas que realizan el trabajo j Función objetivo: M1 M2 … MN N N Min ∑ ∑ Cij xij T1 C11 C21 T2 C12 C22 CN1 1 CN2 1 i=1 j=1 … TN C1N C2N CNN 1 1 1 Tabla de costes de asignación estándar 1 En general en un problema de transporte necesitaríamos 2N-1 variables básicas > 0, cuando en los problemas de asignación sólo habrá N variables > 0. No usaremos ni transporte ni simplex porque trabajaríamos con soluciones degeneradas. Formulación general de un problema de asignación no estándar: a) Hay más máquinas que trabajos → creamos “trabajos” ficticios con coste de realización cero. b) Hay más trabajos que máquinas → creamos “máquinas” ficticias con coste de realización trabajo/máquina ficticia = 0. Método o Algoritmo Húngaro (König). El principio básico radica en que la asignación óptima no cambia si se suma o se resta una constante a una fila o columna de la tabla de costes de asignación estándar. P.entera, transporte y asignación 19 El método consiste en restar una cantidad a las filas y/o columnas de manera que se encuentre una asignación óptima a simple vista. Iniciamos el algoritmo examinando cada fila (columna) de la matriz de costes para identificar el elemento más pequeño. Esa cantidad se le resta a todos los elementos de dicha fila (columna). Esto origina una tabla que contiene al menos un cero en cada fila (columna). Ahora se intenta realizar una asignación factible usando las celdas con coste cero. Si es posible, se tendrá una asignación óptima. Ejemplo: M1 M2 M3 M4 T1 10 3 2 4 T2 9 4 1 3 T3 8 5 1 5 T4 7 6 2 6 T2 2 1 0 0 T3 1 2 0 2 → → → → mínimo = 7 mínimo = 3 mínimo = 1 mínimo = 3 A cada xij le restamos el mínimo de su fila: T1 3 0 1 1 M1 M2 M3 M4 T4 0 3 1 3 Utilizando los ceros intentamos realizar una asignación factible: M1 → M2 → M3 → → M4 → T4 T1 T2 T3 T2 M3 → M4 → T3 T2 y ésta es la asignación óptima. Ejemplo: 4 máquinas, 4 trabajos M1 M2 M3 M4 T1 10 5 5 2 T2 9 8 4 3 T3 7 7 6 4 T4 8 7 5 5 → → → → mínimo = 7 mínimo = 5 mínimo = 4 mínimo = 2 Cogemos el mínimo por filas y se lo restamos: T1 T2 T3 T4 M1 3 2 0 1 M4 M2 → T1 M2 0 3 2 2 → T1 M3 1 0 2 1 M4 0 1 2 3 Como dos máquinas estarían realizando el mismo trabajo no sería una asignación óptima. Cogemos el mínimo por columnas: M1 → T3 T1 T2 T3 T4 M1 3 2 0 0 M2 0 3 2 1 M3 1 0 2 0 P.entera, transporte y asignación 20 M4 M2 → T1 M3 → T2 → T4 M4 → T1 0 1 2 2 → T4 Lo que se hace ahora es trazar líneas de modo que se cubran todas las celdas con ceros. El teorema de König establece que el número mínimo de líneas necesario es igual al número máximo de trabajos que pueden asignarse usando dichas celdas. M1 M2 M3 M4 T1 3 0 1 0 T2 2 3 0 1 T3 0 2 2 2 T4 0 1 0 2 Ahora se selecciona el elemento más pequeño no cubierto por las líneas, que en este ejemplo es el 1. Se resta este número de todos los elementos no cubiertos, y se le suma a los cubiertos que sean intersección de dos líneas. Es equivalente a restar 1 de la 2ª y 4ª fila y sumar 1 a la T1 T2 T3 T4 1ª columna, por lo que la asignación M1 4 2 0 0 óptima no varía. M2 0 2 1 0 M3 2 0 2 0 M4 0 0 1 1 M1 → → T3 T4 M2 → → T1 T4 M3 → → T2 T4 M4 → → T1 T2 Las asignaciones serían: M1 → M2 → M3 → M4 → T3 T1 T4 T2 ó M1 → M2 → M3 → M4 → T3 T4 T2 T1 Zopt = 20 P.entera, transporte y asignación 21