TESI DI DIPLOMA - staff.icar.cnr.itstaff.icar.cnr.it/folino/tesi/Pres_castelfranco.pdf · Corso di...

25
Università degli Studi della Calabria Facoltà di Ingegneria Corso di Diploma in Ingegneria Informatica TESI DI DIPLOMA Una implementazione distribuita della programmazione genetica in ambiente Peer-to-Peer Candidati Castelfranco Antonino Matr. 53083 Toscano Cosma Christian Matr.30056 Relatore Prof. Giandomenico Spezzano

Transcript of TESI DI DIPLOMA - staff.icar.cnr.itstaff.icar.cnr.it/folino/tesi/Pres_castelfranco.pdf · Corso di...

Università degli Studi della CalabriaFacoltà di Ingegneria

Corso di Diploma in Ingegneria Informatica

TESI DI DIPLOMA

Una implementazione distribuita dellaprogrammazione geneticain ambiente Peer-to-Peer

Candidati

Castelfranco AntoninoMatr. 53083

Toscano Cosma ChristianMatr.30056

Relatore

Prof. Giandomenico Spezzano

ObiettivoObiettivo

Realizzare un’implementazionedistribuita di un tool per la

programmazione genetica in ambientePeer-to-Peer.

Programmazione geneticaProgrammazione genetica

È una tecnica euristica, che si ispira all'evoluzioneÈ una tecnica euristica, che si ispira all'evoluzionenaturale teorizzata da Darwin, per risolverenaturale teorizzata da Darwin, per risolvere

problemi di ricercaproblemi di ricerca..

È una sottoclasse degli algoritmi evolutivi.È una sottoclasse degli algoritmi evolutivi.

Viene utilizzata nella realizzazione di sistemi per laViene utilizzata nella realizzazione di sistemi per lagestione di archivi, per il Data gestione di archivi, per il Data MiningMining e per e per

l’elaborazione di immagini.l’elaborazione di immagini.

Programmazione geneticaProgrammazione genetica

In particolare il dominio èidentificato da una

popolazione di individui(programmi sottoforma di

alberi sintattici) che sievolvono mediante gli

operatori genetici(mutazione, crossover, etc.).

La soluzione viene sceltain base al valore

della fitness, che indicala bontà di un individuo.

CrossoverCrossover e Mutazione e Mutazione

CrossoverCrossover

MutazioneMutazione

Consiste nello scambio incrociato diConsiste nello scambio incrociato diinteri sottoalberi appartenenti a dueinteri sottoalberi appartenenti a dueprogrammi: selezionati i genitori, suprogrammi: selezionati i genitori, suentrambi si sceglie un nodo conentrambi si sceglie un nodo conprocedura casuale, quindi i relativiprocedura casuale, quindi i relativisottoalberi vengono scambiati tra lorosottoalberi vengono scambiati tra loroottenendo due nuovi individui.ottenendo due nuovi individui.

Consiste nell’inserire del nuovocodice nel programma: selezionato ilgenitore, si sceglie in modocompletamente casuale un suo nodo,quindi il relativo sottoalbero vienesostituito da un altro generato semprecon procedura casuale.

I modelli per la programmazioneI modelli per la programmazionegenetica sono:genetica sono:

• globale

• a isole

• cellulare o diffusivo

Modelli della programmazione geneticaModelli della programmazione genetica

A isoleA isole

La popolazione è suddivisa in sottopopolazioni, dette isole, che sonodistribuite, di solito, una per ogni macchina.

Utilizza, un meccanismo di selezione limitato agli individui posti su un’unicamacchina; i vari operatori genetici vengono eseguiti a livello locale.

Sporadicamente vengono scambiate informazioni fra le isole, per introdurrediversità e garantire una migliore convergenza.

Modelli della programmazione geneticaModelli della programmazione genetica

CellulareCellulareOgni individuo è sostituito, nella

successiva generazione, daun nuovo elemento generato

applicando l'operatore dicrossover o mutazione ad

