Trabalho Prático. Bruno Coswig Fiss Kauê Soares da Silveira. Disciplina INF Inteligência Artificial. Professor: Paulo Martins Engel

Documentos relacionados
Jogo de Damas. Alunos: Sávio Mendes de Figueiredo Sômulo Nogueira Mafra

Fundamentos de Inteligência Artificial [5COP099]

Anatomia do motor de um programa de xadrez. Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina

Instituto de Informática. Departamento de Informática Aplicada

Jogos com Oponentes. March 7, 2018

Implementação e Avaliação do Algoritmo MCTS-UCT para o jogo Chinese Checkers. Jhonny Moreira

INF 1771 Inteligência Artificial

XADREZ REGRAS BÁSICAS INTRODUÇÃO O xadrez, diferentemente de muitos jogos, não depende de sorte. O desenvolver do jogo não depende do resultado de

INTELIGÊNCIA ARTIFICIAL 2008/09

Figura: Capa do Livro Hamburger, H., Richards, D. Logic and Language Models for Computer Science, Prentice Hall.

Distribuição de Jogos por Ciclo

Algoritmos de retrocesso

Algoritmos de retrocesso

UMA INTRODUÇÃO AOS ALGORITMOS GENETICOS

Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial

Gatos & Cães Simon Norton, 1970s

livro das regras (provisório)

Gatos & Cães Simon Norton, 1970s

Manual do Bovo. Aron Bostrom Eugene Trounev Tradução: Luiz Fernando Ranghetti BOVO N 5

CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 02

Busca Competitiva. Inteligência Artificial. Até aqui... Jogos vs. busca. Decisões ótimas em jogos 9/22/2010

SOLUÇÕES HEURÍSTICAS PARA O JOGO DE DAMAS

Algoritmos Genéticos

1ª Colocação 10 pontos. 2ª Colocação 08 pontos. 3ª Colocação 06 pontos

Semáforo. Um tabuleiro retangular 4 por 3. 8 peças verdes, 8 amarelas e 8 vermelhas partilhadas pelos jogadores.

REGRAS DOS JOGOS do CNJM15

INF 1771 Inteligência Artificial

JOGOS LIVRO REGRAS M AT E M Á T I CO S. 11.º Campeonato Nacional

Inteligência Artificial

Resumo. Como um agente busca de seqüência de ações para alcançar seus objetivos.

Busca com informação e exploração. Inteligência Artificial

Técnicas para Implementação de Jogos

Jogos com Oponentes. espaço de busca muito grande tempo para cada jogada

ESCOLA EMEF PROFª MARIA MARGARIDA ZAMBON BENINI - PIBID 08/10/2014, 29/10/2014 e 05/11/2014

5ª Lista de Exercícios de Programação I

Campeonato de Gamão. 1. Regras. 2. Servidor

O Manual do Bovo. Aron Bostrom Eugene Trounev Tradução: José Pires BOVO N 5

Busca competitiva. Inteligência Artificial. Profª. Solange O. Rezende

Aula 9 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Alternativamente pode ser pensado como uma forma de maximizar o minimo ganho possível.

Ex. 1) Considere que a árvore seguinte corresponde a uma parte do espaço de estados de um jogo de dois agentes: f=7 f=7 f=1 f=2

Resolução de problemas por meio de busca. Inteligência Artificial. Formulação de problemas. Estratégias de busca

Paulo Roberto Quícoli - Raul Peres de Góes - Faculdade de Tecnologia de Taquaritinga (FATEC) SP Brasil

Semáforo Autor: Alan Parr. Avanço Autor: Dan Troyka, Material Um tabuleiro quadrado 7 por peças brancas e 14 peças negras.

a) Defina em Prolog iguais/1, um predicado que recebe um estado do jogo e que verifica que todas as pilhas têm o mesmo número de peças.

Resolução de Problemas de Busca

SME Introdução à Programação de Computadores Primeiro semestre de Trabalho: jogo Semáforo

MAC 115 Introdução à Ciência da Computação ROTHELO

Enunciados dos Exercícios Cap. 2 Russell & Norvig

BCC204 - Teoria dos Grafos

Redes Neurais (Inteligência Artificial)

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva

Epaminondas. Ludus. Material

