Vous êtes sur la page 1sur 37

Algoritmo Grasp Corte

de Guillotina

Integrantes:
Lizárraga, Mucha Kewin
Rosas Quispe, Anthony Martin
Salazar Vargas, César
Tiburcio Saldaña, Joselin
Introducción GRASP

Greedy
Randomized
Adaptive
Search
Procedure
GRASP es un algoritmo metaheurístico
que se aplica comúnmente a los
problemas de optimización
combinatoria.
Historia

GRASP se introdujo por primera vez por Feo y Resende en 1989.

Los trabajos para el problema de cortes:


● Vidrio ● Papel
○ Dyson & Gregory (1976) ○ Harjunkoski et al (1996)
○ Farley (1983) ○ Westernlund et al (1995)
○ Madsen (1979) ● Tapetes
● Madera ○ Liton (1977)
○ Morabito & García (1997) ● Lona
○ Venkateswarlu & Martyn (1992) ○ Farley (1990)
Heurística
Dada la dificultad práctica para resolver de
forma exacta toda una serie de problemas
combinatorios, y para los cuales es necesario
ofrecer alguna solución, comenzaron a
aparecer algoritmos que proporcionan
soluciones factibles (es decir, que satisfacen
las restricciones del problema), las cuales,
aunque no optimicen la función objetivo, se
supone que al menos se acercan al valor
óptimo en un tiempo de cálculo razonable.
Este tipo de algoritmos se denominan
heurísticos.
Heurística - ● Permiten una mayor flexibilidad para el
manejo de las características del
Ventajas problema.
● No suele resultar complejo diseñar
algoritmos heurísticos que en lugar de
considerar funciones lineales utilicen
funciones no lineales.
● Ofrecen más de una solución, lo cual
permite ampliar las posibilidades de
elección del que decide, sobre todo
cuando existen factores no cuantificables
que no han podido ser añadidos en el
modelo.
Heurística - ● Un inconveniente en el uso de métodos
heurísticos, es no poder conocer la
Desventajas calidad de la solución; es decir, precisar
cuán cerca se está de la solución óptima.
Heurística - Tipos

Métodos constructivos Métodos de descomposición (divide


y vencerás)
Consiste en ir paulatinamente
añadiendo componentes individuales Se trata de dividir el problema en
a la solución hasta llegar a obtener subproblemas más pequeños, siendo
una solución factible. que la salida de uno sea la entrada
del siguiente, de forma que al
● Algoritmo goloso o devorador resolver todos estos subproblemas
(Greedy) obtengamos una solución para el
problema global.
Heurística - Tipos

Métodos de reducción Manipulación del modelo

Se identifican algunas características Se modifica la estructura del modelo


que presumiblemente debe poseer la con el fin de hacerlo más sencillo al
solución óptima y de ese modo momento de resolver, deduciendo, a
simplificar el problema. partir de su solución, la solución del
problema original.
El problema de corte en dos
dimensiones consiste en determinar un
conjunto de patrones de corte
Descripción del variables de tal forma que satisfagan
problema Corte los requerimientos de piezas de
material solicitados utilizando el menor
Guillotina
número de láminas disponibles.

Los cortes de guillotina son rectos y de


extremo a extremo de la lámina y
siempre paralela a uno de los lados de
la misma.
Considere un número ilimitado de
Descripción del láminas rectangulares con
problema Corte dimensiones de largo L y ancho A y un
Guillotina conjunto de n requerimientos
rectangulares de largo y ancho (l1
,a1),...(ln,an) respectivamente con li≤ L
y ai ≤ A.
Algoritmos El modelo exacto desarrollado para resolver
Exactos este apartado. Dado un número ilimitado de
placas rectangulares idénticas que llamaremos
bins de anchura W y altura H, el objetivo es
situar (cortar) todos los ítems (piezas
rectangulares) minimizando el número de bins.
Nomenclatura - Parámetros

J conjunto de items rectangulares J={1,…,n} Ajpqrsa =1 si el item j cuando se sitúa


