Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Implementação Distribuída do Algoritmo de Dijks...

Filipe Saraiva
November 26, 2011
240

Implementação Distribuída do Algoritmo de Dijkstra através de Sistemas Multiagentes

Artigo apresentado no X SBAI (Simpósio Brasileiro de Automação Inteligente), 2011

Filipe Saraiva

November 26, 2011
Tweet

More Decks by Filipe Saraiva

Transcript

  1. X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a

    21 de setembro de 2011 São João del-Rei - MG - Brasil ISSN: 2175-8905 - Vol. X 51 IMPLEMENTA¸ C˜ AO DISTRIBU´ IDA DO ALGORITMO DE DIJKSTRA ATRAV´ ES DE SISTEMAS MULTIAGENTES Filipe de Oliveira Saraiva, Aldir Silva Sousa, Eduardo Nobuhiro Asada Laborat´ orio de An´ alise de Sistemas de Energia El´ etrica Escola de Engenharia de S˜ ao Carlos Universidade de S˜ ao Paulo S˜ ao Carlos, S˜ ao Paulo, Brasil Emails: [email protected], [email protected], [email protected] Abstract— The Dijkstra algorithm is a classical algorithm which, for a given graph, calculates the shortest path between one vertex and all others vertexes of the graph. This algorithm has important application to areas such as path determination problems, production chain studies and electrical transmission grids restoration. Since the development of distributed computing, it has opened new possibilities concerning to the development of systems to calculate and monitor the status of a model in a descentralized way. We propose the application of multi-agent systems in order to take advantage of theses features and, in a collaborative manner, to perform the Dijkstra algorithm through distributed computation and ?nding the solution of the proposed problem. Keywords— Dijkstra Algorithm, Distributed Artificial Intelligence, Multi-agent Systems Resumo— O algoritmo de Dijkstra ´ e um cl´ assico algoritmo computacional onde, dado um grafo, calcula-se o caminho m´ ınimo entre um v´ ertice espec´ ıfico e todos os demais v´ ertices que formam o grafo. Este algoritmo tem importantes aplica¸ c˜ oes em ´ areas t˜ ao distintas quanto problemas de determina¸ c˜ ao de caminhos, estudos de uma cadeia de produ¸ c˜ ao ou a restaura¸ c˜ ao de sistemas el´ etricos de transmiss˜ ao. Com o desenvolvimento da computa¸ c˜ ao distribu´ ıda, novas possibilidades se abrem para o desenvolvimento de sistemas que permitam o c´ alculo e o acompanhamento do estado do modelo de forma descentralizada. Na busca de assumir estas caracter´ ısticas e usufruir de suas vantagens, propomos o uso de sistemas multiagentes para que estes, de forma colaborativa, executem o c´ alculo distribu´ ıdo do algoritmo de Dijkstra e encontrem a solu¸ c˜ ao para o problema proposto. Palavras-chave— Algoritmo de Dijkstra, Inteligˆ encia Artificial Distribu´ ıda, Sistemas Multiagentes 1 Introdu¸ c˜ ao Muitos problemas enfrentados no planejamento e opera¸ c˜ ao de empresas e organiza¸ c˜ oes podem ser modelados na forma de um grafo para que, em seguida, a obten¸ c˜ ao da solu¸ c˜ ao seja dada atra- v´ es da resolu¸ c˜ ao de um problema de caminho m´ ınimo. Alguns exemplos podem ser encontra- dos em (Arkin and Silverberg, 1987), (Sghaier et al., 2010) e (Hu et al., 2009). Existem alguns problemas desse tipo cuja re- solu¸ c˜ ao pode se beneficiar dos avan¸ cos atuais da computa¸ c˜ ao distribu´ ıda, onde tanto o processa- mento quanto a pr´ opria obten¸ c˜ ao dos dados para o c´ alculo se d´ a em um ambiente de computa¸ c˜ ao des- centralizada, disperso geograficamente. Os atuais ambientes de computa¸ c˜ ao modernos s˜ ao distribu´ ı- dos e de grande porte. Estes ambientes necessitam de algoritmos adaptados a suas caracter´ ısticas. Somente assim ser´ a poss´ ıvel usufruir as vantagens dos ambientes distribu´ ıdos, estudar e averiguar suas possibilida- des, e contribuir com o amadurecimento em pes- quisas desse campo. O sistema el´ etrico de distribui¸ c˜ ao ´ e um am- biente que tem as caracter´ ısticas citadas ante- riormente. O atual desenvolvimento para uma nova gera¸ c˜ ao destes sistemas (os smart grids) aponta para a necessidade de algoritmos que pos- sibilitem a obten¸ c˜ ao de dados e o c´ alculo distri- bu´ ıdo (Brown, 2008), criando assim um sistema mais robusto, tolerante a falhas, possibilidade de concorrˆ encia no processamento, entre outras ca- racter´ ısticas dos sistemas distribu´ ıdos (Coulouris et al., 2005). Propomos neste artigo uma adapta¸ c˜ ao do al- goritmo de Dijkstra, distribuindo-o para execu¸ c˜ ao no modelo de grafo, atrav´ es do uso de sistemas multiagentes. Espera-se nesse primeiro momento que a proposta consiga solucionar os problemas para topologias est´ aticas com a mesma qualidade que o algoritmo de Dijkstra convencional consegue atingir. Este trabalho se constitui das seguintes par- tes: a Se¸ c˜ ao 2 descreve o algoritmo de Dijkstra, suas caracter´ ısticas e seus principais passos. A Se¸ c˜ ao 3 descreve o que s˜ ao sistemas multiagen- tes e sua caracter´ ıstica distribu´ ıda. A Se¸ c˜ ao 4 apresenta a proposta de algoritmo distribu´ ıdo de Dijkstra. Por fim, a Se¸ c˜ ao 5 comenta sobre a im- plementa¸ c˜ ao computacional e os testes executados e, em seguida, a Se¸ c˜ ao 6 conclui o artigo com al- gumas observa¸ c˜ oes e perspectivas para trabalhos futuros no tema. 2 Algoritmo de Dijkstra O algoritmo de Dijkstra ´ e um cl´ assico algoritmo computacional para o c´ alculo da distˆ ancia m´ ınima entre um v´ ertice e todos os demais v´ ertices de um
  2. X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a

    21 de setembro de 2011 São João del-Rei - MG - Brasil ISSN: 2175-8905 - Vol. X 52 grafo. Foi desenvolvido pelo premiado1 matem´ a- tico holandˆ es Edsger Dijkstra (1930 - 2002) e pu- blicado na edi¸ c˜ ao n´ umero 1 do peri´ odico Numeri- cal Mathematics, em 1959 (Dijkstra, 1959). O Algoritmo 1 apresenta na forma de pseudo- c´ odigo o algoritmo de Dijkstra. Algoritmo 1: Algoritmo de Dijkstra Entrada: G, vi 1: Q = Inicializar-Custos-Relativos(G) 2: A = Inicializar-no-Anterior() 3: S = ∅ 4: R = ∅ 5: D = ∅ 6: temp = 0 7: noAvaliado = vi 8: enquanto S = V fa¸ ca 9: Q = Calc-Custo-Relativo(G, noAvaliado) 10: S = S noAvaliado 11: temp = noAvaliado 12: noAvaliado = Minimo((V − S), Q) 13: AnoAvaliado = temp 14: fim enquanto 15: para todo v ∈ V fa¸ ca 16: D = D (v, Av ) 17: fim para 18: R = (V, D) 19: retorne R Define-se um grafo G = {V, E}, onde V ´ e o conjunto dos v´ ertices e E o conjunto das ares- tas; w ser´ a a fun¸ c˜ ao custo de cada aresta, onde ∀w(u, v) >= 0, tal que a aresta (u, v) ∈ E, ∀u, v ∈ V . Tem-se tamb´ em um v´ ertice vi que ser´ a o v´ ertice-fonte ao qual se quer calcular a dis- tˆ ancia m´ ınima entre ele e todos os demais v´ ertices do grafo (os v´ ertices-alvo). Durante a execu¸ c˜ ao do algoritmo de Dijkstra, cada v´ ertice ter´ a uma vari´ avel chamada custo re- lativo (que simbolizaremos como Q) que ser´ a a distˆ ancia total, naquela itera¸ c˜ ao, entre este v´ ertice e o v´ ertice-fonte. Estes custos come¸ car˜ ao com um valor t˜ ao grande quanto poss´ ıvel2, exceto o custo relativo do v´ ertice-fonte que ser´ a 0. Tamb´ em ha- ver´ a para cada v´ ertice uma vari´ avel chamada v´ er- tice anterior (que chamaremos de A), a qual guar- dar´ a a referˆ encia para o v´ ertice em que est´ a ligada naquela itera¸ c˜ ao. O algoritmo manter´ a tamb´ em um conjunto de v´ ertices S que indicar´ a os v´ ertices que j´ a ti- veram suas vizinhan¸ cas analisadas pelo m´ etodo. Durante a execu¸ c˜ ao, o algoritmo selecionar´ a o v´ er- tice u ∈ V −S com o menor custo relativo naquela itera¸ c˜ ao para ter a sua vizinhan¸ ca analisada, at´ e que o crit´ erio S = V seja atingido, indicando que 1Dijkstra foi laureado em 1972 com o Prˆ emio Turing, considerado o “prˆ emio Nobel da computa¸ c˜ ao” 2Utilizaremos neste texto um “valor infinito” para este prop´ osito. todos os v´ ertices foram avaliados e o valor da dis- tˆ ancia m´ ınima entre o v´ ertice-fonte e cada v´ ertice- alvo do grafo foi obtido (Cormen et al., 2009). De forma descritiva, podemos visualizar o fun- cionamento do algoritmo de Dijkstra a partir da seguinte sequencia de opera¸ c˜ oes. Passando como argumento o grafo G e o v´ ertice-fonte vi per- tencente ao grafo, inicializam-se vari´ aveis cha- madas custos relativos (Q) para cada v´ ertice do grafo com o valor ∞, excetuando-se o custo re- lativo do v´ ertice vi que ser´ a igual a 0. No al- goritmo, este passo corresponde ` a chamada de fun¸ c˜ ao Inicializar-Custos-Relativos, na linha 1. Inicializam-se tamb´ em as vari´ aveis A durante a chamada da fun¸ c˜ ao Inicializar-no-Anterior, linha 2, sendo Avi = 0 e para os demais casos um va- lor que represente a falta de um antecessor. Na Figura 1 (a), o v´ ertice v1 ter´ a sua vizinhan¸ ca ava- liada. Em todas as figuras aqui apresentadas, os v´ ertices que estiverem circulados representa- r˜ ao aqueles que ser˜ ao avaliados nesta itera¸ c˜ ao. As arestas pontilhadas representam as liga¸ c˜ oes entre os v´ ertices, j´ a as cont´ ınuas significam aquelas que formam a solu¸ c˜ ao (ou fragmento de solu¸ c˜ ao) para aquela itera¸ c˜ ao. Figura 1: Itera¸ c˜ oes do algoritmo de Dijkstra. O v´ ertice marcado com um c´ ırculo ser´ a aquele que ter´ a a vizinhan¸ ca avaliada naquela itera¸ c˜ ao; os marcados com um retˆ angulo s˜ ao aqueles que j´ a tiveram sua vizinhan¸ ca avaliada. O algoritmo ent˜ ao far´ a uma busca na vizi- nhan¸ ca de vi , atualizando o custo relativo de todos os v´ ertices diretamente conectados ao v´ ertice vi com o respectivo valor da aresta que cria a liga¸ c˜ ao entre estes dois v´ ertices somado ao valor do custo relativo do v´ ertice vi . Este passo ´ e simbolizado pela chamada de fun¸ c˜ ao Calc-Custo-Relativo. Na Figura 1 (b), a verifica¸ c˜ ao da vizinhan¸ ca de v1 atualizou os custos relativos de v2, v3 e v5.
  3. X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a

    21 de setembro de 2011 São João del-Rei - MG - Brasil ISSN: 2175-8905 - Vol. X 53 Agora, marca-se o v´ ertice vi como um v´ ertice que j´ a teve sua vizinhan¸ ca avaliada e executa-se outra itera¸ c˜ ao de avalia¸ c˜ ao de vizinhan¸ ca, desta vez no v´ ertice com menor custo relativo atual. Marcaremos os v´ ertices que j´ a tiveram suas vi- zinhan¸ cas avaliadas com o uso de um retˆ angulo. Caso durante a itera¸ c˜ ao algum v´ ertice vizinho ao v´ ertice avaliado tenha seu custo relativo atual maior que a soma da aresta que o conecta mais o custo relativo do v´ ertice avaliado, o custo relativo deste v´ ertice vizinho ser´ a ent˜ ao atualizado para o valor dessa soma. Isso acontece, por exemplo, com o n´ o v3 onde, na Figura 1 (b) o valor de seu custo relativo ´ e 10 e na Figura 1 (c) ´ e 8. Tamb´ em ocorre o mesmo com o v´ ertice v4 quando o valor do seu custo relativo muda de 14 para 13 nas Figuras 1 (c) e 1 (d) e finalmente assume o valor 9 a partir da Figura 1 (e). O algoritmo de Dijkstra executa estas itera- ¸ c˜ oes at´ e que todos os v´ ertices v ∈ V do grafo te- nham sido selecionados para terem suas vizinhan- ¸ cas avaliadas. Neste momento, temos o caminho m´ ınimo entre o v´ ertice-fonte e todos os demais v´ ertices do grafo. No exemplo, a Figura 1 (e) ´ e o momento em que o n´ o v5 ´ e selecionado para avali- a¸ c˜ ao. No momento seguinte, a Figura 1 (f), repre- senta a solu¸ c˜ ao para o problema nesta instˆ ancia j´ a com a vizinhan¸ ca do v´ ertice v5 avaliada. A instru¸ c˜ ao que come¸ ca na linha 15 do Algo- ritmo 1 indica que, neste momento, ser˜ ao coloca- dos no conjunto D as arestas que ligam um v´ ertice v ` a seu antecessor Av , ∀v ∈ V . Em seguida, na linha 18 ´ e constru´ ıdo o grafo R que ser´ a a resposta para o problema, a partir do conjunto de v´ ertices V e de arestas D. O algoritmo de Dijkstra utiliza uma aborda- gem gulosa (Coulouris et al., 2005) onde ele sem- pre avalia a vizinhan¸ ca do v´ ertice com o menor custo relativo para aquela itera¸ c˜ ao. Entretanto, ao contr´ ario de outros algoritmos que utilizam t´ ec- nicas gulosas, o algoritmo de Dijkstra sempre en- contra a solu¸ c˜ ao ´ otima para o problema (Cormen et al., 2009). O algoritmo de Dijkstra tem ampla aplica¸ c˜ ao a problemas encontrados no cotidiano de empre- sas e organiza¸ c˜ oes em geral. Problemas de com- plexidade polinomial (Cormen et al., 2009) que podem ser modelados a partir de grafos e para os quais a solu¸ c˜ ao seja dada pelo percurso m´ ınimo entre os v´ ertices, permite a utiliza¸ c˜ ao do algoritmo de Dijkstra para determinar a resposta. Podemos citar, como exemplos, o algoritmo Open shortest path first - OPSPF, que faz o roteamento de pa- cotes em redes de internet utilizando m´ etodos ba- seados no algoritmo de Dijkstra (Fortz and Tho- rup, 2000); a modelagem da cadeia de produ¸ c˜ ao de uma empresa (Arkin and Silverberg, 1987); en- contrar o caminho m´ ınimo de repara¸ c˜ ao de um sistema el´ etrico de distribui¸ c˜ ao (Hu et al., 2009); otimizar um sistema de “caronas“ em tempo real (Sghaier et al., 2010), entre outros. A disciplina de algoritmos ensina que, ` a me- dida que aumenta-se em magnitude o tamanho da instˆ ancia do problema que se est´ a trabalhando, aumenta-se tamb´ em o custo computacional para resolvˆ e-lo (Coulouris et al., 2005). Apesar do custo computacional ainda ser um problema a ser ponderado no projeto de siste- mas e algoritmos, um conjunto de caracter´ ısti- cas dos atuais sistemas computacionais tamb´ em est´ a ganhando importˆ ancia na avalia¸ c˜ ao durante a fase de projeto destes sistemas. Os atuais am- bientes de computa¸ c˜ ao e informa¸ c˜ ao s˜ ao distribu´ ı- dos, de grande magnitude, abertos e heterogˆ eneos (Weiss, 2000). Nestes ambientes, os computado- res n˜ ao s˜ ao mais sistemas isolados que computam as informa¸ c˜ oes e imprimem respostas. Eles es- t˜ ao cada vez mais interligados com outros com- putadores ou equipamentos, e tanto o processa- mento de tarefas quanto a pr´ opria obten¸ c˜ ao de dados acontece de maneira distribu´ ıda (Coulouris et al., 2005). Neste contexto, sistemas distribu´ ıdos acres- centam interessantes possibilidades, como a pr´ o- pria distribui¸ c˜ ao do processamento ou o melhor acompanhamento do estado de determinado sis- tema. Entretanto, h´ a muitos desafios tamb´ em. Por exemplo, modelar como ser´ a a itera¸ c˜ ao entre os componentes do sistema, que protocolo de co- munica¸ c˜ ao ser´ a usado, como garantir se o sistema ´ e robusto e tolerante ` a falhas, entre outras. A partir deste cen´ ario, utilizaremos o conceito de sistema multiagente para distribuir a execu¸ c˜ ao do algoritmo de Dijkstra e utilizar as vantagens e possibilidades dos sistemas distribu´ ıdos. 3 Sistemas Multiagentes Sistemas multiagentes s˜ ao um ramo de estudos re- lacionados com a inteligˆ encia artificial distribu´ ıda que, diferentemente da inteligˆ encia artificial “cl´ as- sica”, alicer¸ ca suas pesquisas na possibilidade de aprendizado e resolu¸ c˜ ao de problemas a partir de um fenˆ omeno social (Wooldridge, 2009). Ou seja, o “aprendizado” em um sistema multiagente se d´ a com maior ˆ enfase nas rela¸ c˜ oes sociais entre os agentes que comp˜ oem o sistema. Agentes s˜ ao entidades computacionais autˆ o- nomas, que percebem o ambiente em que est˜ ao inseridos e agem sobre este mesmo ambiente ten- tando atingir seus objetivos (Wooldridge, 2009). Sistemas multiagentes podem ser modelados de forma que um dado grupo de agentes partilhe um objetivo comum. Isso far´ a com que os agentes co- operem a fim de atingir este objetivo. Entre outras caracter´ ısticas, agentes de um sistemas multiagentes s˜ ao restritos em suas capa- cidades individuais, tanto em n´ ıvel de percep¸ c˜ ao quanto atua¸ c˜ ao sobre o ambiente, por conta de sua caracter´ ıstica distribu´ ıda. O controle em sistemas
  4. X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a

    21 de setembro de 2011 São João del-Rei - MG - Brasil ISSN: 2175-8905 - Vol. X 54 multiagentes ´ e distribu´ ıdo, os dados s˜ ao descen- tralizados e a computa¸ c˜ ao das informa¸ c˜ oes ´ e as- s´ ıncrona (Weiss, 2000). Os principais desafios do desenvolvimento de sistemas multiagentes reside na dificuldade em se modelar de que maneira a dinˆ amica da sociedade de agentes resultar´ a no cumprimento do objetivo proposto. Para isso, ´ e necess´ ario a determina- ¸ c˜ ao de quais tipos de a¸ c˜ oes e quais agentes ir˜ ao fazˆ e-las, como ser´ a realizada a comunica¸ c˜ ao en- tre os agentes, quais protocolos ser˜ ao utilizados, entre outras. Tamb´ em ´ e necess´ ario projetar um algoritmo para o processamento distribu´ ıdo, onde agentes poder˜ ao processar tarefas de forma para- lela e depois, reuni-las numa solu¸ c˜ ao ´ unica para o problema. Outro desafio ´ e quanto ` a obten¸ c˜ ao e comunica¸ c˜ ao de dados de forma distribu´ ıda. Pode ocorrer de apenas alguns agentes conseguirem ad- quirir certo tipo de informa¸ c˜ ao do sistema. Pen- sar a maneira de partilhar esta informa¸ c˜ ao para os agentes que ir˜ ao manipul´ a-las ´ e uma tarefa a ser realizada na fase de projeto do sistema. Devido ` a flexibilidade da tecnologia de siste- mas multiagentes e a possibilidade de uso combi- nado dos conceitos de sistemas distribu´ ıdos e inte- ligˆ encia artificial distribu´ ıda, aplica¸ c˜ oes que utili- zam esta abordagem vem ganhando espa¸ co nos ´ ul- timos anos tanto na academia quanto na ind´ ustria. Citam-se como exemplos o sistema OASIS que controla o tr´ afego a´ ereo no aeroporto de Sydney, al´ em de outras referˆ encias na ´ area de mercados, sistemas tutores de ensino e mais (Wooldridge, 2009). Outros exemplos de aplica¸ c˜ oes de siste- mas multiagentes em ´ areas diversas podem ser encontrados em (Weiss, 2000). Em (McArthur et al., 2007a) e (McArthur et al., 2007b) encontra- se uma revis˜ ao sobre o uso desta tecnologia em sistemas el´ etricos de potˆ encia. 4 Algoritmo de Dijkstra Distribu´ ıdo Atrav´ es de Sistemas Multiagentes A implementa¸ c˜ ao distribu´ ıda do algoritmo de Dijkstra ´ e realizada a partir do conceito e tecnolo- gia de sistemas multiagentes. A partir da topolo- gia do grafo, aloca-se um agente em cada v´ ertice do mesmo. Como o algoritmo de Dijkstra neces- sita de um v´ ertice-fonte, utilizou-se um modelo or- ganizacional hier´ arquico dos agentes (Horling and Lesser, 2004) onde podemos classific´ a-los em dois tipos: o agente ativo que demanda processamento para os demais agentes ´ e o que est´ a alocado no v´ ertice-fonte; os demais agentes s˜ ao reativos, re- cebendo demandas de processamento do agente no v´ ertice-fonte e respondendo aquilo que ´ e pedido. Cada agente tem uma representa¸ c˜ ao completa do grafo em sua mem´ oria, que pode ser atualizada pelo envio de mensagens do agente no v´ ertice- fonte caso aconte¸ ca a inser¸ c˜ ao de um novo v´ ertice ou novas arestas no grafo. Esta funcionalidade provˆ e ao sistema a possibilidade de tratar cen´ a- rios dinˆ amicos. Assim que se iniciam os agentes, o agente no v´ ertice-fonte envia uma mensagem para todos os demais agentes requerendo que estes calculem o menor caminho entre o v´ ertice-fonte e o v´ ertice onde se encontra o agente que recebeu a mensa- gem. Este passo corresponde ` a chamada da fun- ¸ c˜ ao Enviar-Grafo-Para-Agentes, no Algoritmo 2, onde M representa o conjunto de todos os agentes alocados nos v´ ertices-alvo do grafo. Algoritmo 2: A¸ c˜ oes do Agente Ativo Entrada: G, M 1: Enviar-Grafo-Para-Agentes(G, M) 2: N = ∅ 3: R = ∅ 4: enquanto N = M fa¸ ca 5: R = R Resposta-Mensagem-Grafo() 6: N = N Resposta-Mensagem-Emissor() 7: fim enquanto 8: retorne R Em seguida, o agente receptor da mensagem executa o algoritmo de Dijkstra, iniciando a an´ a- lise de vizinhan¸ ca a partir do v´ ertice-fonte. Os passos desta implementa¸ c˜ ao est˜ ao explicitados no Algoritmo 3. Algoritmo 3: Algoritmo de Dijkstra no Agente Reativo Entrada: G, vi , vj 1: Q = Inicializar-Custos-Relativos(G) 2: A = Inicializar-no-Anterior() 3: S = ∅ 4: R = ∅ 5: D = ∅ 6: W = vi , vj 7: temp = 0 8: noAvaliado = vi 9: enquanto noAvaliado = vj fa¸ ca 10: Q = Calc-Custo-Relativo(G, noAvaliado) 11: S = S noAvaliado 12: temp = noAvaliado 13: noAvaliado = Minimo((V − S), Q) 14: AnoAvaliado = temp 15: fim enquanto 16: temp = vj 17: enquanto temp = vi fa¸ ca 18: W = W Atemp 19: D = D (temp, Atemp ) 20: temp = Atemp 21: fim enquanto 22: R = (W, D) 23: retorne R O crit´ erio de parada do m´ etodo, neste caso, diferentemente do Algoritmo 1, ocorre quando o v´ ertice a ser avaliado ´ e o v´ ertice onde se encontra
  5. X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a

    21 de setembro de 2011 São João del-Rei - MG - Brasil ISSN: 2175-8905 - Vol. X 55 o agente. Neste momento, pode ocorrer da ´ arvore com o caminho entre os dois v´ ertices conter v´ erti- ces desnecess´ arios, que serviriam para ligar outros v´ ertices ao v´ ertice-fonte. Para tratar isto, cada v´ ertice do grafo ter´ a uma vari´ avel pr´ opria que referenciar´ a o v´ ertice com o qual se est´ a ligada naquela itera¸ c˜ ao, o A. Assim, ao atingir o crit´ erio de parada, basta-se percorrer os valores de A nos v´ ertices a partir do v´ ertice-alvo. O caminho ser´ a ent˜ ao obtido, sem v´ ertices desnecess´ arios. Este passo corresponde ` a instru¸ c˜ ao que come¸ ca a partir da linha 17 do Al- goritmo 3. Nela, o conjunto W que representa os v´ ertices do menor caminho entre os n´ os vi (v´ ertice- fonte) e vj (v´ ertice-alvo onde se encontra o agente) come¸ ca a adicionar os v´ ertices anteriores Av a par- tir do v´ ertice vj . Tamb´ em, o conjunto D adiciona as arestas que conectam (v, Av ). Ao atingir o crit´ erio de parada da linha 17 do Algoritmo 3, o grafo R formado por (W, D) na linha 22 ter´ a o caminho m´ ınimo entre o v´ ertice- fonte vi e o v´ ertice-alvo vj . A Figura 2 (a) apre- senta o resultado da aplica¸ c˜ ao do algoritmo de Dijkstra onde vi = v1 e vj = v3. Na Figura 2 (b), temos o caminho m´ ınimo entre v1 e v3 ap´ os ser retirado os v´ ertices desnecess´ arios para a res- posta, no caso, v4 e v5. Figura 2: (a) Resultado da aplica¸ c˜ ao do algoritmo de Dijkstra para vi = v1 e vj = v3. (b) Caminho m´ ınimo entre v1 e v3. Com a resposta R obtida, o agente no v´ ertice- alvo a envia para o agente no v´ ertice-fonte, que est´ a esperando as respostas chegarem. Este agente, ent˜ ao, vai sobrepondo cada resposta envi- ada por cada agente, at´ e que a resposta completa para o grafo como um todo seja obtida. Esta ope- ra¸ c˜ ao se d´ a na linha 5 do Algoritmo 2, onde o resultado da fun¸ c˜ ao Resposta-Mensagem-Grafo ´ e o caminho m´ ınimo entre vi e algum vj . Na linha seguinte, o agente marca os demais agentes que j´ a responderam ` a requisi¸ c˜ ao. Ap´ os todos enviarem suas contribui¸ c˜ oes, o agente no v´ ertice-fonte termina a execu¸ c˜ ao do al- goritmo e o R resultante representa a solu¸ c˜ ao do problema completo. 5 Implementa¸ c˜ ao e Testes Computacionais Existem v´ arios frameworks e linguagens de pro- grama¸ c˜ ao espec´ ıficas para o desenvolvimento de sistemas multiagentes, cobrindo inclusive diversos paradigmas de programa¸ c˜ ao como a programa¸ c˜ ao l´ ogica, orientada a objetos, estruturada e funcio- nal (Bordini et al., 2006). Neste trabalho optamos pelo uso do fra- mework JADE (Java Agent DEvelopment), um conjunto de bibliotecas para a linguagem Java que encapsula diversas funcionalidades e API’s para acesso a redes, troca de mensagens, simu- la¸ c˜ ao comportamental, entre outras (Bellifemine et al., 2007). Ela possibilita o desenvolvimento completo de um ambiente multiagente a partir da linguagem Java, e tem ampla aceita¸ c˜ ao na comu- nidade de pesquisadores em sistemas el´ etricos de potˆ encia (McArthur et al., 2007b). Para a simula¸ c˜ ao computacional fora utilizado um conjunto de grafos que variam de 6 v´ ertices e 10 arestas at´ e 48 v´ ertices e 77 arestas. Estes exemplos foram retirados do website do professor Ph.D. Kenji Ikeda da Universidade de Tokushima, Jap˜ ao3. Na Tabela 1, a coluna V indica o n´ umero de v´ ertices da instˆ ancia; E o n´ umero de arestas, S. ´ Otima a solu¸ c˜ ao ´ otima da instˆ ancia e S. Encon- trada a solu¸ c˜ ao encontrada pelo algoritmo distri- bu´ ıdo de Dijkstra. Grafos de Teste Instˆ ancia V E S. ´ Otima S. Encontrada 1 6 10 43 43 2 6 12 25 25 3 8 12 20 20 4 9 15 701 701 5 10 19 253 253 6 12 23 34 34 7 14 22 703 703 8 16 33 23 23 9 16 33 29 29 10 48 77 858 858 Tabela 1: Instˆ ancias de teste. Percebe-se que, para todas as instˆ ancias, o re- sultado encontrado pelo algoritmo distribu´ ıdo de Dijkstra atingiu o valor da solu¸ c˜ ao ´ otima. Apesar dos resultados positivos, ´ e importante ressaltar que a principal contribui¸ c˜ ao desta abor- dagem reside no fato da adi¸ c˜ ao da caracter´ ıstica de processamento distribu´ ıdo ao sistema. Isso permi- tiria que o sistema modelado pudesse lidar com to- pologias dinˆ amicas, distribu´ ısse o processamento e possibilitasse um controle distribu´ ıdo sobre o mesmo. 6 Conclus˜ oes e Trabalhos Futuros Os ambientes computacionais modernos s˜ ao distri- bu´ ıdos, onde diferentes m´ aquinas conseguem tro- 3Dispon´ ıvel em http://www-b2.is.tokushima-u.ac. jp/~ikeda/suuri/dijkstra/Dijkstra.shtml, acessado dia 4 de mar¸ co de 2011
  6. X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a

    21 de setembro de 2011 São João del-Rei - MG - Brasil ISSN: 2175-8905 - Vol. X 56 car informa¸ c˜ oes e compartilhar processamento e dados. Neste tipo de ambiente, algoritmos adap- tados com estas caracter´ ısticas s˜ ao necess´ arios para utilizar as vantagens deste modelo. Nessa concep¸ c˜ ao, sistemas multiagentes en- quanto ferramentas da inteligˆ encia artificial distri- bu´ ıda, tem grande importˆ ancia para a implemen- ta¸ c˜ ao de sociedades que se comportem de forma distribu´ ıda e que aprendam socialmente o compor- tamento desejado para um dado problema. Este aprendizado reflete-se na otimiza¸ c˜ ao de um dado objetivo a um problema para o qual o sis- tema multiagente foi modelado, possibilidade de controle distribu´ ıdo, aferi¸ c˜ ao do estado do sistema entre outras funcionalidades. Neste trabalhado implementou-se uma vers˜ ao distribu´ ıda do algoritmo de Dijkstra, onde simu- lamos a aloca¸ c˜ ao de processadores em todos os n´ os do grafo (utilizando agentes), distribu´ ımos o processamento e combinamos os resultados indi- viduais encontrados para gerar o resultado global. Com o objetivo atingido de avaliar positiva- mente o comportamento do algoritmo distribu´ ıdo comparado ` a vers˜ ao convencional em topologias est´ aticas, imagina-se como trabalho futuro a uti- liza¸ c˜ ao desta proposta em ambientes dinˆ amicos, onde a topologia do grafo muda conforme o tempo. Agradecimentos Este trabalho foi subsidiado pela CAPES, atrav´ es de bolsa de pesquisa do programa PROEX. Tam- b´ em tivemos o apoio da FAPESP, atrav´ es do pro- jeto que financiou o cluster computacional onde executamos os testes. Referˆ encias Arkin, E. and Silverberg, E. (1987). Scheduling jobs with fixed start and end times, Discrete Applied Mathematics 18(1): 1–8. Bellifemine, F. L., Caire, G. and Greenwood, D. (2007). Developing Multi-Agent Systems with JADE, Wiley. Bordini, R., Braubach, L., Dastani, M., Seghrou- chni, A., Gomez-Sanz, J., Leite, J., O. Hare, G., Pokahr, A. and Ricci, A. (2006). A sur- vey of programming languages and platforms for multi-agent systems, Special Issue: Hot Topics in European Agent Research II Guest Editors: Andrea Omicini 30: 33–44. Brown, R. (2008). Impact of Smart Grid on distri- bution system design, Power and Energy So- ciety General Meeting-Conversion and Deli- very of Electrical Energy in the 21st Century, 2008 IEEE, IEEE, pp. 1–4. Cormen, T. H., Leiserson, C. E., Rivest, R. L. and Stein, C. (2009). Introduction to Algorithms, Second Edition, The MIT Press. Coulouris, G., Dollimore, J. and Kindberg, T. (2005). Distributed systems: concepts and de- sign, Addison-Wesley Longman. Dijkstra, E. W. (1959). A Note on Two Pro- blems in Connection with Graphs, Numerical Mathematics 1: 269–271. Fortz, B. and Thorup, M. (2000). Internet traf- fic engineering by optimizing OSPF weights, INFOCOM 2000. Nineteenth Annual Joint Conference of the IEEE Computer and Com- munications Societies. Proceedings. IEEE, Vol. 2, pp. 519–528. Horling, B. and Lesser, V. (2004). A survey of multi-agent organizational paradigms, The Knowledge Engineering Review 19(04): 281– 316. Hu, Y., Chang, Z., Sun, L. and Wang, Y. (2009). Analysis of the Shortest Repaired Path of Distribution Network Based on Dijkstra Al- gorithm, 2009 International Conference on Energy and Environment Technology, pp. 73– 76. McArthur, S., Davidson, E., Catterson, V., Di- meas, A., Hatziargyriou, N., Ponci, F. and Funabashi, T. (2007a). Multi-agent systems for power engineering applications - Part I: concepts, approaches, and technical challen- ges, Power Systems, IEEE Transactions on 22(4): 1743–1752. McArthur, S., Davidson, E., Catterson, V., Di- meas, A., Hatziargyriou, N., Ponci, F. and Funabashi, T. (2007b). Multi-agent systems for power engineering applications - Part II: technologies, standards, and tools for buil- ding multi-agent systems, Power Systems, IEEE Transactions on 22(4): 1753–1759. Sghaier, M., Zgaya, H., Hammadi, S. and Tahon, C. (2010). A distributed dijkstra’s algorithm for the implementation of a Real Time Car- pooling Service with an optimized aspect on siblings, Intelligent Transportation Systems (ITSC), 2010 13th International IEEE Con- ference on, pp. 795–800. Weiss, G. (2000). Multiagent Systems and Distri- buted Artificial Intelligence, Multiagent sys- tems: a modern approach to distributed arti- ficial intelligence, Weiss, G., The MIT press. Wooldridge, M. (2009). An introduction to multi- agent systems, Wiley, England.