Sei sulla pagina 1di 16

Network Design Algorithm

Alessio Baldazzi Nicola Sparnacci

12 marzo 2017
Indice
1 Descrizione del problema 2

2 Generazione del problema 3

3 Struttura dati 4

4 Algoritmo Greedy 5
4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Primo algoritmo Greedy . . . . . . . . . . . . . . . . . . . . . 5
4.3 Secondo algoritmo Greedy . . . . . . . . . . . . . . . . . . . . 6

5 Algoritmo di Local Search 6


5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2 Correzione del carico degli switch . . . . . . . . . . . . . . . . 7
5.3 Correzione di client non collegati . . . . . . . . . . . . . . . . 7
5.4 Correzione di client collegati a pi switch . . . . . . . . . . . 7
5.5 Ricerca migliore switch vuoto . . . . . . . . . . . . . . . . . . 7
5.6 Accorpamento di switch . . . . . . . . . . . . . . . . . . . . . 8
5.7 Ricerca migliore collegamento . . . . . . . . . . . . . . . . . . 8

6 Algoritmo Genetico 9
6.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2 Crossover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.3 Mutazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.4 Algoritmo di selezione . . . . . . . . . . . . . . . . . . . . . . 10

7 Analisi Performance e Risultati 11

1
1 Descrizione del problema
Il problema in esame si colloca in un contesto dove necessario ottimizzare
il collegamento fra sorgente e destinazione, che comunicano attraverso dei
componenti intermedi con una certa capacit.
Dato un set di nodi comprendente:

un nodo radice, sorgente di tutto il traffico da smistare;

un numero m di switch intermedi, ognuno con capacit Cj e costo Pj ;

n destinazioni del traffico, con domanda Di

distanza cij per ogni coppia di nodi;

lo scopo di questo algoritmo quello di assegnare una destinazione a ciascun


switch in modo che:

la distanza totale e il costo dello switch sia minimizzato;

la capacit dello switch venga rispettata.

Per creare questo algoritmo sar necessario implementare in prima istan-


za un algoritmo Greedy, poi si implementer un algoritmo di Local Search
per poi finire con un algoritmo Genetico. Si creeranno poi dei test per ve-
rificare lefficienza e lefficacia di queste implementazioni, confrontandole. Il
problema della progettazione delle network consiste nel creare il collegamen-
to tra la sorgente e la destinazione attraverso un numero, spesso elevato,
di nodi intermedi, detti switch. Questi switch saranno caratterizzati da un
certo costo Pj , da una capacit Cj di smaltire traffico e dalla posizione (x, y)
in cui si trova. Sar utilizzato il parametro distanza cij data dalla distanza
euclidea tra due nodi vicini.
Lobbiettivo, per ottimizzare la rete, quello di scegliere per ogni de-
stinazione il nodo che garantisca che Pj + cij sia il valore minimo, tenendo
conto che uno switch non pu smaltire un traffico maggiore di Cj .
I criteri che saranno usati per valutare la performance di un algoritmo
sono:

qualit: quanto la soluzione trovata si discosta dalla ottimale.

velocit: quanto tempo di computazione necessario per ottenere la


soluzione.

Questi criteri verranno utilizzati per il confronto tra gli algoritmi implemen-
tati, per valutare quale sia il pi accurato e quale il pi veloce.

2
2 Generazione del problema
Per la generazione del problema stato scritto un programma in C nel quale
vengono lasciati alcuni gradi di libert allutente, per modificare il problema a
seconda delle esigenze e dei collegamenti da ricercare. Lutente pu scegliere
da tastiera il numero di client n e la dimensione dellarea L nella quale
verranno collocati tutti i nodi.
Dato il numero n di destinazioni del traffico, il programma genera per
ciascun client le tre caratteristiche che gli appartengono:

posizione cartesiana (xc , yc ): viene generata la posizione in due di-


mensioni allinterno del quadro, con dimensioni scelte allavvio del
programma: xc , yc [L, +L];

demand Di : parametro che caratterizza limpatto che il client andr


ad avere sullo switch a cui verr collegato. Per semplicit, si scelto di
creare ciascuna demand Di che varia dal valore minimo 1 ad un valore
massimo 10: Di [1, 10];

numero identificativo N : il parametro necessario per distinguere i