en posición normal con su vértice
wjAnchura del item j∈J inferior izquierdo en el punto (p,q)
hjAltura del item j∈J cubre el punto (r,s) del bin a cortar. =0
en caso contrario.
UB Cota superior del número de bins
requerido para cortar todos los items (se Bjpqrsb =1 si el item j cuando se sitúa
puede obtener con un procedimiento en posición girada 90º con su vértice
heurístico) inferior izquierdo en el punto (p,q)
cubre el punto (r,s) del bin a cortar. =0
W Anchura de un bin
en caso contrario
H Altura de un bin
Variables jkpqx =1 si el item j se sitúa en posición normal con su
vértice inferior izquierdo en el punto (p,q) del bin k
( UBk≤≤1 )

=0 en caso contrario

jkpqy =1 si el item j se sitúa en posición girada 90º


con su vértice inferior izquierdo en el punto (p,q) del
bin k ( UBk≤≤1 )

=0 en caso contrario

kz =1 si se utiliza el bin k ( UBk≤≤1 )

=0 en caso contrar
Algoritmos Son algoritmos que utilizan alguna heurística
Aproximados para encontrar las soluciones, también son
denominados algoritmos sub-óptimos. Cuando
se estudian estos tipos de algoritmos, la duda
frecuente es, si existe alguna forma de
determinar cuán distante se encuentra la
solución encontrada de la solución óptima

.Para que estos algoritmos sean más


empleados que los algoritmos exactos, deben
de procurar tener tiempos de ejecución.
Metaheurística
Las heurísticas para la solución de problemas de optimización discreta
generalmente no consiguen encontrar una solución óptima global, pero si
consiguen encontrar un óptimo local. A partir de un óptimo local, no se consigue
generar ninguna mejora una vez alcanzada aquella solución.

Una posibilidad para enfrentar esto es la perturbación del flujo de búsqueda de


soluciones el cual admite, mediante pasos intermedios, soluciones con valores
superiores del mínimo ya encontrado, aumentando así la oportunidad de no
recorrer por caminos del espacio de soluciones que lleven a mínimos menores y
también escapando de un mínimo local.
Algoritmo Grasp
Desarrollado originalmente por Feo y Resende, al estudiar un
problema de cobertura de alta complejidad combinatoria.

Cada iteración GRASP consta generalmente de dos pasos:

● Fase de Construcción
● Procedimiento de búsqueda local
Se construye una solución tentativa, que luego es mejorada mediante un
procedimiento de intercambio hasta que se llega a un óptimo local. En la fase de
construcción se suele mantener una lista de candidatos formados por
elementos de alta calidad.
La solución inicial se construye iterativamente considerando un elemento a la
vez, en cada iteración del procedimiento un elemento es elegido como parte de
la solución que se está construyendo. La adición de un elemento a la lista de
candidatos se determina mediante una función de tipo devorador, mientras la
selección de un elemento de esa lista de candidatos depende de los que se
hayan elegido previamente.
Fase Se obtiene una solución factible durante la fase de
construcción aplicando un procedimiento voraz.
constructiva
1. Cada iteración en la fase de construcción crea
un conjunto de elementos llamado lista
restringida de candidatos (LRC) con todos los
elementos que pueden ser incorporados a la
solución parcial.
2. El elemento a incorporar en la solución es
aleatoriamente seleccionada de la LRC.
3. Luego la lista es actualizada.
Fase de Reemplaza sucesivamente la solución actual por
otra mejor que este en el vecindario (se entiende
búsqueda por vecindario a un conjunto de soluciones
cercanas a la solución actual).
local
Existen dos estrategias para reemplazar la solución
actual:

● Best-improving: todos los vecinos son


investigados y la solución actual es
reemplazada por la solución del mejor vecino.
● First-improving: la solución actual es
reemplazada por la mejor solución del primer
vecino cuya solución sea mejor.

Se dejará de iterar cuando ya no se encuentra un


mejor solucion en el vecindario.
Algoritmo GRASP
para Corte Guillotina
Características ● s un algoritmo metaheurístico.
● Sus iteraciones constan de dos fases:
Construcción y Fase de Mejora. Adicionalmente
se podría considerar la fase de Actualización
como una tercera fase.
● Su origen se remonta como un algoritmo para
resolver problemas de cubrimiento de conjuntos.
● Es generalmente robusta, en el sentido de que es
difícil encontrar ejemplos patológicos en donde
el método funcione arbitrariamente mal.
● Se dice que es adaptativo por que en cada
iteración se actualizan los beneficios obtenidos
de añadir el elemento seleccionado a la solución
parcial.
Ventajas ● Estructura simple, a menudo es fácil de
implementar.
● Si puede construir un algoritmo greedy, la
extensión a GRASP es a menudo fácil.
● Se puede usar para GRANDES problemas
de optimización.
Desventajas ● Depende de un algoritmo greedy "natural",
no hay escape del óptimo local.
● Puede redescubrir fácilmente la misma
solución muchas veces.
● Sin memoria, no usa memoria adaptativa.
Aplicaciones

