Um Framework Baseado em Padrões Arquiteturais para o Desenvolvimento de Sistemas Multiagentes
Auto-Organizáveis
Manoel Teixeira de Abreu Netto
11/04/23 2Manoel Teixeira © LES/PUC-Rio
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
11/04/23 3Manoel Teixeira © LES/PUC-Rio
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.
11/04/23 4Manoel Teixeira © LES/PUC-Rio
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
11/04/23 5Manoel Teixeira © LES/PUC-Rio
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;
11/04/23 6Manoel Teixeira © LES/PUC-Rio
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
11/04/23 7Manoel Teixeira © LES/PUC-Rio
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.
11/04/23 8Manoel Teixeira © LES/PUC-Rio
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
11/04/23 9Manoel Teixeira © LES/PUC-Rio
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
11/04/23 10Manoel Teixeira © LES/PUC-Rio
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.
Framework
• Evaporation capability
11/04/23 12Manoel Teixeira © LES/PUC-Rio
Sumário
• Motivação
• Visão Geral
• Framework
• Estudo de Caso
– AGV
– Modelo
– Execução
• Próximos Passos
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: Alocating Agent in position: 2x1• DEBUG: AgentLocation_1 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 2x2• DEBUG: AgentLocation_2 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 2x3• DEBUG: AgentLocation_3 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 3x1• DEBUG: AgentLocation_4 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 3x2• DEBUG: AgentLocation_5 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 4x1• DEBUG: AgentLocation_6 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 4x2• DEBUG: AgentLocation_7 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 4x3• DEBUG: AgentLocation_8 Executing EvaporationPatternPlan...• DEBUG: Alocating Agent in position: 1x1 (Warehouse)• DEBUG: Alocating Agent in position: 1x2 (Warehouse)• DEBUG: Alocating Agent in position: 1x3 (Warehouse)• DEBUG: Alocating Agent in position: 5x1 (Destination)• DEBUG: Alocating Agent in position: 5x2 (Destination)
Execução – Ação do Agente Destination – Difusão
• DEBUG: AgentDestination_12 Diffusing 'destination'...• DEBUG: Creating diffusionMsg...• DEBUG: Setting the content...• DEBUG: Getting neighbors...• DEBUG: 3 neighbors found...• DEBUG: Getting the environment...• DEBUG: Getting location of position: 5x2• DEBUG: No agent at this position...• DEBUG: Getting location of position: 4x1• DEBUG: Adding a receiver : AgentLocation_6@sepultura...• DEBUG: Getting location of position: 4x2• DEBUG: Adding a receiver : AgentLocation_7@sepultura...• DEBUG: Sending the message...• DEBUG: AgentLocation_7 diffusionMsg Receive...• DEBUG: AgentLocation_6 diffusionMsg Receive...• DEBUG: Data type: dpt size: 5• DEBUG: Saving the DISPATCH in the beliefbase...• DEBUG: Data type: dpt size: 5• DEBUG: 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: AgentLocation_1 diffusionMsg Receive...• DEBUG: AgentLocation_2 diffusionMsg Receive...• DEBUG: Data type: pck size: 5• DEBUG: Saving the PACKAGE in the beliefbase...• DEBUG: Data type: pck size: 5• DEBUG: Saving the PACKAGE in the beliefbase...• DEBUG: AgentLocation_1 Executing EvaporationPatternPlan...• DEBUG: Evaporating package... factor = 1.9• DEBUG: AgentLocation_1 execute() evaporate: continues• DEBUG: AgentLocation_2 Executing EvaporationPatternPlan...• DEBUG: Evaporating package... factor = 1.9• DEBUG: AgentLocation_2 execute() evaporate: continues• DEBUG: AgentLocation_3 Executing EvaporationPatternPlan...• DEBUG: AgentLocation_4 Executing EvaporationPatternPlan...• DEBUG: AgentLocation_5 Executing EvaporationPatternPlan...• DEBUG: AgentLocation_6 Executing EvaporationPatternPlan...• DEBUG: Evaporating dispatch... factor = 0.9• DEBUG: AgentLocation_6 execute() evaporate: continues• DEBUG: Evaporating dispatch... factor = 0.9• DEBUG: AgentLocation_6 execute() evaporate: continues• DEBUG: AgentLocation_7 Executing EvaporationPatternPlan...• DEBUG: Evaporating dispatch... factor = 0.9• DEBUG: AgentLocation_7 execute() evaporate: continues• DEBUG: Evaporating dispatch... factor = 0.9• DEBUG: 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