Capitulo 3 Método de Generación de Columnas El método de

Anuncio
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
Descargar