Cutting stock bidimensionale

  • 1,193 views
Uploaded on

Nel problema del taglio del vetro (conosciuto come cutting stock bidimensionale o TDC), dato uno stock rettangolare di materia prima di dimensioni (L,W), e dato un insieme P di pezzi rettangolari …

Nel problema del taglio del vetro (conosciuto come cutting stock bidimensionale o TDC), dato uno stock rettangolare di materia prima di dimensioni (L,W), e dato un insieme P di pezzi rettangolari desiderati a ciascuno dei quali e` associata una coppia di dimensioni (l,w), si deve trovare l’insieme di pezzi, sottoinsieme di P, estraibile dallo stock che massimizzi la somma dei profitti dei pezzi in esso contenuti (Figure 1.1). Un insieme S di pezzi estraibile `e definito in letteratura come “feasible pattern”. Un esempio di pezzi non estraibile, nel caso di stock con dimensioni (5, 5) `e S = (3, 3), (4, 4). Se piu` pezzi sono identici essi costituiscono un “tipo” di pezzo ed il numero ne rappresenta la domanda. Un caso particolare di TDC `e classificato come guillotine e riguarda tutte le problematiche di taglio di sagome a partire da un unico pezzo e si prefigge come obiettivo quello di minimizzare lo sfrido (scarto) con alcuni vincoli operativi.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,193
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
17
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Contents 1 Cutting stock bidimensionale vii 1.1 Descrizione del problema . . . . . . . . . . . . . . . . . . . . . . . viii 1.2 Risoluzione del problema con algoritmo genetico . . . . . . . . . . x 1.2.1 Rappresentazione genetica del problema . . . . . . . . . . xii 1.2.2 Scelta della funzione di fitness . . . . . . . . . . . . . . . . xii 1.2.3 Strutture dati . . . . . . . . . . . . . . . . . . . . . . . . . xii 1.2.4 Cromosoma in dettaglio . . . . . . . . . . . . . . . . . . . xii 1.3 Operazioni genetiche . . . . . . . . . . . . . . . . . . . . . . . . . xiii 1.3.1 Fase di creazione . . . . . . . . . . . . . . . . . . . . . . . xiii 1.3.2 Fase di riproduzione . . . . . . . . . . . . . . . . . . . . . xiv 1.3.3 Fase di visualizzazione . . . . . . . . . . . . . . . . . . . . xvii Bibliography xx i
  • 2. ii CONTENTS
  • 3. List of Tables iii
  • 4. iv LIST OF TABLES
  • 5. List of Figures 1.1 Esempio di TDC . . . . . . . . . . . . . . . . . . . . . . . . . . . viii 1.2 TDC ghigliottinato . . . . . . . . . . . . . . . . . . . . . . . . . . ix 1.3 Corner-left . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x 1.4 Schema di funzionamento di un GA . . . . . . . . . . . . . . . . . xi 1.5 Esempio di Reverse . . . . . . . . . . . . . . . . . . . . . . . . . . xvi 1.6 Esempio di Spin . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii 1.7 Stock con sfrido . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii 1.8 Stock senza sfrido . . . . . . . . . . . . . . . . . . . . . . . . . . . xix v
  • 6. vi LIST OF FIGURES
  • 7. Chapter 1 Cutting stock bidimensionale Autori: Manfucci Andrea Ciambelli Davide vii
  • 8. viii CHAPTER 1. CUTTING STOCK BIDIMENSIONALE Figure 1.1: Esempio di TDC 1.1 Descrizione del problema Nel problema del taglio del vetro (conosciuto come cutting stock bidimensionale o TDC), dato uno stock rettangolare di materia prima di dimensioni (L, W ), e dato un insieme P di pezzi rettangolari desiderati a ciascuno dei quali e associata ` una coppia di dimensioni (l, w), si deve trovare l’insieme di pezzi, sottoinsieme di P , estraibile dallo stock che massimizzi la somma dei profitti dei pezzi in esso contenuti (Figure 1.1). Un insieme S di pezzi estraibile ` definito in letteratura e come “feasible pattern”. Un esempio di pezzi non estraibile, nel caso di stock con dimensioni (5, 5) ` S = (3, 3), (4, 4). Se pi` pezzi sono identici essi costituiscono e u un “tipo” di pezzo ed il numero ne rappresenta la domanda. Un caso particolare di TDC ` classificato come guillotine e riguarda tutte le problematiche di taglio e di sagome a partire da un unico pezzo e si prefigge come obiettivo quello di minimizzare lo sfrido (scarto) con alcuni vincoli operativi di seguito elencati: • lo stock iniziale ha forma rettangolare, ` limitato in altezza e larghezza con e dimensioni rispettivamente di (30, 20) e con area pari a 600; • i tagli eseguiti sono tutti “a ghigliottina” vale a dire tagli che cominciano e terminano su punti perimetrali (Figure 1.2); • i pezzi hanno dimensioni variabili e forme rettangolari. I tagli a ghigliottina paralleli realizzati sullo stock iniziale sono definiti di primo livello (first-stage). Quelli ad essi perpendicolari e realizzati sui rettangoli ottenuti sono definiti di secondo livello (second-stage). Il programma carica le coordinate dei pezzi leggendo un file .txt memorizzato nella directory data. Gli oggetti ven- gono piazzati a livelli e sono affiancati sulla base di ogni livello. L’altezza di un
  • 9. 1.1. DESCRIZIONE DEL PROBLEMA ix Figure 1.2: TDC ghigliottinato livello ` quella dell’oggetto pi` alto che va a determinare i tagli di primo livello. e u Il primo oggetto viene inserito partendo sempre dall’angolo in basso a sinistra di ogni livello (Figure 1.3). Ogni volta che viene inserito un oggetto viene decre- mentata la larghezza dello stock e il valore viene salvato in un variabile chiamata larghezza rimasta. Da questo punto in avanti, ciascun oggetto successivo al primo viene inserito solo se soddisfa le seguenti condizioni: • la sua altezza ` minore o uguale a quella del primo oggetto del livello; e • la sua larghezza ` minore o uguale di larghezza rimasta. e In caso negativo l’oggetto viene inserito in un nuovo livello partendo dall’angolo in basso a sinistra e si ricomincia la valutazione dei pezzi successivi. Ciascun pezzo pu` essere ruotato sia verticalmente che orizzontalmente (free orientation) o e i pezzi non possono essere sovrapposti. L’insieme pu` contenere un set di pezzi o con la stessa dimensione ma nessuno dei pezzi pu` avere una dimensione mag- o giore dello stock iniziale. Tutti gli oggetti hanno lo stesso valore di profitto e non esiste nessun vincolo di priorit`. Dato un set di oggetti l’obiettivo ` quello di a e minimizzare lo sfrido per cui l’area totale degli oggetti inseriti determina il val- ore della soluzione. Non ` detto quindi che tutti gli oggetti dell’insieme iniziale e facciano parte della soluzione e in tal caso non vengono presi in considerazione per la soluzione finale. Il problema TDC ` NP-hard infatti esso diventa equiva- e
  • 10. x CHAPTER 1. CUTTING STOCK BIDIMENSIONALE Figure 1.3: Corner-left lente al problema dello zaino mono-dimensionale che e noto essere NP-hard. In ` letteratura sono stati proposti differenti approcci al problema TDC, ad esempio in termini di schemi di programmazione dinamica (Gilmore e Gomory, 1966; Hifi e Zissimopoulos, 1996), di meta-euristiche (Alvarez-Valdes, Parajon e Tamarit, 2002; Puchinger, 2005), di programmazione lineare (Lodi e Monaci, 2003; Belov, 2003). Molti lavori scientifici propongono algoritmi ad hoc classificabili, rispetto alla versione a ghigliottina, in tre classi: top-down, bottom-up e strip heuristics. In questo lavoro ` stata sfruttata una tecnica euristica basata sugli algoritmi e genetici. 1.2 Risoluzione del problema con algoritmo ge- netico Non esiste una tecnica rigorosa di algoritmo genetico. Gli algoritmi genetici (AG) sono tecniche euristiche atte a risolvere problemi di ricerca e di ottimiz- zazione. Holland, inventore e sviluppatore degli AG, aveva come scopo lo studio del fenomeno dell’adattamento, come avviene in natura, e dei suoi meccanismi tipici all’interno dei sistemi informatici. In biologia lo sviluppo di idee mod- erne relative ai processi coinvolti nell’evoluzione e iniziato con Charles Darwin. ` Darwin dedusse che la maggior parte degli individui muore prima di potersi ripro- durre e ci` avviene per il possesso di caratteri sfavorevoli. Questa e la selezione o ` naturale Darwiniana. Dato che le esigenze ambientali cambiano continuamente, la selezione naturale favorisce caratteri via via diversi infatti nella lotta per la sopravvivenza quelli che hanno sviluppato un miglior adattamento all’ambiente sono quelli che riescono a riprodursi.
  • 11. 1.2. RISOLUZIONE DEL PROBLEMA CON ALGORITMO GENETICO xi Popolazione di base Valutazione Selezione Reverse e Spin No Terminato? Si Risultati Figure 1.4: Schema di funzionamento di un GA In perfetta analogia con gli eventi descritti, gli AG partendo da un’iniziale popolazione di cromosomi, ognuno dei quali rappresenta una possibile soluzione del problema, associano ad ognuno di questi un certo livello di adattamento, il “fitness score”, dipendente dalla bont` della soluzione del problema. Gli indi- a vidui migliori, in altre parole con maggior fitness, si riproducono combinandosi con altri individui e si ottiene cos` una nuova popolazione di possibili soluzioni, ı prodotta dalla selezione degli individui migliori della generazione corrente. In questo modo, dopo molte generazioni, le buone caratteristiche vengono prop- agate a tutta la popolazione. Favorendo l’accoppiamento fra gli individui pi` u adatti vengono esplorate le aree pi` promettenti dello spazio di ricerca. Per com- u prendere maggiormente quanto detto sopra ` necessario dare alcune indicazioni. e
  • 12. xii CHAPTER 1. CUTTING STOCK BIDIMENSIONALE 1.2.1 Rappresentazione genetica del problema Gli AG risolvono un determinato problema ricorrendo ad una popolazione di soluzioni che, inizialmente casuali e quindi con fitness bassa, vengono fatte evol- vere per un certo numero di generazioni successive, sino all’apparizione di almeno una soluzione con fitness elevata. Per poter applicare l’algoritmo genetico occorre anzitutto codificare numericamente le soluzioni e individuare una opportuna fun- zione di fitness. 1.2.2 Scelta della funzione di fitness La funzione di fitness si occupa di misurare la bont` di una soluzione. Nel TDC la a bont` corrisponde alla somma delle aree dei pezzi ricavati dallo stock. Si deduce a che pi` ` alto il valore di fitness e pi` basso sar` lo scarto. Lo stock iniziale ` ue u a e un rettangolo le cui dimensioni sono (30, 20) e l’area ` pari a 600. Una soluzione e ottima per il problema si ottiene quando la funzione di fitness coincide con l’area dello stock. 1.2.3 Strutture dati Taglio: classe che contiene tutto quello che riguarda la creazione, manipolazione e visualizzazione dei cromosomi. Shape: classe che contiene la definizione di oggetto. Cromosoma: classe che contiene la definizione di cromosoma. Piece: vector di tipo shape che contiene l’insieme iniziale dei pezzi. Chromosome: vector di tipo cromosoma che contiene tutte le possibili soluzioni. Solution: vector che contiene il cromosoma con il fitness migliore. 1.2.4 Cromosoma in dettaglio Ogni individuo della popolazione ` codificato mediante un cromosoma la cui strut- e tura si compone di tre parti:
  • 13. 1.3. OPERAZIONI GENETICHE xiii • nella prima vengono memorizzati i pezzi. Ciascun pezzo viene codificato come coppia di coordinate, in cui le posizioni con indice dispari corrispon- dono alla larghezza mentre le posizioni con indice pari corrispondono all’altezza; • la seconda parte rappresenta il cromosoma vero e proprio ed e specifi- ` cato mediante una codifica numerica. Questa risulta essere una stringa di lunghezza costante formata da geni. I geni sono binari, con valori di 0 o 1, e sono utilizzati per effettuare le operazioni di reverse e spin. Pi` u precisamente, ciascuna delle operazioni utilizza un range di bit contenuto fra due indici (iniziale e finale) specificati da ogni operazione; • l’ultimo elemento del cromosoma, invece, memorizza il valore della funzione di fitness associato a quel cromosoma. Si tenga presente che inizialmente ogni cromosoma avr` come valore di fitness zero. a In seguito verranno spiegate le funzioni utilizzate per ottenere cromosomi “figli” dalla manipolazione di cromosomi “genitrici”. 1.3 Operazioni genetiche La popolazione che evolve ha un numero N di individui che viene mantenuto costante da una generazione all’altra. Ad ogni generazione vengono eseguite opportune operazioni genetiche che producono nuovi individui. Per mantenere costante N, occorre riprodurre nella generazione successiva solo N individui, pre- miando quelli dotati di maggiore fitness. Le operazioni genetiche utilizzate sono la reverse e la spin. 1.3.1 Fase di creazione La funzione creation serve per generare i cromosomi in maniera casuale. Inizial- mente ogni cromosoma contiene una possibile configurazione di pezzi (generata con la funzione mix), i geni (generati casualmente) e un valore di fitness pari a zero. Prima del termine della funzione tutti i cromosomi generati vengono raddoppiati in modo da avere uno spazio doppio rispetto ai cromosomi iniziali.
  • 14. xiv CHAPTER 1. CUTTING STOCK BIDIMENSIONALE Questo passaggio serve per favorire la sopravvivenza dei cromosomi migliori. In- fatti, nei passaggi successivi, i cromosomi saranno ordinati in maniera decrescente e quelli peggiori (che si trovano in fondo) verranno rimpiazzati da cromosomi migliori e questi diventeranno la base delle successive mutazioni. In questo modo, sfruttando la bont` dei cromosomi genitori, verr` favorita la generazione di figli a a con caratteristiche pi` performanti. u 1.3.2 Fase di riproduzione La funzione riproduction genera nuovi cromosomi a partire da quelli gi` es- a istenti. In questa funzione vengono richiamate con il 50% di probabilit` o la a reverse o la spin. Reverse Questa operazione sceglie due punti k e l (k < l) nelle stringhe binarie “genitrici” < A1 , A2 , . . . , Ak , . . . , Al , . . . , An > < B1 , B2 , . . . , Bk , . . . , Bl , . . . , Bn > ed effettua lo scambio (Figure 1.5) < A1 , A2 , . . . , Ak , Bk+1 , Bk+2, . . . , Bn > < B1 , B2 , . . . , Bk , Ak+1 , Ak+2, . . . , An > Al termine di questa operazione si ottengono nuovi cromosomi figli che rispetto ai genitori presentano alcuni pezzi invertiti. Supponiamo di aver ottenuto un cromosoma figlio di questo tipo: 1001000010 con questa configurazione di pezzi: (10, 5), (20, 10), (5, 10), (20, 5) Questo ` quello che avviene in dettaglio: e
  • 15. 1.3. OPERAZIONI GENETICHE xv • si considerano i geni compresi tra l’indice di reverse iniziale e quello finale (nell’esempio 1 0 0 1) • la stringa ottenuta viene convertita in base 2 e da questa operazione si ottiene un intero (nell’esempio 20 + 23 = 9). L’operazione reverse lavora sulle x di ogni pezzo. Queste si trovano in posizioni dispari quindi si deve ottenere un valore dispari, perci`: o 1. se il valore dell’intero ` pari si aggiunge 1 e 2. se il valore dell’intero ` dispari non viene modificato e • il valore ottenuto viene diviso in modulo per il numero di coordinate dei pezzi (nell’esempio 9 mod 8 = 1) • il resto della divisione rappresenta la coordinata x del pezzo da scambiare con il pezzo successivo (nell’esempio x1 = 10) • a questo punto il pezzo indicato dalla coordinata (nell’esempio (10, 5)) viene scambiato con il successivo (nell’esempio (20, 10)) La soluzione suggerita dal cromosoma ` la seguente e (20, 10), (10, 5), (5, 10), (20, 5) e attraverso la funzione fitness verr` valutata. a Spin Questa operazione coinvolge 2 stringhe binarie “genitrici” < A1 , A2 , . . . , An > < B1 , B2 , . . . , Bn > ed effettua lo scambio dei geni compresi tra k e la fine del cromosoma producendo le stringhe “figlie” (Figure 1.6) < A1 , A2 , . . . , Ak , Bk+1 , Bk+2, . . . , Bn > < B1 , B2 , . . . , Bk , Ak+1 , Ak+2, . . . , An >
  • 16. xvi CHAPTER 1. CUTTING STOCK BIDIMENSIONALE Figure 1.5: Esempio di Reverse I nuovi cromosomi figli presentano alcuni pezzi ruotati rispetto ai genitori. Sup- poniamo che il cromosoma ottenuto sia quello dell’esempio precedente: 1001000010 con la configurazione di pezzi vista in precedenza: (10, 5), (20, 10), (5, 10), (20, 5) Questo ` quello che avviene in dettaglio: e • si considerano i geni compresi tra l’indice di spin iniziale e quello finale (nell’esempio 0 0 0 0 1 0) • la stringa ottenuta viene convertita in base 2 e da questa operazione si ottiene un intero (nell’esempio 21 = 2). L’operazione spin lavora sulle x di ogni pezzo. Queste si trovano in posizioni dispari quindi si deve ottenere un valore dispari, perci`: o 1. se il valore dell’intero ` pari si aggiunge 1 (nell’esempio 2 + 1 = 3) e 2. se il valore dell’intero ` dispari non viene modificato e
  • 17. 1.3. OPERAZIONI GENETICHE xvii Figure 1.6: Esempio di Spin • il valore ottenuto viene diviso in modulo per il numero di coordinate dei pezzi (nell’esempio 3 mod 8 = 3) • il resto della divisione rappresenta la coordinata x del pezzo da ruotare (nell’esempio x3 = 20) • a questo punto il pezzo indicato dalla coordinata viene ruotato (nell’esempio (20, 10) diventa (10, 20)) La soluzione suggerita dal cromosoma ` la seguente e (10, 5), (10, 20), (5, 10), (20, 5) e attraverso la funzione fitness verr` valutata. Mentre la reverse assicura il man- a tenimento di buoni individui per migliorare le soluzioni, la spin mantiene la di- versit` nella popolazione e permette di ampliare l’esplorazione. a 1.3.3 Fase di visualizzazione Le funzioni appena descritte vengono richiamate all’interno di un ciclo iterativo. L’iterazione avanza nel caso in cui la differenza tra il miglior valore di fitness
  • 18. xviii CHAPTER 1. CUTTING STOCK BIDIMENSIONALE Figure 1.7: Stock con sfrido attuale e il precedente ` uguale a zero. Nel caso in cui la differenza ` diversa da e e zero il ciclo torna all’inizio. Questo serve a garantire che la soluzione finale sia la migliore possibile. Quando termina il ciclo vengono richiamate due funzioni: la visualize e la draw. La prima stampa il cromosoma soluzione con il relativo valore di fitness. La seconda richiama la classe disegna visualizzando in output la rappresentazione grafica relativa al cromosoma soluzione. Un esempio di output del programma ` quello in Figure 1.7 e rappresenta la e soluzione migliore con soli 6 degli 8 oggetti dell’insieme iniziale. Si pu` notare che o una parte dello stock non ` stata riempita (sfrido). Un altro esempio di output e ` quello in Figure 1.8 dove lo stock iniziale ` stato riempito completamente. e e Anche in questo caso sono stati utilizzati 6 degli 8 oggetti dell’insieme iniziale ma a differenza del precedente esempio non c’` stato spreco e la soluzione risulta e essere la migliore possibile. I numeri che affiancano le rette verticali e orizzontali rappresentano l’ordine in cui i tagli devono essere effettuati.
  • 19. 1.3. OPERAZIONI GENETICHE xix Figure 1.8: Stock senza sfrido
  • 20. xx CHAPTER 1. CUTTING STOCK BIDIMENSIONALE
  • 21. Bibliography [1] J. Holland, ”Genetic Algorithms”. [2] http://en.wikipedia.org. [3] http://www.obitko.com. xxi