Capitulo 3 Método de Generación de Columnas El método de generación de columnas, es muy útil en problemas con un gran número de variables pero con un relativamente pequeño número de restricciones (Hunsaker, 2004). En 1958 Ford y Fulkenson sugirieron por primera vez lidiar implícitamente solo con algunas variables para problemas de flujo en redes, en 1960, Dantzig y Wolfe desarrollaron una estrategia para extender las columnas de un problema lineal lo necesario para obtener una solución. Esta técnica fue implementada por primera vez por Gilmore y Gomory en 1961 para resolver el problema “cutting stock” (Desrosiers & Lübbecke, 2005). La técnica del método de generación de columnas consiste en resolver problemas de programación lineal donde las columnas (variables del problema) no son conocidas o es impráctico generarlas explícitamente, generalmente en problemas que tienen un número exponencial de variables. Para resolver estos problemas se empieza con un problema maestro, el cual es una relajación lineal del problema original y debe de tener una estructura relativamente simple (se genera solo un número pequeño de columnas, necesario para obtener una solución factible para el problema relajado). Después hay un sub-problema (al que se le denomina sub-problema de pricing) que permite identificar columnas (variables) adicionales que no han sido incluidas en el problema maestro y que mejoren el valor de la función objetivo. Hoy en día, el método de generación de columnas es ampliamente usado en una gran cantidad de problemas, como por ejemplo: problemas de rutas de vehículos, algunos problemas del agente viajero, programación de horarios para equipos de trabajo, etc. (Desrosiers & Lübbecke, 2005). En el siguiente capítulo se hablará del uso del método de generación de columnas para resolver el problema de corte (“cutting stock”). 3.1 Problema de corte (“Cutting Stock”) Como vimos anteriormente, el problema “cutting stock” consiste en encontrar el mínimo número de rollos (o unidades de materia prima) que se necesitan para obtener un conjunto de artículos de diferentes tamaños. Cada uno de estos artículos tiene una demanda específica la cual corresponde al número mínimo de veces que se va a cortar de las unidades de materia prima (de Carvalho, Alves, & Clautiaux, 2008). Existen diferentes tipos de problemas de corte (“cutting stock”), como el unidimensional y el bidimensional. El bidimensional consiste en decidir de qué manera se va a cortar la materia prima cuando se tienen dos dimensiones a considerar en los productos (ancho y largo). Un ejemplo de este tipo de problemas se presenta en la industria textil, al cortar la tela para fabricar diferentes tipos de prendas. Este trabajo se va a enfocar en los problemas de corte unidimensionales, los cuales, al igual que en el mencionado anteriormente, consiste en decidir de qué manera se va a cortar la materia prima, pero en los productos a fabricar solo se considera una dimensión (ancho). Un ejemplo de este tipo de problemas se presenta en la industria del papel, entre otras, donde de un rollo de ancho 𝑊, se extraen diferentes productos de papel con ancho 𝑡. Como vimos en la ¡Error! No se encuentra el origen de la referencia. para una instancia pequeña del problema se generan una gran cantidad de patrones de corte, los cuales crecen exponencialmente a medida que crece el número de anchos. Para resolver este problema se utiliza el método de generación de columnas. 3.2 Algoritmo del Método de Generación de columnas Para ilustrar el método se utilizará el problema expuesto en la sección 1, tomado del libro de Chvátal, 1946. Donde los rollos de materia prima tienen un ancho de 𝑊 = 100 𝑚𝑚, y el resumen de pedidos es el siguiente: 𝑏𝑖 𝑡𝑖 1 97 45 2 610 36 3 395 31 4 211 14 Como vimos en la sección 1 lo que se busca es Minimizar 𝑧 = 𝑥𝑗 𝑗 ∈𝐽 Sujeto a: 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖 ⋎𝑖 ∈𝐼 𝑥𝑗 ≥ 0 ⋎𝑗 ∈𝐽 𝑗 ∈𝐽 En lugar de resolver el problema entero ser resuelve la relajación lineal para obtener una cota inferior para la solución óptima del problema. Por lo tanto se relajan las restricciones de integridad. En este ejemplo el método de generación de columnas puede ser inicializado por el siguiente problema maestro: 2 0 0 0 0 2 0 0 0 0 3 0 0 97 48.5 0 610 305 𝑦 𝐛= 0 395 131.66 7 211 30.14 En general, siempre se puede inicializar con 𝑚 patrones de corte en donde el 𝑖 − ésimo patrón solo genere productos de ancho 𝑡𝑖 . Una vez definido, el problema maestro, se empieza la primera iteración. Paso 1. Se resuelve el sistema 𝐰 = 𝐜𝐁 𝐁 −𝟏 , para obtener las variables duales del problema (Chvátal, 1946). En el problema de corte “cutting stock” 𝐜𝐁 es igual a un vector cuyas componentes son todas 1. 𝐰= 1 1/2 0 1 1 1 0 0 0 1/2 0 0 0 0 0 0 = 1/2 1/3 0 0 1/7 1/2 1/3 1/7 Paso 2. Ahora se buscan números enteros no negativos, 𝑎1 , 𝑎2 , 𝑎3 , 𝑎4 , que serán la columna que entra a nuestra matriz básica, de tal manera que: 4 𝑤𝑖 𝑎𝑖 > 1 𝑖=1 4 𝑡𝑖 𝑎𝑖 ≤ 𝑊 𝑖=1 𝑎𝑖 ∈ ℤ ∀𝑖 = 1, … ,4 Para identificar si existe un patrón de corte que pueda mejorar el valor de la función objetivo del problema maestro se resuelve el siguiente problema de la mochila donde lo que se busca es: 4 Maximizar 𝑧 = 𝑤𝑖 𝑎𝑖 𝑖=1 4 Sujeto a: 𝑡𝑖 𝑎𝑖 ≤ 𝑊 𝑖=1 𝑎𝑖 ∈ ℤ ∀𝑖 = 1, … ,4 Si el valor de la función objetivo es mayor a 1, se continúa con el paso 3, si no se da por terminado el algoritmo. Al resolver el problema: Maximizar 𝑧 = Sujeto a: 1 1 1 1 𝑎1 + 𝑎2 + 𝑎3 + 𝑎4 2 2 3 7 45𝑎1 + 36𝑎2 + 31𝑎3 + 14𝑎4 ≤ 100 𝑎1 , 𝑎2 , 𝑎3 , 𝑎4 ∈ ℤ Se obtiene la solución 0 2 𝐚𝟓 = 𝑦 𝑧 = 1.2857 0 2 Paso 3. Se resuelve el sistema𝐲𝟓 = 𝐁 −𝟏 𝐚𝟓 , por lo tanto. 1/2 0 𝐲𝟓 = 0 0 0 1/2 0 0 0 0 0 0 1/3 0 0 1/7 0 0 1 2 = 0 0 2/7 2 Paso 4. Obtenemos 𝑏𝑟 𝑦 𝑟𝑘 , para determinar que columna va a salir de la base para ser intercambiada por nuestra columna 𝐚𝟓 (Chvátal, 1946) donde el índice 𝑟 se determina utilizando el criterio de la razón mínima que se muestra a continuación, 𝑏𝑟 𝑏𝑖 = mínimo : 𝑦 > 0 = 𝑥𝑘 1≤𝑖≤𝑚 𝑦𝑟𝑘 𝑦𝑖𝑘 𝑖𝑘 Por lo tanto: 𝑏2 305 = = 305 𝑦2𝑘 1 𝑏4 30.14 = = 105.5 2 𝑦4𝑘 7 Paso 5. Se modifica la base 𝐁 en donde 𝐚𝟓 reemplaza a 𝐚𝟒 : 48.5 2 0 𝑩= 0 0 0 2 0 0 0 0 3 0 𝑏4 0 48.5 305 − 𝑦 2 199.5 4𝑘 𝑦𝑏= = 131.66 0 131.66 𝑏4 2 105.5 𝑦4𝑘 Comenzamos la segunda iteración: Paso 1. 𝐰= 1 Paso 2. 1/2 0 1 1 1 0 0 0 0 0 1/2 0 −1/2 = 1/2 1/2 1/3 0 0 1/3 0 0 0 1/2 Maximizar 𝑧 = Sujeto a: 1 1 1 𝑎1 + 𝑎2 + 𝑎3 + 0𝑎4 2 2 3 45𝑎1 + 36𝑎2 + 31𝑎3 + 14𝑎4 ≤ 100 𝑎1 , 𝑎2 , 𝑎3 , 𝑎4 ∈ ℤ 0 1 𝐚𝟔 = 𝑦 𝑧 = 1.166 2 0 Paso 3. 1/2 0 𝐲𝟔 = 0 0 0 0 0 1/2 0 −1/2 0 1/3 0 0 0 1/2 0 0 1/2 1 = 2 2/3 0 0 Paso 4. 𝑏2 199.5 = = 399 1 𝑦2𝑘 2 𝑏3 131.66 = = 197.5 2 𝑦3𝑘 3 Paso 5. Se modifica la base 𝐁 en donde 𝐚𝟔 reemplaza a 𝐚𝟑 (Chvátal, 1946): 2 0 𝑩= 0 0 0 2 0 0 0 1 2 0 0 2 0 2 48.5 1 𝑏3 48.5 199.5 − 2 𝑦3𝑘 100.75 𝑦𝐛= = 197.5 𝑏3 105.5 𝑦3𝑘 105.5 Empezamos la tercera iteración. Paso 1. 𝐰= 1 1 Paso 2. 1/2 0 0 0 1/2 −1/4 1 1 0 0 1/2 0 0 0 0 −1/2 = 1/2 0 1/2 1/2 1/4 0 Maximizar 𝑧 = Sujeto a: 1 1 1 𝑎1 + 𝑎2 + 𝑎3 + 0𝑎4 2 2 4 45𝑎1 + 36𝑎2 + 31𝑎3 + 14𝑎4 ≤ 100 𝑎1 , 𝑎2 , 𝑎3 , 𝑎4 ∈ ℤ 2 0 𝐚𝟕 = 𝑦𝑧=1 0 0 Debido a que z no es mayor a 1, se detiene el proceso y agregamos la restricción de que las variables de decisión, 𝑥𝑗 para 𝑗 = 1, ⋯ ,6 debe tomar valores entero, por lo tanto, se resuelve el siguiente problema de programación entera: Minimizar 𝑧 = 𝑥1 Sujeto a: 2𝑥1 0𝑥1 0𝑥1 0𝑥1 𝑥1 𝑥1 + 𝑥2 + 0𝑥2 + 2𝑥2 + 0𝑥2 + 0𝑥2 , 𝑥2 , 𝑥2 + 𝑥3 + 0𝑥3 + 0𝑥3 + 3𝑥3 + 0𝑥3 , 𝑥3 , 𝑥3 + 𝑥4 + 0𝑥4 + 0𝑥4 + 0𝑥4 + 7𝑥4 , 𝑥4 , 𝑥4 + 𝑥5 + 0𝑥5 + 1𝑥5 + 2𝑥5 + 0𝑥5 , 𝑥5 , 𝑥5 + 𝑥6 + 0𝑥6 + 2𝑥6 + 𝑥6 + 2𝑥6 , 𝑥6 , 𝑥6 ≥ ≥ ≥ ≥ ≥ ∈ 97 610 395 211 0 ℤ con solución óptima, 49 100 0 𝐱= 𝑦 𝑧 = 453 0 198 106 3.2.1 Heurísticas para mejorar el método de generación de columnas. Como podemos ver en el algoritmo de generación de columnas explicado en la sección 3.2, se puede mejorar observando lo siguiente: Se inicializa con una matriz con 𝑚 patrones de corte en donde el 𝑖 − ésimo patrón solo genera productos de ancho 𝑡𝑖 . Esto nos genera una matriz básica que contiene patrones de corte que incluyen un solo ancho y que por lo tanto se puede generar mucho desperdicio. Es conveniente inicializar con una matriz, que incluya patrones de corte que generen menor desperdicio. En cada una de las iteraciones se resuelve un problema de la mochila para identificar patrones de corte adicionales, el problema de la mochila es “NP-hard” y obtener la solución óptima puede requerir de mayor esfuerzo computacional a medida que va creciendo el número de anchos. El objetivo es resolver este problema usando una heurística, que permita encontrar patrones de corte factibles con mayor eficiencia. Cuando la heurística no encuentre patrones de corte que mejoren el valor de la relajación lineal, entonces se deberá resolver el problema de manera exacta. A continuación se explicarán cada uno de los procedimientos heurísticos utilizado para mejorar la eficiencia del procedimiento del método de generación de columnas. 3.2.1.1 Encontrando una buena solución inicial. Sea 𝑊, el ancho de los rollos de materia prima y 𝑏𝑖 la demanda de anchos 𝑡𝑖 para 𝑖 = 1, … , 𝑚. Lo primero que se debe de hacer es reordenar los productos a fabricar de acuerdo a sus anchos, donde: 𝑡1 ≥ 𝑡2 ≥ ⋯ ≥ 𝑡𝑚 . De esta manera al definir las componentes de 𝐁, aseguramos considerar primero patrones de corte que incluyan a los productos con un mayor ancho dejando el sobrante para los productos con menor ancho. El siguiente procedimiento, construirá la matriz inicial 𝐁 y la solución inicial 𝐱, en 𝑚 iteraciones. Sea 𝑗 el número de iteración, al principio de la iteración 𝑗, vamos a tener un conjunto 𝑄 el cual contiene exactamente 𝑚 − 𝑗 + 1 de los índices del conjunto {1, … , 𝑚}; en donde para cada 𝑖 ∈ 𝑄, se tiene un número no negativo 𝑏𝑖′ , el cual es el residuo de la demanda para el producto con ancho 𝑡𝑖 (inicialmente, 𝑏𝑖′ = 𝑏𝑖 para todo 𝑖 ∈ 𝐼 y 𝑟 = 𝑊). En la iteración 𝑗 se construye recursivamente la columna 𝐚𝐣 = 𝑎1𝑗 , … , 𝑎𝑚𝑗 𝑇 de 𝐁 de la siguiente manera (Chvátal, 1946): 0 𝑎𝑖𝑗 = 𝑠𝑖 𝑖 ∉ 𝑄 𝑖−1 𝑟− 𝑡𝑘 𝑎𝑖𝑘 𝑡𝑖 𝑠𝑖 𝑖 ∈ 𝑄 𝑘=1 El procedimiento para realizarlo es el siguiente. La componente 𝑎𝑖𝑗 correspondiente a la 𝑗 − ésima columna de 𝐁, va a ser igual al menor cociente 𝑎𝑖𝑗 = 𝑏𝑖′ ′ ′ 𝑡𝑖 para 𝑖 ∈ 𝑄 y 𝑎𝑖 > 0. De este modo, 𝑥𝑗 𝑎𝑗 ≤ 𝑏𝑖 para toda 𝑖 ∈ 𝑄 y 𝑥𝑗 𝑎𝑘 = 𝑏𝑘 , para al menos una 𝑘 ∈ 𝑄. Una vez realizado esto, se borra el índice 𝑘 de 𝑄, se intercambia cada 𝑏𝑖′ restante por 𝑏𝑖′ − 𝑥𝑗 𝑎𝑖 y se continua con la iteración (𝑗 + 1) (Chvátal, 1946). Para ilustrar esto, se buscará una solución inicial para el problema resuelto en el capítulo anterior. Iteración 1. Se encuentra: 𝑎11 = 100 𝑎21 = 10 45 36 = 2, = 0, 𝑎31 = 10 𝑎41 = 10 31 14 = 0, = 0, Ahora 𝑥1 = 97 2 = 48.5. Debido a que ya agregamos el producto con número de índice igual a 1, se borra el índice de 𝑄 para no volverlo a considerar en las siguientes iteraciones, y obtenemos que 𝑏2′ = 610, 𝑏3′ = 395 𝑦 𝑏4′ = 211. Iteración 2. Debido a que ya agregamos una columna de la base que contiene al producto con número de índice igual a 1, el valor de 𝑎12 es igual a cero, por lo tanto: 𝑎12 = 0, 𝑎22 = 100 𝑎32 = 28 𝑎42 = 28 = 2, 36 31 14 = 0, = 2, Ahora 𝑥2 = 𝑚𝑖𝑛 610 211 2 , 2 = 105.5. Debido a que 𝑏4′ 𝑎4 < 𝑏2′ 𝑎2 , el producto con índice 4 se borra de 𝑄 para no considerarlo en futuras iteraciones y se modifican los valor de 𝑏𝑖′ para 𝑖 ∈ 𝑄, y obtenemos que 𝑏2′ = 399 𝑦 𝑏3′ = 395. Iteración 3. Ahora en la base ya agregamos columnas que contiene a los productos cuyos números de índice son 1 y 4 por lo que 𝑎13 = 0 𝑦 𝑎14 = 0. 𝑎13 = 0, 𝑎23 = 100 𝑎33 = 28 = 2, 36 31 = 0, 𝑎43 = 0, Ahora 𝑥2 = que 𝑏3′ = 395. Iteración 4. 399 2 = 199.5. Se elimina el índice 2 del conjunto 𝑄, y obtenemos Ahora la base ya contiene una columna que incluye los productos con índices 1,2 y 4, y por tanto solo hace falta agregar a la base una columna que contenga el producto con índice 3: 𝑎14 = 0, 𝑎24 = 0, 𝑎34 = 100 31 = 3, 𝑎44 = 0, Ahora 𝑥4 = 395 3 = 131.67. De esta manera hemos producido una solución inicial 2 0 𝐁= 0 0 0 2 0 2 0 2 0 0 0 48.50 0 105.50 𝑦𝐛= 3 199.50 0 131.67 Nótese (página 24) que esta matriz básica está solamente a una iteración de la solución óptima. 3.2.1.2 Heurística para resolver el problema de la mochila (Martello & Toth, 1990). El problema de la mochila que se nos presenta en cada una de las iteraciones es el siguiente. Sea 𝐼 = 1, … , 𝑚 , y 𝑤𝑖 la ganancia de producto 𝑖 ∈ 𝐼, 𝑡𝑖 el ancho del producto 𝑖 ∈ 𝐼, 𝑏𝑖 la cota superior del producto 𝑖 ∈ 𝐼 y 𝑊 el ancho del rollo de materia prima, lo que se busca es seleccionar un número 𝑥𝑖 para 𝑖 ∈ 𝐼 de productos de tal manera que: 𝑛 Maximizar 𝑧 = 𝑤𝑖 𝑎𝑖 𝑖=1 𝑛 Sujeto a: 𝑡𝑖 𝑎𝑖 ≤ 𝑊 𝑖=1 0 ≤ 𝑎𝑖 ≤ 𝑏𝑖 , ∈ ℤ, 𝑖 ∈ 𝐼 Para ilustrar la heurística a utilizar se resolverá el problema de la mochila, de la iteración uno de la sección 3.2. El primer paso es ordenar los anchos de tal manera que: 𝑤𝑖1 𝑤𝑖2 𝑤𝑖 ≥ ≥⋯≥ 𝑛 𝑡𝑖1 𝑡𝑖2 𝑡𝑖𝑛 Se utiliza dicho ordenamiento ya que los cocientes 𝑤𝑖 𝑡𝑖 miden la contribución por unidad de capacidad usada en la función objetivo. Por ejemplo si cada unidad de la variable 𝑎𝑟 contribuye en 10 unidades al valor de la función objetivo y requiere de 2 unidades de la capacidad de la mochila, y si cada unidad de la variable 𝑎𝑠 , contribuye en 20 unidades al valor de la función objetivo pero ocupa 10 unidades de la capacidad de la mochila, la contribución por unidad de capacidad del artículo 𝑟 es de 5 mientras que la contribución por unidades de 𝑟 es de 2, y por lo tanto es más atractivo aumentar todo lo que se pueda el valor de 𝑎𝑟 , ya que proporciona 5 unidades de beneficio por cada unidad de capacidad utilizada. Debido a que la heurística va agregando los valores de las variables de acuerdo al orden establecido anteriormente es preferible que el primer valor que se agregue sea el que aporte un mayor beneficio a la función objetivo. Por lo tanto, para el mismo ejemplo utilizado anteriormente el ordenamiento es como sigue: 1 1 1 2≥ 2≥ 3≥ 7 36 45 31 14 1 Una vez reordenando los términos se inicializa con el siguiente algoritmo, el cual fue obtenido de (Martello & Toth, 1990): Procedimiento: Heurística para encontrar soluciones factibles al problema de la mochila. Entrada: 𝑛, 𝑊, 𝑤𝑗 , 𝑡𝑗 , 𝑏𝑗 Salida: 𝑧, 𝑎𝑗 Empezar: 𝑊 ≔ 𝑊; 𝑧: = 0; 𝑗 ≔ 1; 𝑏𝑗 = 𝑊 𝑡𝑖 Para todo 𝑗: = 1 hasta 𝑛 Empieza 𝑎𝑗 ≔ min 𝑊 𝑡𝑗 , 𝑏𝑗 ; 𝑊 : = 𝑊 − 𝑡𝑗 𝑎𝑗 ; 𝑧: = 𝑧 + 𝑤𝑗 𝑎𝑗 ; Si 𝑏𝑗 𝑤𝑗 > 𝑏𝑗 𝑤𝑗 entonces𝑗: = 𝑗 Fin; Si 𝑏𝑗 𝑤𝑗 > 𝑧 entonces Empieza 𝑧: = 𝑏𝑗 𝑤𝑗 ; Para 𝑗: = 1 hasta 𝑛 has 𝑎𝑗 ≔ 0; 𝑎𝑗 ≔ 𝑏𝑗 ; Fin; Fin; A continuación se mostrara un ejemplo de la heurística resolviendo, la primera iteración de la sección 3.2: 𝑊 = 𝑊 = 100 𝑧=0 𝑗=1 𝑏𝑗 = 𝑊/𝑡𝑗 Se empieza la primera iteración, con 𝑗 = 1: Paso 1. Hacer 𝑎𝑖𝑗 = 𝑚𝑖𝑛 𝑊 𝑡𝑖𝑗 , 𝑏𝑗 El índice 𝑖1 = 2 𝑎2 = min 100 ,2 36 𝑎2 = 2 Paso 2. Modificar el valor de 𝑊 = 𝑊 − 𝑡𝑗 𝑎𝑗 𝑊 = 100 − 36 ∗ 2 𝑊 = 28 Paso 3. Modificar el valor de 𝑧 = 𝑧 + 𝑤𝑗 𝑎𝑗 𝑧 = 0 + .5 ∗ 2 𝑧=1 Paso 4 Si 𝑏𝑖𝑗 𝑤𝑖𝑗 > 𝑏𝑗 𝑤𝑗 entonces 𝑗 = 𝑗. Debido a que 𝑗 y 𝑗 son igual a 1 se queda igual. Se comienza la segunda iteración, con 𝑗 = 2. Paso 1. El índice 𝑖2 = 1 𝑎1 = min 28 ,2 45 𝑎1 = 0 Paso 2. 𝑊 = 28 − 45 ∗ 0 𝑊 = 28 Paso 3. 𝑧 = 1 + .5 ∗ 0 𝑧=1 Paso 4 Si 𝑏𝑖2 𝑤𝑖2 > 𝑏1 𝑤1 ⇒ 𝑗 = 2 . 5 ∗ 2 ≯ .5 ∗ 2 ∴ 𝑗 = 1 Se comienza la tercera iteración, con 𝑗 = 3. Paso 1. El índice 𝑖3 = 3 𝑎3 = min 28 ,3 31 𝑎3 = 0 Paso 2. 𝑊 = 28 − 31 ∗ 0 𝑊 = 28 Paso 3. 𝑧 = 1 + .33 ∗ 0 𝑧=1 Paso 4 Si 𝑏𝑖3 𝑤𝑖3 > 𝑏1 𝑤1 ⇒ 𝑗 = 3 . 33 ∗ 3 ≯ .5 ∗ 2 ∴ 𝑗 = 1 Se comienza la cuarta iteración, con 𝑗 = 4. Paso 1. El índice 𝑖4 = 4 𝑎4 = min 28 ,7 14 𝑎4 = 2 Paso 2. 𝑊 = 28 − 14 ∗ 2 𝑊=0 Paso 3. 𝑧 = 1 + .14 ∗ 2 𝑧 = 1.28 Paso 4 Si 𝑏𝑖4 𝑤𝑖4 > 𝑏1 𝑤1 ⇒ 𝑗 = 4 . 14 ∗ 7 ≯ .5 ∗ 2 ∴ 𝑗 = 1 Paso 5. Si 𝑏𝑗 𝑤𝑗 > 𝑧 entonces; 𝑧 = 𝑏𝑗 𝑤𝑗 , desde 𝑗 = 1 hasta 𝑛 𝑎𝑗 = 0, 𝑎𝑗 = 𝑏𝑗 𝑏1 𝑤1 ≯ 𝑧 Como podemos ver en este caso la heurística nos dios el resultado optimo obtenido en la primera iteración del la sección 3.2. Donde: 0 2 𝒂= 𝑦 𝑧 = 1.28 0 2