elementi appartenential suo vicinato.

La selezione ristretta adun vicinato locale rende

l'implementazione parallelamolto efficiente, dal momento

che le comunicazioni sono limitate solo ai vicini.

Le proprietà della programmazioneLe proprietà della programmazionegenetica sono:genetica sono:

Parallelismo implicitoParallelismo implicito

Efficienza

Scalabilità

Robustezza

Affidabilità

Il Peer-to-Peer

È una architettura nella quale i computer connessi ad InternetÈ una architettura nella quale i computer connessi ad Internetpossono condividere capacità di calcolo, spazio su disco epossono condividere capacità di calcolo, spazio su disco eogni tipo di risorsa in genere, senza l'utilizzo di un serverogni tipo di risorsa in genere, senza l'utilizzo di un server

centrale. Esempi di centrale. Esempi di Peer-to-PeerPeer-to-Peer sono sono NapsterNapster e e GnutellaGnutella,,che sono applicazioni per il che sono applicazioni per il file-sharingfile-sharing (es. scambio mp3). (es. scambio mp3). I I peerpeer non sono altro che i normali personal non sono altro che i normali personal computerscomputers che che

utilizziamo per navigare in Internet, scrivere documenti,utilizziamo per navigare in Internet, scrivere documenti,inviare e ricevere e-mail, inviare e ricevere e-mail, etcetc..

Una rete Peer-to-Peer:�� È basata sull’interazione fra È basata sull’interazione fra peerpeer..

�� Non ha servizi o risorse operative centralizzate.Non ha servizi o risorse operative centralizzate.

�� Può cambiare radicalmente la suaPuò cambiare radicalmente la suacomposizione.composizione.

�� Ha una topologia non Ha una topologia non deterministicadeterministica..

�� Può avere un massiccio uso concorrente dellePuò avere un massiccio uso concorrente dellerisorse.risorse.

Il Il Peer-to-PeerPeer-to-Peer e la e laprogrammazione geneticaprogrammazione genetica

ParallelismoParallelismoAsincroniaAsincronia

RobustezzaRobustezzaScalabilitàScalabilità

Peer-to-PeerPeer-to-Peer

Programmazione Programmazione geneticagenetica

Riepilogando, le proprietà del Riepilogando, le proprietà del Peer-to-PeerPeer-to-Peer e della programmazione e della programmazionegenetica, hanno dei punti in comune: parallelismo, genetica, hanno dei punti in comune: parallelismo, asincroniaasincronia,,

robustezza e robustezza e scalabilitàscalabilità. Per cui la scelta del . Per cui la scelta del Peer-to-PeerPeer-to-Peer è quella più è quella piùadatta per l’implementazione distribuita di un adatta per l’implementazione distribuita di un tooltool per la per la

programmazione genetica.programmazione genetica.

EfficienzaEfficienza

DecentralitàDecentralità

Java per il supporto Peer-to-Peer:JXTA

SunSun Microsystem ha realizzato il protocollo Microsystem ha realizzato il protocolloJXTA, una piattaforma per lo sviluppo diJXTA, una piattaforma per lo sviluppo di

applicazioni applicazioni Peer-to-PeerPeer-to-Peer,e da la,e da lapossibilità al programmatore dipossibilità al programmatore di

creare e usare applicazioni e servizicreare e usare applicazioni e serviziinteroperabili.interoperabili.

��������������

L’architettura JXTA è composta dasei protocolli che lavorano insieme

per permettere:la scoperta,l’organizzazione, il monitoraggio e

la comunicazione tra peer.Un peer può implementare tutti ilivelli, o solo una parte di essi.

Gli elementi di JXTAPeer: È ogni dispositivo di rete(sensore,telefono, PDA, PC, server,supercomputer, etc.) che implementi uno opiù protocolli JXTA. Ogni peer operaindipendentemente dagli altri peer e inmaniera asincrona, ed è univocamenteidentificato da un PeerID.