Busca com informação e exploração. Inteligência Artificial. Revisão da aula passada: Heurística Admissível. Revisão da aula passada: Busca A *

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente

Manual do Kiriki. Albert Astals Cid Eugene Trounev Tradução: Luiz Fernando Ranghetti

CAPÍTULO 1. Os elementos. O jogo de xadrez é um desafio para a mente. J. W. von Goethe O TABULEIRO DE XADREZ

Inteligência Artificial

Inteligência Artificial

3. Resolução de problemas por meio de busca

INF 1771 Inteligência Artificial

Buscas Informadas ou Heurísticas - Parte III

PMR Computação para Mecatrônica

Redes Neurais (Inteligência Artificial)

PROFESSORA: GEÓRGIA SOARES DISCIPLINA: EDUCAÇÃO FÍSICA CONTEÚDO: XADREZ AULA 2

Árvore de Jogos Minimax e Poda Alfa-Beta

Aprendizado por Árvores de Decisão

INF 1771 Inteligência Artificial

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 5 Resolvendo Problemas

Inteligência Artificial - IA. Resolução de problemas por meio de busca

Manual do KSquares. Matt Williams Revisor: Eugene Trounev Tradução: Luiz Fernando Ranghetti Tradução: André Marcelo Alvarenga

Inteligência Computacional para Jogos Eletrônicos

Por que atributos irrelevantes são um problema Quais tipos de algoritmos de aprendizado são afetados Abordagens automáticas

Departamento de Ciência de Computadores - FCUP Primeiro Teste de Inteligência Artificial / Sistemas Inteligentes (Duração: 2 horas)

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial

Agentes de Procura Procura Estocástica. Capítulo 3: Costa, E. e Simões, A. (2008). Inteligência Artificial Fundamentos e Aplicações, 2.ª edição, FCA.

jogos romanos jogos romanos

Manual do KFourInLine. Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Tradução: Marcus Gama Revisão: Stephen Killing

Um Algoritmo Genético com Aprendizado por Reforço Simples aplicado ao problema do Mundo de Grid

Introdução à Inteligência Artificial MAC MAC 415. Exercício Programa 1 Busca

5 VNS com Filtro e Reconexão por Caminhos

Inteligência Artificial

O Manual do KSquares. Matt Williams Revisão: Eugene Trounev Tradução: José Pires

lnteligência Artificial

CEFET/RJ Inteligência Artificial (2017.2) Professor: Eduardo Bezerra Lista de exercícios 03

CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa. Prof. Paulo André Castro

ENSINO MÉDIO INTEGRADO INFORMÁTICA LINGUAGEM DE PROGRAMAÇÃO Trabalho Semestral

Problema de Satisfação de Restrições

Problema de Satisfação de Restrições. Problema de Satisfação de Restrições. Grafo de restrições. Exemplo: 4 Rainhas como um PSR

11/1/2012. Agenda. Classe de problemas de interesse. Busca Local. Busca Local. Exemplo de Espaço de Estados

INTELIGÊNCIA ARTIFICIAL

Projecto de Algoritmos e Estruturas de Dados

Métodos de Busca. Inteligência Artificial. Algoritmos Genéticos. Algoritmos Evolucionários. Prof. Ms. Luiz Alberto Contato:

O Manual do Kiriki. Albert Astals Cid Eugene Trounev Tradução: José Pires

Transcrição:

Bruno Coswig Fiss Kauê Soares da Silveira Trabalho Prático Disciplina INF01048 - Inteligência Artificial Professor: Paulo Martins Engel UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL 1 de julho de 2010

Sumário Lista de Tabelas Lista de Figuras 1 Introdução p. 5 2 Características Gerais do Programa p. 6 2.1 Tecnologias............................................. p. 6 2.2 Estruturas de Dados......................................... p. 6 2.3 Algoritmo.............................................. p. 7 2.3.1 Heurística.......................................... p. 7 2.3.2 Algoritmo Genético.................................... p. 9 2.3.3 Resultados......................................... p. 10 2.3.4 Interface.......................................... p. 11 3 Conclusão p. 12 Referências Bibliográficas p. 13

Lista de Tabelas 2.1 Tabela de Pesos da Heurística de Centralização.......................... p. 8 2.2 Resultado da Primeira Execução do Algoritmo Genético..................... p. 10 2.3 Resultado da Segunda Execução do Algoritmo Genético..................... p. 10 2.4 Resultado da Terceira Execução do Algoritmo Genético...................... p. 10