client in fase di calcolo: N [0, n];
n
Creati gli n client, il programma crea m = 50 switch. Questi, saranno
tutti collegati direttamente alla sorgente del traffico posizionata, per sempli-
cit, al centro degli assi cartesiani. Inoltre, ogni switch sar caratterizzato
da:

posizione cartesiana (xs , ys ): si genera una posizione nel piano carte-


siano allinterno di un quadro di dimensione inferiore rispetto larea
disponibile ai client, in particolare: xs , ys [ L2 , L2 ];

capacit Cj : rappresenta il carico massimo di client sopportato dallo


switch, ovvero la domanda massima che pu essere gestita. Viene scelto
di creare gli switch con capacit tale che la loro somma risulti il doppio
della domanda totale di tutti client, per permettere allalgoritmo di
avere pi margine di manovra. Per semplicit, stato scelto di generare
switch uguali quindi:
Pn1
i=0 Di
Cj = 2 (1)
m
costo Pj : il costo di attivazione dello switch, che viene pagato se viene
connesso un client. Per minimizzare il numero di switch attivati, viene
assegnato un costo di attivazione molto pi alto rispetto il costo delle
tratte dovuto alle distanze. Nel caso di questo generatore di problemi:
Pj = 100 L.

3
Allinterno del programma stata implementata una funzione che impe-
disce di creare nodi sovrapposti, per evitare che nella grafica non possa esserci
pi di un collegamento, dando limpressione che la soluzione sia ammissibile.
Il generatore di problemi, essendo un programma a parte, deve generare
un file di testo come output per fornire la disposizione dei nodi e le rispettive
caratteristiche allalgoritmo. Per decodificare le informazioni, stato creata
una classe Java, che legge ed estrapola dal documento testuale i parametri
del problema generato. Inoltre, il generatore crea un altro file testuale che
permette di graficare il problema generato su LATEX copiando il contenuto
del file allinterno dellambiente tikzpicture.

3 Struttura dati
Scegliendo di creare lalgoritmo per il Network Design in Java per sfruttarne
grafica e flessibilit, sono state create delle classi e degli oggetti. Per cercare
di limitare il tempo desecuzione dellalgoritmo e di sviluppo del software, si
scelto di utilizzare solo liste di numeri interi, senza introdurre gli oggetti
come switch e client allinterno degli algoritmi. Le liste, come ad esempio
quella usata per le connessioni switch-client, sono riempite coi loro rispettivi
ID, in modo da poter risalire, se necessario, alle caratteristiche degli oggetti.
Questa scelta risulta comoda anche per quanto riguarda il Genetico, poich
permette di semplificare notevolmente la generazione di nuovi individui, fatta
tramite lo scambio di numeri interi e non di oggetti pi complessi. Infatti,
stato possibile creare. In particolare, le classi create sono:

Switch: che comprende i campi xs , ys , capacit e costo;

Client: che comprende i campi xc , yc e la domanda;

Problem: contenente la dimensione dellarea e le liste di tutti gli switch


e di tutti i client da considerare nellalgoritmo;

Solution: che contiene il problema, larray di liste di connessione degli


switch, larray di liste di connessione dei client, larray delle capacit
residue degli switch e le liste di controllo, ovvero, quella contenente gli
switch oltre la capacit massima, la lista con i client non collegati e
la lista dei client collegati a pi switch. la classe che si occupa di
effettuare la connessione e la disconnessione switch-client quando viene
richiamata questa funzione dalle altre classi e che permette di calcolare
le liste di controllo per verificare eventuali inaccettabilit.

Greedy: la classe utilizzata per scrivere il codice degli algoritmi Greedy.


Per poter richiamare i metodi Greedy, per come stata implementata
la classe, necessario fornire come argomento il problema di partenza.
Alla fine del processo, verr restituito un tipo Solution.

4
LocalSearch: la classe che contiene tutti i metodi per il controllo della
soluzione e la ricerca in locale della soluzione ottima. A differenza dei
metodi Greedy, largomento necessario per richiamare Local Search
di tipo Solution, poich andr a lavorare su una soluzione gi calcolata.

Genetic: dove vengono implementati crossover, mutazioni e selezione


degli individui;

FileReader, FileWriter, Benchmark: le prime due sono le classi utiliz-


