Programación Lineal para la Ingeniería Técnica En los siglos XVII y XVIII matemáticos como Newton, Leibniz, Bernouilli y sobre todo Lagrange, que tanto habían contribuido al desarrollo del cálculo infinitesimal, se ocuparon de obtener máximos y mínimos condicionados de determinadas funciones. Posteriormente, el matemático francés Jean Batiste-Joseph Fourier fue el primero en intuir, aunque de forma imprecisa, los métodos de lo que actualmente llamamos Programación Lineal. Si exceptuamos al matemático Gaspar Monge, quien en 1776 se interesó por problemas de este género, debemos remontarnos al año 1939 para encontrar nuevos estudios relacionados con los métodos de la actual Programación Lineal. En este año, el matemático ruso Leonidas Vitalyevich Kantorovitch publica una extensa monografía titulada “Métodos matemáticos de organización y planificación de la producción”, en la que por primera vez se hace corresponder a una extensa gama de problemas una teoría matemática precisa y bien definida llamada, hoy en día, Programación Lineal. En 1941, se formula por primera vez el problema del transporte, estudiado independientemente por Kopmans y por Kantorovitch, razón por la cual se le suele conocer con el nombre de Kopmans-Kantorovitch. Tres años más tarde, G. Stigler plantea otro problema particular conocido con el nombre de “régimen alimenticio opcional”. En estos años posteriores a la II Guerra Mundial, en E.E.U.U. se asumió que la eficaz coordinación de todas las energías y recursos de la nación era un problema de tal complejidad, que su resolución y simplificación pasaban necesariamente por los modelos de optimización que resuelve la Programación Lineal. 1 Programación Lineal para la Ingeniería Técnica En 1947, G. B. Dantzig formula, en términos matemáticos, el enunciado estándar al que cabe reducir todo problema de Programación Lineal. Dantzig, junto con una serie de investigadores del United States Departament of Air Force, formarían el grupo que dio en denominarse Scoop, siendo una de las primeras aplicaciones de los estudios del grupo el puente aéreo de Berlín. Posteriormente, se constituyen en E.E.U.U. distintos grupos de estudio para ir desarrollando las diferentes ramificaciones de la Programación Lineal. Respecto al método del Simplex, señalar que su estudio comenzó en 1951 y fue desarrollado por Dantzig. Este algoritmo es básico en la resolución de los problemas de Programación Lineal, fundamentales en economía general, economía de empresas y planificación, aunque en principio sus aplicaciones fueron militares. http://www.stanford.edu/group/SOL/dantzig.html De forma general, los problemas de optimización lineal tienen la siguiente estructura: • Existe un cierto objetivo a alcanzar, un beneficio máximo, un coste mínimo o mínimo período de tiempo del sistema que se estudia. • Generalmente, hay un gran número de variables que deben manejarse simultáneamente y de diferentes tipos. • Existen muchas interacciones entre las variables. • A veces, existen objetivos contradictorios con el objetivo principal del problema. Dicho de otro modo, un problema de Programación Lineal se caracteriza, como su propio nombre indica, por funciones lineales de las variables que involucra; el objetivo es lineal en las variables, y las restricciones son también ecuaciones o inecuaciones lineales en las variables de decisión. Los campos de aplicación de la Programación Lineal son muy numerosos. Entre otros, se pueden citar: 2 Programación Lineal para la Ingeniería Técnica • El campo de las aplicaciones militares. • El campo de las Matemáticas Puras y Aplicadas. • El campo de la Economía y, especialmente, de la Economía de la Empresa. Aquí, las aplicaciones se tienen en numerosos sectores: la industria química y del petróleo, las industrias alimenticias, la metalurgia, la producción y distribución de energía eléctrica, la minería, los transportes, la agricultura y ganadería, etc. También los tipos de problemas son muy variados, entre ellos están: • Las mezclas (industria del petróleo, nutrición de animales, etc.). • La afectación del personal (problemas de asignación de tareas). • La distribución y el transporte. • El almacenaje. • Los planes de producción. • Los problemas compuestos de inversión, producción, almacenaje y distribución. • Los estudios de circulación. • El problema del viajante de comercio. Para la Teoría Económica, en general, la aportación que ha hecho la Programación Lineal es muy valiosa, ya que muchas interrelaciones que en principio podían estar explicadas de forma vaga, están en la actualidad cuantificadas y perfectamente definidas. El atractivo que la Programación Lineal ofrece en cualquier otro tipo de disciplinas, hay que buscarlo en la sencillez de las técnicas matemáticas que utiliza, 3 Programación Lineal para la Ingeniería Técnica la riqueza o posibilidades que ofrece su teoría, y la facilidad computacional que se tiene para los problemas lineales en contraposición con los no lineales. Al mismo tiempo, nos permite organizar la información cuantitativa en un modelo de expresión matemática accesible para expertos en otras profesiones. Otra razón de la popularidad de la formulación lineal, tanto para el objetivo como para las restricciones, es que es a menudo la menos difícil de definir, lo cual lleva en múltiples ocasiones a linealizar objetivos no lineales, con la consiguiente aproximación de su óptimo. Por simplicidad en los cálculos y claridad en la exposición, el estudio no se concretará en una aplicación particular. Los ejemplos que utilizaremos para describir la técnica puramente formal son de pequeñas dimensiones y económicamente irreales. 4 Programación Lineal para la Ingeniería Técnica volver a objetivo, variables, interacciones El problema general de Programación Lineal consiste en la búsqueda del óptimo (máximo o mínimo) de una función lineal de n variables x j , j = 1, ..., n, ligadas por relaciones lineales (ecuaciones o inecuaciones) llamadas restricciones. Entre las restricciones se distinguen: 1. Las del tipo x j ≥ 0 , imponiendo a una parte o al conjunto de las variables ser no negativas. Usualmente, son llamadas restricciones de no negatividad. 2. El resto de las restricciones, del tipo que sean, a las que a veces de les denomina restricciones verdaderas. Exceptuando el caso de los problemas lineales en números enteros, las variables pueden tomar cualquier conjunto de valores reales que satisfagan las restricciones. Precisamente, se tratará de encontrar, de entre estos posibles valores, aquel que de un mejor valor a la función lineal antes mencionada. Las restricciones son normalmente inecuaciones o ecuaciones. Se puede suponer, siempre que sea necesario, que algunas inecuaciones se han multiplicado por – 1, para que todas las desigualdades tengan el mismo sentido, y que algunas variables se han sustituido por sus opuestas para que las únicas condiciones suplementarias impuestas a estas variables sean restricciones de no negatividad. 2.1. EJEMPLO Enunciado Supongamos que un ganadero está especializado en la explotación de ganado vacuno y que en el mercado puede comprar cuatro tipos de pienso, A, B, C y D. La composición de los piensos por tonelada es la siguiente: 5 Programación Lineal para la Ingeniería Técnica Datos del problema • El pienso A contiene 200 unidades de un pienso nutritivo M y 300 unidades de otro N. • El pienso B contiene 150 unidades de M y 270 unidades de N. • El pienso C contiene 100 unidades de M y 140 unidades de N. • El pienso D contiene 45 unidades de M y 90 unidades de N. Por otro lado, teniendo en cuenta el número de cabezas existente en la explotación, para la alimentación diaria se necesitan 5500 unidades del elemento M y 8700 de N. El coste por tonelada de cada uno de los piensos es de 90, 81, 40 y 24 unidades monetarias respectivamente para A, B, C y D. Se tratará de determinar el tipo y cantidad de piensos que se deben comprar de forma que, garantizando la alimentación del ganado, el coste sea mínimo. Solución: La formulación matemática del problema sería: min Introducción de las variables y formulación del problema s.a.: donde 90 x1 + 81x2 + 40 x3 + 24 x4 200 x1 + 150 x2 + 100 x3 + 45 x4 ≥ 5500 300 x1 + 270 x2 + 140 x3 + 90 x4 ≥ 8700 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 [1] [2] [3] [4] x1 : toneladas que se deberán comprar de A. x 2 : toneladas que se deberán comprar de B. x3 : toneladas que se deberán comprar de C. x 4 : toneladas que se deberán comprar de D. La función lineal que se optimiza es [1], las restricciones lineales o verdaderas son [2] y [3], y las restricciones de no negatividad son [4]. Obviamente, en este caso, el problema de optimización se concreta en uno de minimización, puesto que la función que se optimiza [1] representa el coste total de adquirir x1 toneladas de A, x 2 de B, x3 de C y x 4 de D al precio de 90, 81, 40 y 24 unidades monetarias por tonelada respectivamente. 6 Programación Lineal para la Ingeniería Técnica Cada una de las restricciones lineales [2] y [3] se formula como una inecuación del tipo “mayor o igual”, ya que representa la cantidad total de elemento nutritivo M y N, respectivamente, que contiene la ración formada por x1 toneladas de pienso A, x 2 de B, x3 de C y x 4 de D, y que debe ser al menos 5500 unidades para M y al menos 8700 unidades para N, es decir, mayor o igual que 5500 y 8700 unidades respectivamente. Por último, es obvio que la cantidad (toneladas) que incluye la ración de los piensos A, B, C y D debe ser no negativa, es decir, mayor o igual que cero, con lo que quedan justificadas las restricciones de no negatividad [4]. 2.1. MODELIZACIÓN DEL PROBLEMA volver a problema general La traducción algebraica que podemos hacer para la formulación del objetivo, tratará de optimizar (minimizar o maximizar) la función lineal: f (x1 ,… , xn ) = n ∑c x j j j =1 siendo constantes los coeficientes c j . Del mismo modo, para la formulación del sistema de restricciones: n ∑a ij x j ≥ bi , i = 1, ..., p ij x j = bi , i = p + 1, ..., m j =1 n ∑a j =1 xj ≥ 0, j = 1, ..., q x j cualquiera j = q + 1, ..., n Un significado apropiado para cada una de las cantidades que intervienen sería el siguiente: 7 Programación Lineal para la Ingeniería Técnica x j : nivel de actividad j-ésima. cj : Por tanto, n denotará el número de actividades. margen de beneficio o coste que supone producir una unidad de la actividad j-ésima. aij : cantidad del i-ésimo recurso requerido para producir una unidad de la bi : j-ésima avtividad. Por tanto, m denotará el número de recursos. cantidad disponible del i-ésimo recurso o su requerimiento. Toda la teoría que vamos a desarrollar se establece bajo la condición fundamental de no negatividad de las variables, condición que se impone a priori en casi todos los problemas económicos, y que puede adoptarse siempre en cualquier problema. Consideremos tres formulaciones equivalentes del problema, todas ellas equivalentes a su vez a la forma general, y todas con variables no negativas: 1. Forma canónica: útil para el desarrollo de la teoría de la dualidad. max s.a.: z = cc xc Ac xc ≥ bc xc ≥ 0 2. Forma estándar: para desarrollar los métodos de cálculo. max s.a.: z = cd xd Ad xd = bd xd ≥ 0 3. Forma mixta: comprende a las dos anteriores. max s.a.: 8 z = ct xt ati xt ≥ bi , ati xt = bi , xt ≥ 0 i = 1, ..., p i = p + 1, ..., m Programación Lineal para la Ingeniería Técnica Todo problema de Programación Lineal puede reducirse a la forma estándar, con el siguiente enunciado: Hallar X = (x1 , … , xn ) ∈ ℜ n que maximice la forma lineal: Z = f (X ) = c1 x1 + … + cn xn sujeto a las siguientes restricciones: a11 x1 + … + a1n xn = b1 volver a forma éstandar am1 x1 + … + amn xn = bm x j ≥ 0 , j = 1, ..., n, bi ≥ 0 , i = 1, ..., m (m < n) En notación matricial: max s.a.: Z = CX AX = B X ≥0 donde: x1 a11 … a1n b1 C = (c1 , … , cn ), X = , A = , B = , m < n x a b n m1 … amn m X ≥ 0 , denota que sus componentes son todas mayor o igual que cero. a1i Llamaremos Pi = ⇒ A = (P1 , … , Pn ) . a mi Para llegar a la forma estándar realizaremos, en caso de ser necesario, alguna de las siguientes operaciones: 9 Programación Lineal para la Ingeniería Técnica Operación I: maximizar f (X) equivale a minimizar – f (X). De este modo, siempre el problema se puede transformar en uno de maximización. Operación II: una variable de cualquier signo x j , siempre se puede sustituir por dos no negativas de la forma que sigue: x j = x +j − x −j , con x +j = max(0, x j ) ≥ 0 , x −j = max(0,− x j ) ≥ 0 . Obsérvese que así, el número de variables aumenta en una por cada una a la que le apliquemos esta transformación. Si no se desea aumentar el número de variables podemos utilizar otro método: supongamos que x1 no está restringida en signo, entonces podemos eliminarla utilizando alguna de las restricciones en la que el coeficiente de x1 sea distinto de cero. Por ejemplo, si ai1 x1 + … + ain xn = bi es tal que ai1 ≠ 0 , entonces: x1 = 1 (bi − ai 2 xi 2 − … − ain xn ) ai1 y sustituimos esta expresión en todas las restricciones restantes, así como en la función objetivo. El problema quedará expresado en términos de una variable y una restricción menos que el problema original. Obviamente, una vez obtenido el óptimo para este nuevo problema con n – 1 variables y m – 1 restricciones, se encuentra el óptimo para el problema original fácilmente. Operación III: si para algún i se tiene bi ≤ 0 , entonces se multiplica esa restricción por – 1, obteniendo: n ∑a x ij j =1 n j = bi ⇔ −∑ aij x j = −bi j =1 donde ahora − bi ≥ 0 . Operación IV: toda ecuación puede sustituirse por dos inecuaciones: 10 Programación Lineal para la Ingeniería Técnica n ∑ aij x j ≥ bi n aij x j = bi ⇔ j =n1 ∑ j =1 − ∑ aij x j ≥ −bi j =1 Operación V: toda inecuación puede sustituirse por una ecuación, agregando al primer término una variable, llamada de compensación o de holgura, yi ≥ 0 . n ∑a ij x j ≥ bi ⇔ j =1 n ∑a ij n ∑a ij x j − yi = bi j =1 x j ≤ bi ⇔ j =1 n ∑a ij x j + yi = bi j =1 Esta variable está afectada de un coeficiente nulo en la función objetivo a optimizar. El problema quedaría: min s.a.: Z = CX + 0Y AX − IY = B X ≥ 0, Y ≥ 0 1 0 … 0 y1 0 1 … 0 donde: 0 = (0, … ,0 ), Y = , I = y m 0 … 0 1 Si hacemos el cambio de notación: y s = xn + s , 1 ≤ s ≤ m , entonces: X C * = (C ,0) , X * = , A* = (A,− I ) ⇒ Y max Z * = C* X * A* X * = B X* ≥ 0 11 Programación Lineal para la Ingeniería Técnica A partir del planteamiento del problema de Programación Lineal expresado en su formulación estándar, vamos a estudiar las principales definiciones y resultados que soportan el aspecto teórico del procedimiento de solución que veremos posteriormente. max s.a.: volver a significado apropiado Z = CX AX = B A: matriz de coeficientes tecnológicos. B: vector de disponibilidad de recursos. X ≥0 C: vector de precios o costes unitarios. 3.1. DEFINICIONES Algunos conceptos que utilizaremos en lo sucesivo son: Función objetivo: la función a optimizar f(X). Sistema de restricciones lineales: conjunto de todas las restricciones. Solución factible: X = (x1 , … , xn ) que satisfaga el conjunto de restricciones lineales. Solución factible básica: la que tiene a lo sumo m variables no nulas. Solución factible básica no degenerada: la que tiene exactamente m variables no nulas. Solución óptima: la mejor entre las factibles. Región de factibilidad (F): conjunto de todas las soluciones posibles o factibles. 12 Programación Lineal para la Ingeniería Técnica Punto n-dimensional en el espacio IRn: es la n-tupla X = (x1 , … , xn ) , y está caracterizado por ser un conjunto ordenado de n valores o coordenadas llamadas también componentes de X. A continuación, procedemos a formular otras definiciones de interés. Definición: n concepto relacionado con convexo Un conjunto C de IR es convexo si para dos puntos cualesquiera del conjunto, el segmento que los une también está contenido en el conjunto. Esto es, ∀v1 , v2 ∈ C ⇒ αv1 + β v2 ∈ C , con α, β ≥ 0 y α + β = 1 . En dos dimensiones podemos ver algunos ejemplos: CONVEXOS NO CONVEXOS Definición: papel de la combinación lineal convexa Una combinación lineal convexa es una combinación de la forma n ∑α x i i , con i =1 n ∑α i =1 i = 1 , α i ≥ 0, ∀i = 1, … , n . En particular, si n = 2, queda λx1 + (1 − λ )x2 , 0 ≤ λ ≤ 1 . También se le llama segmento lineal n-dimensional. 13 Programación Lineal para la Ingeniería Técnica Definición: En un espacio n-dimensional, el subconjunto de puntos cuyas coordenadas satisfacen a1 x1 + … + an xn = b se llama hiperplano. Un hiperplano tiene dimensión n – 1 en un espacio n-dimensional. Al conjunto de puntos cuyas coordenadas satisfacen a1 x1 + … + an xn ≤ b se le llama semiespacio cerrado. Definición: Un conjunto convexo se llama poliedro si es la intersección de un número finito de semiespacios cerrados. Definición: Un punto extremo de la región de factibilidad F es un punto que no puede ser expresado como combinación lineal convexa de otros puntos del conjunto, pero cualquier otro punto del conjunto puede expresarse como combinación lineal convexa de puntos extremos. Si el número de extremos es finito, a C se le llama poliedro convexo. 3.2. PROPOSICIONES BÁSICAS Dado el problema de Programación Lineal expresado en forma estándar, se tienen los siguientes resultados. max s.a.: Z = CX AX = B X ≥0 Teorema: El conjunto de soluciones factibles en un problema de Programación Lineal, F, caso de no ser vacío, es un poliedro convexo que no contiene rectas. 14 Programación Lineal para la Ingeniería Técnica Demostración: Supongamos que F ≠ ∅ . Sean X 1 , X 2 ∈ F , y sean α, β cualquiera números reales tales que α ≥ 0 , β ≥ 0 , α + β = 1 . Entonces, por hipótesis, se tiene que X 1 ≥ 0 , AX 1 = B , X 2 ≥ 0 , AX 2 = B . Se tiene que αX 1 + β X 2 ≥ 0 y A αX 1 + β X 2 = αAX 1 + β AX 2 = αB + βB = B ; ( ) luego toda combinación lineal convexa de X 1 y X 2 pertenece a F. La imposibilidad de contener rectas es consecuencia directa de las restricciones de no negatividad de las variables en el problema. Teorema Fundamental de la Programación Lineal: a) La función objetivo es máxima en un punto extremo (vértice) del conjunto convexo F de las soluciones factibles. b) Si dos vértices son máximos para la función objetivo, entonces lo es toda combinación lineal convexa de éstos. Demostración: Supongamos que F es un poliedro convexo. a) Sean X 1 , … , X k los vértices de F y sea X 0 un punto no extremo y solución posible; por no ser extremo se tiene que X 0 = k ∑α X i i , con i =1 k ∑α i ( ) = 1 , α i ≥ 0 , i = 1, ..., k. La función objetivo en X 0 es f X 0 = CX 0 , i =1 entonces: ( ) k f X 0 = C ∑ αi X i = i =1 k ∑ α CX i i =1 i = k ∑ α f (X ) i i i =1 15 Programación Lineal para la Ingeniería Técnica {( ) } k ( ) ∑α λ = λ. Sea λ = max f X i , i = 1, … , n ⇒ f X 0 ≤ i Por tanto, X 0 no es i =1 un punto máximo de la función objetivo y el máximo se ha de alcanzar en los extremos. b) Sean X 1 , X 2 dos extremos donde se alcanza el máximo de la función objetivo, es decir, f X 1 = f X 2 = λ , y sean α ≥ 0 , β ≥ 0 con α + β = 1 . ( ) ( ) Por ser f lineal, se tiene: ( ) ( ) ( ) f αX 1 + β X 2 = αf X 1 + β f X 2 = αλ + βλ = (α + β )λ = λ lo cual demuestra la segunda parte. Teorema: Si existen k vectores Pi linealmente independientes y existen x1 , … , xk reales tales que k ∑xP i i i =1 = B con todos los xi ≥ 0 y k < n, entonces X = (x1 , … , xk ,0, … ,0 ) es un vértice de F. Demostración: Supongamos, por reducción al absurdo, que X no es vértice de F. Entonces, existen X 1 = x11 , … , x1n , X 2 = x12 , … , xn2 vértices distintos de F, y α, β ( ) ( ) números reales ( α ≥ 0 , β ≥ 0 con α + β = 1 ) tales que X = αX 1 + β X 2 , esto es: (x1 , … , xk ,0, … ,0) = α(x11 , … , x1n ) + β(x12 , … , xn2 ) Podemos considerar que α ≠ 0 y β ≠ 0 , ya que: Si α = 0, entonces β = 1, y se tendría que X = X 2 , llegando a contradicción. Si β = 0, entonces α = 1, y se tendría que X = X 1 , llegando a contradicción. Por tanto: x1k +1 = … = x1n = xk2+1 = … = xn2 = 0 , y como X 1 , X 2 ∈ F , se tiene: 16 Programación Lineal para la Ingeniería Técnica AX 1 = B ⇒ P1 x11 + … + Pk x1k = B 1 2 1 2 ⇒ x1 − x1 P1 + … + xk − xk Pk = 0 2 2 2 AX = B ⇒ P1 x1 + … + Pk xk = B ( ) ( ) y como Pi son linealmente independientes, se deduce que: xi1 = xi2 , i = 1, … , k ⇒ X 1 = X 2 , lo que de nuevo es una contradicción. Así, por cualquiera de los caminos llegamos a contradicción con la hipótesis de partida, por lo tanto se concluye que X es un vértice de F. Teorema. (recíproco del anterior) Si el punto X = (x1 , … , xk ,0, … ,0 ) es un vértice del conjunto de restricciones, n ∑xP entonces los vectores Pi asociados mediante i i = B a los xi son linealmente i =1 independientes. Demostración: Sea X = (x1 , … , xk ,0, … ,0 ) vértice de F con xi > 0 para 1 ≤ i ≤ k , entonces sus vectores asociados mediante n ∑xP i i = B son P1 , … , Pk , y supongamos i =1 que son linealmente dependientes. Entonces, existen escalares β1 , … , β k tales que β1 P1 + … + β k Pk = 0 con alguno de esos escalares distinto de cero. k Sea α > 0 ⇒ α∑ β i Pi = 0 , luego se tiene: i =1 + αβi )Pi = B i =1 i =1 i =1 k k k xi Pi − α∑ βi Pi = ∑ (xi − αβi )Pi = B ∑ i =1 i =1 i =1 k k ∑ xi Pi + α∑ βi Pi = k ∑ (x i Construimos dos vectores de la forma: 17 Programación Lineal para la Ingeniería Técnica X 1 = (x1 + αβ1 , … , xk + αβ k ,0, … ,0 ) X 2 = (x1 − αβ1 , … , xk − αβ k ,0, … ,0) Como todas las xi > 0 siempre podemos elegir un α > 0 tal que todas las componentes xi + αβi y xi − αβ i sean estrictamente positivas. Según esto, X 1 , X 2 ∈ F por el teorema anterior. X1 + X 2 X1 X 2 Pero = + = X , lo que entra en contradicción con el hecho 2 2 2 de ser X vértice de F, porque si X es punto medio del segmento definido por X 1 y X 2 en el convexo F, X no puede ser vértice de F. Concluimos por tanto que P1 , … , Pk son linealmente independientes. Propiedades: Dado el problema de Programación Lineal en forma estándar, se tienen las siguientes propiedades: 1. Si tiene solución factible, entonces tiene solución factible básica. 2. Si existe una solución factible óptima, entonces existe una solución factible básica óptima. 3. Cualquier punto extremo de F también es solución factible básica. 4. Si F es distinto del vacío, al menos posee un punto extremo. 5. Si F es igual al vacío, no existe solución óptima. 6. F posee un número finito de puntos extremos. 7. Si la función objetivo está acotada superiormente en F distinto del vacío, entonces existen soluciones óptimas, al menos una de las cuales es un punto extremo de F. 18 Programación Lineal para la Ingeniería Técnica 8. Si F es no acotado, puede existir solución óptima no acotada. Consecuencia: Para encontrar las soluciones factibles básicas óptimas, bastará con investigar el valor que toma la función objetivo en los puntos extremos del poliedro convexo que constituye la región de factibilidad, representada por la intersección de las restricciones. Además, si dos de estos extremos son óptimos, también lo será cualquier punto del segmento o combinación lineal convexa que los une, con lo que tendríamos un número infinito de soluciones óptimas. Se estaría en esta situación cuando la función objetivo fuera paralela a una restricción. 19 Programación Lineal para la Ingeniería Técnica Siempre que el problema incluya únicamente dos o tres variables de decisión, podemos representar gráficamente las restricciones para dibujar en su intersección el poliedro convexo que conforma la región de factibilidad F. Si el número de variables es dos, las restricciones, semiespacios cerrados, son semiplanos delimitados por la recta que corresponde a cada restricción. Si el número de variables es tres, los semiespacios en este caso están delimitados por planos. 4.1. REGLA DE LOS CINCO PASOS Para hallar, gráficamente, la solución de un problema de Programación Lineal con dos variables, procederemos del siguiente modo: Paso 1: representaremos todas las restricciones del problema para determinar la región de factibilidad F. Si ésta es vacía, el problema no tiene solución óptima, se dice que es inconsistente. En otro caso, ir al paso 2. Paso 2: identificar los extremos o vértices de F. Paso 3: dibujar una de las rectas que pertenece a la familia de rectas paralelas que representa la función objetivo, f(X) = k. Habitualmente, suele dibujarse f(X) = 0 por comodidad. Paso 4: desplazamos paralelamente a sí misma la recta que representa la función objetivo para determinar la dirección de mejora, que será aumento o disminución según si el objetivo del problema es la maximización o minimización de dicha función. 20 Programación Lineal para la Ingeniería Técnica Paso 5: el punto extremo de F al que corresponde el valor óptimo para la recta que representa la función objetivo es la solución óptima finita del problema. Nota: hay que tener en cuenta que pueden presentarse las situaciones estudiadas en el apartado anterior, cuando existe más de un punto extremo o la región de factibilidad es no acotada. 4.2. EJEMPLO Enunciado (El problema de la ración) Supongamos que se quiere elaborar una ración que satisfaga unas condiciones mínimas de contenidos vitamínicos diarios, por ejemplo 2 mg de vitamina A, 60 mg de B y 40 mg de C. Para ello se van a mezclar dos clases de piensos, P y Q, cuyo precio por kilogramo es, respectivamente, de 40 y 60 pesetas, y cuyo contenido en las vitaminas citadas es: A B C 1 kg de P 1 mg 20 mg 10 mg 1 kg de Q 0.5 mg 20 mg 20 mg ¿Cómo deben mezclarse los piensos para que satisfagan esas necesidades vitamínicas con el menor gasto posible?. Solución: Definición de variables Denotamos: x = cantidad de P que se debe consumir diariamente. y = cantidad de Q que se debe consumir diariamente. La función objetivo a minimizar en este caso consiste en el coste producido por la compra de los piensos P y Q, esto es: f (x, y) = 40x + 60y 21 Programación Lineal para la Ingeniería Técnica Las restricciones lineales que aseguran que se satisfacen las necesidades mínimas en contenido de vitaminas quedan expresadas como: x + 0.5y ≥ 2 20x + 20 y ≥ 60 10x + 20 y ≥ 40 (vitamina A) (vitamina B) (vitamina C) Con todo ello, y las restricciones de no negatividad debido a la definición de las variables, el problema queda planteado como sigue: Formulación del problema min s.a.: f(x, y) = 40x + 60y x + 0.5 y ≥ 2 20 x + 20 y ≥ 60 10 x + 20 y ≥ 40 x ≥ 0, y ≥ 0 Dibujamos la región de factibilidad: Resolución gráfica. Método de los 5 pasos 4 A 3 B 2 C 1 D 0 1 40x + 60y = 0 2 x + 0.5y = 2 3 4 20x + 20y = 60 10x + 20y = 40 El mínimo se alcanza en C(2,1), esto es, se necesitan 2 kilogramos de P y 1 kilogramo de Q, con un coste diario por animal de 140 pesetas. 22 Programación Lineal para la Ingeniería Técnica Alternativa de solución gráfica Otra opción de resolver este tipo de problemas en dos dimensiones consiste en, una vez localizados los puntos extremos en el paso 2, sustituir los pasos 3, 4 y 5 del método de resolución gráfica por una simple sustitución de los vértices en la función objetivo para localizar visualmente en cuál se alcanza el óptimo buscado. En esta segunda opción, hay que tener en cuenta que si la región de factibilidad no está acotada como en el ejemplo, es necesario seleccionar, junto con los vértices, un punto en cada una de las restricciones por las que no se cierra la región factible, y una vez sustituidos en la función objetivo, realizar el límite a lo largo de la restricción correspondiente. Ilustramos esta operación con el ejemplo que estamos considerando. En este caso, los vértices son: A(0,4), B(1,2), C(2,1), D(4,0), y consideramos dos puntos de la forma E(x,0), F(0,y) que corresponden a las rectas que abren la región factible. Sustituimos estos seis puntos en la función objetivo a minimizar: f(A) = f(0,4) = 240 f(B) = f(1,2) = 160 f(C) = f(2,1) = 140 f(D) = f(4,0) = 160 f(E) = f(x,0) = 40x f(F) = f(0,y) = 60y lim 40 x = +∞ x → +∞ lim 60 y = +∞ y → +∞ Como es obvio, el resultado es el mismo. Es de destacar en este ejemplo que la misma función con las mismas restricciones no posee máximo acotado. 4.3. OBSERVACIONES Observación 1: Si f(x, y) = ax + by, la dirección de “mejora” se obtiene geométricamente de la siguiente manera: 23 Programación Lineal para la Ingeniería Técnica • Si b > 0, el máximo se calculará trasladando paralelamente f(x, y) = k hasta que toque al último vértice, donde se encontrará el máximo. Para el caso de mínimo, se realizará lo mismo para el primer vértice. • Si b < 0, se procede de manera contraria, esto es, para el máximo nos fijaremos en el primer vértice, y para el mínimo en el último. Observación 2: En caso de duda, calcular el valor de f en los vértices, si la región de factibilidad está acotada. Si no lo está, mirar también en puntos “alejados” a ver que pasa (como ya hemos mencionado antes). Observación 3: Observemos, por último, que este mismo procedimiento puede seguirse en el caso de que el problema incluya tres variables, efectuando una representación espacial 3 en IR . Lógicamente, si la dimensión del problema es mayor, la representación gráfica es imposible. 24 Programación Lineal para la Ingeniería Técnica Supongamos que queremos resolver el problema lineal sin desarrollar una técnica específica. Un método de resolución que se podría pensar de forma casi intuitiva es el siguiente. El problema puede expresarse introduciendo, si hace falta, variables de holgura como: max Z = c1 x1 + … + cn xn s.a.: a11 x1 + … + a1n xn + xnH+1 = b1 a21 x1 + … + a2 n xn + xnH+ 2 = b2 am1 x1 + … + amn xn + xnH+ m = bm xi ≥ 0 , i = 1, … , n xnH+ j ≥ 0 , j = 1, … , m Este problema tiene m ecuaciones y n + m incógnitas. Para resolverlo podemos elegir m columnas linealmente independientes cualesquiera y resolver los subproblemas de esta forma obtenidos, analizando de entre las soluciones que se tengan, cuál es óptima para la función objetivo. Nótese que la submatriz formada por los m vectores columna correspondientes a las m variables de holgura es justamente la matriz identidad, y por tanto, no singular. Veámoslo con un ejemplo. Supongamos el siguiente problema a resolver: max s.a.: 25 f (x1 , x2 ) = −3x1 + 2 x2 − 2 x1 + x2 ≤ 2 x1 − 2 x2 ≤ 3 x1 + 2 x2 ≤ 11 x1 , x2 ≥ 0 Programación Lineal para la Ingeniería Técnica Introduciendo las correspondientes variables de holgura, con coste cero en la función objetivo, el problema expresado en su formulación estándar queda como: Forma estándar max f (x1 , x2 ) = −3x1 + 2 x2 + 0 x3H + 0 x4H + 0 x5H s.a.: − 2 x1 + x2 + x3H = 2 x1 − 2 x2 + x4H = 3 x1 + 2 x2 + x5H = 11 x1 , x2 , x3H , x4H , x5H ≥ 0 La matriz de coeficientes tecnológicos del problema es: 1 1 0 0 − 2 A = 1 − 2 0 1 0 1 2 0 0 1 Como cualesquiera tres vectores columna son linealmente independientes, tenemos C53 = 10 formas distintas de elegir tres columnas de la matriz de coeficientes tecnológicos, es decir, tenemos 10 sistemas lineales a resolver como éste: 1 1 x1 2 − 2 x1 7 1 − 2 0 x2 = 3 ⇒ x2 = 2 1 x 14 2 0 x3 11 3 La siguiente tabla resume el resultado de plantear estos 10 sistemas. En ella se especifica, además del número asignado a cada sistena, los vectores columna elegidos para cada uno de ellos y la solución que proporcionan. Así mismo, si añadimos la condición de no negatividad de las variables, obtenemos cuales de las soluciones anteriores son factibles para el problema lineal. Finalmente, señalamos el valor que toma la función objetivo únicamente para las soluciones proporcionadas por los 10 sistemas que han sido factibles, eligiendo el máximo así obtenido para la función objetivo. Este resultado óptimo se señala en negrita dentro de esta tabla. 26 Programación Lineal para la Ingeniería Técnica Sistema nº Vectores columna elegidos Solución Solución factible con la condición de no negatividad Valor de la f.o. 1 1, 2, 3 (7, 2, 14, 0, 0) (7, 2, 14, 0, 0) -17 2 1, 2, 4 (7/5, 24/5, 0, 56/5, 0) (7/5, 24/5, 0, 56/5, 0) 27/5 3 1, 2, 5 (-7/3, -8/3, 0, 0, 56/3) 4 1, 3, 4 (11, 0, 24, -8, 0) 5 1, 3, 5 (3, 0, 8, 0, 8) (3, 0, 8, 0, 8) -9 6 1, 4, 5 (-1, 0, 0, 4, 12) 7 2, 3, 4 (0, 11/2, -7/2, 14, 0) 8 2, 3, 5 (0, -3/2, -7/2, 0, 14) 9 2, 4, 5 (0, 2, 0, 7, 7) (0, 2, 0, 7, 7) 4 10 3, 4, 5 (0, 0, 2, 3, 11) (0, 0, 2, 3, 11) 0 Posibles soluciones ( ) El valor óptimo para la función objetivo es Z * = f * x1* , x2* = valores de las variables x1* = 27 , obtenido con los 5 7 * 24 , x2 = . 5 5 Este procedimiento da idea de cómo resolver en general problemas de Programación Lineal pero, como es obvio, presenta grandes inconvenientes para su uso práctico cuando las dimensiones del sistema son mayores, lo cual suele ser habitual en problemas reales. Nótese, que el número de sistemas lineales a m + n , por ello el método más utilizado es el del resolver será en general m Simplex de Dantzig que utiliza un número razonable de etapas. Ir al bloque 2 27