27
Sistemas Multi-Agentes Andrew D. Costa [email protected] Carlos Lucena [email protected]

Sistemas Multi-Agentes Andrew D. Costa [email protected] Carlos Lucena [email protected]

Embed Size (px)

Citation preview

Page 1: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

Sistemas Multi-Agentes

Andrew D. Costa

[email protected]

Carlos Lucena

[email protected]

Page 2: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

2 © LES/PUC-Rio

Paradigmas de Engenharia de Software

• Um software possui um conjunto de partes, ou componentes, que executam e geram interações.

• Um paradigma deve oferecer modelos e técnicas que facilitam o tratamento da complexidade.

• São exemplos de paradigmas contemporâneos: Orientação a Objetos, Orientação a Aspectos, Orientação a Componentes, etc.

Page 3: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

3 © LES/PUC-Rio

Complexidade

• Um sistema de software complexo é composto de subsistemas inter-relacionados.

• Interação é a característica mais importante em sistemas complexos.

• Complexidade em sistemas de software é normalmente estrutural: a adição de novos componentes vai gradualmente degradando a estrutura do sistema 1

1. R.D. Banker, S. Datar & D. Zweig. Software Complexity and Maintainability. Proceedings of the Tenth International Conference on Information Systems, 1989, pp. 247-255.

Page 4: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

4 © LES/PUC-Rio

Complexidade

• Os sistemas desenvolvidos atualmente tendem a ser

– abertos

– distribuídos e

– compostos por diversos componentes que interagem uns com os outros e que sofrem alterações dinamicamente com a entrada de novos componentes e a saída de componentes já existentes

• Esses componentes podem possuir objetivos diferentes e, portanto conflitantes.

• Esses fatos aumentam ainda mais a complexidade dos sistemas atuais.

Page 5: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

5 © LES/PUC-Rio

Complexidade

• Algumas das técnicas utilizadas para tratar a complexidade de sistemas distribuídos são:

– Decomposição

– Abstração

– Organização

• Decomposição: Sistemas complexos devem ser compostos por um conjunto de sub-sistemas organizados de forma hierárquica. Os subsistemas devem trabalhar em conjunto para atingir os objetivos do sistema.

• Abstração: Definição de modelos simplificados do sistema que enfatize alguns detalhes e propriedades, limitando a área de interesse (escopo) do desenvolvedor em um determinado momento.

Page 6: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

6 © LES/PUC-Rio

Complexidade

• Organização: Sistemas complexos exigem relações organizacionais.

• As organizações permitem agrupar componentes de acordo com algum critério (i.e. família de problemas a serem resolvidos) e tratá-los como se fossem uma única entidade,

• Permite estabelecer relações de alto nível entre essas entidades (i.e. relações entre os problemas a serem resolvidos).

Page 7: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

7 © LES/PUC-Rio

Tendências

• O conceito de “programa” tem dado lugar ao conceito de “organizações” e, com isso, a conceitos derivados como “colaboração” e “bases de conhecimento”.

• Além disso, as características dos sistemas devem levar em consideração as necessidades dos tempos atuais:

– Sistemas distribuídos

– Arquitetura aberta

– Sistemas extensíveis

– Crescimento da Internet

– Utilização de ontologias (Web Semântica)

Page 8: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

8 © LES/PUC-Rio

Evolução de Paradigmas

Tempo

• Linguagens Assembly

• Abstração Funcional

• Programação Estruturada

• Orientação a Objetos

• Componentes

• Design Patterns

• ...

• Agentes de Software

Abstrações com bases conceituais determinadas pela arquitetura da máquina

Abstrações com bases conceituais determinadas pelo domínio do problema

Page 9: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

9 © LES/PUC-Rio

Agentes de Software

• Um agente de software é uma entidade que faz parte de um sistema (sociedade de agentes) e que pode perceber aspectos limitados de seu ambiente de execução 1.

• Agente é um elemento cuja execução e interação (com outros agentes e com o ambiente) levam ao alcance dos objetivos do sistema 2 .

• Agente é uma unidade de software autônoma situada em um ambiente e capaz de executar ações para atingir seus objetivos.

1. G.F. Luger & W.A. Stubblefield. Artificial intelligence: structures and strategies for complex problem solving. 3.ed. Massachusetts: Addison-Wesley Longman, 1998. 824p.

2. M.N. Huhns & L.M. Stephens. Multiagent systems and societies of agents. In: G. Weiss (ed.) Multiagent systems. Massachussests: MIT Press, 2000, pp. 79-120.

Page 10: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

10 © LES/PUC-Rio

Características de Agentes

• Os agentes são considerados entidades solucionadoras de problemas e devem ser:

