Coder Social home page Coder Social logo

gabibbot's Introduction

GabibBot

๐Ÿฅ‡2022-2023 winner of the Tablut Challenge for Fundamentals of AI and Knowledge Representation, hosted by Michela Milano

Author: Davide Gardenal

How it works?

It's a very simple Min-Max algorithm with alpha-beta cuts written in C++.
The idea was to develop a very fast implementation of the algorithm and heuristic so that it could explore many states in the limited amount of time provived by the challege. For that the heuristic is not performing big calculations but it extracts information when copying the state of the board.
No std lib have been used for the state representation. This is becasue we have a static dimensionality and the overhead ad dynamic structures (e.g. std::vector) is too big and slows down the bot quite a lot.

How the project is structured?

We have two components:

  • The C++ module compiled with pybind11
  • A Python script

The Python script is used to compunicate with the server and to call the C++ module for executing the actual bot.
Why splitting the code? Because writing net code in Python is easier than doing the same in C++.

Where can I find the server?

Here: https://github.com/AGalassi/TablutCompetition

Do you want to develop a Tablut Bot in C++?

Then you can use my project as a tamplate and edit the C++ code without bothering with the server comunication aspect. Feel free to use it.

Furthen improvements

  • Use bitvectors for state representation instead of shorts. This will result in a speed up in terms of speed with all the operators (but it's quite a bit more complicated to develop and manage)
  • Develop a stronger heuristic (of fine tune mine). I spent quite a good chunk of time developing my heuristic but I think there is room for improvement (a tournament can be created with all the heuristics).

gabibbot's People

Contributors

tony3oo3 avatar

Watchers

 avatar  avatar

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.