Lista de Figuras 2.1 Interface Gráfica - Posição Inicial................................. p. 11 2.2 Interface Gráfica - Opções..................................... p. 11 2.3 Interface Gráfica - Após o Primeiro Movimento.......................... p. 11 2.4 Interface Gráfica - Alternativas de Movimento........................... p. 11

5 1 Introdução O trabalho trata-se de desenvolver uma Inteligência Artificial para o jogo Lines of Action ([1]). As regras são as seguintes: Os jogadores alternam quem faz o movimento, sendo que as pretas fazem o primeiro lance As peças se movem vertical, horizontal ou diagonalmente Uma peça se move exatamente tantas casas quanto a quantidade de peças (aliadas ou inimigas) existentes na linha na qual está se movendo Uma peça pode pular por cima de peças aliadas, mas não pode pular pos cima de peças inimigas Uma peça pode pular em cima de uma peça inimiga (retirando a mesma do jogo), mas não pode pular em cima de uma peça amiga Ganha o jogador que ficar com todas as suas peças adjacentes (em qualquer direção). Caso isso seja verdadeiro para ambos os jogadores, ganha aquele que efetuou o último lance.

6 2 Características Gerais do Programa 2.1 Tecnologias C++ OpenGL, GLU, GLUT, GLUI Linux Vim, Make, GCC O programa foi escrito na linguagem C++, que alia eficiência e acesso aos recursos de baixo nível da máquina com orientação a objetos e suporte à abstração. A interface gráfica utiliza-se da biblioteca GLUI ([2]), a qual está no topo de uma cadeia de bibliotecas (OpenGL, GLU, GLUT, GLUI) em cuja base se encontra OpenGL, sendo que todas são livres e portáveis. O desenvolvimento ocorreu no sistema operacional Linux, utilizando ferramentas como Vim, Make e GCC. Como a portabilidade foi um dos enfoques, ao final também foi gerada, sem grandes dificuldades, uma versão para Windows. 2.2 Estruturas de Dados Bitvector Foi utilizada a classe bitvector da biblioteca padrão da linguagem ([3]). As peças são representadas em um vetor de 64 posições contendo o valor 1 nas casas ocupadas e 0 nas casas vazias. O tabuleiro é composto por dois destes vetores, um para cada jogador. Para determinar casas ocupadas, independente da cor, utilizamos um terceirovetor que é o resultado do ou lógico, efetuado bit a bit, dos outros dois. Para determinar os movimentos válidos, utilizamos vetores pré-computados com a quantidade de peças em cada linha, em cada coluna, em cada diagonal principal e em cada diagonal secundária. Para detectar que todas as peças de um jogador estão adjacentes é utilizado um algoritmo recursivo, semelhante ao floodfill, que também utiliza um bitvetor, desta vez para marcar quais casas já foram visitadas. O tabuleiro também armazena uma cache dos valores da heurística (ver seção 2.3.1).

7 2.3 Algoritmo Negamax Poda alphabeta Best choice first Cache dos valores das heurísticas Utilizamos o algoritmo negamax [4], em que cada jogador objetiva maximizar o simétrico da resposta ótima do adversário. Acrescentamos a poda alpha beta [5], na qual variações que comprovadamente não levarão a um valor melhor de heurística não são avaliadas. A cada iteração, o valor da heurística é calculado em todos os sucessores do nó atual e estes são ordenados por este valor, de forma que expandimos primeiro os nós que têm mais chance de se mostrarem melhores e causarem uma poda na árvore. Também foi implementada uma cache dos de heurística (detalhados na seção 2.3.1), de tal forma que apenas os valores do jogador que acabou de jogar são recalculados, sendo os valores referentes ao outro jogador aproveitados da iteração anterior. 2.3.1 Heurística Fator Aleatório Distância para o centro Concentração Centralização Centro de Massa Quadrados Conectividade Uniformidade Foram implementadas 7 funções heurísticas, inspiradas em [6]. Cada uma delas calcula o valor correspondente a cada um dos jogadores e retorna a diferença (normalizada entre 0 e 1) entre estes valores. Algumas utilizam o valor do centro de massa, calculado como a média das coordenadas das peças do jogador em questão. Distância para o centro É o inverso da média das distâncias euclidianas das peças para o centro. Objetiva recompensar configurações em que temos várias peças no centro, pois é necessário passar pelo centro para reunir as peças, e se for possível reuní-las no centro é melhor ainda.