zate per poter leggere da file il problema, scrivere su un altro file la
soluzione, mentre la classe Benchmark quella utilizzata per calcolare
il tempo impiegato dagli algoritmi a fornire la soluzione.

4 Algoritmo Greedy
4.1 Introduzione
Lalgoritmo Greedy un costruttivo ed generalmente un primo approccio
alla risoluzione di un problema. Ad ogni iterazione, questo algoritmo effet-
tua la migliore scelta possibili tramite una regola di espansione che tende
a scegliere la via per diminuire il costo della soluzione. Nelle implementa-
zioni che seguono sono stati implementati Greedy Duali: si parte da una
soluzione inaccettabile e ad ogni iterazione lalgoritmo cerca di aumentarne
laccettabilit.
A differenza di altri algoritmi, come il Local Search a pagina 6, il Greedy
non cambia mai una scelta quando stata presa. Questa semplicit, porta
ad avere un tempo computazionale molto breve ma, soprattutto per proble-
mi di elevate dimensioni, si otterr una soluzione che facilmente discoster
dallottimo.

4.2 Primo algoritmo Greedy


Il primo algoritmo Greedy creato parte prendendo le liste dei client e de-
gli switch dal problema. Tutti i componenti delle liste vengono suddivisi
in quattro quadranti in base al valore delle coordinate cartesiane x e y:
positivo-positivo, positivo-negativo, negativo-positivo e negativo-negativo.
Per velocizzare lalgoritmo, evitando di leggere ogni volta tutti i nodi, ogni
componente viene ordinato a distanza crescente dalla sorgente posizionata
in (x, y) = (0, 0).
Una volta riordinati, viene richiamato il metodo dedicato allinserimento
dei collegamenti: per lista di client corrispondente ad un quadrante, par-
tendo da quello pi distante, si collega allo switch appartenente allo stes-
so quadrante posizionato a distanza maggiore dalla sorgente con necessaria
capacit libera.

5
Terminata questoperazione per tutti i quadranti, si aziona il metodo
che cerca il collegamento migliore per i client non collegati durante la fase
precedente, nel caso non ci fossero switch in quel quadrante, piuttosto che
non fossero in numero sufficiente. Questo metodo consiste nel creare una
lista contenente lID degli switch non saturi e andare a svuotare la lista dei
client non collegati, creando il collegamento fra i nodi a distanza minore.

4.3 Secondo algoritmo Greedy


Il secondo Greedy pi semplice e veloce. Si dedica solo a creare le connes-
sioni a minima distanza passando uno ad uno tutti i client e cercando per
ognuno lo switch a distanza minima con capacit sufficiente. In questo modo,
si riesce ad ottenere una soluzione caratterizzata da costo delle tratte minimo
e rappresenta un parametro di confronto molto interessante per studiare le
prestazioni ottenute dagli altri algoritmi implementati nel seguito. Per la sua
semplicit, per, c una controindicazione: non si occupa di minimizzare il
numero di switch attivati. Questo fattore porta ad avere soluzioni ottime
come costo delle tratte ma pessimo a livello generale, in quanto il costo di
attivazione degli switch molto pi incisivo.
Per un esempio grafico si rimanda a Figura 1 mentre per risultati speri-
mentali del Greedy 1 a Tabella 1 e per Greedy 2 a Tabella 2.

5 Algoritmo di Local Search


5.1 Introduzione
Lapproccio Local Search parte da una soluzione ammissibile, come quella
restituita da uno dei due Greedy implementati, e si costruisce un insieme di
soluzioni accettabili tra le quali cerca la migliore. La ricerca della soluzione
migliore fatta tramite degli scambi di client tra switch attraverso dei criteri
che verranno spiegati nel dettaglio in seguito allintroduzione. evidente che
la Local Search si differenzia dallalgoritmo Greedy che, mano a mano, si crea
la soluzione facendo le scelte migliori in ciascun nodo senza considerare il
risultato di queste scelte. Infatti, gli algoritmi Greedy non possono tornare
indietro una volta effettuata una scelta mentre, questo, esattamente il
compito della Ricerca Locale. Data una soluzione ammissibile, lalgoritmo
tramite degli scambi di client fra switch, crea un insieme di soluzioni "vicine"
(Neighborhood) e va a cercare al suo interno se esiste una soluzione migliore
di quella attuale. Se esiste una soluzione migliorante, allora mantiene lo
scambio, altrimenti riporta alla soluzione precedente e ricomincia facendo
altri scambi fino al giungere di una soluzione pi vicina allottimo rispetto
quella iniziale.
La Ricerca Locale dovr occuparsi anche di correggere eventuali soluzio-
ne non ammissibili. Questa peculiarit indispensabile per limplementazio-