PeerGroup: È una collezione di peer chesvolgono un insieme di servizi in comune,univocamente identificata da unPeerGroupId.

Peer virtual network

MembershipMembership ServiceService:: fornisce l’accesso al fornisce l’accesso al PeerPeer MembershipMembership ProtocolProtocol;;un un peerpeer che intende entrare in un che intende entrare in un peergrouppeergroup deve soddisfare le deve soddisfare lerichieste i questo servizio.richieste i questo servizio.

Rendezvous Rendezvous ServiceService:: si occupa della propagazione delle informazioni si occupa della propagazione delle informazioniall’interno di un all’interno di un peergrouppeergroup, determinando i percorsi possibili grazie, determinando i percorsi possibili graziealle funzionalità offerte dall’alle funzionalità offerte dall’EndpointEndpoint ServiceService..

I servizi di JXTA

EndpointEndpoint ServiceService:: fornisce un front-end per il controllo e la gestione fornisce un front-end per il controllo e la gestionedell’dell’EndpintEndpint ProtocolProtocol. L’. L’endpointendpoint rappresenta l’indirizzo di un rappresenta l’indirizzo di un peerpeer..

Un Un peerpeer quale può avere più quale può avere più endpointendpoint e comunicare per mezzo di e comunicare per mezzo didifferenti protocolli di trasporto.differenti protocolli di trasporto.

ResolverResolver ServiceService:: implementa il protocollo implementa il protocollo PeerPeer ResolverResolver, che si, che sioccupa della distribuzione di messaggi di occupa della distribuzione di messaggi di queryquery e sta in ascolto delle e sta in ascolto delleeventuali risposte.eventuali risposte.

DiscoveryDiscovery ServiceService:: fornisce l’accesso al fornisce l’accesso al PeerPeer DiscoveryDiscovery ProtocolProtocol e econsente quindi la ricerca di consente quindi la ricerca di peergrouppeergroup e di ogni risorsa del e di ogni risorsa delpeergrouppeergroup..

Pipe Pipe ServiceService:: implementa il Pipe implementa il Pipe BindingBinding ProtocolProtocol, ed è usato per, ed è usato perstabilire canali di comunicazione (pipe) fra i membri di un gruppo, estabilire canali di comunicazione (pipe) fra i membri di un gruppo, eil loro successivo controllo.il loro successivo controllo.

PeerPeer InfoInfo ServiceService:: fornisce delle capacità di monitoraggio dei fornisce delle capacità di monitoraggio dei peerpeer,,può essere usato per ottenere informazioni sulle loro attività.può essere usato per ottenere informazioni sulle loro attività.

Advertisement

Ogni informazione che viaggia lungo la reteOgni informazione che viaggia lungo la reteJXTA è rappresentato da un documentoJXTA è rappresentato da un documento

XML, detto XML, detto advertisementadvertisement..

���������������������������� ����� ����� ����� � ������������������������� ���� ��� ���� ��� ���� ��� ���� �� ������������������������������������������������������������ �!�����"���� " �!�����"���� " �!�����"���� " �!�����"���� "�����#$���� ��������$�!�!��%�#$���� ��������$�!�!��%�#$���� ��������$�!�!��%�#$���� ��������$�!�!��%#$��#$��#$��#$����������&�&�&�&��� �!���� �!���� �!���� �!��&�&�&�&���%��%��%��%&�&�&�&����������'!��'!��'!��'!�����!�����!�!���%����!�����!�!���%����!�����!�!���%����!�����!�!���%�'!��'!��'!��'!������%������%������%������%����� �!�����"���� " �!�����"���� " �!�����"���� " �!�����"���� "����

CAGE

Alla base del nostro Alla base del nostro tooltool, c’é, c’éCAGE (CellulAr GEnetic programmingCAGE (CellulAr GEnetic programming

tooltool) che è un’applicazione parallela per lo) che è un’applicazione parallela per losviluppo della programmazione geneticasviluppo della programmazione genetica

basata sul modello cellulare.basata sul modello cellulare.

