Universidade Federal de PernambucoGraduação em Ciência da Computação
Centro de Informática
Um estudo de estratégias para coleta de recursos em ambientes multiagente
Sergio Schechtman Sette <[email protected]>
Orientador: Geber Lisboa Ramalho ([email protected])
Recife, Junho de 2008
“640K of memory should be enough for anybody”
— Bill Gates
“All your base are belong to us”
— CATS
Agradecimentos
Gostaria de agradecer primeiramente a minha família, meus pais, meus
irmãos e meus avós, devo a eles a pessoa que sou hoje, e em especial ao meu
sobrinho de dois anos e meio, que sempre entendia quando eu falava “tenho
que trabalhar” interrompendo a brincadeira, respondendo “tá bom tio Serginho”
Agradeço a meus amigos e colegas, por me apoiarem sempre e
compartilharem os momentos mais difíceis, como a elaboração deste trabalho,
e principalmente àqueles que acreditaram que eu estava vivo, mesmo sem dar
notícias por meses.
Também agradeço a meu orientador Geber Ramalho por me dar a
oportunidade de realizar este trabalho, e me apoiar até nas horas mais críticas
de sua elaboração.
Gostaria de fazer um agradecimento em especial ao Sport Club do
Recife, por me proporcionar uma grande alegria este ano, com a conquista da
Copa Do Brasil.
Resumo
Existem diversos tipos de jogos de estratégia em tempo real (RTS). Na
maioria destes jogos, existe a tarefa de coleta de recursos (foraging). Esta
tarefa é executada em ambientes multiagente. Este cenário tem sido um dos
principais alvos dos estudos de inteligência artificial em ambientes multiagente.
Existem grandes desafios neste tipo de ambiente, como a escolha do caminho
(path-finding), a exploração do mapa, a interação e coordenação de agentes, e
as decisões de macro-estratégia.
Este trabalho tem como objetivo detectar e analisar problemas
encontrados na tarefa de coleta de recursos, procurando criar soluções para os
problemas encontrados, formando uma estratégia eficiente de coleta de
recursos. Para isto, será utilizado um ambiente de simulação, onde os
resultados podem ser testados e comparados com outras abordagens.
Sumário
1 Introdução...................................................................................................8
2 Jogos de Estratégia...................................................................................9
2.1 Tipos de jogos de estratégia..................................................................9
2.1.1 Turn based game............................................................................9
2.1.2 Turn based tactics.........................................................................10
2.1.3 Real time strategy..........................................................................11
2.2 Conclusão............................................................................................13
3 Coleta de recursos multiagente..............................................................15
3.1 Os problemas.......................................................................................15
3.1.1 Coordenação.................................................................................15
3.1.2 PathFinding...................................................................................15
3.1.3 Considerações para a escolha do melhor recurso........................17
3.2 Estado da arte......................................................................................20
3.2.1 Optimal Foraging Theory...............................................................20
3.2.2 jcmjWorker.....................................................................................20
4 Estratégia de coleta proposta.................................................................21
4.1 PathFinding..........................................................................................21
4.2 Escolha da melhor mina.......................................................................22
4.2.1 Distância........................................................................................22
4.2.2 Regiões.........................................................................................23
4.2.3 Função de utilidade.......................................................................23
4.3 Agente explorador................................................................................23
4.4 Máquina de Estados.............................................................................24
5 Resultados Obtidos.................................................................................26
5.1 Simuladores.........................................................................................26
5.1.1 ORTS.............................................................................................26
5.1.2 JaRTS............................................................................................27
5.1.3 RTSCup.........................................................................................28
5.1.4 Simulador escolhido......................................................................29
5.2 Descrição do ambiente.........................................................................29
5.3 Resultados Obtidos..............................................................................30
5.3.1 Agentes simulados........................................................................30
6 Conclusão.................................................................................................38
6.1 Problemas encontrados.......................................................................38
6.2 Trabalhos Futuros................................................................................39
Referências......................................................................................................40
Lista de FigurasFIGURA 2.1 WAR DE TABULEIRO......................................................................................................9
FIGURA 2.2 CIVILIZATION IV.........................................................................................................10
FIGURA 2.3 X-COM UFO DEFENSE...............................................................................................10
FIGURA 2.4 FINAL FANTASY TACTICS............................................................................................11
FIGURA 2.5STARCRAFT................................................................................................................13
FIGURA 2.6 COMPANY OF HEROES................................................................................................13
FIGURA 3.1 A* FUNCIONANDO.......................................................................................................16
FIGURA 3.2 COLISÃO ENTRE AGENTES...........................................................................................17
FIGURA 3.3 DISTÂNCIA................................................................................................................. 17
FIGURA 3.4 ESTUDO DE ACESSIBILIDADE/DISPONIBILIDADE 1..........................................................19
FIGURA 3.5 ESTUDO DE ACESSIBILIDADE/DISPONIBILIDADE 2..........................................................19
FIGURA 3.6 ESTUDO DE ACESSIBILIDADE/DISPONIBILIDADE 3..........................................................19
FIGURA 3.7 ESTUDO DE ACESSIBILIDADE/DISPONIBILIDADE 4..........................................................19
FIGURA 4.1 MÁQUINA DE ESTADOS................................................................................................25
FIGURA 5.1 ORTS....................................................................................................................... 27
FIGURA 5.2 GAME1 NO JARTS.....................................................................................................28
FIGURA 5.3 TRABALHADOR...........................................................................................................29
FIGURA 5.4 COMMAND CENTER.....................................................................................................29
FIGURA 5.5 RECURSO.................................................................................................................. 30
FIGURA 5.6 OBSTÁCULO...............................................................................................................30
FIGURA 5.7 MAPA EXPERIMENTO 1................................................................................................31
FIGURA 5.8 MAPA EXPERIMENTO 2................................................................................................32
FIGURA 5.9 MAPA EXPERIMENTO 3................................................................................................33
FIGURA 5.10 MAPA EXPERIMENTO 4..............................................................................................34
FIGURA 5.11 MAPA EXPERIMENTO 5..............................................................................................35
FIGURA 5.12 ZIGWORKER............................................................................................................36
FIGURA 5.13 CLOSERWORKER.....................................................................................................37
Lista de Tabelas
TABELA 5.1 RESULTADOS DO EXPERIMENTO 1...............................................................................31
TABELA 5.2 RESULTADOS DO EXPERIMENTO 2...............................................................................32
TABELA 5.3 RESULTADOS DO EXPERIMENTO 3...............................................................................33
TABELA 5.4 RESULTADOS DO EXPERIMENTO 4...............................................................................34
TABELA 5.5 RESULTADOS DO EXPERIMENTO 5...............................................................................35
1 Introdução
Jogos de estratégia são jogos que possuem como fator determinante do
resultado, a capacidade do jogador de tomar decisões. O exemplo mais famoso
de um jogo de estratégia é o Xadrez, criado no século XV, onde os jogadores
mais experientes não levam em consideração somente o estado atual do
tabuleiro para sua jogada, mas sim um plano de longo prazo, considerando
futuros cenários do tabuleiro.
Os jogos de estratégia de computadores, ou vídeo games, podem ser
classificados em jogos baseados em turno, também conhecidos como TBS
(Turn-based strategy), ou jogos em tempo real, também conhecidos como RTS
(Real-time Strategy), sendo os RTS os mais populares. Estes jogos podem ser
jogados na modalidade multiplayer onde dois ou mais jogadores humanos se
enfrentam, ou na modalidade singleplayer, onde o jogador humano tem como
adversário o computador.
Nestes ambientes, existem diversas tarefas que precisam ser
automatizadas. Estas tarefas podem ser desde a decisão da macro-estratégia
a ser adotada, até a escolha do caminho que um agente utilizará para sair de
um ponto A até um ponto B.
2 Jogos de Estratégia
Neste capítulo inicialmente serão apresentados os princípios básicos de
jogos de estratégia, mostrando os seus principais tipos e características, com
um foco maior em jogos RTS.
2.1 Tipos de jogos de estratégia
2.1.1 Turn based gameEm jogos TBS, possuem turnos, ou rodadas, onde cada jogador tem
tempo para analisar o jogo, tomar decisões de estratégia, para então realizar
as ações.
Um exemplo de um jogo TBS simples é o jogo de tabuleiro War, que
possuí inúmeras adaptações para computador. O jogo War envolve apenas
tarefas básicas como movimentação de tropas e ataque de territórios, por isto
no War, um turno geralmente leva entre 2 a 10 minutos.
Em jogos mais complexos, como Civilization IV, existem inúmeras
variáveis a serem analisadas que vão levar a um conjunto imenso de ações
executadas. Esta complexidade de ações vai da criação e movimentação de
tropas, ao gerenciamento individual de cada cidade, até às negociações
diplomáticas entre os jogadores. Um turno em Civilization IV pode levar até 30
minutos.
Figura 2.1 War de tabuleiro
Figura 2.2 A tela de gerenciamento de uma cidade no jogo Civilization IV, mostrando a complexidade elevada do jogo
2.1.2 Turn based tacticsOs jogos TBT possuem o mesmo sistema de turnos dos jogos TBS,
porém são focados na parte tática. O jogador começa com um número fixo de
tropas, e utilizando apenas elas, sem direito de criação de tropas adicionais,
deve vencer o adversário. Um dos exemplos mais famosos deste estilo é o jogo
X-COM Ufo Defense.
Figura 2.3X-COM Ufo Defense. O jogador controla seus soldados para derrotar os alienígenas invasores.
Figura 2.4 Final Fantasy Tactics. Uma mistura de RPG com TBT
2.1.3 Real time strategyÉ o gênero mais popular de jogos de estratégias. Nestes jogos,
enquanto o jogador está pensando, o jogo está rolando, logo as decisões
precisam ser tomadas o mais rápido possível.
Estes jogos por mais diferente que sejam, possuem as mesmas etapas
básicas que todos RTS. Estas etapas são as seguintes:
Coleta de Recursos: Esta tarefa é realizada por unidades específicas,
conhecidas como trabalhadores. Esta coleta de recursos precisa ser
feita do modo mais eficiente possível, já que o jogador que coleta mais
recursos tem uma vantagem enorme sobre seu oponente, pois pode
criar mais construções, mais tropas, e até mais trabalhadores. Em jogos
como Dune2 existe apenas um tipo de recurso, chamado de credits,
enquanto em jogos como Age of Mythology, existem 4 tipos de recursos:
comida, madeira, ouro, fé. Geralmente um trabalhador pode coletar
qualquer tipo de recurso, mas em jogos como Warcraft III, onde existem
dois tipos de recursos, madeira e ouro, existe uma facção que possui um
tipo de trabalhador que coleta somente ouro, e outro tipo de trabalhador
que coleta somente madeira.
Criação de Construções e Unidades: Nesta tarefa, que geralmente
também é realizada pelos trabalhadores, são criadas as construções e
unidades. Cada construção tem seu papel específico, sendo os
principais: Deposito de recursos, Criação de unidades, Pesquisa de
novas tecnologias. As unidades também possuem funções diferentes.
Os trabalhadores são responsáveis pela coleta de recursos e criação de
construções, unidades, como soldados e tanques de guerra, têm como
função defender a base ou atacar a base do adversário.
Pesquisa de Tecnologias: Não se vence uma partida criando apenas as
unidades básicas, é preciso evoluir, criando unidades mais avançadas
ou melhorando as unidades atuais. Uma unidade de nível de tecnologia
superior geralmente possui um melhor custo-benefício que uma unidade
menos avançada.
Exploração: O jogador não possui visão completa do mapa, apenas a
visão das suas unidades e de suas construções. É importante sempre
enviar unidades para explorar o ambiente, inclusive o adversário, para
poder se adaptar à tática dele. Em alguns jogos como Age of Empires II,
existe unidades específicas para exploração. Estas unidades possuem
maior velocidade e maior campo de visão que as demais.
Combate: O objetivo dos RTS é derrotar o adversário. Em alguns jogos
isto significa destruir todas as unidades adversárias, enquanto em outros
jogos, é necessário destruir apenas a construção principal (command
center) do adversário. Para realizar esta etapa com sucesso, todas as
etapas demonstradas anteriormente precisam ser executadas o melhor
possível. Na maioria dos RTS, cada unidade possui pontos fortes e
fraquezas. Por exemplo, em Age of Empires II, arqueiros são bons
contra infantaria, que por sua vez é eficiente contra cavaleiros, que
derrotam facilmente arqueiros. Cabe ao jogador adaptar seu exercito de
acordo com o exercito adversário.
Figura 2.5Starcraft. Um dos mais jogados RTS de todos os tempos
Figura 2.6 Company of Heroes. Um dos mais modernos RTS atualmente
2.2 ConclusãoDevo criar mais trabalhadores para coletar mais recursos, ou devo
fortificar minhas defesas, pois estou vulnerável à ataques adversários? Ataco
logo no início pegando o inimigo desprevenido, ou realizo pesquisas para
derrotar o adversário tecnologicamente? Perguntas como estas que tornam o
universo dos jogos de estratégia tão fascinante. Enquanto no Xadrez, se
consegue criar IA’s que derrotam os mais experientes jogadores, atualmente
no mundo dos RTS, por mais complexa que seja a IA, um jogador experiente
consegue vencê-la facilmente, devido a grande complexidade dos jogos.
Conseqüentemente, os jogos RTS com maior sucesso são oferecem um bom
sistema multiplayer, como Starcraft e Warcraft III.
Historicamente, game designers têm criado a ilusão de inteligência
através de scripts. O problema dos scripts é que para serem efetivos, eles
devem ser complexos, mas a complexidade acaba criando fraquezas e
previsibilidade. Eventualmente um jogador humano será capaz de reconhecer e
se aproveitar destas fraquezas, destruindo a ilusão.[4]
Jogos RTS oferecem uma grande variedade de problemas fundamentais
de IA, ao contrario de outros gêneros de jogos estudados pela comunidade de
IA até agora. [5]
3 Coleta de recursos multiagente
Como foi visto no capítulo anterior, a coleta de recursos é uma das
etapas mais importantes nos jogos RTS. Este capítulo mostrará alguns dos
principais desafios presentes na área de coleta de recursos multiagente.
3.1 Os problemas
3.1.1 CoordenaçãoEm um ambiente multiagente, cada agente deve se coordenar com os
outros agentes, procurando a melhor solução para o conjunto, não para o
individual. Existem casos onde tomar a decisão X seria a melhor escolha para
o agente A, mas isto pode atrapalhar os planos do agente B, fazendo com que
a produtividade total seja menor. O controle de organização do agente deve
estar presente em todas as etapas de decisão do agente, desde a escolha do
caminho, até a decisão de que recurso o agente escolherá para coletar.
3.1.2 PathFindingPathfinding é o termo usado pela maioria das aplicações para achar o
melhor caminho do ponto A ao ponto B. [9] O trabalhador precisa saber tanto o
caminho que deve ser percorrido até chegar ao recurso a ser coletado, como o
caminho de retorno até o deposito de recursos, esta tarefa é realizada pelos
algoritmos de pathfinding.
3.1.2.1 A*Dos algoritmos de pathfinding, o mais utilizado em jogos é o A*, por ser
um algoritmo simples, eficiente, e completo, ou seja, se existir um caminho do
ponto de origem ao ponto de destino, ele irá encontrá-lo. Outra vantagem do A*
é o tratamento a terrenos onde o agente não pode passar, como obstáculos,
minas, ou outros agentes. Também é possível neste algoritmo, determinar
locais onde o custo de passagem é maior, como regiões montanhosas, ou
menor, como estradas.
Figura 3.7 A* funcionando. O algoritmo evita os obstáculos (quadrados azuis) e cria uma rota (círculos vermelhos) do ponto de origem (quadrado verde) ao ponto de destino
(quadrado vermelho)
3.1.2.2 A* colaborativoO algoritmo A* funciona bem para ambientes monoagentes, mas em
ambientes multiagentes, a colisão precisa também considerar a presença de
outros agentes no ambiente. Quando um agente A tenta ir para um ponto X, e o
agente B tenta ir para o ponto X no mesmo instante, ocorre uma colisão. Este
cenário está ilustrado na figura 3.2. Para resolver este problema, foi criado o A*
colaborativo. [6] Esta variante do A* cria um sistema de reservas, onde após
checar se existe algum elemento que impossibilite a passagem por aquele
ponto, o algoritmo verifica se algum outro agente reservou aquela localidade
naquele instante. Quando um agente consegue achar um caminho sem
colisões, este caminho é reservado àquele agente durante sua passagem.
Figura 3.8 O agente 1 (em azul) calcula seu caminho (em cinza) para chegar ao recurso 1 (em amarelo), porém ele entra em colisão no ponto marcado em vermelho com o agente
2 que estava tentando chegar ao recurso 2
3.1.3 Considerações para a escolha do melhor recursoO principal problema na tarefa de coleta de recursos é escolher que
recurso um agente deve ir. Vários fatores precisam ser considerados nesta
decisão, Neste tópico, serão apresentados alguns dos fatores considerados
para esta decisão.
3.1.3.1 DistânciaPara sabermos que mina está mais próxima, precisamos calcular a
distância do agente, ou do deposito de recursos, até o recurso, e precisamos
fazer isto eficientemente. Uma opção para calcular a distância é utilizar a
Distância Euclideana, ou a Distância de Manhatan, porém elas não consideram
obstáculos, e em situações como a da figura 3.3, o agente não se comportará
bem.
Figura 3.9 O recurso 1 teria a menor Distância Euclideana, porém devido aos obstáculos, o agente levaria menos tempo para chegar ao recurso 2
Outra opção é executar um A* para cada recurso, porém em ambientes
com muitos recursos, isto se tornaria computacionalmente custoso, inviável em
ambientes de tempo real, onde cada agente possui um tempo curto para
executar cada ação.
3.1.3.2 DisponibilidadeNão importa o quão perto um recurso esteja se não existe uma posição
onde um agente consegue alcançá-lo. Para saber se um recurso está
disponível, é calculado o seu número de vagas, a quantidade máxima de
agentes que podem coletar um mesmo recurso num determinado momento.
Este valor varia de zero, quando todas as localidades ao redor do recurso
estão ocupadas por um obstáculo, um agente, ou outra mina, até oito, quando
o recurso está totalmente livre.
3.1.3.3 AcessibilidadeAté agora sabemos que temos que escolher o recurso mais próximo, e
somente se houver espaço livre para um agente iniciar a coleta. Mas isto não é
suficiente. Ainda existe outro importante fator a ser considerado: a
acessibilidade de uma mina. Este fator pode ser confundido com a
disponibilidade, pois os dois estão relacionados, já que um recurso acessível
tem grande chance de ser um recurso bem disponível. A acessibilidade leva
em consideração tanto a disponibilidade como o caminho a ser percorrido pelo
agente entre o deposito de recursos e o recurso. Recursos pouco acessíveis
possuem caminhos onde há grande probabilidade de colisão entre agentes.
Podemos imaginar uma rua de mão dupla onde só passa um carro, quando
outro carro vem em sentido contrário, algum dos dois carros precisa voltar até o
início do caminho para dar passagem ao primeiro carro. Esta situação se
agravaria mais ainda, se aparecer um terceiro carro atrás do segundo carro. As
figuras 3.4, 3.5 e 3.6 demonstram diversos cenários envolvendo disponibilidade
e acessibilidade e a figura 3.7 demonstra um dos problemas causados pela
baixa acessibilidade de um recurso.
Figura 3.10O recurso possui disponibilidade
mínima, porém a acessibilidade é
boa
Figura 3.11O Recurso possuí
disponibilidade máxima, mas o túnel
faz com que sua acessibilidade seja
baixa
Figura 3.12O recurso possuí disponibilidade
mínima e acessibilidade baixa.
Figura 3.13O agente 2 está
impedindo o agente 1 de chegar no
recurso
3.2 Estado da arteExiste uma grande quantidade de artigos na área de coleta de recursos,
porém a maioria se encontra na área de robótica. Estes artigos têm como foco
a parte da movimentação e sensores dos robôs, falando muito pouco sobre a
estratégia de coleta.
3.2.1 Optimal Foraging TheoryA Optimal Foraging Theory [13] é uma teoria criada para explicar o
comportamento de animais que fazem foraging (coleta de alimentos), como
formigas. Segundo esta teoria, os animais tentam maximizar a formula E/(h+s) onde E é a quantidade de energia de um alimento, h é o tempo de captura da
presa, e s é o tempo necessário para busca. Podemos aplicar esta teoria na
coleta de recursos multiagente, fazendo com que os trabalhadores procurem a
mina mais próxima, minimizando o h, carreguem sempre a maior quantidade
de recursos, maximizando o E, e maximizem a busca, quando os agentes
possuem campo de visão limitado, minimizando o s.
3.2.2 jcmjWorkerApós um estudo sobre estratégias de foraging, José Carlos Moura [2]
criou uma estratégia de coleta baseada na Optimal Foraging Theory. Em sua
estratégia, os agentes procuravam os recursos com menor distância,
considerando também o tempo que algum possível agente que já esteja
minerando aquele recurso. Nesta implementação, os agentes utilizavam o A*
simples para movimentação, e em caso de colisão, os agentes esperam cinco
turnos, se a colisão persistir, novas rotas são calculadas.
O jcmjWorker participou da competição da disciplina de Agentes
Autônomos na Universidade Federal de Pernambuco. Nesta competição, foi
utilizado o simulador JaRTS. O agente se saiu bem em mapas onde os
recursos estavam perto do local de depósito, porém apresentou resultados
fracos em mapas onde havia espécies de corredores, onde ocorriam muitas
colisões.
4 Estratégia de coleta proposta
A proposta de estratégia deve levar em consideração os problemas
apresentados no capítulo anterior. Inicialmente os agentes foram considerados
iguais uns aos outros, possuindo a mesma hierarquia, e as mesmas funções.
(...) Ele precisa agir de maneira autônoma, se um agente deixar de existir os
outros devem continuar a tarefa, devido ao fato que é um jogo RTS, poderiam
existir inimigos que poderiam matar os agentes. Se houvesse alguma espécie
de processamento centralizado em algum agente, se esse agente fosse
destruído o processamento ficaria comprometido. [2] Porém, como experiência,
foi criado um cenário onde existia um agente explorador. O agente proposto foi
batizado de ZigWorker.
4.1 PathFindingPara diminuir o custo do algoritmo de pathfinding, o mapa foi dividido em
“tiles” de 20 por 20 pixels, e para simplificar o tratamento de colisões o agente
só poderá andar na horizontal ou na vertical.
O algoritmo de pathfinding utilizado foi o A* colaborativo, explicado no
capitulo 3. O agente reserva o caminho de ida à mina e o local de coleta pela
quantidade de turnos que vai permanecer nesta posição. Quando o agente está
com sua capacidade máxima de recursos, ele reserva o caminho de volta até o
command center.
Inicialmente ocorreu um problema no pathfinding. Quando um agente
passava mais de um turno realizando o A*, a reserva que ele fez perdia a
validade, pois o turno já havia passado. Para evitar este problema, cada agente
passa a guardar uma nova informação, chamada de delay, representando o
tempo previsto para a execução do pathfinding. Este delay é atualizado de
acordo com as seguintes situações:
O agente executou o pathfinding no tempo previsto. Neste caso, o
delay não é alterado.
O agente executou o pathfinding, mas levou mais tempo que o
previsto. O delay do agente é atualizado de acordo com o tempo
que o pathfinding foi executado.
O agente executou o pathfinding, mas levou menos tempo que o
previsto. Como o caso anterior, o delay do agente é atualizado de
acordo com o tempo que o pathfinding foi executado.
Com esta nova informação, o agente agora pode reservar um caminho
que só executará no futuro, eliminando o problema da perda de validade das
reservas, e melhorando a performance, pois agora o agente não precisa mais
recalcular todo o caminho para reservar novamente.
4.2 Escolha da melhor mina
4.2.1 DistânciaComo o algoritmo A* é um algoritmo custoso, a distância utilizada foi a
distância de Manhatan. Porém, como ela não é uma distância real, foi
implementado um sistema de atualização de distância. Este sistema faz com
que cada agente ao visitar uma mina, atualize a distância da mina de acordo
com a seguinte formula: distância = (1 – taxa de aprendizagem) * distância
antiga + (custo atual * taxa de aprendizagem), onde distância é o novo valor
da distância daquela mina, distância antiga é o valor antigo da distância
daquela mina, custo atual é a quantidade de movimentos que o agente
realizou até chegar àquela mina, e taxa de aprendizagem é um valor para
evitar que casos extremos acabem influenciando totalmente o valor da
distância. Este valor também é alterado da mesma forma, quando um agente
retorna ao command center, atualizando assim a mina de acordo com o
caminho de ida e de volta.
O algoritmo apresentado além de manter uma distância mais próxima da
real, também trata do problema de engarrafamento de agentes, já que a
variável custo atual também leva em consideração o tempo em que os
agentes ficaram parados esperando o caminho ficar livre.
4.2.2 RegiõesAssumindo que minas adjacentes possuem acessibilidade similar, Foi
criado o conceito de região, que nada mais é que um agrupamento de minas
adjacentes. As correções feitas na distância da mina são propagadas para as
minas da mesma região, logo se uma mina possui acessibilidade muito baixa,
os agentes não terão que visitar as outras minas da mesma região para saber
que aquela região possui baixa acessibilidade.
4.2.3 Função de utilidadeA função de utilidade tem como objetivo atribuir um score a uma mina.
Esta função tem como entrada as seguintes variáveis:
Distância do command center à mina: Esta é a distância que é
atualizada pelo algoritmo apresentado anteriormente, portanto está é a
variável mais importante e por isto possui o maior peso, já que este valor
representa também todas as considerações do algoritmo de
aprendizagem.
Distância do agente à mina: Esta é a distância de Manhatan do agente à
mina. Este valor é considerado para casos onde a mina foi exaurida e o
agente ainda não está carregando o máximo de recursos possível, logo
ele precisa procurar outra mina levando em conta sua posição atual.
Número de agentes da mina: Quanto mais agentes numa mina, maior o
engarrafamento daquela área. Este valor é utilizado como medida
preventiva, já que o algoritmo de aprendizagem trata bem do problema
de engarrafamento.
4.3 Agente exploradorComo foi visto anteriormente, a distância de Manhatan representa a
menor distância possível entre dois pontos, sem levar em consideração os
obstáculos. Como esta distância é otimista, devido à natureza do algoritmo de
aprendizagem, os agentes inicialmente atualizam a distância da mina para uma
distância maior. Com isto, as regiões que ainda não foram exploradas, mas
possuíam distância menor, serão os próximos alvos dos agentes. Em alguns
casos isto acaba atrapalhando, pois vários agentes acabam indo a essas
regiões, antes de perceberem que é uma região ruim.
Para evitar este tipo de problema, foi criado o conceito de um agente
explorador. Este agente procura sempre escolher as regiões menos visitadas,
pois são as regiões que possuíram o menor número de atualizações de
distância. Ele também utiliza uma taxa de aprendizagem, do algoritmo de
aprendizagem, maior que a dos agentes comuns.
4.4 Máquina de EstadosO agente é coordenado por uma máquina de estados, onde cada estado
será descrito a seguir:
FIND RESOURCE: É o estado inicial do agente. Neste estado o agente
procura a melhor mina de acordo com a função de utilidade
implementada. Esta mina é armazenada na memória do agente. Se não
houver mais minas disponíveis, o agente entra no estado IDLE, caso
contrário, ele entra no estado MOVE TO MINE.
MOVE TO MINE: O agente executa o algoritmo de pathfinding e se
move em direção à mina armazenada pelo estado FIND RESOURCE
até chegar no local de mineração, onde ele entra no estado
GATHERING.
GATHERING: Neste estado o agente executa a ação de coleta na mina
armazenada em sua memória. Se a mina se esgotou, e o agente ainda
não está cheio, o agente passa para o estado FIND RESOURCE, se o
agente já estiver cheio, ele passa para o estado MOVE TO COMMAND
CENTER.
MOVE TO CC: O agente executa o algoritmo de pathfinding e se move
em direção ao command center. Quando o agente atinge o command
center, ele passa para o estado de DELIVER.
DELIVER: Neste estado o agente entrega os recursos no command
center, e entra novamente no estado FIND RESOURCE.
IDLE: Este estado foi criado para evitar sobrecarga de execuções do
pathfinding. Nele, o agente fica parado por 5 turnos, quando entra
novamente no estado FIND RESOURCE.
A figura 4.1 mostra o diagrama da maquina de estados.
Figura 4.14 Máquina de estados
5 Experimentos e resultados
Para avaliar o desempenho do agente proposto, foi implementada uma
versão deste agente em JAVA
5.1 SimuladoresSimuladores são de grande importância para o processo de
desenvolvimento de IA para jogos, pois eles fornecem um ambiente permitindo
que a IA seja ser testada, além de permitir a comparação dos resultados
obtidos entre IA’s diferentes.
5.1.1 ORTSA falta de interfaces AI até em jogos RTS atuais, deixa difícil conduzir
pesquisas de AI em tempo real nesta área e para comparar a força do sistema
de IA resultante com humanos experientes. Para resolver este problema, nós
criamos um projeto open source para programação de jogos RTS [5]
O ORTS (Open Real-Time Strategy) é um simulador de RTS open
source desenvolvido por Michael Buro da Universidade de Alberta no Canadá.
Ele possui três categorias de jogo
Game1: É o jogo de mineração. O jogador possui 20 trabalhadores e um
command center. O jogador possui acesso completo ao mapa, podendo
saber onde todas unidades estão.
Game2: Este jogo simula a situação de combate. Dois times
adversários, cada um possuindo 50 tanques e 5 command centers,
entram em guerra num cenário. O time que destruir o maior número de
command centers adversários vence a partida.
Game3: Esta é a simulação mais próxima de um RTS. Também é
realizada com dois times adversários, onde cada time precisa realizar a
tarefa de coleta e gerenciamento de recursos, além de combate e
exploração, já que agora os agentes não têm acesso completo ao mapa,
pois existe fog of war.
Game4: Este jogo foi apenas introduzido na segunda competição em
2007. Nesta competição, também com dois times adversários, cada time
possui 50 fuzileiros em um terreno sem obstáculos. Na próxima
competição em 2008, além dos 50 fuzileiros, cada time também terá
acesso a 20 tanques.
Na AIIDE 2006 foi realizada a primeira competição ORTS, onde
participaram cinco times de universidades de diversos países, já na AIIDE
2007, o número de times cresceu para 12. A terceira competição será realizada
na AIIDE 2008 em agosto.
Figura 5.15 ORTS
5.1.2 JaRTSO JaRTS foi desenvolvido por Vicente V. Filho [15], aluno da
Universidade Federal de Pernambuco, em 2006, e foi apresentado na
SBGames 2006. É um simulador feito em Java que simula as mesmas
situações do game1 e do game2 da competição do ORTS.
O JaRTS foi criado pela ausência de simuladores estáveis e com boa
documentação. Na figura 5.2 podemos ver a interface gráfica do JaRTS. Os
círculos verdes são os trabalhadores, o quadrado azul o command Center, e os
triângulos amarelos as minas. O mundo do JaRTS não é continuo, e sim
dividido por tiles.
O principal problema do JaRTS é a limitação imposta aos
desenvolvedores, já que o JaRTS só roda códigos escritos em Java.
Figura 5.16 Game1 no JaRTS
5.1.3 RTSCupO RTSCup também desenvolvido por Vicente V. Filho, é a evolução do
JaRTS. Agora independente de plataforma e de linguagem de programação, o
RTSCup faz a comunicação entre o cliente, o servidor, e visualizador através
de sockets.
O objetivo principal do RTSCup é a criação de um simulador de jogos
RTS que pode ser usado como benchmark para avaliar várias técnicas de IA
normalmente encontradas em jogos RTS, como: pathfinding, coordenação
multiagente, planejamento e outras. [16]
Atualmente o RTSCup está no release 1.5, onde já está implementado o
game1 e o game2, com o game3 em desenvolvimento.
5.1.4 Simulador escolhidoO simulador escolhido para a implementação da proposta deste trabalho
foi o RTSCup, pela facilidade do uso, e da experiência do desenvolvedor com
esta plataforma. A versão utilizada do RTSCup foi uma versão ainda em
desenvolvimento, por isto alguns problemas foram criados. Esta versão está
sendo desenvolvida por Victor Costa, aluno do centro de Informática da
Universidade Federal de Pernambuco, como trabalho de graduação do mesmo.
Em conjunto com esta versão, também foi desenvolvido um editor de mapas
com boa usabilidade.
5.2 Descrição do ambienteO ambiente simulado possui tamanho de 800 por 600 pixels, onde cada
elemento do ambiente é representado por um círculo com raio de 20 pixels. Os
agentes têm acesso completo às informações do mapa, ou seja, a posição de
todos os outros agentes, de todos os recursos, do command center e de todos
os obstáculos.
Trabalhadores: São os agentes responsáveis pela
coleta dos recursos. No simulador, os trabalhadores
contêm a informação dos pontos de vida e o número
de recursos coletados. Nesta abordagem, os pontos de
vida são insignificantes, pois apenas a coleta de
recursos será tratada. Cada trabalhador pode carregar
até 10 recursos, até descarregá-los no command
center..
Figura 5.17 Trabalhador
Command Center: É o centro de comando onde os
trabalhadores entregam os recursos que estavam
carregando. O Command Center contém também os
pontos de vida, e o total de recursos entregues pelos
agentes.
Figura 5.18 Command centerMinas: As minas contêm os recursos, o objetivo dos
trabalhadores. As minas apresentam a quantidade de
recursos disponíveis. Quando os recursos de uma
mina se exaurem, esta mina deixa de existir
Figura 5.19 RecursoObstáculos: Representam as “paredes” do ambiente.
Um trabalhador não pode passar por terrenos onde
existam obstáculos, recursos, ou outros trabalhadores.
Figura 5.20 Obstáculo
5.3 SimulaçãoForam realizados vários experimentos para avaliação do agente,
variando o mapa e a quantidade de turnos jogados, variando de acordo com a
quantidade de recursos e agentes do mapa. O tempo de cada turno foi definido
como 50ms, que é um tempo muito bom, demonstrando a boa eficiência do
agente, principalmente do algoritmo de pathfinding.
5.3.1 Agentes simulados ZigWorker: É a versão completa do agente proposto. Inclui todos os
recursos descritos no capítulo 4. Alguns experimentos foram realizados
com algumas modificações no agente, como a taxa de aprendizagem, e
a utilização de um agente explorador. A taxa de aprendizagem padrão
foi escolhida como 0.1.
CloserWorker: Este agente foi utilizado para comparação de
performance com o ZigWorker. É baseado no jcmjWorker, porém utiliza
o A* colaborativo como pathfinding.
Experimento 1
Turnos: 1000
Mapa:
Figura 5.21 Mapa do experimento 1
Resultados:
Tabela 5.1 Resultados do experimento 1
ZigWorker 510
CloserWorker 260
Este mapa demonstra a importância do algoritmo de aprendizagem do
ZigWorker. Inicialmente os agentes ZigWorker vão para a região à direita do
mapa, mas após a primeira viagem, eles passam a escolher a região inferior,
permanecendo nesta região até o final da partida.
Experimento 2
Turnos: 1000
Mapa:
Figura 5.22 Mapa do experimento 2
Resultados:
Tabela 5.2 Resultados do experimento 2
ZigWorker 1340
CloserWorker 1330
Neste mapa, ocorreu praticamente um empate, demonstrando que o
ZigWorker consegue a mesma performance no melhor caso do CloserWorker.
Experimento 3
Turnos: 3000
Mapa:
Figura 5.23 Mapa do experimento 3
Resultados:
Tabela 5.3 Resultados do experimento 3
ZigWorker 870
ZigWorker com agente explorador 896
CloserWorker 720
Neste mapa podemos ver que existe uma melhora, mesmo que
pequena, quando se utiliza um agente explorador. Enquanto os trabalhadores
estão coletando os recursos mais próximos, o explorador visita as outras
regiões e identifica as regiões com menor acessibilidade.
Experimento 4
Turnos: 3000
Mapa:
Figura 5.24 Mapa do experimento 4
Resultados:
Tabela 5.4 Resultados do experimento 4
ZigWorker 6388
ZigWorker com agente explorador 6397
CloserWorker 5973
Novamente há um ganho mínimo na utilização do agente explorador. O
ganho de desempenho na exploração é contrabalanceado pela perda de
desempenho do agente explorador em relação aos demais agentes, já que o
agente visita as minas mais distantes.
Experimento 5:
Turnos: 3000
Mapa:
Figura 5.25 Mapa do experimento 5
Resultados:
Tabela 5.5 Resultados do experimento 5
ZigWorker 1800
ZigWorker com agente explorador 1820
ZigWorker taxa de aprendizagem 0.25 1797
ZigWorker taxa de aprendizagem 0.25
com agente explorador
1810
ZigWorker sem utilizar propagação de
regiões
1610
ZigWorker taxa de aprendizagem 0.25
sem utilizar propagação de regiões
1631
CloserWorker 1487
Este mapa apresenta uma grande variedade de problemas apresentados
no capítulo 3. Na tabela de resultados podemos ver a importância do algoritmo
de propagação de distância nas regiões, e novamente os agentes exploradores
propiciaram um pequeno ganho de desempenho.
Podemos ver nas figuras 5.12 e 5.12 a diferença na escolha das minas
entre o ZigWorker e o CloserWorker. O CloserWorker acaba escolhendo uma
região com um gargalo, onde há um grande engarrafamento de agentes,
enquanto o ZigWorker escolhe as melhores regiões.
Figura 5.26 ZigWorker
Figura 5.27 CloserWorker
5.4 Problemas encontradosO principal problema encontrado foi o de controle de concorrência, já
que o sistema de reservas exige um sincronismo perfeito de tempo, pois se um
agente passa tempo demais pensando, e perde um turno, toda sua reserva não
vale mais, e acabam ocorrendo colisões.
O algoritmo de pathfinding chegou a ser melhorado, fazendo com que o
agente reservasse o caminho de ida e de volta. Com isto, o agente não teria
mais problema de ficar sem caminho de volta após a mineração, pois ele só se
movimentaria àquela mina, se um caminho de retorno fosse garantido, caso
contrário ele procuraria outra mina. Este melhoramento do pathfinding acabou
deixando a etapa de FindResource muito pesada, possibilitando a perda de
sincronia dos agentes. Em mapas pequenos e com poucos agentes, onde
existe menos processamento, este algoritmo se demonstrou melhor que o A*
colaborativo simples, e infalível em relação a colisões e agentes presos.
Outro problema encontrado foi a escolha do simulador. Quando este
trabalho foi iniciado, a versão mais atual do RTSCup era a 1.2. Esta versão
apresentava problemas sérios de desempenho, deixando inviável a construção
do agente proposto. Foi considerada a utilização do JaRTS, porém o JaRTS
não permitia utilizar mapas diferentes dos que já vinham inclusos no simulador.
Graças a Victor Costa, que tem como tema do seu trabalho de graduação a
melhoria do simulador RTSCup, a performance do RTSCup se tornou suficiente
para a implementação do agente deste trabalho.
6 Conclusão
A coleta de recursos é uma das etapas mais importantes de qualquer
jogo RTS, pois é essencial para o funcionamento das outras etapas. Esta
coleta não é feita por um só agente, e sim em um ambiente com vários
agentes, chamado de ambiente multiagente. Em ambientes multiagentes,
existe o problema da coordenação, pois cada agente tem de levar em
consideração não somente seus objetivos individuais, mas também os
objetivos coletivos. Esta área não está bem desenvolvida pela falta de
simuladores estáveis, fáceis de usar e com boa documentação, já que a
maioria dos jogos RTS são fechados, e não permitem a simulação de IA.
Neste trabalho, foram apresentados problemas comuns na coleta de
recursos multiagente, bem como possíveis soluções para estes problemas.
Estas soluções foram utilizadas para a criação de um agente, batizado de
ZigWorker, que foi simulado no simulador RTSCup, obtendo excelentes
resultados em diversas situações.
6.1 Trabalhos FuturosO agente explorador precisa ser estudado com mais detalhe,
melhorando seu desempenho, além de ser feito um estudo sobre a proporção
ideal entre trabalhadores e exploradores.
Este trabalho teve como objetivo implementar uma solução para a coleta
de recursos, baseado no game1 da competição do ORTS na AIIDE 2006/2007,
porém em trabalhos futuros, também serão desenvolvidas implementações
para os outros games, com objetivo final de desenvolver uma IA capaz de
controlar um time em um RTS capaz de derrotar jogadores experientes.
Referências
[1] ROBOCUP FEDERATION. RoboCup Brief Introduction. Acesso em:
18/03/2008. Disponível em: <http://www.robocup.org/Intro.htm>.
[2] MOURA, José Carlos. Uma estratégia eficiente de coleta multiagente para jogos RTS
[3] ORTS ORTS - A Free Software RTS Game Engine. Acesso em
18/03/2008. Disponível em: http://www.cs.ualberta.ca/~mburo/orts
[4] ARNOLD, Rachael. Real Time Strategy Games as Domain for AI Research
[5] BURO, Michael, Real-Time Strategy Games: A New AI Research Challenge
[6] SILVER, David, Cooperative Pathfinding
[7] Lester, Patrick. Pathfinding for Beginners Acesso em 19/03/2008.
Disponível em: http://www.policyalmanac.org/games/aStarTutorial.htm
[8] Amit’s Game Programming Information Acesso em 19/03/2008.
Disponível em: http://www-cs-students.stanford.edu/~amitp/gameprog.html
[9] WIKIPEDIA. Pathfinding Acesso em 15/06/2008. Disponível em:
http://en.wikipedia.org/wiki/Path_finding
[10] WIKIPEDIA. Strategy Video Game Acesso em 15/06/2008. Disponível em:
http://en.wikipedia.org/wiki/Strategy_video_game
[11] WIKIPEDIA. Pathfinding Acesso em 15/06/2008. Disponível em:
http://en.wikipedia.org/wiki/Path_finding
[12] WIKIPEDIA. Civilization IV Acesso em 15/06/2008. Disponível em:
http://en.wikipedia.org/wiki/Civilization_iv
[13] WIKIPEDIA. Optimal Foraging Theory Acesso em 15/06/2008.
Disponível em: http://en.wikipedia.org/wiki/Optimal_foraging_theory
[14] GameAI GameAI Acesso em 15/06/2008. Disponível em:
http://www.gameai.com/
[15] FILHO, Vicente Vieira JaRTS Acesso em 19/06/2008. Disponível em:
http://www.cin.ufpe.br/~vvf/jarts/index.htm
[16] FILHO, Vicente Vieira RTSCup Acesso em 19/06/2008. Disponível em:
http://www.rtscup.org/