6
ne dellalgoritmo Genetico, di cui si rimanda a pagina 9, perch attraverso
ai suoi meccanismi di combinazione come la mutazione e il crossover, le
probabilit di ottenere soluzioni non accettabili molto elevata.

5.2 Correzione del carico degli switch


Un requisito per avere soluzioni ammissibili che le capacit degli switch
vengano rispettate. Non possono essere considerati validi i casi in cui la
capacit libera di uno switch sia negativa, ovvero non possono essere collegati
ad esso un numero di client tale che la domanda totale sia maggiore della
capacit.
Per evitare questa situazione, si parte considerando la lista degli switch
pieni. Per li-esimo switch della lista, si ordinano i client collegati in ordine
di distanza. Successivamente, si inizia a rimuovere dallo switch i-esimo i
client pi lontani e si ripete questa operazione finch non viene riportata la
capacit libera ad un valore positivo. I clienti rimossi, vengono aggiunti alla
lista dei client non collegati e viene attivato il metodo di correzione di client
non collegati, spiegato in seguito.

5.3 Correzione di client non collegati


Il problema richiede che la sorgente di traffico possa raggiungere tutte le
destinazioni, rappresentate dai client. Il processo di correzione sfrutta la
lista delle destinazioni non raggiungibili, creata dalla struttura dati, che
viene analizzata in ogni sua componente. Per li-esimo client della lista
viene calcolata dalla lista di switch con capacit libera sufficiente la distanza
che li separa. Considerando che la lista di switch molto minore della lista
delle destinazioni, il processo non richiede molto calcolo ed sufficientemente
veloce. Dopo avere analizzato ogni switch, viene scelto quello a distanza
minore ed, infine, gli viene connessa li-esima destinazione.

5.4 Correzione di client collegati a pi switch


Questo conflitto pu essere eliminato andando a scorrere la lista dei duplicati
creata dalla struttura dati. Per ogni client presente in questa lista si calcola la
posizione cartesiana e si analizza a quali nodi intermedi collegato. Tramite
un ciclo, si calcolano le distanze fra switch e destinazione e si rimuovono
tutti quelli pi lontani, mantenendo attiva la connessione allo switch che
garantisce il minimo costo tratta.

5.5 Ricerca migliore switch vuoto


La ricerca del migliore switch vuoto consiste nel prendere in modo casuale
uno degli switch che ospita dei client e, come al solito, calcolarne la posizione.

7
Successivamente, si calcola il baricentro delle destinazioni raggiungibili tra-
mite lo switch preso in esame e se ne salva la posizione (xB , yB ). In seguito,
si calcola la distanza degli switch vuoti da questo punto e se si localizza uno
a distanza minore, tutti i client del precedente vengono trasferiti allultimo
analizzato.

5.6 Accorpamento di switch


Lo scopo di questo metodo quello di cercare di diminuire al massimo il
numero di switch attivi, cercando di portare il numero pi alto possibile di
nodi alla capacit nativa.
Si entra nel metodo organizzando larray list dal nodo pi utilizzato a
quello meno utilizzato, basandosi sul valore della capacit libera residua.
Iniziando a scorrere la lista dal pi libero, tralasciando gli switch senza col-
legamenti, gi nelle condizioni migliori, si procede nellanalisi calcolando per
uno switch i-esimo poco utilizzato la domanda totale a cui deve rispondere.
Successivamente, nota la total demand, si cerca nella lista a partire dal pi
utilizzato, se c uno switch con abbastanza capacit residua per ospitare i
client collegati alli-esimo nodo intermedio.
Questo metodo uno dei pi efficaci nel migliorare la soluzione finale,
poich il costo di attivazione degli switch il valore che pi incide sulla
soluzione.

5.7 Ricerca migliore collegamento


