Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

364 lines (301 sloc) 21.22 kB
\chapter{Sistemas Multi-Agentes}
\label{chap:agents}
Sistemas multi-agentes (SMA) são sistemas compostos por múltiplos agentes
que interagem entre si dentro de um ambiente. O ambiente, neste caso, tem
um papel importante na arquitetura dos SMA pois eles definem a maneira
pela qual os agentes estarão interagindo. Estes sistemas são utilizados
para resolver problemas que são de difícil resolução para um agente único
ou por um sistema monolítico. A inteligência agregada aos agentes
faz com que eles sejam capazes não somente de reagirem a estímulos externos, mas
também de aprenderem com estes estímulos e adaptar-se a eventuais
alterações na rede onde eles estão inseridos.
\section{Agentes}
Atualmente não existe um consenso sobre a definição do termo agente pois existem ainda muitos debates
sobre o assunto. Existe um consenso geral que autonomia é uma das premissas que um
agente deve seguir, mas as discussões vão muito além disso. Diferentes
aplicações podem exigir ou não a autonomia do agente. Por exemplo, algumas aplicações
podem exigir que agentes aprendam baseados no meio que estão e a partir disso
eles passem a tomar decisões. Para outras aplicações, entretanto, isso não é importante, pois
somente o fato dos agentes interagirem com o ambiente, fazendo medições e atuando já é suficiente.
Uma das definições de agente feita em \cite{Woolridge} é que um agente é um sistema computacional
que está situado em algum ambiente, e é capaz de agir autonomamente neste ambiente para que
os objetivos de projeto sejam cumpridos. Outra definição feita por \cite{Russell2003} aborda
o agente como sendo uma entidade autônoma que realiza observações através de sensores e que atua
sobre um determinado ambiente guiado por seus objetivos.
De uma maneira geral, um agente é uma entidade inserida em um ambiente onde ele é capaz de
perceber como este ambiente se comporta através da observação de fenômenos neste
ambiente, obtida por meio de sensores, e a partir de certas premissas
ele é capaz de atuar neste ambiente. A Figura \ref{fig:agent_model} mostra um agente genérico
interagindo com o ambiente a sua volta.
%Na maioria dos ambientes os agentes não possuems controle
%total sobre o ambiente, mas sim ele tem um controle parcial de forma que ele possa influenciar
%o meio onde ele se encontra.
Um agente tem as seguintes características:
\begin{itemize}
\item {\bf{Autonomia}}: Agentes operam sem intervenção direta de humanos ou outros e ainda
têm algum tipo de controle sobre suas ações.
\item {\bf{Habilidade social}}: Agentes interagem com outros agentes através de algum tipo
de linguagem de comunicação entre agentes.
\item {\bf{Reatividade}}: Agentes percebem o ambiente e são capazes de atuar sobre o mesmo.
\item {\bf{Pró-atividade}}: Agentes não agem simplesmente em resposta a algum estímulo do
ambiente, eles também são capazes de exibir iniciativa iniciando algum tipo de tarefa
no meio onde se encontram.
\end{itemize}
\begin{figure}[ht]
\centering
\includegraphics[width=.5\textwidth]{agent_model}
\caption{Um agente simples interagindo com o ambiente \cite{Woolridge}.}
\label{fig:agent_model}
\end{figure}
Agentes podem ser comparados a objetos no modelo de orientação a objetos, entretanto a arquitetura
interna de um agente se difere da arquitetura de um objeto, bem como o paradigma de comunicação.
Os objetos são uma instância de uma classe e podem ter qualquer tipo de estrutura
e de variáveis declaradas em seu interior, sendo que os métodos, ou seja, as funções associadas
à classe, são a maneira pela qual os objetos têm de enxergar outros objetos. Um agente
guarda em sua estrutura interna regras e estruturas associadas ao ambiente no qual ele
se encontra bem como informações de outros agentes.
Um exemplo de agente é qualquer sistema de controle, seja ele complexo ou extremamente simples.
Na literatura é muito utilizado o simples caso de um termostato. Estes dispositivos são utilizados
como sensores de temperatura de um ambiente e produzem como saída sinais que indicam a temperatura do
ambiente, podendo ser utilizados para determinar-se se o ambiente está muito quente ou muito frio. A partir
da leitura destes sinais, o atuador vai começar a esquentar ou resfriar a sala, dependendo da temperatura de referência utilizada.
%Mas este agente não tem controle total sobre o ambiente
%pois ele só mede uma grandeza e atua sobre ela, que é o caso de se ter uma porta aberta no ambiente.
%O agente não tem como atuar sobre a porta, ele só atua sobre o controle de temperatura da sala que
%é a grandeza que está diretamente relacionada ao agente.
%
\subsection{Modelo BDI}
Os conceitos utilizados em inteligência artificial (IA) e em SMA têm origens
em outras áreas do conhecimento que não a computação, como
por exemplo na filosofia e na psicologia na análise do comportamento humano.
Bratman desenvolve em \cite{Bratman87} uma teoria de planejamento e intenções.
Intenções são tratadas como elementos de planos parciais de ação. Estes planos
têm papéis básicos em raciocínio prático, que suportam a organização das atividades
dos seres humanos ao longo do tempo e socialmente. Bratman explora o impacto
desta abordagem em uma vasta classe de problemas, incluindo as relações entre
intenção e ação intelectual, e também a distinção entre efeitos esperados e
desejados.
Para Bratman, intenção e desejo são ambas atitudes pró-ativas, ou seja, atitudes
mentais relacionadas à ação, mas a intenção é distinguida como uma atitude
de controle de conduta. Ele identifica comprometimento como sendo o fator
que diferencia o desejo da intenção, levando à persistência temporal dos planos.
A arquitetura de agentes chamada de {\it{Belief-Desire-Intention}} (BDI) é
baseada nestas premissas. O modelo BDI endereça parcialmente estas premissas
levantadas por Bratman. A persistência temporal, por exemplo, no sentido
explícito de referência ao tempo, não é explorada. A natureza hierárquica
dos planos é mais facilmente implementada. Um plano consiste em um número de
passos, os quais podem ou não invocar outros planos. A definição hierárquica
dos planos implica um tipo de persistência temporal, visto que o plano
abrangente continua efetivo enquanto que planos subsidiários estão sendo
executados.
Na sua essência, o modelo BDI provê um mecanismo para separar as atividades
de selecionar um plano da lista de planos que estão ativos. Consequentemente, agentes
BDI são capazes de balancear o tempo gasto na tomada de decisão e na execução
destes planos. Uma terceira atividade, que é fazer o planejamento, não está
no escopo do modelo BDI e é deixada ao programador e ao projetista do sistema.
A arquitetura do modelo BDI divide-se então nas crenças, desejos e intenções
dos agentes. As crenças ({\it{beliefs}}) representam o estado do agente, ou seja, suas
crenças sobre o mundo, incluindo ele mesmo e outros agentes. {\it{Beliefs}} podem
inclusive incluir regras de inferência, permitindo criar-se novas crenças. É
importante ressaltar que a crença de um agente não representa necessariamente a
realidade, e elas podem ser alteradas ao longo do tempo.
Desejos ({\it{desires}}) representam o estado motivacional do agente. Eles
representam objetivos ou situações que o agente gostaria de realizar. Exemplos
podem ser: encontrar o melhor preço em uma lista, ir a uma festa ou tornar-se
rico. Intenções ({\it{intentions}}) representam o estado deliberativo com o qual
o agente tem algum compromisso. Planos são sequências de ações que um agente
pode executar para alcançar uma ou mais de suas intenções. Planos podem conter
outros planos, por exemplo, um plano de dirigir um carro envolve um plano
de achar as chaves do carro. Isso reflete que no modelo de Bratman, planos
são inicialmente parcialmente definidos, sendo que os detalhes vão sendo preenchidos
ao longo da sua execução.
\subsection{Sistemas Multi-Agentes e Seus Ambientes}
Sistemas complexos tais como SMA são compostos por agentes de naturezas
iguais ou diferentes. Estes agentes são capazes de interagir entre si diretamente
através de troca de mensagens ou indiretamente, atuando no meio e fazendo com que
outros agentes percebam suas intenções. O ambiente no qual o SMA se encontra tem
um papel tão importante quanto aos agentes, pois é sobre ele que os agentes
estão atuando e fazendo suas medidas. Em \cite{Woolridge} os ambientes são caracterizados
como sendo acessíveis ou inacessíveis, determinísticos ou não determinísticos, estáticos
ou dinâmicos e ainda discretos ou contínuos.
\begin{itemize}
\item {\bf{Acessível x Inacessível}}: Um ambiente acessível é aquele onde pode
obter-se informações completas, precisas e atualizadas sobre o estado do ambiente.
A maioria dos ambientes reais (incluindo por exemplo o mundo físico e a Internet)
são inacessíveis.
\item {\bf{Determinístico x Não-Determinístico}}: Um ambiente determinístico é
aquele no qual qualquer ação tem um efeito garantido. Não existem incertezas
sobre o estado que será levado o sistema após ser efetuada alguma ação sobre
ele.
\item {\bf{Estático x Dinâmico}}: Um ambiente estático é aquele onde se pode
assumir que ele permanecerá inalterado com exceção das ações tomadas pelos
agentes que nele estão inseridos. Em contrapartida, um ambiente dinâmico é aquele
que existem outros processos operando sobre ele, e no qual as alterações vão
muito além do controle do agente, como no exemplo do termostato citado anteriormente.
A maioria dos ambientes reais são dinâmicos.
\item {\bf{Discreto x Contínuo}}: Um ambiente é dito discreto se existe um número
fixo e finito de ações e percepções a ele.
\end{itemize}
Um exemplo simples disso seria uma sala com sensores de temperatura espalhados por ela para
medir a temperatura e controlar a temperatura da sala a partir de um ar-condicionado central.
Rigorosamente, este sistema seria inacessível, pois nem todos os pontos da sala podem ser medidos. Entretanto
é possível a partir de medidas de alguns pontos inferir todos os valores de temperatura da sala. Este sistema
é também não-determinístico e dinâmico, pois as ações de controle de temperatura tomadas
pelos agentes não necessariamente terão um efeito garantido pois podem existir eventos
externos que atrapalhem no controle de temperatura, como por exemplo um humano entrando
e saindo desta mesma sala. Por fim, este sistema é discreto pois existe um número finitos de
sensores e agentes atuando sobre ele.
\section{Classificação de Sistemas Multi-Agentes}
Em \cite{Russell2003} os SMA são classificados como sendo reativos ou cognitivos enquanto
que em \cite{Woolridge} também se trata de uma outra classe de agente chamada de agentes híbridos.
\subsection{Sistemas Multi-Agentes Reativos}
Agentes reativos também são chamados de agentes baseados em comportamento. Este tipo
de agente, em contraste com os agentes que são baseados em crença que têm a
sua própria visão do mundo, é definido somente por um conjunto de comportamentos.
Agentes reativos não necessitam de memória ou de uma visão do mundo exterior pois
eles só reagem aos estímulos que recebem. Neste tipo de abordagem é muito
comum o comportamento dos agentes ser baseados em modelos de organização
biológica, como por exemplo formigas, abelhas ou cupins \cite{PIGNATON2012}.
A Figura \ref{fig:reactive_agent} mostra um diagrama de blocos de um agente
puramente reativo. Pode-se perceber que o agente aplica um comportamento baseado
em uma entrada e isso é o resultado que é posto na sua saída.
\begin{figure}[ht]
\centering
\includegraphics[width=.5\textwidth]{reactive_agent}
\caption{Modelo de um agente reativo \cite{Russell2003}.}
\label{fig:reactive_agent}
\end{figure}
\subsection{Sistemas Multi-Agentes Cognitivos}
Agentes cognitivos têm ações baseadas em outros tipos de organização, tais como a
social humana. Este tipo de agente é capaz de aprender novos comportamentos baseados
na sua leitura do ambiente. Este tipo de agente conhece outros agentes e é capaz de
se comunicar com os mesmos através de troca de mensagens diretas. Os agentes cognitivos
ainda carregam o conceito de inteligência coletiva, sendo capazes de interagir
com outros agentes e tomar uma decisão em grupo.
O modelo de agente cognitivo chamado de Clarion, primeiramente citado \cite{CLARION}, é
uma arquitetura voltada para o aprendizado do agente. Essa arquitetura é separada
em dois níveis, um conceitual, ou chamado de conhecimento declarativo, e outro
sub conceitual, também chamado de conhecimento procedural. O nível conceitual abstrai
o ambiente e é capaz de guardar aprendizado em uma espécie de memória. Um diagrama de blocos
que representa esta arquitetura pode ser visto na Figura \ref{fig:cognitive_agent}.
\begin{figure}[ht]
\centering
\includegraphics[width=.5\textwidth]{cognitive_agent}
\caption{Modelo de um agente cognitivo \cite{CLARION}.}
\label{fig:cognitive_agent}
\end{figure}
\subsection{Sistemas Multi-Agentes Híbridos}
Agentes híbridos são entidades que têm o comportamento tanto reativo quanto
pró-ativo. Estes sistemas são implementados de forma a terem diferentes subsistemas
tratando em paralelo a parte reativa e a parte cognitiva. Agentes híbridos são
capazes então de não só reagir somente a estímulos e com isso modelar um comportamento, mas
também de criar um raciocínio coletivo com os outros agentes baseado no sistema onde eles
sem encontram. A Figura \ref{fig:hybrid_agent} mostra uma arquitetura horizontal chamada de
máquina de {\it{Turing}}.
\begin{figure}[ht]
\centering
\includegraphics[width=.8\textwidth]{hybrid_agent}
\caption{Modelo de um agente híbrido \cite{Woolridge}.}
\label{fig:hybrid_agent}
\end{figure}
\section{Agentes Móveis}
Mobilidade é um conceito importante para agentes que estão sendo executados
em aplicações de RSSFs. Este trabalho tem o foco na mobilidade de agentes
entre nós, então este tópico é de fundamental interesse. De uma maneira geral, um
agente móvel é uma entidade capaz de se mover de um nó sensor para outro na
rede. A sua execução pode ser iniciada em um nó e continuar sendo executada
no outro nó a partir do ponto onde parou antes da migração. Esta migração
pode estar carregando o código do agente, ou seja, seu comportamento previamente
definido, e também código e dados, sendo que neste caso o escopo do agente
é transferido junto durante o processo de migração.
Alguns autores chamam os dados de {\it{estado}} do agente \cite{ITINERANT_AGENTS}, e uma
migração carregado somente código é chamada de {\it{migração sem estado}} e uma
migração onde os dados são carregados juntos no processo é chamada de uma migração
com {\it{estado completo}}. Existem outros trabalhos na área de mobilidade de
agentes que dão outro nome a este processo \cite{Agilla}, onde uma migração
do agente sem os dados é chamada de migração {\it{fraca}} enquanto uma migração
do agente com os dados é chamada de migração {\it{forte}}.
Conforme definido em \cite{Lange:1999}, agentes móveis podem trazer diversas
melhorias para a arquitetura de uma RSSF e existem pelo menos sete
boas razões para se usar este tipo de tecnologia.
\begin{enumerate}
\item {\it{Redução da carga na rede}}. Agentes móveis podem ser enviados
à localidades remotas onde há necessidade de se fazer algum tipo de
tarefa, o que pode fazer com que o tráfego na rede seja diminuído
significativamente. Quando um grande volume de dados está sendo armazenado
em algum lugar remoto, é mais fácil e barato enviar a aplicação para onde
estão os dados do que o contrário.
\item {\it{Redução na latência da rede}}. Sistemas com requisitos críticos
de tempo real precisam ter uma rede com baixa latência para que o controle
distribuído consiga ser executado dentro dos requisitos especificados. Agentes
móveis podem resolver o problema de dependência de uma rede com baixa latência
pois eles podem ser enviados para onde está a seção crítica, evitando que
o controle fique dependente da rede.
\item{\it{Encapsulamento de protocolos}}. Novos protocolos estão em constante
desenvolvimento e o núcleo da rede não é alterado na mesma proporção. Como
resultado, protocolos geralmente sofrem de um problema de manutenção de códigos
legados para manter-se uma interface coerente entre as diversas implementações.
Visto que agentes móveis podem se mover entre os nós, eles podem então criar
um novo meio de comunicação que pode ser facilmente alterado.
\item{\it{Autonomia e assincronismo}}. Tarefas que precisam manter uma conexão
aberta entre um dispositivo móvel e uma rede fixa podem ser muito caras
e, por vezes, nem sequer são realizáveis. Agentes podem resolver este problema
encapsulando tarefas que serão enviadas aos nós remotos e então elas passam
a ser executadas autonomamente sem dependência com a rede física evitando
a necessidade de se manter uma conexão entre as duas redes.
\item{\it{Adaptação dinâmica}}. Visto que agentes são entidades que têm
uma certa inteligência, eles podem ler os dados do ambiente e reagir
autonomamente devido a qualquer mudança nos requisitos do sistema.
\item{\it{Heterogeneidade}}. Agentes são dependentes somente do ambiente
onde eles estão sendo executados, e por causa disso, eles podem
prover boas condições para a integração de sistemas.
\item{\it{Tolerância à falhas}}. Agentes podem monitorar o hardware do
sistema que eles estão inseridos e a partir de falhas iminentes se auto
redistribuírem de acordo com a necessidade. A maioria das situações de
falha acontecem muito rapidamente e, às vezes, não existe tempo hábil
para manualmente se trocar a configuração da rede.
\end{enumerate}
\input{tex/jade.tex}
\section{Possíveis Aplicações de Agentes}
Existe uma imensa variedade de aplicações possíveis de SMA citadas na bibliografia
sendo que a maioria das propostas faz uso de {\it{frameworks}} abertos que permitem a fácil
interligação destes SMA. Entre as aplicações possíveis podemos destacar
o uso de veículos aéreos não tripulados em missões críticas \cite{PIGNATON2012,MHAMA2012}, controle
de tráfego \cite{MOBAGENT_TRAFFIC}, automação de sistemas de manufatura \cite{PEIXOTO2012},
controle de desastres \cite{MOBAGENT_DISASTER}, fusão de dados \cite{MOBAGENT_DATAFUSION},
monitoramento de sistemas de potência \cite{MOBAGENT_PW1}, monitoramento de pacientes
\cite{MOBAGENT_HEALTH}, sistemas de controle \cite{MOBAGENT_CONTROL}, análise
de dados \cite{MOBAGENT_DATAANALIS} e também monitoramento de ambientes \cite{Agilla}.
O uso de SMA com agentes móveis aumenta a flexibilidade da RSSF, uma vez que os agentes
podem ser executados em diferentes nós da rede dependendo da aplicação. Estes agentes
podem ser utilizados para configurar a RSSF dinamicamente, sem a necessidade de tê-la
previamente configurada. Este tipo de característica tem aplicações em ambientes
que mudam constantemente de requisitos e necessitam serem programados dinamicamente.
\section{Conclusão}
Os agentes utilizados na computação tem suas origens na psicologia e análise do comportamento
humano. Apesar da definição de agente ser meio difusa, existe um consenso que os
agentes são entidades que possuem uma certa inteligência sendo capazes de perceber e atuar
no meio onde eles se encontram. Os agentes são caracterizados como
entidades autônomas, ou seja, agentes são capazes de atuar no meio
sem intervenção humana. Agentes devem também ser capazes de se comunicar com outros agentes através
de uma linguagem comum, o que caracteriza a habilidade social dos agentes. Agentes ainda
devem ser reativos e pró-ativos, não só respondendo aos estímulos que lhes são conferidos mas
também sendo capazes de tomar algum tipo de iniciativa.
Os agentes podem ainda ser móveis, sendo capazes de migrar entre diferentes nós em uma rede. Agentes
móveis podem migrar entre os nodos da rede, carregando consigo os dados associados ao
escopo, bem como seus comportamentos. Agentes móveis podem ser usados para levar
tarefas a nós que estão fisicamente distantes e também podem servir como uma maneira de reconfigurar
a rede com novas tarefas, fazendo com que elas migrem entre os nós baseados nos requisitos
da rede. Agentes podem agregar diversas tarefas fazendo que durante a sua migração, diversas configurações
sejam enviadas junto ao agente que está se deslocando.
O Jade é um {\it{framework}} utilizado na criação de aplicações com agentes móveis. A utilização
do Jade como plataforma de agentes traz como benefícios a implementação de uma linguagem
de comunicação entre os agentes compatível com as normas estabelecidas pela FIPA. O Jade
é uma plataforma de interesse neste trabalho pois ela abstrai a comunicação entre os agentes
em uma linguagem normatizada.
O uso de um {\it{framework}} de desenvolvimento de agentes faz com que se tenha um ambiente
padrão de desenvolvimento e também garante que os agentes estarão falando uma linguagem em comum. Uma
vantagem de se usar o Jade para desenvolvimento do SMA é que ele fornece um ambiente
onde existe uma integração natural entre os domínios dos agentes, sendo que o
sendo que os programadores dos agentes não necessitam ter um conhecimento prévio. Isso faz
com que o aprendizado do Jade seja muito rápido, pois só exige conhecimentos da linguagem java.
Jump to Line
Something went wrong with that request. Please try again.