Um Framework Baseado em Padrões Arquiteturais
para o Desenvolvimento de Sistemas Multiagentes
Auto-Organizáveis
Manoel Teixeira de Abreu Netto
[email protected]
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
05/11/2015
Manoel Teixeira © LES/PUC-Rio
2
Motivação
• Sistemas capazes de operar em ambientes dinâmicos e
heterogêneos, contornando perturbações, antes
desconhecidas, no ambiente. De forma espontânea compor
um nova organização.
• Busca por características como flexibilidade, robustez e
adaptabilidade.
• Obtenção de respostas coletivas e complexas decorrentes
das interações entre simples componentes do sistema, de
forma descentralizada.
• Interesse da comunidade científica e industrial em soluções
inspiradas na natureza.
05/11/2015
Manoel Teixeira © LES/PUC-Rio
3
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
05/11/2015
Manoel Teixeira © LES/PUC-Rio
4
Visão Geral – Auto-organização
• Definido como o processo ou o mecanismo que permite um
sistema adequar sua organização sem um comando externo
explicito;
• Interações ocorrem localmente.
• Baseado em computação natural;
• Sistemas auto-organizáveis fortes e fracos;
05/11/2015
Manoel Teixeira © LES/PUC-Rio
5
Visão Geral – Auto-organização
• Propriedades:
– Inexistência de um controle externo – Obrigatória
– Controle descentralizado – Não obrigatória
– Operação dinâmica – Obrigatória
• Emergência
05/11/2015
Manoel Teixeira © LES/PUC-Rio
6
Visão Geral – SMA?
• As entidades autônomas são agentes;
• SMA é um grupo de agentes cooperando entre si;
• Comportamento macroscópicos usando apenas interações
locais entre agentes.
05/11/2015
Manoel Teixeira © LES/PUC-Rio
7
Padrões Básicos – Evaporation
• Problema:
– Ambientes multiagentes podem rapidamente ficarem
sobrecarregados de informações inseridas pelos agentes
• É agregado aos dados um peso/tempo
• Ação de coordenação: a falta ou o decremento dos dados
implicam em novas ações
• Regra de propagação: os dados propagados decrementam
os seus pesos localmente e nos vizinhos iterativamente até
alcançar o valor 0
05/11/2015
Manoel Teixeira © LES/PUC-Rio
8
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
05/11/2015
Manoel Teixeira © LES/PUC-Rio
9
Framework
• Extensão do framework Jadex;
• Implementação dos padrões básicos descritos
anteriormente;
• Definição dos padrões através de capabilities, com a
construção dos planos de propagação e coordenação;
• Utilização do conceito de ambiente ativo;
• Estrutura que oferece a capacidade de desenvolvimento de
novos padrões arquiteturais através da extensão do
framework.
05/11/2015
Manoel Teixeira © LES/PUC-Rio
10
Framework
• Evaporation capability
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
05/11/2015
Manoel Teixeira © LES/PUC-Rio
12
Estudo de Caso - AGV
• AGV ( Automated Guided Vehicles)
• Aplicação real – Egemin e DristiNet;
• Veículos totalmente automatizados;
• Utilizados para transporte de carga;
• Exigência de um ambiente:
– Flexível (riscos PMBOK)
– Dinâmico (aberto)
Estudo de Caso - AGV
• Modelagem:
• Utilização dos padrões:
– Diffusion – Warehouse, Destino e Localizações;
– Aggregation - Localizações;
– Evaporation – Localizções, com dados da Warehouse;
Modelo – Diagrama de Caso de Uso
Modelo – Diagrama de Classe
Modelo – Diagrama de Classe
Modelo – Diagrama de Classe
Modelo
• Ambiente
Execução – Construindo o Ambiente
• DEBUG: new AGVEnvironment
• DEBUG: Adding position 1x1
• DEBUG: Adding position 1x2
• …
• DEBUG: Adding position 5x2
• DEBUG: Adding position 5x3
• DEBUG: Creating Plan....
• DEBUG: Adding location in position 1x1
• DEBUG: Adding location in position 1x2
• …
• DEBUG: Adding location in position 5x2
• DEBUG: Adding location in position 5x3
Execução – Adicionando os agentes
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
Alocating Agent in position: 2x1
AgentLocation_1 Executing EvaporationPatternPlan...
Alocating Agent in position: 2x2
AgentLocation_2 Executing EvaporationPatternPlan...
Alocating Agent in position: 2x3
AgentLocation_3 Executing EvaporationPatternPlan...
Alocating Agent in position: 3x1
AgentLocation_4 Executing EvaporationPatternPlan...
Alocating Agent in position: 3x2
AgentLocation_5 Executing EvaporationPatternPlan...
Alocating Agent in position: 4x1
AgentLocation_6 Executing EvaporationPatternPlan...
Alocating Agent in position: 4x2
AgentLocation_7 Executing EvaporationPatternPlan...
Alocating Agent in position: 4x3
AgentLocation_8 Executing EvaporationPatternPlan...
Alocating Agent in position: 1x1 (Warehouse)
Alocating Agent in position: 1x2 (Warehouse)
Alocating Agent in position: 1x3 (Warehouse)
Alocating Agent in position: 5x1 (Destination)
Alocating Agent in position: 5x2 (Destination)
Execução – Ação do Agente Destination – Difusão
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
AgentDestination_12 Diffusing 'destination'...
Creating diffusionMsg...
Setting the content...
Getting neighbors...
3 neighbors found...
Getting the environment...
Getting location of position: 5x2
No agent at this position...
Getting location of position: 4x1
Adding a receiver : AgentLocation_6@sepultura...
Getting location of position: 4x2
Adding a receiver : AgentLocation_7@sepultura...
Sending the message...
AgentLocation_7 diffusionMsg Receive...
AgentLocation_6 diffusionMsg Receive...
Data type: dpt size: 5
Saving the DISPATCH in the beliefbase...
Data type: dpt size: 5
Saving the DISPATCH in the beliefbase...
Execução – Adicionando uma Carga – Difusão
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DEBUG: Executing UserAgentPlan ...
DEBUG: Transporter_16 Looking for a Warehouse...
DEBUG: Setting agentsId...
DEBUG: UserAgent Sending newDataDiffusionMsg to AgentWarehouse_1@sepultura
DEBUG: AgentWarehouse_1 received newDataDiffusionMsg from:
AgentIdentifier(name=UserAgent@sepultura)
DEBUG: AgentWarehouse_1 Getting the content...
DEBUG: Data received: pck:
DEBUG: Saving in the beliefbase...
DEBUG: Creating a diffusionMsg...
DEBUG: Setting the content... pck:1:1:2:info
DEBUG: Getting neighbors...
DEBUG: 3 neighbors found...
DEBUG: Getting the environment...
DEBUG: Getting location of position: 2x1
DEBUG: Adding a receiver : AgentLocation_1@sepultura...
DEBUG: Getting location of position: 1x2
DEBUG: No agent at this position...
DEBUG: Getting location of position: 2x2
DEBUG: Adding a receiver : AgentLocation_2@sepultura...
DEBUG: Sending the message...
Execução - Evaporação
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
DEBUG:
AgentLocation_1 diffusionMsg Receive...
AgentLocation_2 diffusionMsg Receive...
Data type: pck size: 5
Saving the PACKAGE in the beliefbase...
Data type: pck size: 5
Saving the PACKAGE in the beliefbase...
AgentLocation_1 Executing EvaporationPatternPlan...
Evaporating package... factor = 1.9
AgentLocation_1 execute() evaporate: continues
AgentLocation_2 Executing EvaporationPatternPlan...
Evaporating package... factor = 1.9
AgentLocation_2 execute() evaporate: continues
AgentLocation_3 Executing EvaporationPatternPlan...
AgentLocation_4 Executing EvaporationPatternPlan...
AgentLocation_5 Executing EvaporationPatternPlan...
AgentLocation_6 Executing EvaporationPatternPlan...
Evaporating dispatch... factor = 0.9
AgentLocation_6 execute() evaporate: continues
Evaporating dispatch... factor = 0.9
AgentLocation_6 execute() evaporate: continues
AgentLocation_7 Executing EvaporationPatternPlan...
Evaporating dispatch... factor = 0.9
AgentLocation_7 execute() evaporate: continues
Evaporating dispatch... factor = 0.9
AgentLocation_7 execute() evaporate: continues
Execução – Procurando Carga
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DEBUG: Transporter_16 trying to move to 3x1...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 new position: 3x1
DEBUG: AgentLocation_4 received a getPackage request...
DEBUG: AgentLocation_4 sending reply...AgentIdentifier(name=Transporter_16@sepultura)
DEBUG: Transporter_16 reply received...
DEBUG: Data received:
DEBUG: Transporter_16 null received as reply...
DEBUG: Transporter_16 trying to move to 2x1...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 trying to move to 2x2...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 new position: 2x2
DEBUG: AgentLocation_2 received a getPackage request...
DEBUG: Data to be replyed: pck:1:1:1.9:info
DEBUG: AgentLocation_2 sending reply...AgentIdentifier(name=Transporter_16@sepultura)
DEBUG: Transporter_16 reply received...
DEBUG: Data received: pck:1:1:1.9:info
DEBUG: Transporter_16 Received 1 Packages...
DEBUG: Try position: 1x1
DEBUG: Transporter_16 trying to move to 1x1...
DEBUG: Transporter_16 Moved...
DEBUG: Getting the loaded package...
DEBUG: Requesting AgentWarehouse_1 package...
DEBUG: AgentWarehouse_1 Received a getPackage fromRParameter(name=sender,
value=AgentIdentifier(name=Transporter_16@sepultura), class=class jadex.adapter.fipa.AgentIdentifier)
DEBUG: Package: br.puc.rio.les.instance.agv.data.Package@7c21e
Execução – Procurando Destino
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DEBUG: Transporter_16 looking for destination...
DEBUG: Transporter_16 trying to move to 2x2...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 trying to move to 3x2...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 new position: 3x2
DEBUG: AgentLocation_5 received a dispatchPackage request...
DEBUG: AgentLocation_5 sending
reply...AgentIdentifier(name=Transporter_16@sepultura)
DEBUG: Transporter_16 reply received...
DEBUG: Data received:
DEBUG: Transporter_16 trying to move to 2x2...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 trying to move to 2x3...
DEBUG: Transporter_16 Moved...
DEBUG: Transporter_16 new position: 2x3
...
Execução – Encontrando Destino
• DEBUG: Transporter_16 new position: 4x2
• DEBUG: AgentLocation_7 received a dispatchPackage request...
• DEBUG: Data to be replyed: dpt:5:1:0.9:info
• DEBUG: AgentLocation_7 sending
reply...AgentIdentifier(name=Transporter_16@sepultura)
• DEBUG: Transporter_16 reply received...
• DEBUG: Data received: dpt:5:1:0.9:info
• DEBUG: Try position: 5x1
• DEBUG: Transporter_16 trying to move to 5x1...
• DEBUG: Transporter_16 Moved...
• DEBUG: Send the package to destination...
• DEBUG: Requesting AgentDestination_12 dispatch...
• DEBUG: AgentDestination_12 Dispatch requested...
• **************DEBUG: Package dispatchated at
AgentDestination_12***************
Próximos Passos
• Separar o framework da instância (AGV)
• Aprimorar detalhes de implementação do AGV, como a
busca por “feromônios”
• Aumentar a quantidade de agentes (Locations, Warehouses
e Destinations)
• Implementar uma interface gráfica para visualização
• Implementar o caso de uso do VANT
VANT
Um Framework Baseado em Padrões Arquiteturais
para o Desenvolvimento de Sistemas Multiagentes
Auto-Organizáveis
Manoel Teixeira de Abreu Netto
[email protected]
Download

ManoelT_Self-Org_26-10-09 - (LES) da PUC-Rio