Sie sind auf Seite 1von 6

Agentes Inteligentes: Uma Abordagem Prtica com o Java Agent Development Framework

Daniel Abella Cavalcante Mendona de Souza daniel@abella.com.br

Captulo 1. Introduo
Segundo Russel e Norvig [1], um Agente tudo o que pode ser considerado capaz de perceber seu ambiente por meio de sensores e agir sobre este ambiente por intermdio de atuadores. Este conceito ilustrado a seguir.

Ilustrao 1: Arquitetura bsica de um Agente

Termos Utilizados
O termo percepo se refere s entradas perceptivas do agente em um dado momento, enquanto que, temos uma seqncia de percepes, que diz respeito histria completa de tudo o que o agente j percebeu. Esta distino entre os termos apresentados necessria, pois, a escolha de uma ao a ser realizada pelos atuadores do Agente, pode depender da seqncia inteira de percepes observadas at o momento. Em termos matemticos, afirmamos que o comportamento do agente descrito pela funo de agente, que mapeia qualquer seqncia de percepes a uma dada ao.

Funo de Agente x Programa de Agente


O mapeamento descrito anteriormente na funo agente comumente relacionado a uma tabela, que infinita, a menos que seja definido um limite sobre a quantidade de percepes que devemos considerar. Entretanto, esta tabela apenas uma

caracterizao externa do agente. Internamente, a funo de agente implementada por um programa de agente. Em resumo, a funo de agente uma descrio matemtica abstrata; o programa de agente uma implementao concreta, relacionada arquitetura do agente.

Aplicao
Na prxima seo, apresentada como pode ser desenvolvido um Agente conforme o conceito de Russel e Norvig [1].

1.1 Implementao de um Agente by Russel


Para o desenvolvimento de um Agente Inteligente conforme a definio de Russel ser utilizada a linguagem Java e o framework Java Agent Development Framework Jade [2]. Caso o leitor no tenha conhecimento sobre a configurao do ambiente para execuo de Agentes ou desconhea conceitos bsicos sobre este framework, devem ser consultados respectivamente os apndices A e B.

Ento, Are you ready?

1.1.1 Prtica
O primeiro passo para a construo de um Agente conforme a definio de Russel e Norvig, definir o(s) seu(s) atuador(es) e sensor(es). Em termos de implementao, cada atuador ou sensor presente no agente, significar a criao de um novo Behavior. Iniciaremos pela construo do Sensor do agente intitulado Russel.

Sensor
Para o exemplo apresentado aqui, projetaremos um agente que perceber o seu ambiente periodicamente. As aes que o agente realizar durante a percepo do agente algo que deve corresponder finalidade do agente. Por exemplo, em um agente intitulado SubmarinoProducts, que atua no oferecimento de produtos ao consumidor, pode constantemente monitorar as aes do usurio no e-commerce, e atualizar no banco de dados as aes do usurio, algo como o apresentado no Quadro 1. Em contrapartida, o atuador deste agente

consultaria esta tabela no banco de dados e realizaria uma oferta baseada na quantidade de acessos. Usurio Pgina Quantidade de Acessos daniel.abella eshop.com/notebook 3000 daniel.abella eshop.com/palmtop 1400 daniel.abella eshop.com/books 13 Quadro 1: Relao de acesso ao usurio Daniel Abella

Neste momento, temos que definir se criaremos um comportamento prprio para o sensor (isto , uma subclasse de SimplerBehavior) ou utilizaremos como base algum dos behaviors disponibilizados pelo framework Jade (por exemplo, CyclicBehavior, TickerBehavior, entre muitos outros). Conforme dito anteriormente, o sensor perceber o ambiente periodicamente, logo pode ser utilizado como base o comportamento TickerBehavior, disponibilizado pelo framework. Este comportamento permite que o behavior seja chamado de acordo com a periodicidade informada pelo agente (em milisegundos). O cdigo fonte referente ao sensor apresentado na seqncia. Classe Sensor
import jade.core.Agent; import jade.core.behaviours.TickerBehaviour; public class Sensor extends TickerBehaviour { public Sensor(Agent agente, long tempo){ super(agente,tempo); } protected void onTick(){
//Aqui, voce deve fornecer a implementacao do seu sensor

System.out.println("Agente percebendo o ambiente");


//Depois de perceber o ambiente, designado um Atuador para atuar no ambiente

myAgent.addBehaviour(new Atuador()); } }