Lultima funzione di Local Search implementata la ricerca del migliore
collegamento. Partendo in modo casuale da uno switch che abbia dei colle-
gamenti, se ne calcola la posizione. Successivamente, si calcola la distanza
media tra la posizione dello switch in esame e tutte le sue destinazioni. Per
evitare di considerare troppi client, che porterebbe ad una penalit a livello
di tempo di calcolo, si crea una soglia, ad esempio 1.5 dclients , e si sele-
zionano solo i nodi con distanza maggiore di questo limite. Per ognuno dei
punti sopra la soglia, si cerca tra gli switch gi attivati e con sufficiente ca-
pacit residua quello posto a distanza minore. Se il risultato della ricerca
positivo, il client viene spostato in questultimo. Il processo si ripete per un
certo numero di iterazioni per arrivare ad una soluzione migliorante.
Per analizzare le prestazioni su un ampio quantitativo di problemi sono
riportate in Tabella 3 lalgoritmo che sfrutta il Greedy 1, mentre per soluzioni
di partenza di Greedy 2 in Tabella 4.

8
6 Algoritmo Genetico
6.1 Introduzione
Lo scopo dei Metaeuristici quello di "esplorare" un parco soluzioni pi
ampio, al di fuori del Neighborhood locale esplorato dal Local Search. Questo
procedimento permette di avere pi possibilit di giungere alla soluzione
ottima globale, probabilmente non presente nel vicinato locale.
In particolare, lalgoritmo Genetico si ispira al processo di selezione na-
turale Darwiniano. Con analogia biologica, il Genetico applica alla soluzione
una serie di perturbazioni che possono essere associabili allevoluzione di un
individuo in natura. Le modalit in cui una soluzione pu evolvere sono:

crossover: una nuova soluzione viene generata partendo da pi soluzio-


ni ed estrapolandone alcune caratteristiche;

mutazione: partendo da una soluzione si creano delle perturbazioni


casuali.

logico che i due metodi di evoluzione possono portare ad ottenere solu-


zioni non accettabili. Nel particolare problema del Network Design, molto
probabile che prendendo casualmente dei client da uno switch per associarli
ad un altro si ottengano client collegati a pi nodi, capacit non rispettate,
piuttosto che client non connessi. Per questo, la generazione della popolazio-
ne dellalgoritmo Genetico deve necessariamente essere corretta dalla Local
Search.

6.2 Crossover
Il processo di crossover consiste nel prendere pi soluzioni e generarne di
nuove con caratteristiche appartenenti alle soluzioni generatrici. Viene scelto
in modo casuale un punto P [0, m], dove m il numero di switch, si prende
larray di liste con i collegamenti delle due soluzioni e si crea una nuova
soluzione prendendo nellintervallo [0, P ] la prima soluzione e nellintervallo
]P, m] la seconda soluzione. In questo progetto, quindi, viene implementato
un one point crossover. Cos facendo si ottiene una nuova soluzione che
contiene caratteristiche sia della prima che della seconda, come i cromosomi
di un figlio sono il risultato dellunione casuale dei cromosomi dei genitori.
Una soluzione risultato di questo processo, avr sempre la capacit degli
switch rispettata perch parte da soluzioni ammissibili, ma avr con molta
probabilit delle inaccettabilit dovute ai client non connessi e ai client con-
nessi a due o pi nodi. Per questo, risulta ancora una volta necessaria la
Local Search per riportare questa soluzione allaccettabilit.

9
6.3 Mutazioni
Grazie alla struttura dati vettoriale scelta possibile agire in modo molto
agevole sulla soluzione per creare i nuovi individui. Per giungere a nuo-
vi individui possibile accedere allarray di liste contenenti i collegamen-
ti e agire andando a modificare loggetto presente allindice r-esimo, scelto
casualmente.
Prendendo in esame la prima mutazione implementata, si prende un
numero k < n di client scelti casualmente ed ognuno di essi viene spostato
su un nuovo switch, anchesso casuale.
La seconda mutazione, invece, prende un numero j < m di switch in mo-
do casuale e sposta tutti i relativi client verso un altro switch scelto anchesso
casualmente, questazione porta facilmente a soluzioni inaccettabili oltrepas-
sando la capacit massima ma esplora facilmente intorni precedentemente
non considerati.
Questi processi, probabilmente porteranno soluzioni inaccettabili quindi
necessario lanciare la Local Search appena dopo le mutazioni.

