Halite is an open source artificial intelligence programming challenge, created by Two Sigma, where players build bots using the coding language of their choice to battle on a two-dimensional virtual board. The last bot standing or the bot with all the territory wins. Victory will require micromanaging of the movement of pieces, optimizing a bot’s combat ability, and braving a branching factor billions of times higher than that of Go.
The objective of the project is to apply Reinforcement Learning strategies to teach the Bot to perform as well as possible. We teach an agent to learn the best actions to play at each turn. More precisely, given the game state, our untrained Bot initially performs random actions, but gets rewarded for the good one. Over time, the Bot automatically learns how to conquer efficiently the map.
Eventually, it is even possible to make multiple Bots fight against themselves and improve their responses to other Bots.
For now, we will only focus on one Bot, the objective being to conquer the map as fast as possible. With respect to Reinforcement Learning, the two main challenges to address are the following:
- Finding a good Reward Function, and associate properly each action to a reward.
Indeed, unlike chess or go, in the Halite turn-based game, we can do multiple actions at each turn, for each of the square we possess. This implies that we have to identify the specific actions leading to the reward, which can in turn be complicated to compute.
- Exploring the Best Learning Strategies.
In this repository, we will mainly explore the solutions based on Neural Networks, and will start by a very simple MLP. This is inspired from a tutorial on Reinforcement Learning agent.
To get started, blog articles and documentation are available at this page.