No cdigo fonte apresentado anteriormente, no temos nenhuma percepo do ambiente de fato, apenas a impresso da frase Agente percebendo o ambiente. Ao fim da percepo, includo um Atuador que poder atuar sobre o ambiente. Em substituio a impresso da frase Agente percebendo o ambiente poderamos ter implementado o comportamento descrito no Quadro 1. Um pseudocdigo que ilustra este cenrio apresentado a seguir.

Classe Sensor
import jade.core.Agent; import jade.core.behaviours.TickerBehaviour; public class Sensor extends TickerBehaviour { public Sensor(Agent agente, long tempo){ super(agente,tempo); } protected void onTick(){ String usuarioVerificado = obterUsuarioAutenticado(); String acaoUsuario = obterAcaoUsuario(usuarioVerificado); gravarBancoDeDados(usuarioVerificado,acaoUsuario); myAgent.addBehaviour(new Atuador()); }
private void gravarBancoDeDados(String usuarioVerificado, String acaoUsuario) {} private String obterAcaoUsuario(String usuarioVerificado) {return null;} private String obterUsuarioAutenticado() {return null;}

Atuador
Aps a definio do Sensor, trataremos nesta subseo a definio do atuador. Conforme apresentado nos cdigos fonte anteriormente, o atuador estava sempre sendo chamado aps a realizao da atividade do sensor (note que, sempre colocado no final do mtodo onTick). Baseado nisto, tem-se que o Atuador deve ser chamado apenas uma vez. Isto se deve ao fato que, como o Sensor chamado periodicamente e este ltimo, por sua vez, sempre realizada a chamada do Atuador. Em momento simular durante o desenvolvimento do Sensor, temos que definir se criaremos um comportamento prprio para o atuador (isto , uma subclasse de SimplerBehavior) ou utilizaremos como base algum dos behaviors disponibilizados pelo framework Jade (por exemplo, CyclicBehavior, TickerBehavior, entre muitos outros). Neste sentido, o OneShortBehavior pode ser utilizado, pois este implementa um comportamento atmico que executado uma vez. apresentado a seguir o cdigo fonte referente ao atuador. Neste exemplo, no temos nenhuma atuao de fato, apenas a impresso da frase Agente Russel atuando no ambiente. Aps isto, o mtodo removeBehavior chamado. Este mtodo faz com que o behavior informado como argumento seja removido da execuo. Logo,

quando temos a chamada da forma removeBehavior(this) estamos pedindo para que o prprio Atuador acabe com a sua execuo.

Classe Atuador
import jade.core.behaviours.OneShotBehaviour; public class Atuador extends OneShotBehaviour{ public void action() { System.out.println("Agente Russel atuando no ambiente"); myAgent.removeBehaviour(this); } }

Em contrapartida ao realizado durante a apresentao do Sensor, apresentado abaixo o pseudocdigo para um Atuador que representaria o comportamento descrito no Quadro 1. Classe Atuador
import jade.core.behaviours.OneShotBehaviour; public class Atuador extends OneShotBehaviour{ public void action() { String usuarioVerificado = obterUsuarioAutenticado(); String secaoMaisAcessadaPeloUsuario = obterSecaoMaisAcessadaPeloUsuario(usuarioVerificado); String paginaOfertasSessao = obterOfertasDaSessao(secaoMaisAcessadaPeloUsuario); enviarEmailUsuario(paginaOfertasSessao); myAgent.removeBehaviour(this); }
private void enviarEmailUsuario(String paginaOfertasSessao) {} private String obterOfertasDaSessao(String secaoMaisAcessadaPeloUsuario) {return null;} private String obterSecaoMaisAcessadaPeloUsuario(String usuarioVerificado) {return null;} private String obterUsuarioAutenticado() {return null;}

Vdeo Aula e Cdigo Fonte


Para melhor compreenso do abordado at este momento, disponibilizado no site da disciplina uma vdeo-aula que demonstra a criao do Agente Russel. Alm disto, disponibilizado o cdigo fonte produzido.

Apndice A. Configurao do Ambiente para Desenvolvimento de Agentes Inteligentes com o Java Agent Development Framework
A ser includo.

Apndice B. Conceitos bsicos sobre o Java Agent Development Framework


A ser includo.

Das könnte Ihnen auch gefallen