8 Concentração É o inverso da média das distâncias de manhatan das peças para o centro de massa. O centro de massa representa um bom ponto para tentar concentrar as peças, sendo uma alternativa ao centro absoluto (que é o caso da heurística anterior). Para não privilegiar configurações com menos peças, subtraímos uma constante précomputada que representa o valor mínimo possível de ser assumido pela heurística dada a quantidade de peças atual (por exemplo, com 3 peças este valor é um, atingido quando uma das peças está sobre o centro de massa e as outras duas estão adjacentes a esta). Centralização É a média da qualidade das posições das peças, segundo a seguinte tabela de pesos: -80-25 -20-20 -20-20 -25-80 -25 10 10 10 10 10 10-25 -20 10 25 25 25 25 10-20 -20 10 25 50 50 25 10-20 -20 10 25 50 50 25 10-20 -20 10 25 25 25 25 10-20 -25 10 10 10 10 10 10-25 -80-25 -20-20 -20-20 -25-80 Tabela 2.1: Tabela de Pesos da Heurística de Centralização O objetivo é penalizar peças na borda do tabuleiro (que são facilmente bloqueáveis pelo inimigo e que têm mais chance de estar longe do grupo principal) e recompensar as peças que estão mais perto do centro. Centro de Massa É a distância euclidiana do centro de massa para o centro do tabuleiro. Se o centro de massa está no centro do tabuleiro, as peças podem estar arbitrariamente longe (como no início do jogo, por exemplo). Quanto mais longe do centro do tabuleiro estiver o centro de massa, mais próximas as peças têm que estar. Quadrados É a quantidade de quadrados de lado 2 com pelo menos três peças do jogador em questão e a no máximo duas casas de distância do centro de massa. A vantagem de se ter estruturas deste tipo é que são necessário pelo menos dois movimentos para desconectá-las. A razão para exigir uma distância mínima do centro de massa é evitar que se formem grupos isolados. Concectividade É o número médio de peças aliadas adjacentes das peças do jogador em questão. Objetiva recompensar aglomerações de peças em oposição a formação em linha, em que uma peça só está conectada com outras duas, as quais são mais fáceis de destruir.

9 Uniformidade É o inverso da área do menor quadrado de lados paralelos aos lados do tabuleiro que engloba todas as peças do jogador em questão. Objetiva recompensar configurações com peças em linhas e colunas próximas. 2.3.2 Algoritmo Genético Algoritmo Genético... O valor final da função de avaliação foi definido como sendo uma média ponderada das heurísticas. Para determinar a melhor tupla de valores de pesos, utilizamos um algoritmo genético, detalhado a seguir. Representação do Problema A representação escolhida foi uma tupla com os pesos (entre 0 e 1) dados para cada função heurística. Geração da População Inicial A população inicial (parâmetro) é gerada sorteando-se valores de pesos aleatórios para cada heurística de cada indivíduo. Avaliação da População A avaliação é feita simulando partidos de todos contra-todos em dois turnos (alternando quem faz a jogada inicial) e somando-se a quantidade de vitórias obtidas. Seleção, Recombinação e Mutação Após feita a avaliação de uma geração, um certa porcentagem (parâmetro) dos indivíduos mais adaptados é escolhida para permanecer (clonagem). Então os indivíduos restantes da população são fruto da recombinação destes. Essa recombinação se dá primeiro escolhendo aleatoriamente dois indivíduos diferentes para serem combinados, e então aleatoriamente de qual destes indivíduos cada peso é herdado. Ainda há uma certa porcentagem de chance (parâmetro) de um destes pesos ser sortiado aleatoriamente novamente, caracterizando uma mutação. Critério de Parada O algoritmo para após uma certa quantidade de iterações (parâmetro). Fator Aleatório na Função Heurística Para evitar que houvessem empates por repetição de jogadas, foi incluído um fator aleatório na heurística, variando entre 0 e 1, cujo peso também foi incluído na composição dos indivíduos.

