3. Gli algoritmi di ottimizzazione.



Похожие документы
Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Appunti sulla Macchina di Turing. Macchina di Turing

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo

Ottimizzazione Multi Obiettivo

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

LE FUNZIONI A DUE VARIABILI

Dimensione di uno Spazio vettoriale

Algoritmi e strutture dati. Codici di Huffman

Corso di Matematica per la Chimica

Il concetto di valore medio in generale

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Consideriamo due polinomi

Programmazione dinamica

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Parte I. Prima Parte

Esponenziali elogaritmi

Capitolo 13: L offerta dell impresa e il surplus del produttore

Esempi di funzione. Scheda Tre

Capitolo 2. Operazione di limite

1. Distribuzioni campionarie

Corrispondenze e funzioni

Il Metodo Branch and Bound

risulta (x) = 1 se x < 0.

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

e-dva - eni-depth Velocity Analysis

1. PRIME PROPRIETÀ 2

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione

4 3 4 = 4 x x x 10 0 aaa

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

3 GRAFICI DI FUNZIONI

Riproduzione Crossover Mutazione

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Capitolo 4: Ottimizzazione non lineare non vincolata parte II. E. Amaldi DEIB, Politecnico di Milano

Luigi Piroddi

Rappresentazione dei numeri in un calcolatore

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Matematica generale CTF

Automazione Industriale (scheduling+mms) scheduling+mms.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Fasi di creazione di un programma

V= R*I. LEGGE DI OHM Dopo aver illustrato le principali grandezze elettriche è necessario analizzare i legami che vi sono tra di loro.

Transitori del primo ordine

ESEMPIO 1: eseguire il complemento a 10 di 765

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

LABORATORIO DI ANALISI DEI SISTEMI

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e

Determinare la grandezza della sottorete

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Osservazioni sulla continuità per le funzioni reali di variabile reale

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12

Codifiche a lunghezza variabile

LA MASSIMIZZAZIONE DEL PROFITTO ATTRAVERSO LA FISSAZIONE DEL PREZZO IN FUNZIONE DELLE QUANTITÀ

Come visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1)

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

I sistemi di numerazione

Analisi e diagramma di Pareto

LA CORRENTE ELETTRICA

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

Statistica. Lezione 6

Organizzazione degli archivi

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

1 Giochi a due, con informazione perfetta e somma zero

Intelligenza Artificiale

Il riduttore di focale utilizzato è il riduttore-correttore Celestron f/ 6.3.

Ricerca Operativa A.A. 2007/2008

Alessandro Pellegrini

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

1 Estensione in strategia mista di un gioco

Energia potenziale elettrica e potenziale. In queste pagine R indicherà una regione in cui è presente un campo elettrostatico.

Esercizi Capitolo 6 - Alberi binari di ricerca

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

Corso di Calcolo Numerico

Capitolo 25: Lo scambio nel mercato delle assicurazioni

2 + (σ2 - ρσ 1 ) 2 > 0 [da -1 ρ 1] b = (σ ρσ1 σ 2 ) = (σ 1

13. Campi vettoriali

19. Inclusioni tra spazi L p.

Informatica. Rappresentazione dei numeri Numerazione binaria

REGOLAZIONE (E TASSAZIONE OTTIMALE) DI UN MONOPOLIO CON PIÙ LINEE DI PRODUZIONE

( x) ( x) 0. Equazioni irrazionali

Computational Game Theory

2. Leggi finanziarie di capitalizzazione

IL PROBLEMA DELLO SHORTEST SPANNING TREE

Blanchard, Macroeconomia Una prospettiva europea, Il Mulino 2011 Capitolo IV. I mercati finanziari. Capitolo IV. I mercati finanziari

Uso di base delle funzioni in Microsoft Excel

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Amplificatori Audio di Potenza

VERIFICA DELLE IPOTESI

RECUPERO DATI LIFO DA ARCHIVI ESTERNI

LA CORRENTE ELETTRICA CONTINUA

Dispense di Informatica per l ITG Valadier

a) Il campo di esistenza di f(x) è dato da 2x 0, ovvero x 0. Il grafico di f(x) è quello di una iperbole -1 1

Teoria dei Giochi. Anna Torre

Introduzione all analisi dei segnali digitali.