6.4 Algoritmo di selezione


Visto lalto numero di soluzioni necessario per creare un buon algoritmo
Genetico, necessario implementare un criterio di selezione che, seguendo
una certa logica, riporti le soluzioni al numero iniziale selezionando le migliori
fra quelle generate dalla mutazione, dal crossover e dalle soluzioni di partenza
generate dagli algoritmi precedenti. Questo criterio, deve essere finalizzato a
favorire il miglioramento della soluzione pur mantenendo una buona variet
delle propriet.
Nel caso del Network Design la popolazione delle soluzioni iniziali crea-
ta in modo da garantire una ampia variet delle soluzioni di partenza ma
contenendo allinterno anche soluzioni gi sufficientemente buone, in partico-
lare ne fanno parte: le soluzioni dei due algoritmi Greedy, le soluzioni dei due
algoritmi Greedy migliorati dal Local Search, altre tre soluzioni ottenute da
una versione del primo Greedy con una perturbazione casuale e Local Search
ed infine altre tre soluzioni provenienti dal Greedy 2 randomizzato con Lo-
cal Search cos da ottenere una popolazione di 10 soluzioni. Prese queste
soluzioni iniziali, si creano altre soluzioni utilizzando i processi di mutazio-
ne e crossover cos da ottenere una popolazione sufficientemente variegata.
Successivamente, si procede nel mantenimento delle soluzioni pi valide: per
fare questo possibile ordinare in ordine crescente in base alla validit delle
soluzioni e memorizzare le prime, con valore migliore. Il genetico, poi, cerca
di trovare soluzioni molto diverse da quelle iniziali in modo che la variet di
popolazione possa generare unendo e mutando un individuo ottimo. Per fare
questo, possibile cercare fra le soluzioni create quelle che abbiano capacit
residue il pi diverse possibile, perch porterebbe ad avere soluzioni molto

10
differenti. Lalgoritmo resta allinterno di un ciclo e continua a creare nuovi
individui finch le soluzioni trovate sono miglioranti. Allinterno del ciclo
presente un contatore che viene azzerato ogni volta che si trovano dei miglio-
ramenti, mentre se non vengono trovati miglioramenti, quando il contatore
giunge ad un certo numero, il ciclo viene interrotto.
Per analizzare i risultati del Genetico si rimanda a Tabella 5 e per un
esempio grafico a Figura 2 e Figura 4.

7 Analisi Performance e Risultati


Dai risultati ottenuti si evince che tra i due algoritmi Greedy implementati
lunico ad ottenere una soluzione non troppo lontana dalla soluzione ottima
la prima versione, ovvero quella che suddivide inizialmente in quadranti il
problema: questo ha la forza di minimizzare in quasi tutti i problemi il nume-
ro di switch occupati pur garantendo una lunghezza delle tratte non troppo
elevata. Lalgoritmo di ricerca locale implementato migliora sempre la so-
luzione in maniera notabile con un piccolo tempo di computazione ulteriore
in successione ad entrambi gli algoritmi Greedy, ma in linea generale si pu
notare che la coppia Greedy 2 (minimizzazione distanza) e Local Search fa
ottenere i migliori risultati. Dai risultati si pu notare che non c una coppia
Greedy-Local Search, tra quelle in oggetto, che permetta di ottenere sempre
una soluzione molto buona ma dipendente dal problema in oggetto; inoltre
lesito prodotto, con tempi accettabilmente brevi, variabile tra le singole
esecuzioni dellalgoritmo di ricerca locale. Lalgoritmo genetico sviluppato,
mantenendo una buona variet della popolazione, in grado in pochi pas-
si di esplorare efficacemente lintorno delle soluzioni ottenendo sempre una
soluzione molto prossima a quella ottima qualunque sia il problema da risol-
vere. Lo svantaggio di questo algoritmo il maggior tempo di computazione
impiegato, bisogna comunque tenere in considerazione la maggior semplicit
di sviluppo: per ottenere simili risultati con una ricerca locale sarebbe stato
necessario prendere in esame vari problemi che si potrebbero dover risolvere
ed ottimizzare i meccanismi per ognuna di queste.
In seguito, si mostrano esempi grafici di problemi di piccole dimensioni
come, ad esempio, 500 client, 10 switch e lato 40 in Figura 1 e Figura 2 e
con 1000 client, 20 switch e lato 50, in Figura 3 e Figura 4. Nella pagina
successiva, si conclude il documento riportando i risultati degli algoritmi
implementati utilizzando una serie di test campione con numero di client,
switch e aree differenti.

