280 likes | 386 Views
Modelos Baseados em Agentes. Plataformas Multi-Agente. Prof. André Campos 01/12/2004. Problema. O interesse em SMA tem crescido, porém Linguagens orientadas a agentes são ainda raras ou em estágio de maturação
E N D
Modelos Baseados em Agentes Plataformas Multi-Agente Prof. André Campos 01/12/2004
Problema • O interesse em SMA tem crescido, porém • Linguagens orientadas a agentes são ainda raras ou em estágio de maturação • O desenvolvimento de SMA se apóia em linguagens e paradigmas de programação existentes (em geral O-O) • A implementação de SMA em O-O pode vir a ser complexa (distribuição, protocolos de comunicação etc) • Conseqüência = surgimento de várias ferramentas dando o suporte ao desenvolvimento SMA • Existem centenas (ver, por exemplo www.agentlink.org ou www.multiagent.org ) • Problema = qual utilizar?
Necessidades das ferramentas • Suporte à implementação de agentes • Interação com o ambiente (sensores etc) • Comunicação (padrões, yellowpages, ACL etc) • Protocolos de negociação, cooperação etc • Suporte ao design do SMA • Análise (descrição do problema etc) • Design (arquiteturas com protocolos de interação etc) • Desenvolvimento (plataformas, frameworks etc) • Deployment (configuração, manutenção etc) • Suporte ao usuário final • Segurança (confiabilidade, integridade etc)
Quadro de especificações • Aplicações • Arquitetura abstrata • Gerenciamento dos agentes • Comunicação dos agentes • Protocolos de interação • Atos de comunicação • Linguagens de conteúdo • Transporte de mensagem • Representação ACL (Agent Comunication Language) • Representação dos envelopes • Protocolos de transporte
Plataformas FIPA • Para que uma plataforma seja considerada FIPA-compliant no mínimo: AMS e ACL • Gerenciamento de agentes (AMS) • Autenticação, Recursos, “páginas brancas” (naming) • Comunicação (ACL) • Diretório de agentes (páginas amarelas) • Canal de comunicação (ACC) • transporte de mensagens • Serviços opcionais • Ontologia, Interação H-M etc AMS PA HTTP Transporte (ACC)
Tipos de plataformas Análise • Suporte às diferentes fases de elaboração de um SMA • Design • Em geral baseadas em componentes • Middlewares • Design + Implementação • Facilita a definição dos agentes • Frameworks • Design + Implementação + Testes • Análise + Design + Imp. + Testes Design Implementação Teste e validação
Exemplos de plataformas • JADE (Java Agent Development Framework) • MadKit (Multi-Agent Development Kit) • Zeus • Outros • ADE, ADK, Agent Factory, AgentBuilder, AgentTool, Aglets, Bee-gent, BOND, DECAF, DIET, DIVA, EVO, Hive, IMPACT, Jack, JAFMAS, JIAC, JINI, Knowbot, LIME, MAGE, MAML, RETSINA, SOAR , TuCSoN, VOYAGER,... • ... e muito mais!!!!
E Linguagens? • Paradigma de programação diferente da abordagem objeto • Poucas linguagens robustas • Existem linguagens OA direcionadas a aplicações específicas • Ex: Brahms Simulação Multi-Agent
Brahms • Business Redesign Agent-Based Holistic Modeling System • Ambiente (pacote de aplicativos e maquina virtual) criado com a intenção de simular práticas de trabalho. • Linguagem própria baseada em regras, com semelhanças com BDI. • Permite a modelagem de agentes baseados em humanos bastante complexos (crenças, raciocínio dedutivo, quadros de atividade). • Modelo do(s) ambiente(s) físico(s) em que se encontram os agentes. • Extensos dados estatísticos e programa especial para a visualização destes.
Linguagem Brahms • Implementação e modelagem no mesmo paradigma de programação (agentes) • Conceitos • Classes (classes) e objetos (objects) • Grupos (groups) e agentes (agents) • Atividades (activities) e ações (actions) • Crenças (beliefs) e Fatos (facts) • Quadros de trabalho (workframe) • Quadros de pensamento (thoughtframe) • Geografia (geography)
Relação entre os conceitos • Grupos (groups) contêm agentes (agents) situados (geography), que possuem crenças (beliefs), que os leva a se engajar em atividades (activities) especificada em quadro de trabalho (workframe), que consistem em precondições de crenças que leva a ações (actions), novas crenças (beliefs) e fatos do mundo (facts), através de quadros de pensamento (thoughtframe), que consistem em precondições e conseqüências.
Classes e objetos • As classes representam objetos do mundo que são usados como recursos pelos agentes, servem para guardar informações para os agentes. • Os objetos são vistos como instâncias das classes. • Mesma idéia de classes e objetos em OO • Estrutura da linguagem diferente
Exemplos de Classes e Objetos class Bank { display: "Bank"; attributes: public string name; public int receivedAccountPin; public int receivedAccountCode; initial_facts: (current.receivedAccountPin != 0); (current.receivedAccountCode != 0); (current.correctPin != false); activities: primitive_activity registerInfo() { max_duration: 5; } workframe wf_replyAtm { repeat: true; variables: forone(Atm) at3; foreach(Account) bka; when(knownval(at3 ownedbyBank current) and knownval(current.readyToTransmit = true)) do { processReplyAtm(); replyAtm(at3,bka); conclude((current. accountCode = at3.currentAccountCode), bc:100, fc:100); } }
Grupos e agentes • Agentes são entidades que possuem crenças, fazem inferências sobre suas crenças e realizam atividades • Grupos representam classes de agentes • Ex: Grupo de alunos. Grupo de professores. • Grupo está para Classe, assim como Objeto está para Agente
Crenças e fatos • Uma crença é uma verdade para um agente (e apenas para ele). • Representa um objeto de conhecimento do agente • Um fato é uma verdade para todos os agentes • Representa um estado do mundo
Workframes • Workframes descrevem como e em que situações um agente ou objeto deve executar uma atividade • Pode ser composto de várias atividades e ter como conseqüência a alteração das crenças do agente ou dos fatos do mundo
Exemplo de Workframe workframe wf_weekend{ repeat: true; variables: forone(ProjectClass) project; forone(Clock1) clk; detectables: detectable endOfProject{ when(whenever) detect((project.concluded = true), dc:100) then abort; } when(knownval(current workIn project) and knownval(clk.week > current.week)) do{ conclude((project.time = project.time + current.speed ), bc:100, fc:100); conclude((current.speed = current.perceivedTime), bc:100, fc:100); conclude((current.perceivedTime = 0), bc:100, fc:100); conclude((current.week = clk.week), bc:100, fc:100); } }
Atividades • Realiza uma ação, que pode ser do tipo: • Comunicação: communication , broadcast • Locomoção: move • Criacional: create agent, object • Composta: composite • Externas: java
Quadro de pensamento • Define o raciocínio (dedução) dos agentes • Regras de produção de conhecimento (beliefs) • Similar ao Workframe. A diferença reside no fato que ThoughtFrames não produzem nos fatos no mundo, apenas modificam as crenças dos agentes ou criam novas
Áreas Geográficas • Modelo definido através de áreas e de caminhos entra áreas • area • areadef • path areadef Restaurant extends Building { } area Telegraph_Av_2134 instanceof Restaurant partof Berkeley { } path StH_to_from_BB { area1: SouthHall; area2: Telegraph_Av_2134; distance: 360; }
Modelos em Brahms • Modelo de agentes • Modelo de objetos • Modelo de atividades • Modelo de comunicação • Modelo de relações • Modelo de conhecimento • Modelo geográfico
Exemplo de cenário • Modelo da rotina de um dia típico de um aluno da UFRN • Os alunos passam a maior parte do dia estudando, parando apenas quando está com fome. Quando isso ocorre, eles vão à cantina mais próxima. Se um aluno não tem grana suficiente, ele passa primeiro num caixa eletrônico de um banco.No caixa, o aluno insere seu cartão e tem 3 tentativas para digitar sua senha correta. Em cada tentativa, o caixa se comunica com o banco para validá-la.Os alunos precisam ter dinheiro na conta para poder retirar.
Grupos/Agentes e Classes/Objetos • Grupo Aluno: João e Maria • Classe Banco: BB e CEF • Classe Caixa: Caixa do BB, Caixa do CEF • Classe Cantina: Campeão, Cant. Setor I,... • Classe Local de estudo: LCC, Biblioteca, Setor III • Classe Relógio: Relógio
Personal Agent • Conjunto de ferramentas para auxiliar o desenvolvimento de simulações usando Brahms • Composto de: • Composer • Compiler • Virtual Machine (Motor de simulação) • Agent Viewer
Composer • IDE para desenvolvimento, auxilia a gerenciar o desenvolvimento dos modelos
Compiler • Converte os modelos descritos na linguagem Brahms em XML <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE MODEL SYSTEM "DTD\model.dtd"> <!-- Generated at Sat Dec 13 12:01:40 BRST 2003 --> <MODEL name="NewModel"> <AGENTREF ref="brahms.base.ANY-AGENT" /> <OBJECTREF ref="brahms.base.Clock" /> <OBJECTREF ref="brahms.base.Date" /> <AREAREF ref="brahms.base.NoLocation" /> </MODEL>
Virtual Machine(Motor de simulação) • A simulação é executada na Brahms Virtual Machine que consiste de um motor de simulação • A VM une todos os elementos do modelo e gera uma simulação • resultado da simulação é um arquivo de texto simples com todos os eventos que ocorreram durante a simulação workframe|WFR30|wf_moveToLocationForCash|VAR89,VAR91,VAR88, wf-variable|VAR52|forone(projects.atm.BankCard) bkc4|FOR-ONE|true|CLS9 precondition|PRE159|knownval(current.waitAtmAsksAmount = true) precondition|PRE160|knownval(current hasBankCard bkc4) precondition|PRE161|knownval(at4 contains bkc4) consequence|CON118|conclude((current.waitAtmAsksAmount = false)); consequence|CON119|conclude((at4.RepliedVerification = false));
Agent Viewer • interface gráfica que interpreta a simulação gerando um gráfico com os dados da simulação organizados em uma linha de tempo