● Corte de tela, corte de madera, corte de acero


● Carga de camiones
● Colocación de anuncios en los periódicos
● Asignación de memoria en los sistemas de paginación
Ejercicio GRASP corte de guillotina

Enunciado Tamaño Demanda

1- Demanda de barras 40 1

20 4
2. Longitud de la barra estándar: 130 cm.
50 2

100 1

80 1
Solución

● Parámetro de relajación: a= 0.5 ( 0<a<1)


● Vector de requerimientos: E[ ]= {40,20,20,20,20,50,50,100,80}
● Tamaño estándar de las barras: 130
● Matriz de resultados: B[ ][ ]
● Vector de residuos: R[ ]
● Vector de candidatos: RCL[ ]
● Máximo valor: b
● Mínimo valor : d
Iteración 0

E[ ] = { 100, 80, 50, 50, 40, 20, 20, 20, 20}

b = 100, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={100,80}

Se elige un valor al azar : 100

B[ ] [ ] = barra 1 (longitud de 100) con un residuo de R[ ] = {30}


Iteración 1

E[ ] = { 80, 50, 50, 40, 20, 20, 20, 20}

b = 80, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={80, 50, 50}

Se elige un valor al azar : 80

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80) con un residuo de R[ ] = {30,50}


Iteración 2

E[ ] = {50, 50, 40, 20, 20, 20, 20}

b = 50, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={50, 50,40}

Se elige un valor al azar : 50

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50) con un residuo de R[ ] = {30,0}


Iteración 3

E[ ] = {50, 40, 20, 20, 20, 20}

b = 50, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={50,40}

Se elige un valor al azar : 50

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50)

barra 3 ( longitud de 50) con un residuo de R[ ] = {30,0,80}


Iteración 4

E[ ] = { 40, 20, 20, 20, 20}

b = 40, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={40}

Se elige un valor al azar : 40

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50)

barra 3 ( longitud de 50,longitud 40) con un residuo de R[ ] = {30,0,40}


Iteración 5

E[ ] = {20, 20, 20, 20}

b = 20, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={20,20,20,20}

Se elige un valor al azar : 20

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50)

barra 3 ( long de 50,long 40, long 20) con un residuo de R[ ] = {30,0,20}


Iteración 6

E[ ] = {20, 20, 20}

b = 20, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={20,20,20}

Se elige un valor al azar : 20

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50)

barra 3 ( long de 50,long 40, long 20,long 20) con residuo de R[ ] = {30,0,0}
Iteración 7
E[ ] = {20, 20} ; b = 20, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={20,,20}

Se elige un valor al azar : 20

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50)

barra 3 ( long de 50,long 40, long 20,long 20)

barra 4 ( long 20) con residuo de R[ ] = {30,0,0,110}


Iteración 8
E[ ] = {20, 20} ; b = 20, d=20

RCL: X/X >= b-a*(b-d) RCL[ ] ={20,,20}

Se elige un valor al azar : 20

B[ ] [ ] = barra 1 (longitud de 100)

barra 2 (longitud de 80, longitud de 50)

barra 3 ( long de 50,long 40, long 20,long 20)

barra 4 ( long 20,long 20) con residuo de R[ ] = {30,0,0,90}


Conclusiones

Los algoritmos GRASP son recomendables cuando el conjunto de datos a trabajar


es grande. Si bien es cierto el algoritmo expuesto no obtiene la solución óptima,
sin embargo llega a una solución aproximada con un ahorro en tiempo de
ejecución en el proceso y disminución de costo al tener un menor desperdicio.

Asimismo, el algoritmo expuesto puede aplicarse a sectores diversos de la


industria que tengan que ver con el problema del corte de guillotina.

Vous aimerez peut-être aussi