11
Figura 1: Soluzione calcolata da Greedy 1 per 500 client, 10 switch

Figura 2: Soluzione calcolata dal Genetico per 500 client, 10 switch

12
Figura 3: Soluzione calcolata dal Greedy per 1000 client, 20 switch

Figura 4: Soluzione calcolata dal Genetico per 1000 client, 20 switch

13
Problem Distance Switch Cost Total Cost Error Execution Time
Client Switch Dimension (%) (ms)
500 10 50 1599 3000 4599 9.1 15
500 10 100 2459 7000 9459 17.3 15
500 10 1000 21720 80000 101720 26.2 31
750 15 50 1666 4500 6166 15.7 31
750 15 100 4197 8000 12197 10.5 31
750 15 1000 34546 90000 124546 13.2 31
1000 20 50 2261 6000 8261 13.9 46
1000 20 100 4791 12000 16791 13.7 46
1000 20 1000 52842 110000 162842 9.3 46

Tabella 1: Risultati ottenuti utilizzando un algoritmo Greedy 1

Problem Distance Switch Cost Total Cost Error Execution Time


Client Switch Dimension (%) (ms)
500 10 50 1242 5000 6242 48 < 15
500 10 100 2070 10000 12070 49.7 < 15
500 10 1000 20574 100000 120574 49.6 < 15
750 15 50 1363 7500 8863 66.3 < 15
750 15 100 3222 15000 18222 65 < 15
750 15 1000 31305 150000 181305 64.8 < 15
1000 20 50 1797 10000 11797 62.7 < 15
1000 20 100 3898 20000 23898 61.8 15
1000 20 1000 40014 200000 240014 61.1 15

Tabella 2: Risultati ottenuti utilizzando un algoritmo Greedy 2

Problem Distance Switch Cost Total Cost Error Execution Time


Client Switch Dimension (%) (ms)
500 10 50 1480 3000 4599 6.2 < 15
500 10 100 2327 6000 9459 3.3 31
500 10 1000 22295 60000 101720 2.1 46
750 15 50 1630 4000 6166 5.6 31
750 15 100 3962 8000 12197 8.3 31
750 15 1000 34504 80000 124546 4.1 31
1000 20 50 2175 5500 8261 5.9 62
1000 20 100 4652 11000 16791 6 62
1000 20 1000 46015 110000 162842 4.7 62

Tabella 3: Risultati ottenuti con Greedy 1 e Local Search

14
Problem Distance Switch Cost Total Cost Error Execution Time
Client Switch Dimension (%) (ms)
500 10 50 1340 3000 4340 2.9 < 15
500 10 100 2220 6000 8220 1.9 < 15
500 10 1000 22927 60000 82927 2.9 < 15
750 15 50 1593 4000 5593 5 < 15
750 15 100 3562 8000 11562 4.7 < 15
750 15 1000 37352 80000 117352 6.7 < 15
1000 20 50 1970 5500 7970 3 < 15
1000 20 100 4247 11000 15247 3.2 15
1000 20 1000 43363 110000 153363 2.9 15

Tabella 4: Risultati ottenuti con Greedy 2 e Local Search

Problem Distance Switch Cost Total Cost Error Execution Time


Client Switch Dimension (%) (ms)
500 10 50 1271 3000 4271 1.3 328
500 10 100 2161 6000 8161 1.2 250
500 10 1000 21641 60000 81641 1.3 234
750 15 50 1469 4000 5469 2.6 390
750 15 100 3324 8000 11324 2.5 406
750 15 1000 33596 80000 113596 3.3 359
1000 20 50 1883 5500 7383 1.8 546
1000 20 100 4128 11000 15128 2.4 484
1000 20 1000 41779 110000 151779 1.9 546

Tabella 5: Risultati ottenuti con algoritmo Genetico

15