Транскрипт:

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-3. Gli algoritmi di ottimizzazione. I grafi. La teoria dei grafi è un comodo strumento per la definizione e la formalizzazione di numerosi problemi di ottimizzazione. Spesso infatti è utile non tanto cercare la soluzione di un dato problema, bensì ricondurlo ad una classe di problemi noti dei quali si conosce, o almeno si ha idea, dei possibili approcci per la soluzione. Un insieme è una collezione di elementi e viene indicato come: S = { a, b, c, d }. La cardinalità di un insieme è il numero dei suoi elementi e si indica con S. La copertura di un insieme è un insieme di sottoinsiemi tali che la loro unione corrisponde all insieme stesso. Una partizione di un insieme è una copertura nella quale i sottoinsiemi, detti blocchi, sono disgiunti, ovvero non hanno elementi in comune. Un grafo G(V, E) è una coppia di insiemi V e E. Gli elementi dell insieme V sono detti vertici, e gli elementi dell insieme E sono detti connessioni e rappresentano le relazioni che esistono tra i vertici. In un grafo diretto le connessioni sono rappresentate da coppie ordinate di vertici e sono rappresentate con E k = (v i, v j ), mentre in un grafo indiretto sono rappresentate da coppie non ordinate di vertici e sono rappresentate con E k = {v i, v j } (vedi Figura ). Una connessione si dice incidente su un vertice, quando su tale vertice ha uno dei due punti di collegamento. Il grado di un vertice è il numero di connessioni su di esso incidenti. Un ipergrafo è una estensione di un grafo nel quale le connessioni possono essere incidenti su un numero qualsiasi di vertici. Figura Grafo indiretto e grafo diretto Grafi indiretti e diretti. Per i grafi indiretti possono essere introdotte delle definizioni che saranno estendibili anche per i grafi diretti. Due vertici si dicono adiacenti se esiste tra essi una connessione. Un loop è una connessione i cui estremi corrispondono allo stesso vertice. Un grafo si definisce semplice se è privo di loop e di connessioni che hanno estremi sulla stessa coppia di vertici.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-2 Un cammino (walk) è una alternanza di vertici e di connessioni. Un percorso (path) è un cammino con vertici distinti. Un ciclo è un cammino chiuso. Un grafo senza cicli è detto aciclico. Un grafo si dice connesso se tutte le coppie di vertici sono collegate da un percorso. Un albero è un grafo aciclico connesso. I vertici di un albero sono detti nodi. Le foglie sono nodi adiacenti ad un solo vertice. Un grafo si dice completo se tutte le coppie di vertici sono adiacenti. Un raggruppamento (clique) è un sottografo completo. Un grafo si definisce planare se è possibile una rappresentazione su un piano tale che le connessioni non si intersecano tra loro. Un insieme stabile, o indipendente, di vertici è un insieme di vertici tale che non esiste alcuna connessione tra qualsiasi coppia di vertici. È detta colorazione una partizione in sottoinsiemi stabili. Per i grafi diretti valgono tutte le definizioni fatte per i grafi indiretti salvo farne una estensione al fatto che le connessioni hanno ora un verso. Per i vertici si parlerà quindi di grado di ingresso e di uscita per indicare rispettivamente la cardinalità delle connessioni in ingresso e in uscita di un vertice. I cammini e i percorsi vanno ora considerati tenendo presente il verso delle connessioni. a b c d e d a 2 e b 2 3 4 4 c 3 2 3 4 2 3 4 Figura 2 Grafo e sue rappresentazioni matriciali I grafi indiretti e diretti possono essere rappresentati attraverso matrici. In Figura 2 è rappresentato un grafo e la sua matrice di incidenza (sopra) e di adiacenza (sotto). La matrice di incidenza è costituita da tante righe quanti sono i vertici e da tante colonne quante sono le connessioni. In un grafo indiretto la posizione (i, j) è pari a se la j-esima connessione è incidente al vertice v i, altrimenti è pari a. Nel caso di grafi diretti tale posizione è pari a se il vertice v i è la testa della connessione ed è pari a - se è la coda.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-3 La matrice di adiacenza è quadrata e la sua dimensione è pari alla cardinalità dei vertici. La posizione (i, j) è pari a se v j è adiacente a v i, altrimenti è pari a. Tale matrice è simmetrica solo se il grafo è indiretto. I grafi diretti e indiretti possono essere pesati, ovvero ai vertici e/o alle connessioni possono essere associati dei pesi. Un modo di schematizzare un grafo, alternativo alla matrice delle incidenze, può essere attraverso la matrice dei pesi. Questa è una matrice quadrata nella quale si trovano direttamente i pesi delle connessioni tra due vertici del grafo. Si noti che, in questo caso, è necessario comunque disporre della matrice delle adiacenze per discriminare i casi in cui tra due vertici non esista una connessione evitando di dover inserire un termine nella matrice dei pesi. Un grafo può essere caratterizzato da quattro valori. Il numero di raggruppamento ω(g) è la cardinalità del più grande raggruppamento possibile su G (V, E). Il numero di copertura κ(g) è la cardinalità della copertura con minor numero di raggruppamenti di G (V, E). Il numero di stabilità α(g) è la cardinalità del più grande insieme stabile di G(V, E). Il numero cromatico χ(g) è la cardinalità del più piccolo insieme di colorazione di G(V, E). Dalle definizioni si ha che: ω(g) χ(g) α(g) κ(g) Un grafo si definisce perfetto se nelle espressioni precedenti è valida l eguaglianza. Grafi e algoritmi. Un problema decisionale è un problema con una soluzione binaria. Questo genere di problemi possono essere utili per valutare la proprietà di un modello. Un problema di ottimizzazione è un problema la cui soluzione può essere misurata in termini di una funzione costo, detta anche obiettivo. Il valore da cercare è normalmente il valore minimo o il valore massimo di tale funzione. I problemi di ottimizzazione possono essere ridotti ad una sequenza di problemi decisionali. Un algoritmo è una procedura computazionale che ha un insieme di ingressi ed un insieme di uscite, ha un numero finito di istruzioni e termina in un numero finito di passi. I problemi che possono essere risolti attraverso un algoritmo sono detti decidibili. Un algoritmo è esatto quando fornisce sempre la soluzione esatta. Se problemi di complessità computazionale rendono impossibile la ricerca di una soluzione esatta, possono essere usati algoritmi euristici. Questi, in base a conoscenze del problema e dall esperienza, possono essere in grado di trovare soluzioni approssimate il cui valore è abbastanza vicino a quello ottimo. La complessità di un algoritmo si misura in termini di dimensioni della memoria necessaria a svolgere le operazioni e di tempo necessario per raggiungere la soluzione. La complessità viene normalmente espressa in funzione della dimensione del problema a meno di una costante moltiplicativa. Si parlerà dunque di ordine di complessità e sarà denotata come O(f(n)) dove n rappresenta la dimensione del problema. Si avrà ad esempio O(n), O(n log n), O(n 2 ), O(2 n ).

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-4 Generalmente gli algoritmi con una complessità polinomiale sono utilizzabili, mentre non lo sono quelli di complessità esponenziale. Ogni considerazione naturalmente non può prescindere dalla costante moltiplicativa, che potrebbe, per una dimensione del problema di nostro interesse, rendere maggiore il tempo necessario allo svolgimento di una procedura con complessità polinomiale rispetto ad un altra con complessità esponenziale. Un algoritmo si definisce ottimo quando l ordine di complessità è pari a O(n). Ciò non ha nulla a che fare con la soluzione ottima di un problema. Algoritmi per LP, ILP e ZOLP. Un algoritmo può essere classificato in base alla natura dello spazio delle soluzioni che esso deve considerare. Molti problemi possono essere considerati come problemi di ottimizzazione di funzioni lineari sottoposte a vincoli lineari. Il caso più generale è quello noto come programmazione lineare (LP, linear program) e può essere espresso nella forma: min c T x A x b, x dove x R n, c R n, b R m, A R m n. In letteratura sono stati presentati differenti algoritmi, come quello del simplesso (semplice, ma con una complessità maggiore di quella polinomiale), quello dell ellissoide (con complessità polinomiale, ma inefficiente), quello proiettivo (con complessità polinomiale). Un caso particolare di questa tipologia di ottimizzazioni è quella in cui il vettore incognito appartiene all insieme dei numeri interi. Si parla in questo caso di programmazione lineare intera (ILP, integer linear program) e si ha che x Z n. La natura discreta del problema lo rende intrattabile. Si può utilizzare un algoritmo di tipo LP, trovare una soluzione nel campo dei numeri reali ed effettuare un arrotondamento del vettore soluzione per ottenere un corrispondente vettore di interi. In questo caso però non è garantito che la soluzione ottenuta sia ottima. Un caso specifico nella categoria dei problemi ILP si ha quando il vettore della soluzione è binario. Il problema prende il nome di programmazione lineare binaria (ZOLP, zero-one linear program). Classi di algoritmi di ottimizzazione. Gli algoritmi di ricerca della soluzione ottima possono essere classificati in tre classi come illustrato in Figura 3. Tecniche enumerative Tecniche numeriche Tecniche probabilistiche Figura 3 Classi di tecniche di ricerca

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-5 Le tecniche enumerative ricercano la soluzione ottima in tutti i punti del dominio, eventualmente discretizzato, della funzione. Semplificazioni possono derivare dalla riduzione del problema in sottoproblemi più semplici. La programmazione dinamica è una di queste tecniche. Le tecniche numeriche usano un insieme di condizioni necessarie e sufficienti che devono essere soddisfatte dalla soluzione del problema di ottimizzazione. Queste si possono classificare in dirette e indirette. I metodi indiretti ricercano il minimo di una funzione risolvendo un insieme di funzioni non lineari e ricercando iterativamente la soluzione finché il gradiente della funzione costo è nullo. I metodi diretti fanno in modo che sia il gradiente a guidare la ricerca della soluzione. Le tecniche probabilistiche si basano su tecniche enumerative, ma usano informazioni addizionali per effettuare la ricerca e possono essere viste come processi evolutivi. Fanno parte di questa categoria l algoritmo del Simulated Annealing, che usa un processo evolutivo termodinamico, e la classe degli algoritmi genetici, che sfruttano tecniche evolutive biologiche. Algoritmi di programmazione dinamica. La programmazione dinamica è una metodologia che risolve problemi complessi attraverso la loro scomposizione in problemi decisionali più semplici. Ovviamente il problema deve essere tale per cui l unione delle soluzioni ottime dei sottoproblemi corrisponda alla soluzione ottima globale. L efficienza dell algoritmo dipende dal numero di decisioni e dalla complessità nel trovare la soluzione dei singoli sottoproblemi. Nel caso il problema sia adatto ad un tale tipo di approccio, la complessità dell algoritmo può essere addirittura lineare con le sue dimensioni. a t t 2 t 4 b c d e t 3 t 4 f g t 2 Figura 4 Copertura di un albero

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-6 Come esempio si consideri la Figura 4. Si abbia l albero sulla sinistra costituito dai vertici a, b, c, d, e, f, g. Si consideri il problema della copertura a costo minimo attraverso i modelli t, t 2, t 3 e t 4, il costo dei quali sia rispettivamente pari a 2, 3, 4, 5. I modelli t e t 2 sarebbero sufficienti per la copertura di qualsiasi albero binario, ma non è detto che questa risulti la copertura a costo minimo. Si procede verificando che l unico modello in grado di coprire il vertice e è il modello t 2 con costo 3. Il vertice c può essere coperto dal modello t 3 con costo 4 oppure dal modello t con costo 2 più il modello t 2 con costo 3. La seconda soluzione ha un costo totale pari a 5, ovvero maggiore del costo della prima. Il costo di c viene posto quindi pari a 4. Il vertice b può essere coperto solo dal modello t con costo pari a 2. Il vertice radice a può essere coperto dal modello t 2 con costo pari a 3 più i costi pari a 2 e 4 per un totale di 9. Questo può però anche essere coperto da t 4 con un costo pari a 5 più 3 per un totale di 8. La seconda scelta è la migliore, quindi la copertura migliore a costo minimo risulterà costituita da t 4 e t 2 come illustrato in figura. Algoritmo del branch-and-bound. Si supponga di avere un problema tipo ZOLP e che la soluzione decisionale sia costituita da n variabili binarie, ovvero: x = [ x, x 2, x n ] T. Esistono quindi 2 n possibili valori per il vettore x come soluzione della funzione obiettivo. Un metodo di soluzione è quello di fissare prima x = e trovare la soluzione x del problema ridotto e poi di fissare x = e trovare l altra soluzione di x. Questo problema può essere visualizzato come un albero decisionale binario, dove ogni foglia rappresenta una possibile soluzione. Un algoritmo che visiti tutte le foglie, ovvero che valuti tutte le possibili soluzioni ha una complessità esponenziale. Bound = 2 X = X = X 2 = X 2 = X 2 = X 2 = 8 5 7 Figura 5 Albero decisionale

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-7 L algoritmo branch-and-bound si basa sull idea di visitare solo una parte dell albero. Per ogni branch, ovvero per ogni diramazione, viene stimato il limite inferiore della soluzioni per tutte le soluzioni di quel ramo. Se tale stima è maggiore della migliore soluzione trovata, quel ramo viene tagliato (pruned) poiché le soluzioni ad esso relative hanno probabilmente un costo maggiore di una soluzione già acquisita. Ovviamente prima di tagliare qualsiasi ramo occorre aver visitato almeno una foglia, ovvero aver trovato una soluzione e aver calcolato il suo costo. Come esempio si consideri la Figura 5. Il problema prevede un vettore soluzione x = [ x, x2 ] di due variabili binarie. L algoritmo impone inizialmente x =. Successivamente x 2 =. Avendo raggiunto una foglia, ovvero una soluzione, ne calcola il costo ottenendo il valore. A questo punto risale l albero e ridiscende imponendo x 2 =. Questa è una nuova soluzione ed il suo costo, pari ad 8, è minore del miglior costo trovato al momento. La soluzione [, ] viene assunta dunque come migliore soluzione attuale. L algoritmo risale ancora l albero per analizzare il ramo in cui x =. Anziché discendere ancora prova a stimare il limite inferiore del costo di tutte le soluzioni appartenenti a quel ramo. Ottiene un limite (bound) pari a 2. Ciò vuol dire che sicuramente su quel ramo non esiste una soluzione migliore di 2. Poiché tale valore è maggiore della migliore soluzione trovata, il ramo viene tagliato e le soluzioni in esso comprese non vengono prese in considerazione. Dalla figura si può vedere che il limite è stato effettivamente calcolato correttamente. Infatti le soluzioni appartenenti a quel ramo avrebbero avuto costo pari a 5 e 7. Migliore è la stima del limite, migliore saranno le prestazioni dell algoritmo che riuscirà a tagliare, ovvero non esplorare, sezioni dell albero maggiori. In questo caso il metodo non influisce sull esattezza della soluzione, bensì sul solo tempo di calcolo, ovvero sulla complessità. Non sempre è possibile una stima sicura del costo delle soluzioni di un ramo. Il calcolo del limite potrebbe avvenire anche con tecniche euristiche che effettuino un calcolo statistico del costo. Questo potrebbe essere non corretto e la soluzione trovata non sarebbe con sicurezza la migliore. Problemi di cammino minimo e massimo. I problemi del cammino a costo minimo e a costo massimo sono modellizzazioni di un grande numero di altri problemi e in letteratura sono stati proposti molti algoritmi che ricercano con diversi approcci la soluzione migliore. Il problema del cammino minimo (quello a cammino massimo può essere considerato una sua estensione) può essere formalizzato da un grafo diretto connesso con connessioni pesate ed un vertice, chiamato sorgente, con un grado di ingresso nullo. Si deve ricercare nel grafo il percorso dal vertice sorgente a un altro qualsiasi vertice che abbia minima la somma dei pesi delle connessioni. In Figura 6 è illustrato un grafo G(V, E, W) che modellizza un problema a cammino minimo. Il grafo deve avere la caratteristica di non avere cicli negativi, altrimenti il problema è inconsistente.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-8 6-3 - 3-4 - -4 2 Figura 6 Modello per il cammino minimo Il caso più semplice si verifica quando il grafo è anche aciclico. In questo caso i vertici possono essere ordinati topologicamente. Il problema ha complessità pari a O(n 2 ). Il caso generale può essere risolto attraverso l algoritmo di Bellman-Ford che opera la ricerca della soluzione attraverso la tecnica del rilassamento. Esso inizializza i pesi del cammino minimo con quelli delle connessioni dal vertice sorgente. Successivamente i pesi di tutti i cammini vengono aggiornati iterativamente. Quando il problema è consistente, le stime dei pesi del cammino convergono su valori stabili corrispondenti ai pesi del cammino minimo. Se la convergenza non si ottiene in un numero di iterazioni pari a V -, il problema è probabilmente inconsistente. Il problema di colorazione. Il problema della colorazione di un grafo è un altro classico problema che si riscontra spesso nel CAD. In questo caso la connessione tra due vertici può essere vista come una incompatibilità tra le caratteristiche degli stessi. Si supponga, per esempio di avere a che fare con la ricerca del numero minimo di risorse necessarie per poter eseguire un certo numero di processi. Questi sono caratterizzati temporalmente da un istante di inizio e da un istante di termine. La modellizzazione di questo problema può essere effettuata attraverso un grafo nel quale i vertici rappresentano i processi e la connessione tra due di questi una sovrapposizione temporale della loro esecuzione come mostrato in come illustrato in Figura 7. Trovare il numero minimo di colori N della colorazione del grafo corrisponde ad allocare i processi su un numero N di risorse. Esistono in letteratura diversi algoritmi, per lo più di tipo euristico, per la ricerca della soluzione. Una possibile soluzione del problema è mostrato in Figura 8.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-9 2 3 4 5 6 7 8 6 6 7 4 3 2 5 4 7 2 3 5 Figura 7 Grafo per lo scheduling 6 2 3 4 5 6 7 8 7 4 3 6 2 3 7 5 2 5 4 Figura 8 Colorazione del grafo dello scheduling Il problema dei minimi locali. Un algoritmo che esplora lo spazio delle soluzioni per valutarne il costo, non sempre è in grado di trovare la soluzione ottima. Uno dei problemi è quello dei minimi locali.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3 - Se l algoritmo, per qualunque nuova soluzione, dovesse verificare che la funzione costo è peggiore di un altra soluzione trovata precedentemente, potrebbe far supporre che non esistano soluzioni migliori. Ma alle volte questo indica unicamente che l algoritmo non può evolvere verso soluzioni migliori. Si consideri ad esempio il problema della migliore disposizione di un certo numero di oggetti. Questo è un caso tipico di ottimizzazione nei sistemi elettronici, come il piazzamento delle celle. Si abbia per semplicità il caso di 3 oggetti nominati come a, b, c. Le disposizioni possibili sono dunque 6. Ad ognuna delle disposizioni sia associato un certo costo. Il problema è modellizzabile come in Figura 9. Ad ogni vertice è associata una delle soluzioni, ovvero una disposizione dei 3 oggetti. abc 2 bac cba 6 3 cab bca 5 acb 4 Figura 9 Spazio delle soluzioni per la disposizione di 3 oggetti Algoritmi del gradiente. Le metodologie per la ricerca del minimo globale di una funzione costo possono seguire diversi approcci. Il disporre di algoritmi efficienti è molto importante soprattutto quando le dimensioni del problema sono molto grandi, come nel caso del piazzamento delle celle in un sistema standard cell. Supponiamo di avere a che fare con una funzione, della quale naturalmente non conosciamo l espressione analitica, ad una sola variabile come quella indicata in Figura e di voler ricercare di tale funzione il minimo. Possiamo fissare inizialmente un punto di partenza x sull asse delle ascisse e calcolare la funzione costo y. Se da questa posizione ci spostiamo leggermente a destra e sinistra, calcolando la relativa funzione costo per questi due punti, verificheremmo che per il punto a destra detta funzione ha un valore minore. Questo nuovo punto sull ascissa viene dunque

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3 - preso come nuovo valore migliore. Ripetendo la procedura iterativamente si giungerà ad un punto per cui sia il valore a destra che quello a sinistra possiedono un costo maggiore. Questo valore viene considerato come il minimo della nostra funzione costo. Il problema di questo algoritmo è che funziona correttamente solo se è presente un solo minimo, altrimenti, come nel caso considerato, si potrebbe andare a finire in un minimo relativo della funzione anziché nel minimo assoluto. Qui di seguito sono descritte alcune tecniche implementative per la ricerca della miglior disposizione di un certo numero di oggetti che si possono classificare sotto questa categoria. y x Figura Funzione ad una variabile Il Constructive initial placement seleziona gli oggetti, una alla volta, basandosi su una funzione valutativa che misura il grado di net-connectivity rispetto a oggetti già posizionati. L oggetto è quindi piazzato in una posizione disponibile sullo scenario, in modo che la lunghezza totale dei collegamenti sia minimizzata rispetto al posizionamento precedente. Il Pairwise interchange inizia posizionando gli oggetti, quindi ne seleziona due e prova a scambiarli. Se lo scambio non comporta un incremento della lunghezza dei collegamenti lo si accetta, altrimenti si ristabilisce la configurazione precedente. Se ci sono n oggetti, allora n(n-)/2 scambi sono tentati ad ogni ciclo. Se la lunghezza dei collegamenti non diminuisce alla fine del ciclo, la procedura termina. Il Neighborhood interchange, come il precedente, si basa sullo scambio di due oggetti, questa volta in posizioni adiacenti. Un ciclo è completato quando ciascun oggetto è stata scambiato con ogni sua vicino. Anche in questo caso, se la lunghezza dei collegamenti non diminuisce alla fine di un ciclo, la procedura termina. Lo Steinberg s Algorithm opera su insiemi di oggetti indipendenti, cioè su oggetti che non hanno collegamenti comuni. Si procede selezionando un insieme indipendente di oggetti, li si rimuove dalla configurazione e si calcola il costo del piazzamento di ciascun oggetto in ogni traccia disponibile. Poiché questi costi sono indipendenti dal posizionamento degli altri insiemi di oggetti è possibile ricavare una buona soluzione risolvendo piccoli problemi lineari. Nel Force-directed relaxation viene calcolato per ogni oggetto k un vettore forza F k che risulta essere la somma di varie forze ciascuna dipendente dalla distanza dei collegamenti tra

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-2 l oggetto k e quelli a questo collegati. Si cerca quindi di posizionare l oggetto in un posto dove la somma delle forze sia zero. Algoritmo del Simulated Annealing. Nella categoria degli algoritmi probabilistici, uno di quelli che da migliori risultati è quello del Simulated Annealing introdotto nel 983 da Kirkpatrick, Gelatt e Vecchi. Il nome deriva da un equivalente meccanico nel quale lo stato di equilibrio, ovvero ad energia minore, di un certo numero di punti materiali, viene ottenuto attraverso l interazione dei punti materiali stessi ai quali viene fornita, in modo probabilistico, una certa quantità di energia cinetica. Si pensi ad esempio al metodo usato per sistemare nella maniera migliore possibile delle arance in una cassetta. In questo caso agitare la cassetta, significa fornire energia ad ogni arancia, inizialmente in una posizione di equilibrio locale dovuta alle forze di attrito, per uscire da quella posizione e trovare una posizione di equilibrio ad energia minore. Il riscaldamento viene inoltre utilizzato nei processi fisici per risistemare gli atomi di un reticolo cristallino dopo aver eseguito una impiantazione ionica che ha modificato la simmetria geometrica del cristallo. Questi metodi si basano quindi sul fornire ad ogni elemento del sistema una quantità di energia casuale, probabilisticamente in grado di togliere quella particella dal suo stato di equilibrio per trovarne uno migliore. In pratica la cosa si può vedere nel grafico precedente come un modo per poter scavalcare un dosso della caratteristica della funzione costo per poter raggiungere un punto di minimo più basso. Questa energia, durante il processo viene man mano diminuita. Praticamente, le funzioni di generazione della configurazione iniziale e della funzione costo, sono uguali ai precedenti algoritmi, mentre quella che si discosta è la funzione di accettazione della nuova configurazione. Definita c la differenza di costo tra la configurazione precedente e quella nuova, se tale valore risulta negativo (nuova configurazione migliore), questa viene sempre accettata. Se invece tale termine è positivo, la probabilità che lo stato venga accettato è distribuita in accordo con una funzione di probabilità. Si può scegliere a questo proposito la distribuzione di Boltzmann f c T ( c, T ) = e o quella di Dirac f, =. ( c T ) + e c T Il parametro T è proprio la temperatura. Il suo valore iniziale T viene scelto abbastanza alto da fare in modo che il maggior numero degli stati inizialmente venga accettato. È buona norma scegliere T molto maggiore del valore della deviazione standard della distribuzione dei costi (assunta come normale), in particolare: 3 T = σ c, ln P

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-3 dove P è la probabilità che si desidera che lo stato, in questo caso, venga accettato. Il valore di T al passo n viene scelto normalmente tale che: α = T n T n con α tra.95 e.8. In questo modo la temperatura scenderà lentamente con il progredire delle iterazioni. Da un punto di vista della libertà di poter scegliere nuove soluzioni, l algoritmo del Simulated Annealing applicato al grafo di Figura 9 permetterebbe di raddoppiare le connessioni rendendo possibile la scelta anche di quelle disposizioni con un costo maggiore. Algoritmi genetici. Gli algoritmi genetici appartengono alla categoria delle tecniche evolutive e vengono di sovente utilizzati in problemi particolarmente complessi nei quali i metodi tradizionali spesso falliscono. L efficienza dei processi osservati nell evoluzione naturale è dimostrata dall elevato sviluppo conseguito dagli esseri viventi in tempi relativamente brevi. I meccanismi che guidano questa evoluzione non sono stati pienamente compresi, ma alcune delle loro caratteristiche sono conosciute. L evoluzione ha luogo nei cromosomi, dispositivi organici in grado di codificare la struttura degli esseri viventi. Un essere vivente è creato parzialmente attraverso un processo di decodifica dei cromosomi. I processi di codifica e decodifica non sono del tutto noti, ma sono largamente accettate alcune idee.. L evoluzione è un processo che opera sui cromosomi piuttosto che sugli esseri viventi che codifica. 2. La selezione naturale consente una maggiore probabilità di riproduzione a quei cromosomi che codificano strutture che si adattano con maggiore successo all ambiente. 3. Il processo di riproduzione è il punto in cui ha luogo l evoluzione. La mutazione (mutation) altera il cromosoma di un figlio rispetto a quelli della coppia di genitori, mentre il processo di ricombinazione (crossover) è in grado di generare cromosomi nel figlio notevolmente differenti da quelli dei genitori. 4. L evoluzione biologica non ha memoria. La nuova generazione viene creata a partire da quella attuale e dal suo patrimonio genetico, senza conoscere il precedente percorso evolutivo. Questi furono introdotti agli inizi degli anni 7 da Holland e hanno avuto negli anni numerosi adattamenti ed applicazioni ad un grande numero di problemi. Egli credeva che, incorporati adeguatamente in un algoritmo per calcolatore, essi potessero costituire una tecnica per risolvere difficoltosi problemi nello stesso modo in cui ha fatto la natura: attraverso l evoluzione. Iniziò quindi a creare algoritmi in grado di manipolare stringhe binarie, dette cromosomi: come in natura, l evoluzione avviene secondo il ciclo di selezione, riproduzione, alterazione e sostituzione delle stringhe. L ambiente esterno (in questo caso il problema da risolvere) interviene come analizzatore della capacità del cromosoma di costituire una adeguata soluzione; il solo uso che viene fatto di questa informazione consiste nel favorire la riproduzione dei cromosomi che esibiscono un maggiore adattamento all ambiente (cioè costituiscono soluzioni migliori del problema). Gli algoritmi di Holland,

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-4 come altri da essi derivati, pur usando semplici meccanismi di codifica e riproduzione sono in grado di risolvere problemi estremamente complessi che non possono essere risolti con altre tecniche. L algoritmo può essere sinteticamente descritto dalla seguente sequenza di operazioni.. Scelta della codifica dei cromosomi. 2. Inizializzazione casuale di un insieme di cromosomi (popolazione) e loro valutazione. 3. Creazione di nuovi cromosomi, applicando le operazioni di ricombinazione e mutazione. 4. Eliminazione di elementi della generazione precedente. 5. Valutazione del criterio di arresto. Verranno ora esaminati in dettaglio alcuni aspetti rilevanti dell algoritmo. Codifica. La codifica è un aspetto fondamentale nella modellizzazione di un problema e, nel caso degli algoritmi genetici in particolare, riveste un ruolo determinante. Il metodo forse più utilizzato è quella della codifica binaria. Attraverso una stringa di bit viene espresso il valore della soluzione. Nel caso la soluzione appartenga all insieme dei numeri interi, allora la codifica può essere direttamente il valore numerico della soluzione. Se la soluzione è un numero reale, occorrerà effettuare prima una discretizzazione per potersi ricondurre ad una stringa di bit. Se, inoltre, la soluzione è rappresentata da un vettore di soluzioni, allora si può pensare ad una sola stringa binaria costituita dagli elementi stessi del vettore. Naturalmente la lunghezza in bit della stringa determina la risoluzione della soluzione. In realtà la codifica dovrebbe essere fatta in modo che soluzioni numericamente vicine, abbiano anche rappresentazioni con distanza di Hamming piccola. Ciò accade, per esempio, nel caso della codifica di Grey. Inizializzazione della popolazione. Inizialmente vengono generati casualmente un certo numero di elementi della popolazione. La stringa di bit della loro codifica rappresenta ciò che in natura è il cromosoma di un individuo. La funzione costo, a questo punto, viene valutata per tutti gli elementi della popolazione e si tiene traccia della soluzione migliore, ovvero quella a costo minimo. Generazione di una nuova popolazione. Viene ora creata una nuova popolazione a partire da quella precedente attraverso un processo di riproduzione. Questo consiste nella selezione di due genitori e nella generazione da questi di due nuovi elementi. La selezione dei genitori avviene attraverso un metodo probabilistico tale che la probabilità di un elemento di essere selezionato sia proporzionale alla bontà della sua soluzione. La generazione avviene attraverso gli operatori di ricombinazione e di mutazione. La ricombinazione consiste nella creazione dei cromosomi dei nuovi elementi a partire da quelli dei genitori. La tecnica più semplice consiste nell incrocio della coppia di cromosomi tagliati in punto casuale come illustrato in Figura. Una variante è quella di tagliare i

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-5 cromosomi in più punti, o, ancora più in generale, quella di stabilire un motivo di incrocio binario di lunghezza pari a quella dei cromosomi come illustrato in Figura 2. Se nel motivo, in una certa posizione, è presente uno oppure un, viene selezionato nel cromosoma del nuovo elemento nella stessa posizione, il bit di un genitore oppure dell altro. Figura Operazione di ricombinazione semplice Figura 2 Operazione di ricombinazione con motivo di incrocio L operazione di mutazione permette di mutare in modo casuale uno o più bit del cromosoma di un nuovo elemento. In Figura 3 è illustrato questo meccanismo. La probabilità di mutazione, comunque molto bassa, può essere diversa per ogni posizione del bit nel cromosoma, può essere diversa a seconda del valore del bit e l algoritmo può prevedere o no il fatto che possono variare più bit su ogni cromosoma. Figura 3 Operazione di mutazione

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-6 Eliminazione degli elementi. Il numero di nuovi elementi della popolazione è un parametro dell algoritmo, ma il numero degli elementi della popolazione deve rimanere costante per ogni ciclo. Ciò implica che per ogni coppia di nuovi elementi che viene generata, occorrerà, alla fine del ciclo, far corrispondere l eliminazione di altrettanti elementi della generazione precedente. Anche in questo caso l eliminazione viene eseguita con criteri probabilistici ed ogni elemento ha una probabilità di sopravvivere proporzionale alla bontà della sua soluzione. Valutazione della condizione di arresto. Dopo che un intero ciclo di generazione è completato viene valutata ogni soluzione, ovvero ogni cromosoma, per selezionare il migliore e determinare se il criterio di arresto del processo di ottimizzazione è soddisfatto. La valutazione dipende in modo specifico dal tipo di problema che si sta trattando.