• Autônomo: Agentes devem agir sem a necessidade de intervenção humana direta e devem ter controle sobre suas ações e seus estados internos.

• Reativo: Agentes devem perceber o ambiente onde estão situados e responder a mudanças ocorridas neste ambiente.

• Pró-ativo: Agentes devem possuir um comportamento oportunista, orientado a objetivos, executando suas ações sempre que oportuno.

Page 11: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

11 © LES/PUC-Rio

Características de Agentes

• Social: Agentes devem interagir com outros agentes, quando apropriado, com o intuito de atingir seus objetivos ou de ajudar outros agentes.

• Intencional: Agentes devem ter a intenção de realizar uma tarefa. Para agentes agirem de forma intencional, eles devem possuir crenças (conhecimento sobre o ambiente) e objetivos a serem atingidos.

• Essas características são apropriadas para que as técnicas que tratam complexidade, citadas anteriormente (decomposição, abstração e organização), sejam utilizadas.

Page 12: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

12 © LES/PUC-Rio

Agentes de Software

• Agentes autônomos podem ser considerados componentes de software que possuem as características apresentadas.

• Agentes podem ser utilizados como uma técnica de decomposição e modularização, com controle descentralizado, além de representarem abstrações para problemas existentes.

• Reatividade e próatividade tratam aspectos dinâmicos e imprevisíveis de um sistema complexo e aberto.

• Por fim, habilidades sociais estão fortemente relacionadas com questões organizacionais, já que é através delas que será possível tratar as dependências e interações entre os componentes (organizações) de um sistema complexo.

Page 13: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

13 © LES/PUC-Rio

Características Adicionais

• Adaptação

– São capazes de modificar, em algum grau, o seu comportamento devido à mudanças do ambiente e de outros agentes (autonomic computing: self*)

• Aprendizado

– São capazes de modificar o seu comportamento baseados em sua experiência

• Racionalidade

– São capazes de selecionar suas ações baseados em seus objetivos

• Mobilidade

– São capazes de se mover de um ambiente para outro

Page 14: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

14 © LES/PUC-Rio

Sistemas Multi-Agentes

• Um agente em geral não é encontrado completamente sozinho em uma aplicação, mas formando em conjunto com outros agentes: Sistemas Multi-Agentes (SMA).

• O paradigma de Engenharia de Software para SMA oferece:

– uma abstração para o desenvolvimento de software baseada no domínio do problema;

– um método de decomposição;

– um modo apropriado para a modelagem de sistemas como um conjunto de organizações que se relacionam;

– uma descentralização que reduz a quantidade de interação entre unidades.

Page 15: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

15 © LES/PUC-Rio

Situações para Aplicar Agentes

• 50 Facts about Agent-Based Computing (Professor Michael Luck)

Page 16: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

16 © LES/PUC-Rio

Page 17: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

17 © LES/PUC-Rio

Page 18: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

18 © LES/PUC-Rio

Page 19: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

19 © LES/PUC-Rio

Page 20: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

20 © LES/PUC-Rio

Page 21: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

21 © LES/PUC-Rio

Page 22: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

22 © LES/PUC-Rio

Page 23: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

23 © LES/PUC-Rio

Page 24: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

24 © LES/PUC-Rio

Estado da Arte

• Engenharia de SMA em exploração.

• Principais estudos em nível de experimentação, através de estudos de caso.

• Desenvolvimento de uma ES para o paradigma: análise de requisitos, linguagem de modelagem, processo, arquitetura de desenvolvimento, ferramentas, etc.

Page 25: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

25 © LES/PUC-Rio

Exemplos de Aplicações de SMA

• Mercado Financeiro

• Reputação (Comércio Eletrônico)

• Autonomic Computing (self*)

• Linha de Produto de Software

• Competições do AAMAS (ART-Testbed, TACs, etc)

Page 26: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

26 © LES/PUC-Rio

Bibliografia

• Jennings, N. R. An agent-based approach for building complex software systems. Communications of the ACM, Volume 44, Issue 4, April 2001. Pages: 34-41

• Jennings, N. R; Wooldridge, M. Agent-Oriented Software Engineering. In: Proceedings 12th Int. Conf. on Industrial and Engineering Applications of AI, Cairo, Egypt, 4-10. (Invited paper) (1999)

• Jennings, N., R.; Wooldridge, M. Applications of Intelligent Agents. Agent Technology: Foundations, Applications, and Markets. Jennings, N.R. and Wooldridge, M.J (Eds.), Springer, pp. 3-28 (1998).

• Agent Link Home Page, www.agentlink.org.

Page 27: Sistemas Multi-Agentes Andrew D. Costa andrew@les.inf.puc-rio.br Carlos Lucena lucena@inf.puc-rio.br

Perguntas?