Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

O que são modelos baseados em agentes?

1 Resposta

+2 votos
respondida Set 9, 2015 por danielcajueiro (5,641 pontos)  

Modelos baseados em agentes são modelos computacionais que descrevem "mundos artificiais" cuja dinâmica depende das características individuais dos agentes e da interação desses agentes envolvidos. Normalmente esses modelos são usados para modelar sistemas com a dinâmica complexa, que são difíceis de serem modelados formalmente usando modelos matemáticos justamente por causa da heterogeneidade (das características dos agentes) e interação (entre os agentes).

Quais as vantagens desses modelos?

A maior vantagem é a flexibilidade. Em teoria, não existem restrições para o comportamento individual dos agentes e também da interação entre eles. Essa característica os difere de modelos matemáticos convencionais cuja utilidade prática pode depender da existência de solução formal para o problema.

Uma outra característica que é tida como vantagem é a chamada bottom-up formulação que é usada nesses modelos. Ou seja, formula-se cuidadosamente as entidades mais básicas do modelo como, por exemplo, os agentes e também a forma de interação dos agentes para estudar as características emergentes desse modelo.

Quais as maiores desvantagens desses modelos?

Existem muitas críticas em relação as propriedades de convergência. Mais precisamente, existem preocupações se alguns resultados de simulações ocorreram por sorte ou porque são os resultados dos modelos. No meu ponto de vista, se o modelo for "corretamente" formulado, muitas dessas críticas são infundadas, pois estamos acostumados a aceitar (e também já estão provados) vários resultados advindos de simulações monte-carlo. Adicionalmente, existem vários resultados que lidam com convergência estocástica e que são usados em problemas de otimização estocástica dinâmica, que podem ser usados nesse contexto.

Você pode me dar um exemplo de um modelo baseado em agentes?

Um dos exemplos mais simples e também mais interessantes desses modelos é o chamado Jogo da Minoria, que é uma versão computacional do chamado problema do Bar El Farol. De forma simplificada, supõe-se que toda sexta-feira há um show no Bar El Farol apresentado na figura acima. O local tem apenas 50 assentos e a população de interessados no show é de 101 pessoas, que adoram o tipo de música apresentada. Cada indivíduo tem apenas duas possibilidades ir ou não ir. De acordo com o problema existem duas boas decisões: (1) Ir quando o número de pessoas que foi é menor ou igual a 50 pessoas (número de assentos); (2) Ficar em casa quando o número de pessoas que foi ao bar foi maior que 50 pessoas. Por outro lado, existem duas decisões ruins: (1) Ir ao bar quando o número de pessoas que foi for maior que 50 pessoas; (2) Ficar em casa quando o número de pessoas que foi ao bar foi menor que 50. Supõe-se que não existe comunicação entre os interessados e a única informação disponível é se deveria ter se ido nas semanas anteriores ou não. Para ficar mais preciso, supõe-se que cada indivíduo lembra-se apenas, se devia ter ido ou não, das \(M\) semanas anteriores. \(M\) pode ser chamada de memória do agente e simplificadamente ser igual para todos os indivíduos.

Pergunta-se:

Eu devo ou não ir ao bar? Existe um modelo que dá uma resposta ótima a esse problema?

Vamos supor que sim! Suponha que existe um modelo que dá uma resposta ótima sobre esse assunto. Então suponha que todos os indivíduos tomarão sua decisão de ir ou não ao bar tomando como base esse modelo. Logo, ou todos irão ao bar ou todos ficarão em casa.

Ou seja, não existe um modelo ótimo determinístico que dá a resposta.

Vamos supor agora que uma forma de lidar com esse problema seria lançar uma moeda. Ou seja, cada indivíduo separamente pode lançar uma moeda e se cair cara, ele vai ao bar. Em caso contrário, ele fica em casa. Legal!! Na média, 50% dos indivíduos vão ao bar e 50% dos indivíduos ficam em casa. Será que essa é a melhor solução ao problema? Ou seja, a melhor solução ao problema é dada por um indivíduo "burro" que toma decisões jogando moedas?

Essa solução é eficiente? Como medir a eficiência dessa solução?

Se na média essa solução acerta, soluções mais eficientes seriam aquelas que possuem menor variância. Ou seja, quanto menor a dispersão em torno da média dos indivíduos que vão ao bar, melhor o bar estará sendo usado!

Podemos buscar uma solução mais eficiente que aquela do indivíduo que joga moedas?

E se cada um analizasse os dados e aprendesse com o passado e de alguma forma busca-se cooperar indo no bar no dia que os outros fiquem em casa e ficando em casa no dia em que os outros prefiram ir ao bar.

Uma solução muito interessante fornecida por essa versão do jogo da minoria é que os indivíduos (se forem inteligentes o suficiente) podem aprender uma solução desse tipo de forma muito simples. Supõe-se que como na vida real cada indivíduo tem apenas um pequeno número de estratégias e aquelas que foram bem sucedidas no passado serão mais usadas no futuro. A inteligência aqui é dada pelo tamanho da memória do agente apenas.

A figura abaixo apresenta um gráfico onde cada ponto representa a eficiência do jogo da minoria associada a inteligência dos agentes. Note que nessa figura são encontrados três regimes diferentes:

A imagem será apresentada aqui.

a) Para valores baixos de inteligência (memória), os agentes se comportariam pior do que tomassem decisões aleatórias. Isso ocorre pois dado ao valor pequeno de memória - existem poucas estratégias disponíveis e dessa forma vários agentes (por falta de opção) utilizam as mesmas estratégias.

b) Quando inteligência (memória) aumenta -- o número de estratégias também aumenta até um valor crítico onde ocorre uma transição de fase. Essa situação mostra que agentes inteligentes podem se auto-organizar levando a uma alocação ótima de recursos.

c) Se inteligência (memória) aumenta mais ainda, o número de estratégias aumenta a um ponto que os agentes parecem estar se comportando de forma aleatória (como se lançassem moedas). Essa situação não é muito realística, pois os agentes precisariam ter uma memória muito grande para se lembrar de muitos eventos passados.

A implementação completa desse jogo esta apresentada aqui.

Existem referências importantes sobre modelos baseados em agentes?

Sim, dê uma olhada aqui!

Existem linguagens que são mais adequadas para a implementação de modelos baseados em agentes?

Em teoria, qualquer linguagem pode ser usada. Entretanto, a resposta é SIM!

No caso geral, a linguagem mais adequada ainda é C++. Por que? C++ é muito rápida e possui um excelente arcabouço para programação orientada a objeto, que será necessário em modelos mais complexos. Se rapidez não for um problema, eu sugiro fortemente o Python, pela legibilidade e qualidade da estrutura de orientação a objeto.

No caso geral, não acho matlab e R muito adequados, justamente por não terem uma estrutura adequada de programação a objeto e também serem lentos. Entretanto, para problemas mais simples eles podem ser usados.

Uma opção interessante é usar o NetLogo ou Repast. Ambas linguagens foram construídas para trabalhar com modelos baseados em agentes. Entretanto, dependendo da estrutura e da inovação que você esteja trazendo no seu modelo, pode ser que essas linguagens apresentem restrições.

...