Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gen Column PDF
Gen Column PDF
𝑏𝑖 𝑡𝑖
1 97 45
2 610 36
3 395 31
4 211 14
Minimizar 𝑧 = 𝑥𝑗
𝑗 ∈𝐽
Sujeto a: 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖 ⋎𝑖 ∈𝐼
𝑗 ∈𝐽
𝑥𝑗 ≥ 0 ⋎𝑗 ∈𝐽
2 0 0 0 97 48.5
0 2 0 0 610 305
𝑦 𝐛=
0 0 3 0 395 131.66
0 0 0 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 𝑡𝑖 .
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/2 0 0 0
0 1/2 0 0
𝐰= 1 1 1 1 = 1/2 1/2 1/3 1/7
0 0 1/3 0
0 0 0 1/7
Paso 2.
𝑤𝑖 𝑎𝑖 > 1
𝑖=1
𝑡𝑖 𝑎𝑖 ≤ 𝑊
𝑖=1
𝑎𝑖 ∈ ℤ ∀𝑖 = 1, … ,4
Maximizar 𝑧 = 𝑤𝑖 𝑎𝑖
𝑖=1
4
Sujeto a: 𝑡𝑖 𝑎𝑖 ≤ 𝑊
𝑖=1
𝑎𝑖 ∈ ℤ ∀𝑖 = 1, … ,4
1 1 1 1
Maximizar 𝑧 = 𝑎1 + 𝑎2 + 𝑎3 + 𝑎4
2 2 3 7
Sujeto a: 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.
1/2 0 0 0 0 0
0 1/2 0 0 2 1
𝐲𝟓 = =
0 0 1/3 0 0 0
0 0 0 1/7 2 2/7
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
𝑦4𝑘 2
7
Paso 5.
48.5
2 0 0 0 𝑏4 48.5
305 −
0 2 0 2 𝑦4𝑘 199.5
𝑩= 𝑦𝑏= =
0 0 3 0 131.66 131.66
0 0 0 2 𝑏4 105.5
𝑦4𝑘
Paso 1.
1/2 0 0 0
0 1/2 0 −1/2
𝐰= 1 1 1 1 = 1/2 1/2 1/3 0
0 0 1/3 0
0 0 0 1/2
Paso 2.
1 1 1
Maximizar 𝑧 = 𝑎1 + 𝑎2 + 𝑎3 + 0𝑎4
2 2 3
Sujeto a: 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 1 1/2
𝐲𝟔 = =
0 0 1/3 0 2 2/3
0 0 0 1/2 0 0
Paso 4.
𝑏2 199.5
= = 399
𝑦2𝑘 1
2
𝑏3 131.66
= = 197.5
𝑦3𝑘 2
3
Paso 5.
48.5
2 0 0 0 1 𝑏3 48.5
199.5 −
0 2 1 2 2 𝑦3𝑘 100.75
𝑩= 𝑦𝐛= =
0 0 2 0 𝑏3 197.5
0 0 0 2 𝑦3𝑘 105.5
105.5
Empezamos la tercera iteración.
Paso 1.
1/2 0 0 0
0 1/2 −1/4 −1/2
𝐰= 1 1 1 1 = 1/2 1/2 1/4 0
0 0 1/2 0
0 0 0 1/2
Paso 2.
1 1 1
Maximizar 𝑧 = 𝑎1 + 𝑎2 + 𝑎3 + 0𝑎4
2 2 4
Sujeto a: 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 + 𝑥2 + 𝑥3 + 𝑥4 + 𝑥5 + 𝑥6
Sujeto a: 2𝑥1 + 0𝑥2 + 0𝑥3 + 0𝑥4 + 0𝑥5 + 0𝑥6 ≥ 97
0𝑥1 + 2𝑥2 + 0𝑥3 + 0𝑥4 + 1𝑥5 + 2𝑥6 ≥ 610
0𝑥1 + 0𝑥2 + 3𝑥3 + 0𝑥4 + 2𝑥5 + 𝑥6 ≥ 395
0𝑥1 + 0𝑥2 + 0𝑥3 + 7𝑥4 + 0𝑥5 + 2𝑥6 ≥ 211
𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 , 𝑥6 ≥ 0
𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 , 𝑥6 ∈ ℤ
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:
𝑡1 ≥ 𝑡2 ≥ ⋯ ≥ 𝑡𝑚 .
0 𝑠𝑖 𝑖 ∉ 𝑄
𝑖−1
𝑎𝑖𝑗 =
𝑟− 𝑡𝑘 𝑎𝑖𝑘 𝑡𝑖 𝑠𝑖 𝑖 ∈ 𝑄
𝑘=1
Para ilustrar esto, se buscará una solución inicial para el problema resuelto en el
capítulo anterior.
Iteración 1.
Se encuentra:
100
𝑎11 = = 2,
45
10
𝑎21 = = 0,
36
10
𝑎31 = = 0,
31
10
𝑎41 = = 0,
14
97
Ahora 𝑥1 = = 48.5. Debido a que ya agregamos el producto con número de
2
í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.
𝑎12 = 0,
100
𝑎22 = = 2,
36
28
𝑎32 = = 0,
31
28
𝑎42 = = 2,
14
Iteración 3.
𝑎13 = 0,
100
𝑎23 = = 2,
36
28
𝑎33 = = 0,
31
𝑎43 = 0,
399
Ahora 𝑥2 = = 199.5. Se elimina el índice 2 del conjunto 𝑄, y obtenemos
2
que 𝑏3′ = 395.
Iteración 4.
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,
100
𝑎34 = = 3,
31
𝑎44 = 0,
395
Ahora 𝑥4 = = 131.67.
3
2 0 0 0 48.50
0 2 2 0 105.50
𝐁= 𝑦𝐛=
0 0 0 3 199.50
0 2 0 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 ≤ 𝑎𝑖 ≤ 𝑏𝑖 , ∈ ℤ, 𝑖 ∈ 𝐼
1 1 1 1
2≥ 2≥ 3≥ 7
36 45 31 14
Una vez reordenando los términos se inicializa con el siguiente algoritmo, el
cual fue obtenido de (Martello & Toth, 1990):
𝑊 = 𝑊 = 100
𝑧=0
𝑗=1
𝑏𝑗 = 𝑊/𝑡𝑗
Paso 1.
El índice 𝑖1 = 2
100
𝑎2 = min ,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.
Paso 1.
El índice 𝑖2 = 1
28
𝑎1 = min ,2
45
𝑎1 = 0
Paso 2.
𝑊 = 28 − 45 ∗ 0
𝑊 = 28
Paso 3.
𝑧 = 1 + .5 ∗ 0
𝑧=1
Paso 4
. 5 ∗ 2 ≯ .5 ∗ 2 ∴ 𝑗 = 1
Paso 1.
El índice 𝑖3 = 3
28
𝑎3 = min ,3
31
𝑎3 = 0
Paso 2.
𝑊 = 28 − 31 ∗ 0
𝑊 = 28
Paso 3.
𝑧 = 1 + .33 ∗ 0
𝑧=1
Paso 4
. 33 ∗ 3 ≯ .5 ∗ 2 ∴ 𝑗 = 1
Paso 1.
El índice 𝑖4 = 4
28
𝑎4 = min ,7
14
𝑎4 = 2
Paso 2.
𝑊 = 28 − 14 ∗ 2
𝑊=0
Paso 3.
𝑧 = 1 + .14 ∗ 2
𝑧 = 1.28
Paso 4
. 14 ∗ 7 ≯ .5 ∗ 2 ∴ 𝑗 = 1
Paso 5.
𝑏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