“CAGE Peer-to-Peer”

È un’applicazione distribuita su una retePeer-to-Peer, per cui ogni computer è

completamente indipendente edequivalente. Nessuno di essi possiede

informazioni o funzioni speciali, inaltre parole non esistono server.

Implementazione di ogni nodoImplementazione di ogni nodoInterfaccia Interfaccia graficagrafica

PeerPeer

Programmazione Programmazione genetica (C)genetica (C)

JXTA

Servizi dicomunicazione

(Java)

Tutti i peer del gruppo sonoidentici, su ognuno di essi èistallata la piattaforma JXTA,sullaquale abbiamo implementato: iservizi per l’ingresso in un gruppo,la comunicazione fra peer e laconfigurazione della topologia.Questo livello permette l’utilizzo diun processo di programmazionegenetica scritta in C, attraverso laJNI. Il tutto è accessibile tramiteun’interfaccia grafica, che nefacilita l’utilizzo.

JNI

Gruppo diprogrammazione

genetica

Avvio dei peer e join al gruppo

Quando ogni peer viene avviato, mettea disposizione le proprie risorse di

calcolo, per l’esecuzione di unalgoritmo di programmazione

genetica, entrando a far parte delgruppo omonimo.

Nel momento in cui un utente vorràrisolvere un problema,

sceglierà il numero di peer necessariper l’elaborazione, e non tutti quelli

che sono a disposizione.

PeerAdv1DiscoveryRequest

DiscoveryRequest

DiscoveryRequest

DiscoveryRequest

DiscoveryRequest

???

DiscoveryQuery

DiscoveryQuery

DiscoveryQueryDiscovery

Query

PeerAdv1

PeerAdv1

PeerAdv1

PeerAdv1

Lista PeerLista PeerLista PeerLista Peer

Peer4

Peer1

Peer2

Peer3

Peer1Peer2

Peer5

Peer3

Peer1Peer2

Peer4Peer5

Peer1

Peer5Peer4Peer3

Peer5

Peer2

Peer4Peer3

Peer3

Peer2

Peer1

Peer 5

Peer4

Scoperta dei PeerNel momento in cui siavvia un’elaborazione,

ogni peer scopre le risorsepresenti nel gruppo di

programmazione genetica,inviando una discoveryquery. La richiesta sarà

soddisfatta dairendezvous-peer presenti

nel gruppo.Una volta portata a

termine la scoperta, ognipeer possiede una listaordinata e completa deipeer che parteciperanno

all’elaborazione.

Peer5

Peer1Peer2

Peer4Peer3

DiscoveryQueryLista Peer

PeerID2.in

PeerID2

PeerID3

PeerID4

PeerID5

PeerID6

PeerID2.out

PeerID1.inPeerID1.out

PeerID6.inPeerID6.out

PeerID5.inPeerID5.out

PeerID4.inPeerID4.out

PeerID3.inPeerID3.outPeerID1.in

PeerID1.out

PeerID2.inPeerID2.out

PeerID3.inPeerID3.out

PeerID4.inPeerID4.out

PeerID5.inPeerID5.out

PeerID6.inPeerID6.out

FormazioneFormazioneanelloanello

A questo puntovengono individuati i

vicini tramite il peerID.In particolare, vengono

scelti quello con ilpeerID

immediatamenteprecedente e quello

immediatamentesuccessivo al proprio.Dopodiché vengono

pubblicati localmente eal peer destro, i pipeadvertisement peraprire i canali dicomunicazione.

Abbiamo visto la programmazione genetica, ilPeer-to-Peer e abbiamo introdotto il nostro tool,

trattando la configurazione dell’anello e l’aperturadei canali di comunicazione.

Fra poco, si continuerà lapresentazione, spiegando cosa succede, nel caso

di crash di un nodo,di nuovi ingressi durantel’elaborazione e come viene visualizzato il

risultato, infine descriverà l’interfaccia graficadi “CAGE Peer-to-Peer”.

Conclusioni