Source: http://docplayer.es/4159884-5-programacion-lineal-entera-y-mixta.html
Timestamp: 2018-02-18 05:22:20+00:00

Document:
5 Programación lineal entera y mixta - PDF
Download "5 Programación lineal entera y mixta"
Miguel Santos Farías
1 Programación lineal entera y mixta Programación lineal entera y mixta 5.1 Introducción En algunas situaciones que pueden representarse con modelos lineales, nos encontramos con que sólo tienen sentido aquellas soluciones de la región factible en las que todas o algunas de las variables de decisión sean números enteros. Estas situaciones pueden representarse mediante modelos matemáticos ligeramente diferentes de la programación lineal. Si todas las variables de decisión deben ser enteras, tenemos un problema de programación lineal entera. Si sólo algunas variables de decisión deben ser enteras, pudiendo ser reales las demás, se trata de un problema de programación lineal mixta. En algunos casos, todas o algunas de las variables enteras sólo pueden tomar los valores de 0 o 1. A estas variables se les llama variables binarias. De este modo tenemos tres tipos de variables: a) Variables no enteras o reales b) Variables enteras c) Variables binarias La posibilidad de utilizar variables enteras o binarias amplía notablemente las posibilidades de modelización matemática. El precio por una mayor versatilidad de la herramienta es el de una mayor complejidad en la resolución del modelo. Esta complejidad se debe a los siguientes hechos: Para las variables enteras del modelo, el razonamiento que se empleó para mostrar que la solución óptima era un vértice (o una combinación convexa de vértices) de la región factible no es válido: en un caso general, los vértices de la región factible no tienen porqué ser números enteros. En consecuencia, la solución óptima se encontrará en el interior de la región factible, por lo que el método símplex, empleado de forma directa, no proporcionará la solución óptima. A diferencia del problema con variables reales, el número de soluciones de un modelo de programación lineal entera es finito, por lo que podría plantearse la posibilidad de encontrar la solución mediante la exploración de todas las soluciones posibles. Sin embargo, el número de soluciones a explorar para un problema mediano puede ser muy elevado: en principio, para un problema con n variables enteras debemos explorar 2 n soluciones (excluyendo quizás algunas descartadas por las restricciones). Para n = 30, tenemos 2 30 = soluciones posibles. Se han desarrollado metodologías que permiten explorar de manera más eficiente que la mera enumeración el conjunto de soluciones posibles. Gran número de estas metodologías emplean la lógica del branch and bound, y están incorporadas a la mayoría de programas informáticos que resuelven modelos lineales. Seguidamente se muestra este procedimiento y cómo resolver modelos de programación entera mediante programas informáticos.
2 102 Métodos cuantitativos en organización industrial I 5.2 Metodología de resolución: algoritmo branch and bound Un primer paso para la resolución de un modelo de programación lineal entera es resolver, mediante el método símplex, el problema lineal asociado. Se trata de un problema lineal con la misma función objetivo y restricciones que el modelo original, pero al que se han relajado la condición de que todas o algunas de las variables de decisión sean enteras. Si la solución así obtenida es entera, habremos encontrado la solución del modelo de programación lineal entera. En caso contrario (el más frecuente), la solución así obtenida es una primera aproximación a la solución del modelo. Resulta tentador redondear los valores no enteros a enteros en la solución obtenida para el problema lineal asociado. Esto sólo se puede hacer si los valores de las variables son tan grandes que el redondeo no afecta excesivamente al resultado final, pero se debe tener cuidado al hacerlo pues se corren dos riesgos: 1. Es posible que la solución redondeada no sea factible. 2. Aún siendo factible, no existe ninguna de garantía que la solución sea óptima. Estos dos problemas se ilustran en el ejemplo 2.a: Ejemplo 2.a Encontrar la solución al modelo de programación entera: [MAX] z = 10x + y x + 6y 50 12x + y 60 x, y 0, enteras Podemos empezar por resolver el problema lineal asociado: [MAX] z = 10x + y x + 6y 50 12x + y 60 x, y 0 La solución de este problema es: x* = 4,366 y* = 7,605 z* = 51,267 Claramente, ésta no es la solución del problema entero. Como al redondear uno de los dos resultados por exceso salimos de la región factible, es tentador dar como buena la solución: x = 4 y = 7 z = 47 Sin embargo, si exploramos el conjunto de posibles soluciones a partir de la representación gráfica, o bien introducimos el problema en un programa informático que resuelva modelos de programación entera, encontramos que la solución óptima es: x* = 5 y* = 0 z* = 50
3 Programación lineal entera y mixta 103 El valor de la función objetivo es algo inferior al del programa lineal asociado, dado que se encuentra dentro de la región factible, aunque no tan pequeña como la solución obtenida por redondeo. El ejemplo 2.a nos muestra la necesidad de encontrar un procedimiento que nos permita, a partir del problema lineal asociado, ir explorando las soluciones enteras hasta encontrar el óptimo del modelo de programación entera. Este procedimiento es el algoritmo de branch and bound. Se trata de ir añadiendo restricciones al programa lineal asociado hasta encontrar la solución entera óptima. Para ello se procede en dos pasos: ramificación (branch) y acotamiento (bound) Ramificación Se trata de añadir restricciones al modelo que fuercen a que una de las variables sea entera. Esto se consigue añadiendo una de estas dos restricciones para alguna de las variables x Bi que no sea entera en la solución obtenida hasta el momento: Redondeo por defecto: imponemos que la variable x Bi sea inferior o igual a la parte entera del valor de esa variable en el óptimo del problema lineal x Bi con las restricciones obtenidas hasta el momento. Esto equivale a añadir la restricción: x i E(x Bi ) Redondeo por exceso: imponemos que la variable x i sea mayor o igual al entero inmediatamente superior del valor x Bi. Esto equivale a añadir la restricción: x i E(x Bi ) + 1 Seguidamente, procederemos a resolver mediante el método símplex dos problemas lineales. El primero, además de las restricciones que pudiera tener de etapas anteriores, llevará incorporada la restricción de redondeo por defecto incorporada en esta etapa. El segundo se diferenciará del primero en que incluirá la restricción de redondeo por exceso, en vez de la de redondeo por defecto Acotamiento Para mostrar el razonamiento de la etapa de acotamiento, utilizaremos un problema de máximo. El lector puede realizar, si lo desea, el mismo razonamiento para el problema de mínimo. Más arriba se mostró que la solución óptima del modelo de programación lineal entera se encuentra dentro de la región factible. Esto significa que, para un problema de máximo, el óptimo del programa entero será menor o igual que el óptimo del problema lineal asociado. Al hacer la ramificación, hemos encontrado dos alternativas posibles para obtener la solución entera. Los valores óptimos de la función objetivo z* de cada uno de los programas lineales resueltos en la etapa anterior serán una cota superior de las posibles soluciones que obtengamos mediante posteriores ramificaciones a partir de ese modelo. En consecuencia, sólo tendrá sentido continuar con el procedimiento de ramificación a partir del problema lineal que tenga la mayor z* de los dos. Siguiendo la otra ramificación, obtendremos soluciones enteras con valores de z* inferiores, con toda seguridad, a los que obtendríamos con la otra ramificación, y por tanto subóptimos. Este hecho nos marca, además, cuándo debemos detenernos en la exploración de soluciones enteras: cuando el problema escogido tenga una solución con todas las variables enteras. Por ser el valor de la función objetivo una cota superior del óptimo, cualquier otra solución entera que pudiéramos explorar sería subóptima, y por lo tanto no vale la pena seguir explorando. Cuál será la solución óptima del modelo de programación entera? No necesariamente la obtenida en la última etapa, sino la solución entera con mayor valor de función objetivo de las obtenidas en el proceso.
4 104 Métodos cuantitativos en organización industrial I Puede suceder que alguna de las ramificaciones abandonadas condujera a una solución entera que en aquel momento tuviera un valor de z* inferior al de la otra ramificación, pero mayor que la z* obtenida al final. Seguidamente se expone el algoritmo descompuesto en pasos. El ejemplo 2.b muestra el funcionamiento del algoritmo para un caso concreto. Paso 0 Paso 1 Paso 2 Paso 3 Paso 4 Resolver el problema lineal asociado al problema entero: misma función objetivo y restricciones, pero variables no enteras. Si la solución obtenida es entera: finalizar. El óptimo será aquella solución entera con mejor valor de la función objetivo. Si no, ir a paso 2. Escoger una variable básica cuyo valor en la solución x Bi no sea entero. Ramificación: resolver dos nuevos problemas lineales. Al primero se le añade la restricción: x i E(x Bi ) (redondeo por defecto). Al segundo añadiremos la restricción: x i E(x Bi ) + 1 (redondeo por exceso). Acotación: de los dos problemas, escoger aquel que dé como resultado un valor mejor de la función objetivo. Paso 5 Ir a paso 1. Ejemplo 2.b Problema de la granja en variables enteras (A) Nuestro granjero decide ahora subdividir su terreno en 6 campos de la misma área, de modo que en cada campo sólo podrá plantar un tipo de cultivo, ya sea cebada o lechugas. El granjero ha calculado que según el precio mínimo garantizado por el Gobierno Europeo y después de restar todos los costes, obtendrá un beneficio neto de 1000 euros por campo de cebada y 1600 euros por campo de lechugas. La recogida de un campo de cebada necesita 80 horas de mano de obra y la de un campo de lechugas 160 horas. Durante la cosecha el granjero dispondrá de 700 horas disponibles de mano de obra. Existe además la restricción de que no podrá plantar más de 3 campos de cebada. Cuántos campos de lechugas y cuántos campos de cebada debe cultivar el agricultor para maximizar su beneficio? El problema del agricultor puede resolverse con el siguiente modelo de programación lineal entera: Variables de decisión: CEB: campos en que cultivará cebada el agricultor. Debe ser una variable entera. LEC: campos en que el agricultor cultivará lechugas. Debe ser también una variable entera. Función objetivo: [MAX] z = 1000CEB LEC Restricciones: CEB 3 80CEB + 160LEC 700
5 Programación lineal entera y mixta 105 CEB + LEC 6 CEB 0 LEC 0 En la figura 5.2.b se muestra la resolución de este modelo de programación entera, mediante el algoritmo de ramificación y acotamiento. Nótese como la solución entera no puede obtenerse por redondeo de la solución del modelo con variables reales. Es destacable también que el valor del óptimo del modelo con variables enteras es peor que la del modelo con variables reales. Para este modelo, podemos interpretar que el hecho de sembrar un campo con un solo cultivo es una opción menos flexible que cultivar diferentes productos en un mismo campo, y en consecuencia la solución es peor. Conjunto de soluciones a explorar Valor de la función objetivo para la solución Todas CEB* = 3 LEC* = Z* = 7600 Valor de las variables en la solución relajada LEC 2 CEB* = 3 LEC* = 2 Z* = 6200 LEC 3 CEB* = 2.75 LEC* = 3 Z* = 7550 LEC 3, CEB 2 CEB* = 2 LEC* = Z* = 7400 LEC 3, CEB 3 NO FACTIBLE LEC 3, CEB 2 CEB* = 2 LEC* = 3 Z* = 6800 LEC 4, CEB 2 CEB* = 0.75 LEC* = 4 Z* = 7150 Solución óptima para el PE LEC 4, CEB 0 CEB* = 0 LEC* = Z* = 7000 LEC 4, CEB 1 NO FACTIBLE LEC 4, CEB 0 CEB* = 0 LEC* = 4 Z* = 6400 LEC 5, CEB 0 NO FACTIBLE Figura 5.2.a Branch and bound para el ejemplo 2.b
6 106 Métodos cuantitativos en organización industrial I 5.3 Resolución de programación entera mediante programas informáticos Gran parte de los paquetes informáticos que resuelven programación lineal resuelven también programación entera, usando variantes más o menos sofisticadas del algoritmo de bifurcación y acotamiento expuesto en 5.2. Hay que decir que la introducción de variables enteras aumenta considerablemente el número de cálculos a realizar, por lo que nos podemos encontrar con limitaciones al número de variables enteras que podemos introducir en el modelo. En el caso del programa LINDO, se utilizan dos instrucciones: INTEGER <nombre de la variable> Mediante la instrucción INTEGER, se indica al programa que la variable designada es binaria, esto es, que sólo puede tomar los valores 0 o 1. GIN <nombre de la variable> Mediante la instrucción GIN, se indica al programa que la variable designada es entera positiva. Ambas instrucciones deben insertarse después de la instrucción END, que indica al programa el fin del modelo lineal considerado. Ejemplo 3.a Resolver mediante el programa LINDO el modelo de programación entera del ejemplo 2.b Teniendo en cuenta que tanto CEB como LEC deben ser variables enteras, debe introducirse el modelo en LINDO del modo siguiente: MAX 1000CEB LEC ST CEB < 3 80CEB + 160LEC < 700 CEB + LEC < 6 END GIN CEB GIN LEC La solución que suministra LINDO es: LP OPTIMUM FOUND AT STEP 2 OBJECTIVE VALUE = NEW INTEGER SOLUTION OF AT BRANCH 0 PIVOT 5 BOUND ON OPTIMUM: ENUMERATION COMPLETE. BRANCHES= 0 PIVOTS= 5 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE VALUE REDUCED COST
7 Programación lineal entera y mixta 107 CEB LEC ROW SLACK OR SURPLUS DUAL PRICES 2) ) ) NO. ITERATIONS= 5 BRANCHES= 0 DETERM.= 1.000E 0 El programa resuelve en primer lugar el problema lineal asociado, que será la primera cota superior de la función objetivo. A continuación, inicia el procedimiento de ramificación y acotamiento, obteniendo finalmente la solución óptima. 5.4 Programación lineal con variables binarias El uso de variables binarias permite introducir planteamientos decisionales en programación entera y permite representar gran número de situaciones. Sin ánimo de ser exhaustivos, detallaremos en seguida algunas de ellas. El ejemplo 4.a es un caso de programación lineal en el que todas las variables son binarias. Frecuentemente se denomina a este tipo de modelos como de programación lineal binaria. Ejemplo 4.a California Manufacturing Company (A) La empresa CMC está analizando la posibilidad de expansión mediante la construcción de una nueva fábrica, ya sea en L.A. o en San Francisco o en ambas ciudades. También está pensando en construir un nuevo almacén a lo sumo, pero la decisión dependerá del emplazamiento de la nueva fábrica. El beneficio total aportado por la inversión referido al momento presente se lista en la tercera columna y el coste de la inversión referido al momento presente se lista en la cuarta. El total del capital disponible es de $ Se pide encontrar la solución factible que maximice el valor del beneficio total. Decisión Pregunta Sí o No Beneficio Total Coste inversión 1 Construir la fábrica en L.A.? 9M.$ 6M.$ 2 Construir la fábrica en San Francisco? 5M.$ 3M.$ 3 Construir el almacén en L.A.? 6M.$ 5M.$ 4 Construir el almacén en San Francisco? 4M.$ 2M.$ Capital máx 10M.$ Esta situación puede representarse mediante el siguiente modelo de programación entera: Variables de decisión: x 1, x 2, x 3, x 4 binarias (0 o 1) según la decisión correspondiente sea afirmativa (x i = 1) o negativa (x i = = 0). Función objetivo: [MAX] z = 9x 1 + 5x 2 + 6x 3 + 4x 4
8 108 Métodos cuantitativos en organización industrial I El beneficio total será la suma de los beneficios obtenidos en aquellas alternativas que escoja el modelo, en las que x i = 1 Restricciones: Limitación de capital Æ 6x 1 + 3x 2 + 5x 3 + 2x 4 10 (Se plantea del mismo modo que la función objetivo: la inversión en las alternativas escogidas debe ser inferior al capital total disponible. Tenemos una primera limitación para el número de variables binarias que pueden ser uno.) Alternativas excluyentes (almacén) Æ x 3 + x 4 1 (Con esta restricción, hacemos imposible que el modelo nos indique que deben construirse dos almacenes. Si esto fuera posible, x 3 = 1 y x 4 = 1, con lo que x 3 + x 4 = 2, situación que excluimos con esta restricción.) Decisiones contingentes (almacén fábrica): x 3 x 1 y x 4 x 2 Æ -x 1 + x 3 0 -x 2 + x 4 0 Seguidamente indicamos otras situaciones representables mediante variables binarias, aportando ejemplos para algunas de ellas Alternativas mutuamente excluyentes Muchos grupos de decisiones pueden ser del tipo sí o no y además requerir que sólo una de las decisiones del grupo puede ser sí. En este caso las alternativas son mutuamente excluyentes y cada grupo requiere una restricción que obligue a la suma de las variables binarias a ser igual a 1 (si exactamente una decisión debe ser sí), o menor o igual a 1 (si como máximo una decisión de ese grupo puede ser sí). Ejemplo 4.b California Manufacturing (B) Cómo debe modificarse el modelo de la situación descrita en el ejemplo 3.a si le añadimos la restricción adicional de construir sólo un almacén? Deberemos añadir al modelo original la restricción: Alternativas excluyentes (almacén) Æ x 3 + x Decisiones contingentes Una situación contingente ocurre cuando una acción que sigue a otra se vuelve irrelevante, y a veces imposible dependiendo de la acción inicial, lo que implica que la decisión contingente depende de decisiones previas, por ejemplo una decisión es contingente sobre otra si permite que sea SÍ sólo si la otra es SÍ. Ejemplo 4.c California Manufacturing (C) Cómo debe modificarse el modelo de la situación descrita en el ejemplo 3.a si ahora queremos que el almacén se construya en la misma localización en que se construya la fábrica?
9 Programación lineal entera y mixta 109 Ahora deben añadirse al modelo del ejemplo 3.a las restricciones: x 3 x1 y x 4 x 2 Æ -x1 + x 3 0 -x 2 + x Restricciones de una u otra Se puede considerar el caso en el que se debe elegir entre dos restricciones, de manera que sólo una de las dos (cualquiera de ellas) se tenga que cumplir (la otra puede cumplirse pero no se requiere que lo haga). Ejemplo 4.d Problema de la granja con alternativas En el problema de la granja del tema 2, planteábamos la cuestión de cuántas hectáreas de cebada y cuántas hectáreas de lechuga debía plantar un agricultor en sus 110 hectáreas de terreno, sabiendo que una hectárea del primer cultivo le daba un beneficio de 50 unidades monetarias y una hectárea del segundo 80 unidades monetarias. Además, debía considerar el hecho de que disponía únicamente de 720 horas de trabajo y que cultivar una hectárea de terreno con cebada suponía 4 horas de trabajo y cultivar una hectárea de lechuga suponía 8 horas de trabajo. En el problema original, el agricultor podía sembrar un máximo de 80 hectáreas de cebada. Ahora se le plantea la posibilidad de sustituir esta limitación por otra consistente en limitar a 90 hectáreas la cantidad de tierra que puede cultivarse con lechugas. Cómo puede modelizarse esta situación con un solo modelo? Recordemos que el modelo de la granja original era el que se presenta a continuación. La limitación al cultivo de cebada viene representada por la primera restricción: [MAX]z = 50CEB + 80LEC CEB 80 CEB + LEC 110 4CEB + 8LEC 720 CEB, LEC 0 Ahora planteamos la posibilidad de que también sea posible el modelo siguiente, que difiere del anterior en una sola restricción: [MAX]z = 50CEB + 80LEC LEC 90 CEB + LEC 110 4CEB + 8LEC 720 CEB, LEC 0 La situación que deseamos introducir en el modelo es que sólo pueda activa una de estas dos restricciones: CEB 80 LEC 90 Es decir, al menos una de las dos desigualdades se debe cumplir, pero no necesariamente las dos simultáneamente. Una posible solución a este problema sería resolver dos modelos lineales, uno con una restricción y otro con otra, y tomar como solución aquel modelo de los dos que tuviera un mejor valor de la función
10 110 Métodos cuantitativos en organización industrial I objetivo. Para modelos grandes, y en los que tengamos más de un conjunto de restricciones alternativas de este tipo, el coste de este procedimiento puede ser mayor que el derivado de usar una variable binaria. También podemos intentar incorporar las dos restricciones al modelo, pero de manera que sólo una de las dos restricciones pueda ser activa. Sabemos que si el término independiente de una restricción de menor o igual es muy grande, la restricción no es activa. Por lo tanto, si tenemos: CEB 80 LEC 90 + M La restricción de cantidad máxima de lechugas no es activa: simplemente estamos diciendo que dicha cantidad de lechugas sea inferior a una cantidad muy grande. Si tenemos: CEB 80 + M LEC entonces la restricción de cantidad máxima de cebada no será activa, por la misma razón que en el caso anterior. Al agregar M, el efecto que obtenemos es desactivar una de las restricciones: la restricción afectada de M no será activa, puesto que no dice otra cosa que la cantidad de cebada o de lechugas, respectivamente, debe ser más pequeña que un número muy grande. Lo que se espera es que se cumpla siempre con holgura, de modo que no influya en la determinación del óptimo. Para decidir entre el primer grupo o el segundo grupo de restricciones añadiremos la variable de decisión binaria y de la siguiente forma: CEB 80 + M y LEC 90 + M (1-y) Así, cuando y = 1, la cantidad de cebada no estará limitada, y la de lechuga estará limitada a 90. Cuando y = 0, sucederá lo contrario: la cantidad de lechugas no estará limitada y la de cebada estará limitada a 80. Nótese que el modelo obtenido es de programación lineal mixta (CEB y LEC son variables reales, mientras que la variable y es binaria). Se ha evitado multiplicar variables (error muy frecuente en este tipo de modelizaciones). Para introducir este modelo en LINDO haremos: MAX 50CEB + 80LEC ST CEB + LEC < 110 4CEB + 8LEC < 720 CEB BIN < 80 LEC BIN < 1090 END INTEGER BIN La solución suministrada por el programa es: OBJECTIVE VALUE = FIX ALL VARS.( 1) WITH RC > E+00
11 Programación lineal entera y mixta 111 NEW INTEGER SOLUTION OF AT BRANCH 0 PIVOT 2 BOUND ON OPTIMUM: ENUMERATION COMPLETE. BRANCHES= 0 PIVOTS= 2 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE VALUE REDUCED COST BIN CEB LEC ROW SLACK OR SURPLUS DUAL PRICES 2) ) ) ) NO. ITERATIONS= 2 BRANCHES= 0 DETERM.= 1.000E 0 En este caso, encontramos que el mejor resultado se obtiene limitando a 80 la superficie de cebollas a cultivar, en vez de limitar a 90 la cantidad de lechugas Deben cumplirse K de N restricciones El modelo completo incluye un conjunto de N restricciones posibles de las que sólo K de ellas se deben cumplir (K < N). Las N K restricciones que no se eligen quedan eliminadas del problema, aun cuando por coincidencia la solución pueda satisfacer algunas de ellas. Este caso es una generalización de la situación del ejemplo 3.c, en la que N=2 y K=1. Denotaremos las posibles restricciones por: La formulación del programa es: g 1 (x 1, x 2,..., x n ) b 1 g 2 (x 1, x 2,..., x n ) b 2.../... g N (x 1, x 2,..., x n ) b N siendo y i binaria para i = 1, 2,..., N g 1 (x 1, x 2,..., x n ) b 1 + My 1 g 2 (x 1, x 2,..., x n ) b 2 + My 2.../... g N (x 1, x 2,..., x n ) b N + My N y 1 + y y N = N - K
12 112 Métodos cuantitativos en organización industrial I Funciones con N valores posibles Consideremos la situación en la que se requiere que una función dada tome cualquiera de N valores dados: f(x 1, x 2,..., x n ) = d 1 ó d 2 ó... ó d N La formulación entera para este requerimiento es la siguiente: f(x 1, x 2,..., x n ) = d 1 y 1 + d 2 y d N y N y 1 + y y N = 1 siendo y i binaria para i = 1, 2,..., N Problema del coste fijo El coste fijo aparece cuando se emprende alguna actividad y sobre él no influye el grado de actividad que se realice. Por otro lado, el coste variable suele estar muy cerca de ser proporcional al nivel de actividad. Por estos motivos la función de costes totales (fijo + variable) para una acción genérica j resulta: c j (x j )= K j + c j x j si x j > 0 c j (x j )= 0 si x j = 0 Para representar esta situación, deberemos añadir j restricciones contingentes que indicarán si se desarrolla la actividad x j o no: x j M y j para j = 1, 2,..., n La formulación del programa lineal de coste fijo es: [MIN] z = (K 1 y 1 + c 1 x 1 ) + (K 2 y 2 + c 2 x 2 ) (K n y n + c n x n ) sujeta a las restricciones originales, más x j - M y j 0 y j binaria para j = 1, 2,..., n En los ejemplos siguientes mostramos la resolución de algunos modelos de programación entera. Aunque el programa suele proporcionarnos análisis de sensibilidad, debemos ser cuidadosos con la interpretación de los resultados, puesto que dicho análisis es para el modelo lineal original, relajado en la condición de variables enteras, al que se le habrá añadido el conjunto de restricciones propio del algoritmo de bifurcación y acotamiento. 5.5 Problemas resueltos En esta sección se mostrará un ejemplo de una modelización de cierta complejidad empleando variables binarias. Pueden encontrarse gran número de ejemplos de modelización con variables enteras y binarias en el tema 6, dedicado a modelización avanzada Plan de producción de dos productos y tres fábricas Determinada empresa sirve dos productos (P1 y P2) que fabrica en tres plantas diferentes (que llamaremos F1, F2 y F3). La capacidad de las fábricas, medida en horas es de 1.000, y horas
13 Programación lineal entera y mixta 113 respectivamente. El coste de producción de los productos es de 2 unidades monetarias (um) por hora en cualquiera de las tres fábricas. Fabricar un kilo de P1 ocupa 4 horas de tiempo de fábrica, y un kilo de P2 3 horas. Si decidimos producir un producto en una fábrica determinada, incurrimos en un coste fijo que es de 600 um para P1 y de 700 um para P2. Los precios de venta de P1 y P2 son de 11 um/kg y de 8 um/kg respectivamente. La demanda máxima de P1 es de 800 Kg, y la de P2 de 1000 Kg. Las demandas mínimas a satisfacer de P1 y P2 son de 80 y 100 Kg, respectivamente. Por razones de seguridad, cada producto debe fabricarse al menos en dos fábricas. Si se decide fabricar un producto en una fábrica, la cantidad mínima a fabricar será de 50 Kg. Determinar el plan de producción (cuánto debe fabricarse de P1 y P2 en F1, F2 y F3) que maximiza el beneficio. Solución Las variables de decisión serán de dos tipos. Las primeras son de la forma: XXYY representando la cantidad del producto (XX = P1 o P2) que se fabricará en una determinada fábrica (YY = F1, F2 o F3). Al permitirse la fabricación de cantidades discretas, dichas variables serán reales. El segundo conjunto de variables tendrá la forma: BXXYY representando la decisión de fabricar el producto XX en la fábrica YY. Se trata de variables binarias, que valdrán 1 si efectivamente se fabrican el producto en la fábrica, y 0 en caso contrario. Una vez definidas las variables, pasamos a definir el modelo. Para ello, hemos de tener en cuenta que el beneficio unitario de una unidad de P1 vale = 3. El beneficio unitario de una unidad de P2 es = 2. Ello se debe a que los únicos costes variables son los asociados a las horas de utilización de la fábrica. A estos costes hemos de añadir los costes fijos asociados a fabricar un producto en una fábrica. Para ello utilizaremos las variables binarias. La función objetivo será: MAX 3P1F1 + 3P1F2 + 3P1F3 + 2P2F1 + 2P2F2 + 2P2F3-600BP1F1-60BP1F2-600BP1F3-700BP2F1-700BP2F2-700BP2F3 Teniendo en cuenta que producir una unidad de P1 consume 4 horas de fábrica y producir una de P2 3 horas, tendremos tres restricciones asociadas a la capacidad productiva: 4P1F1 + 3P2F1 < P1F2 + 3P2F2 < P1F3 + 3P2F3 < 1500 También tendremos restricciones asociadas a la demanda total de P1 y P2. Estas restricciones se refieren a la demanda total, independientemente de donde se haya fabricado. Así, tendremos dos restricciones para la demanda máxima y dos para la demanda mínima:
14 114 Métodos cuantitativos en organización industrial I P1F1 + P1F2 + P1F3 < 800 P2F1 + P2F2 + P2F3 < 1000 P1F1 + P1F2 + P1F3 > 80 P2F1 + P2F2 + P2F3 > 100 Ahora debemos introducir las restricciones asociadas a la fabricación de un producto en una fábrica determinada. Éstas tendrán la forma: XXYY M BXXYY M representa un número grande, de manera que la restricción sea inactiva cuando BXXYY = 1. Se ha escogido hacer M = 2000, por ser ésta una cantidad superior a cualquiera de los valores máximos de XXYY, determinados por las restricciones anteriores. Dado que en LINDO hemos de introducir todas las variables en el lado derecho de la restricción, éstas tendrán la forma siguiente: P1F1-2000BP1F1 < 0 P1F2-2000BP1F2 < 0 P1F3-2000BP1F3 < 0 P2F1-2000BP2F1 < 0 P2F2-2000BP2F2 < 0 P2F3-2000BP2F3 < 0 Además, si decidimos fabricar un producto en una fábrica, la cantidad ha de ser al menos de 50. Este hecho lo representamos mediante las restricciones: XXYY 50 BXXYY Cuando BXXYY = 1, la restricción será activa. Cuando BXXYY = 0, la restricción indicará que XXYY 0, es decir, que la variable sea no negativa. Como las restricciones anteriores hacían XXYY 0 cuando BXXYY = 0, XXYY = 0 cuando BXXYY = 0. Este conjunto de restricciones tomará la forma: P1F1-50BP1F1 > 0 P1F2-50BP1F2 > 0 P1F3-50BP1F3 > 0 P2F1-50BP2F1 > 0 P2F2-50BP2F2 > 0 P2F3-50BP2F3 > 0 Las últimas restricciones son las relativas a que cada producto se haga al menos en dos fábricas. Tendrán la forma: BP1F1 + BP1F2 + BP1F3 > 2 BP2F1 + BP2F2 + BP2F3 > 2 END Una vez introducido el modelo, hemos de indicar que las variables BXXYY son binarias: INT BP1F1 INT BP1F2 INT BP1F3 INT BP2F1 INT BP2F2 INT BP2F3 La solución obtenida por LINDO es:
15 Programación lineal entera y mixta 115 LP OPTIMUM FOUND AT STEP 23 OBJECTIVE VALUE = FIX ALL VARS.( 2) WITH RC > E+00 NEW INTEGER SOLUTION OF AT BRANCH 0 PIVOT 36 BOUND ON OPTIMUM: ENUMERATION COMPLETE. BRANCHES= 0 PIVOTS= 36 LAST INTEGER SOLUTION IS THE BEST FOUND RE-INSTALLING BEST SOLUTION... OBJECTIVE FUNCTION VALUE 1) VARIABLE VALUE REDUCED COST BP1F BP1F BP1F BP2F BP2F BP2F P1F P1F P1F P2F P2F P2F ROW SLACK OR SURPLUS DUAL PRICES 2) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) NO. ITERATIONS= 42 BRANCHES= 0 DETERM.= 1.000E 0
16 116 Métodos cuantitativos en organización industrial I De la solución vemos que: P1 se fabrica en F2 (500 Kg) y en F3 (300 Kg), y se produce la cantidad máxima. P2 se fabrica en F1 (333,3 Kg) y en F3 (100 Kg), y se produce una cantidad intermedia entre la demanda máxima y mínima. De esta manera las tres fábricas funcionan a máxima capacidad, respetando las restricciones de seguridad y minimizando los costes fijos. El beneficio obtenido con este programa óptimo es de 1.206,67 um. El programa indica que se han realizado 42 ramificaciones para obtener la solución óptima, y que en este caso la solución del modelo coincide con la del problema lineal asociado. 5.6 Problemas propuestos El lector puede encontrar en el tema 6 gran número de ejemplos de modelos de programación lineal entera y mixta. En esta sección, incluimos dos ejemplos de ramificación y acotamiento que tienen como objeto completar la comprensión del procedimiento. La solución del primer ejercicio se encuentra en la sección 1. Para resolver los ejercicios, es recomendable utilizar un programa informático para obtener de manera rápida las soluciones a los diferentes problemas. Puede ser también muy ilustrativo realizar la representación gráfica e ir añadiendo las diferentes restricciones, para observar cómo se produce la partición de la región factible. Ejercicio 6.1 Resolver mediante el procedimiento de ramificación y acotamiento el modelo del ejemplo 2.a: [MAX] z = 10x + y x + 6y 50 12x + y 60 x, y 0, enteras (Solución: x* = 5, y* = 0, z* = 50) Ejercicio 6.2 Resolver mediante el procedimiento de ramificación y acotamiento el modelo: [MIN] z = 3x + 4y x + 3y 40 x y 5 2x 31 x, y 0, enteras (Solución: x* = 14, y* = 9, z* = 78) 5.7 Glosario Acotamiento (Ver RAMIFICACIÓN). Segunda etapa del procedimiento de ramificación y acotamiento en la que escogemos cuál de los dos subconjuntos del conjunto de soluciones posibles obtenidos en la ramifica-
17 Programación lineal entera y mixta 117 ción exploraremos en la etapa siguiente. En el caso de la programación lineal entera, se escoge aquel programa lineal con mejor valor del óptimo de la función objetivo (ver sección 2). Dicho valor será una cota superior (inferior) de la solución del modelo de programación lineal entera de máximo (mínimo). Branch and bround Ver RAMIFICACIÓN Y ACOTAMIENTO. Programa (lineal) asociado Dado un modelo de programación entera o mixta, su programa lineal asociado es aquel que tiene la misma función objetivo y restricciones, siendo reales todas sus variables de decisión. La solución del programa lineal asociado, que puede obtenerse en cualquier caso con el método símplex, sirve de punto de partida para obtener, mediante un procedimiento de ramificación y acotamiento, la solución del modelo de programación entera. Programación (lineal) binaria Modelo de programación matemática cuya función objetivo y restricciones cumplen las condiciones de los modelos de programación lineal, pero al que se ha impuesto la condición adicional de que las variables de decisión sean todas binarias. Es un caso particular de programación entera. Programación (lineal) entera Modelo de programación matemática cuya función objetivo y restricciones cumplen las condiciones de los modelos de programación lineal, pero al que se ha impuesto la condición adicional de que las variables de decisión sean todas enteras. Programación (lineal) mixta Modelo de programación matemática cuya función objetivo y restricciones cumplen las condiciones de los modelos de programación lineal, pero al que se ha impuesto la condición adicional de que algunas de las variables de decisión sean enteras. Ramificación Primera etapa del procedimiento de ramificación y acotamiento mediante el cual dividimos en dos partes el conjunto de las soluciones. En el caso de la programación entera, dicha ramificación se obtiene creando dos nuevos problemas lineales a partir del considerado en la etapa anterior, añadiendo a cada uno de ellos una nueva restricción, diferente para cada uno (ver sección 2). Ramificación y acotamiento Procedimiento de optimización combinatoria para obtener la solución de un modelo de programación lineal entera o mixta, a partir del programa lineal asociado. Consiste en la definición de un procedimiento de ramificación y de acotamiento.
18 118 Métodos cuantitativos en organización industrial I Variable binaria Variable de decisión de un modelo de programación lineal entera o mixta a la que se le impone la condición de tomar únicamente los valores 0 o 1. Variable entera Variable de decisión de un modelo de programación lineal entera o mixta a la que se le impone la condición de pertenecer al conjunto de números enteros no negativos.
19 Modelización avanzada en programación lineal Modelización avanzada en programación lineal 6.1 Modelización avanzada en programación lineal Este tema es, en su concepción y conocimientos que transmite, radicalmente diferente de los anteriores. En los temas 2, 4 y 5 se mostraban las posibilidades de las técnicas de métodos cuantitativos próximas a la programación lineal, y en el tema 4 se indicaba cómo podían explotarse e interpretarse los resultados obtenidos de la resolución de los modelos mediante programación lineal. En éste se muestra cómo podemos representar situaciones complejas, propias de las empresas y las organizaciones mediante modelos de programación lineal, y sobre todo de programación entera y mixta. Los otros temas se prestaban a una exposición sistemática de los contenidos y al posterior afianzamiento del conocimiento de dichos contenidos por parte del alumno mediante la resolución de ejercicios. En éste, sin embargo, no hay otra solución que mostrar directamente los ejercicios. En el apartado 6.2 el lector encontrará siete ejercicios resueltos, que cubren gran parte de los problemas más usuales de la modelización avanzada mediante programación lineal. Tal como se ha indicado anteriormente, resulta difícil dar una sistemática para modelizar situaciones concretas. En ocasiones, resulta difícil incluso dar una solución, puesto que es posible representar una misma situación con modelos muy diferentes. En cualquier caso, suelen ser válidas las siguientes recomendaciones: Selección y definición de las variables de decisión Es muy importante escoger correctamente las variables y definirlas con precisión. Las variables a escoger han de ser tales que permitan expresar la solución de forma directa, o bien, mediante manipulaciones sencillas. También es importante indicar si la variable es entera, binaria o real. En algunos problemas de cierta regularidad, puede ser útil definir variables con subíndices o con un determinado patrón regular: así, en un modelo de planificación de la producción podemos definir variables como: XYYY Donde X puede ser A, B o C, dependiendo del tipo de producto. YYY puede ser una variable representativa del mes en que se produce: ENE, FEB,..., DIC. De esta manera, hemos definido 36 variables de forma rápida y comprensible Función objetivo y restricciones Una vez definidas las variables, deben expresarse las restricciones y la función objetivo como funciones lineales de estas variables. Cuando se utilizan variables binarias y aún no se domina la técnica, es frecuente la tentación de multiplicar variables. Esto daría lugar a un modelo no lineal (frecuentemente
20 120 Métodos cuantitativos en organización industrial I con variables enteras), de resolución mucho más compleja que la programación entera. Es útil también diseñar un modelo válido para cualquier valor de los parámetros del sistema Test del modelo obtenido en programas informáticos La última etapa sería la comprobación de que el modelo diseñado es correcto. No existe una forma segura de comprobarlo, aunque en muchas ocasiones suele ser útil introducir el modelo obtenido en un programa informático de resolución de modelos lineales, y comprobar: a) Que la solución obtenida sea compatible con las restricciones del modelo. b) La solidez del modelo frente a la variación de sus parámetros (principalmente coeficientes de coste y términos independientes de las restricciones). 6.2 Problemas resueltos de modelización avanzada Este apartado contiene los enunciados de siete modelos de programación lineal avanzada, con su correspondiente resolución. Seguidamente comentaremos brevemente cada uno de ellos: El primer problema (SAILCO IOTS) es un ejemplo de problema de plan de producción, en el que las puntas de demanda pueden resolverse de dos modos: produciendo en horas extra, o produciendo en periodos anteriores y pasando la producción al mes siguiente por medio de stocks. Este mismo enunciado puede resolverse por otros modelos, como el programa del transporte. El segundo (TALADROS MECÁNICOS) es un problema de reparto de recursos escasos a diversas actividades con diversa rentabilidad. Su estructura es esencialmente la de un problema de máximo en forma canónica. El problema FAST CATERING es similar al anterior, pero con la particularidad de que se plantea la posibilidad de reutilizar (a cambio de un coste) recursos empleados en etapas anteriores. El problema MUEBLES LA SENIA introduce la problemática de repartir recursos a productos de estructura compleja (que se tratan extensivamente con técnicas como el MRP, que se verán en otras asignaturas de la carrera). También introduce el uso de variables binarias para representar situaciones de coste fijo, así como de alternativas mutuamente excluyentes. El quinto problema (MOLDES DE INYECCIÓN DE PLÁSTICO) es similar al segundo, pero con la utilización de variables binarias. El sexto problema (ACEITE DE OLIVA CON DENOMINACIÓN DE ORIGEN) es un caso prototipo de problema de mezcla: los productos finales son el resultado de la mezcla, en determinadas proporciones, de materias primas o productos intermedios. Finalmente, el problema BAZAR EL LINCE es similar al primero, pero aplicado a las compras en vez de la producción. También se introduce la posibilidad de representar situaciones de utilidad o coste variable con la cantidad comprada. Problema Sailco Iots S.A Sailco Iots S.A. es una empresa que fabrica una embarcación homologada por la International Yacht Racing Union (I.Y.R.U.) y que ha tenido un notable éxito de ventas desde su aparición en el mercado, tanto en el terreno nacional como en las exportaciones.
21 Modelización avanzada en programación lineal 121 SAILCO IOTS, S.A. debe decidir cuántas de estas embarcaciones debe construir en cada uno de los cuatro próximos trimestres. La previsión de la demanda para los próximos cuatro períodos es la siguiente: Trimestre Nº de embarcaciones Primero 40 Segundo 60 Tercero 75 Cuarto 25 Una decisión estratégica de la compañía no concibe roturas de stocks, ya que considera que se debe servir la demanda prevista en el mismo trimestre, sin retrasar entregas. Al principio del primer trimestre, tiene un stock de 10 embarcaciones (por tanto, el stock inicial es de 10 unidades). Al principio de cada trimestre se decide cuántas embarcaciones deben producirse. Se considera que las embarcaciones fabricadas durante un trimestre pueden usarse para satisfacer la demanda del mismo trimestre. Cada trimestre, Sailco Iots S.A. tiene una capacidad productiva de 40 unidades en el tiempo de producción normal de trabajo a un coste de 400 um/embarcación Contratando empleados a tiempo extra durante un trimestre, es posible producir embarcaciones adicionales a un coste total de 450 u.m./embarcación. Al final del trimestre (después de que la producción se haya completado y la demanda del trimestre haya sido satisfecha), se incurre en unos costes de mantenimiento del stock de 20 um (unidades monetarias) por cada embarcación que queda almacenada. Se trata de planificar la producción de manera que se minimicen los costes para los próximos 4 trimestres. Resolución del problema Sailco Iots S.A. Como todos los problemas de plan de producción, en el que un recurso puede producirse en un periodo y utilizarse en periodos posteriores (mediante inventarios) o utilizarse para servir la demanda de periodos anteriores (admitiendo diferimiento), puede obtenerse el modelo con la ayuda de un esquema de este tipo: Pn1 Pe1 Pn2 Pe2 Pn3 Pe3 Pn4 Pe4 10 Trim1 S12 Trim2 S23 Trim3 S34 Trim Definimos las variables: Pn,i: nº de embarcaciones fabricadas en el trimestre i trabajando a tiempo de producción normal.
22 122 Métodos cuantitativos en organización industrial I Pe,i: nº de embarcaciones fabricadas en el trimestre i trabajando a tiempo extra. Si,i+1: nº de embarcaciones en stock, almacenadas del trimestre i al trimestre i+1. Las tres variables son enteras (aunque también podría modelizarse con variables reales y el resultado sería entero, al haber detrás de este modelo un problema del transporte con demanda entera). Función Objetivo: [MIN] Z = 400 (Pn1+Pn2+Pn3+Pn4) (Pe1+Pe2+Pe3+Pe4) + 20 (S12+S23+S34) 400 es el precio en unidades monetarias que cuesta producir una embarcación trabajando en horas normales. 450 es el precio en um (unidades monetarias) que cuesta producir una embarcación trabajando a tiempo extra. 20 es el precio en um que se ha de pagar por tener almacenada una embarcación de un trimestre a otro. Restricciones: Como la producción máxima trabajando las horas normales es 40, obtenemos las cuatro primeras restricciones: Pn1, Pn2, Pn3, Pn4 40 Con estas restricciones expresamos la limitación de capacidad de producción en horas normales. El modelo no requiere limitaciones para la producción en horas extra Pei, ni valores de stock máximos o mínimos: la no negatividad de las variables asegurará que no tengamos ruptura de stock. Pn1+Pe1+10 = 40+S12 Pn2+Pe2+S12 = 60+S23 Pn3+Pe3+S23 = 75+S34 Pn3+Pe3+S23 = 75+S34 Estas son las restricciones de equilibrio del material, nos igualan el nº de embarcaciones que se fabrican en el trimestre más las que hay almacenadas del trimestre anterior con las que se X demandan en el trimestre más las que quedan en stock para el próximo trimestre. Como el problema no exige valores mínimos de stock y buscamos minimizar los costes, hemos considerado el stock final como 0. Igualmente, si en lugar de poner 0 hubiéramos puesto una variable por ejemplo, S45 el programa nos habría devuelto como valor de dicha variable 0. El programa busca minimizar la función costes y todo stock supone unos gastos de almacenamiento. Finalmente, debemos tener en cuenta que todas las variables son positivas, puesto que no tiene sentido un stock o una producción negativas: Pn1, Pn2, Pn3, Pn4, Pe1, Pe2, Pe3, Pe4, S12, S23, S34 0 Problema Taladros mecánicos Una fábrica productora de herramientas industriales y para bricolage lanzó al mercado una línea de taladradoras para uso doméstico. Un taladro mecánico consiste básicamente en un motor eléctrico colocado en una carcasa de plástico y metal. Se fabrican cuatro modelos que difieren en el tamaño y composición de la carcasa y en el dimensionado de los motores. Los modelos 1 y 2 son tradicionales mientras que los 3 y 4 son más modernos, los cuales se caracterizan porque las carcasas son básicamente de plástico.
23 Modelización avanzada en programación lineal 123 La empresa ha desarrollado la tecnología necesaria para fabricar las carcasas, hacerse el bobinado de los motores o los cables eléctricos de los motores. Una escasez en la aleación de cobre usada en la producción de cable y en la constitución de las partes metálicas de las carcasas está causando problemas a la empresa, por lo que el próximo Plan Trimestral se verá afectado. En la tabla adjunta se dan los requerimientos de materiales para los cuatro modelos. No podrá disponerse de más de libras (1 libra = g) de plástico durante el período y no se tendrán más de libras de aleación de cobre. El cable para los motores se obtiene de dos fuentes. Puede ser producido internamente a un coste de 14 um/metro de la aleación de cobre disponible en máquinas con una capacidad trimestral de metros. Cada 100 metros de cable precisa de 3.6 libras de aleación de cobre. Por otra parte, puede ser comprado a proveedores exteriores en cantidades virtualmente ilimitadas a 29 um/metro. El stock inicial al principio del trimestre es de metros de cable. Los otros materiales necesarios para la producción de estos modelos de taladros están en existencias y pueden ser obtenidos fácilmente. El departamento de compras cree que todos los taladros que se fabriquen se venderán; sin embargo, existe un compromiso con los distribuidores para que las cantidades a producir de los modelos 1 y 2 sean al menos tantas como las de los modelos del tipo 3 y 4. Modelo Plástico necesario (lb.) Aleación de cobre necesaria para las carcasas (lb.) Cable necesario para el motor (lb.) Beneficio (excluido el coste del cable) (¼ Resolución del problema Taladros mecánicos Las variables son aquellas cantidades que nosotros tendremos que buscar para que nuestro problema nos dé el óptimo según la función objetivo. Ti: Número de taladros producidos del tipo i. Será un número entero, dado que no podemos tener partes fraccionarias de taladro (medio taladro, ni ¾ de taladro...) Ci: metros de cable fabricado por nosotros (14 pts/m). Como es más económico, queremos fabricar mucho, pero el enunciado nos limita la cantidad que podremos servir. Ce: metros de cable que compramos fuera. Una vez sabemos cuantos metros de cable necesitamos, y los que podremos fabricar nosotros, tendremos que comprar fuera los que nos falten. Co: metros de cable inicial que teníamos en stock. No se tendrán que volver a pagar, dado que son restos de un pedido de cable del año anterior, que ya se pagó. Estas últimas variables serán reales; puesto que podremos comprar unidades fraccionarias de producto (por ejemplo, 4.3m). Al ejecutar un procedimiento de resolución (por ejemplo, el método símplex), podremos encontrar la solución buscada. No obstante, nosotros nos encargaremos, únicamente, de plantear el modelo. La resolución puede hacerse a través de software.
24 124 Métodos cuantitativos en organización industrial I Restricciones [1] La cantidad máxima consumida de plástico está limitada por el enunciado a libras. Las cantidades de plástico que necesitamos para fabricar cada taladro vienen dadas en las tablas. T1 0,82 + 0,62 T2 + 1,42 T3 + 2,03 T Para fabricar T1, necesitaremos 0,82 libras de plástico. Para fabricar T2 necesitaremos 0,62, etc Pero el máximo que podremos utilizar será de libras. Hay que tener cuidado con las unidades de las restricciones. En este caso, todas están en libras (peso). [2] La aleación de Cu también nos viene limitada. 0,43 T1 + 0,69 T2 + 0,33 T3 + 0,2 T4 + Ci 0, La aleación no sólo sirve para la fabricación de carcasas, sino también para la fabricación de cable. Sabemos que se necesitaran 3,6 libras de Cu cada 100 metros de cable que se quiera fabricar. Sólo gastaremos aleación en el cable que fabriquemos nosotros, porque lo comprado de fuera se paga, pero no se gasta del propio cobre. Fijándonos en la tabla adjunta, para fabricar T1 necesitaremos 0,43 libras de Cu, para fabricar T2 necesitaremos 0,69... [3] Condición de cable necesario (en libras): 15 T T2 + 9 T3 + 9 T4 = (Ci + Ce + Co) 0,036 Ci Co =6.000 A pesar de que no producimos nosotros el Ce, es cierto que éste intervendrá en la cantidad de cable que necesitamos para producir el óptimo de taladros. No es una restricción sobre cuanta aleación necesitamos, sino de cantidad de cable. Función Objetivo: Lo que buscamos es maximizar los beneficios: [MAX]Z = 12,5 T1 + 11,3 T2 + 17,2 T3 + 19,9 T4 (14 Ci + 29 Ce) El beneficio es la diferencia entre las ganancias y los gastos. Las ganancias vienen dadas por el valor de aquello que se gana por cada tipo de taladro menos el que cuesta fabricarlo: intervendrán todos los tipos de cables, excepto el que ya teníamos, que no nos supone ningún coste (Co ya lo pagamos con anterioridad). Problema Fast Catering S.A. La empresa Fast Catering S.A. especializada en trabajos de restauración en congresos y otros eventos, ha sido encargada del suministro de los lunchs (comida de mediodía) del próximo Congreso Internacional sobre Desarrollo Sostenido II que se celebrará en el Campus de Terrassa en la semana del 21 al 27 de junio: más concretamente los días 21, 22, 23, 24 y 25 de dicha semana (lunes, martes, miércoles, jueves y viernes).

References: resolución 
 resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 Resolución 
 Resolución 
 resolución 
 resolución