Git Product home page Git Product logo

ia-trab2's Introduction

Trabalho Prático 2

Trabalho campeão do torneio realizado entre a turma em 2021/2.

Alunos

  • 00303397 - João Pedro Silveira e Silva (turma A)
  • 00314280 - Rafael Humann Petry (turma A)
  • 00302072 - Victória de Avelar Duarte (turma A)

Função de avaliação

Usamos as heurísticas de estabilidade e de mobilidade em conjunto. A proporção utilizada foi:

0.4 * heuristica_de_estabilidade + 0.6 * heuristica_de_mobilidade

Estabilidade

Foi construída uma matriz indicando qual o peso associado a cada posição do tabuleiro. Os valores positivos são os valores que favorecem o jogador e, os negativos, são os que favorecem o oponente.

__POINT_MAP = [
    [120, -20, 20, 5, 5, 20, -20, 120],
    [-20, -40, -5, -5, -5, -5, -40, -20],
    [20, -5, 15, 3, 3, 15, -5, 20],
    [5, -5, 3, 3, 3, 3, -5, 5],
    [5, -5, 3, 3, 3, 3, -5, 5],
    [20, -5, 15, 3, 3, 15, -5, 20],
    [-20, -40, -5, -5, -5, -5, -40, -20],
    [120, -20, 20, 5, 5, 20, -20, 120],
]

Os valores foram retirados de https://www.ic.unicamp.br/~rocha/teaching/2011s2/mc906/seminarios/2011s2-mc906-seminario-04.pdf

Com a matriz definida, dado um tabuleiro, calcula-se o valor associado a cada jogador com base na posição de cada peça com um somatório

pontos_jogador = 0
pontos_oponente = 0

para cada peça dentro de um tabuleiro:
    se jogador:
        pontos_jogador += __POINT_MAP[posição_peça]
    se oponente:
        pontos_oponente += __POINT_MAP[posição_peça]
retorna pontos_jogador - pontos_oponente

Mobilidade

A cada tabuleiro, é calculada todas as possibilidades de movimento para cada jogador

se movimentos_MAX_player + movimentos_MIN_player == 0:
	heuristica = 0
senão:
	heuristica = 100 * (movimentos_MAX_player - movimentos_MIN_player) / (movimentos_MAX_player + movimentos_MIN_player)

Bibliografia

https://pt.wikipedia.org/wiki/Minimax

https://kartikkukreja.wordpress.com/2013/03/30/heuristic-function-for-reversiothello/

https://www.ic.unicamp.br/~rocha/teaching/2011s2/mc906/seminarios/2011s2-mc906-seminario-04.pdf

ia-trab2's People

Contributors

jpedrosilveira avatar vickyad avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

jpricarte

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.