10 Parâmetros Utilizados O algoritmo foi executado com uma população de 10 indivíduos, uma porcentagem de seleção de 50 Heurística Peso Fator Aleatório 0.00763 Distância para o centro 0.38113 Concentração 0.63358 Centralização 0.89597 Centro de Massa 0.03325 Quadrados 0.41463 Conectividade 0.78261 Uniformidade 0.01670 Tabela 2.2: Resultado da Primeira Execução do Algoritmo Genético Pode-se verificar que o peso do fator aleatório ficou quase 0, como era de se esperar. Além disso, outras duas funções heurísticas ficaram com peso bem baixo (Centro de Massa e Uniformidade). Dada a complexidade do cálculo destes funções, decidimos eliminá-las da heurística para poder atingir uma profundidade maior. Executamos o algoritmo genético com os mesmos parâmetros, porém eliminando estas funções heurísticas (tabela 2.3). Heurística Peso Fator Aleatório 0.00616 Distância para o centro 0.87480 Concentração 0.07819 Centralização 0.66735 Quadrados 0.41734 Conectividade 0.32783 Tabela 2.3: Resultado da Segunda Execução do Algoritmo Genético Desta vez obtivemos um peso baixo para a função heurística Conectividade. Pelas mesmas razões citadas anteriormente, executamos novamente o algoritmo removendo mais esta função (tabela 2.4). Finalmente atingimos pesos satisfatórios, ou seja, todas as heurísticas têm uma contribuição significativa para a avaliação final. Heurística Peso Fator Aleatório 0.00251 Distância para o centro 0.82723 Concentração 0.97915 Centralização 0.96032 Quadrados 0.96950 Tabela 2.4: Resultado da Terceira Execução do Algoritmo Genético 2.3.3 Resultados Profundidade A versão final do algoritmo, dado o tempo limite de 5 segundos para efetuar cada lance, alcança 5 ply.

11 2.3.4 Interface Foi desenvolvida uma Interface Gráfica que permite interagir com o jogo. A figura 2.1 mostra a posição inicial das peças. O programa permite escolher as seguintes opções (figura 2.2). Cor do jogador inicial Cor do computador Profundidade da busca Iniciar / Parar Desfazer / Refazer (setas) Na figura 2.3 podemos ver a situação do jogo após um primeiro movimento (destacado). As alternativas de movimento de uma peças são destacadas na figura 2.4. Figura 2.1: Interface Gráfica - Posição Inicial Figura 2.2: Interface Gráfica - Opções Figura 2.3: Interface Gráfica - Após o Primeiro Movimento Figura 2.4: Interface Gráfica - Alternativas de Movimento

12 3 Conclusão É sempre muito interessante poder aplicar na prática os conhecimentos teóricos e poder constatar suas vantagens e desvantagens. O trabalho desenvolvido possibilitou o contato com algumas técnicas de Inteligência Artificial que são largamente utilizadas e puderam ser melhor compreendidas. Ver o desempenho do nosso algoritmo melhorando cada vez mais a cada modificação, a cada versão, chegando ao ponto de nos ultrapassar, foi uma experiência muito estimulante e gratificante. Devido à falta de tempo (ou excesso de responsabilidades) não foi possível pôr em prática todas as otimizações que gostariámos (como livro de aberturas e de final, tabela de transposição, etc.), mas acreditamos que, mesmo assim, o resultado final ficou bastante bom.

13 Referências Bibliográficas [1] Wikipedia, The Free Encyclopedia; Lines of Action, http://en.wikipedia.org/wiki/lines of Action. [2] Rademacher, Paul; GLUI User Interface Library, http://glui.sourceforge.net/. [3] Josuttis, Nicolai M.; The C++ Standard Library: A Tutorial and Reference, Addison-Wesley, ISBN 0-201- 37926-0. [4] Heineman, George T.; Pollice, Gary; Selkow, Stanley; Algorithms in a Nutshell, Oreilly Media, ISBN 978-0- 596-51624-6. [5] Russell, Stuart J.; Norvig, Peter; Artificial Intelligence: A Modern Approach, Prentice Hall, ISBN 0-13- 790395-2. [6] Winands, Mark H. M.; Informed Search in Complex Games, Universitaire Pers Maastricht, ISBN 90-5278- 429-9.