TESI DI DIPLOMA - staff.icar.cnr.itstaff.icar.cnr.it/folino/tesi/Pres_castelfranco.pdf · Corso di...
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.
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