The project aims to create self learning artificial intelligence capable to beat the board game Pandemic. As i know nothing about neural network and deep learning, I will start from scratch : no library will be used to manage neural network.
Future releases
- proper logging
- comment code
- provide use instruction
- update README with mardown syntax
- check MCTS algorithm implementation
- write JMH benchmark for critical methods
- optimize deck creation/duplication
- optimize gameState duplication
- junit tests for Pandemic.getMoves method
- provide a more optimized Pandemic.getMoves method
Changelog 2019.06.28
- Junit tests cover all pandemic package except material. JUnit tests to be added before any refactoring of the material package
- Deck, PlayerDeck, PropagationDeck refactored
- Benchmark deck critical operations (draw, duplicate)
- add equivalent method to test logical equality between objects
2019.06.20
- Deprecated observer pattern migrated to PropertyChangeListener
- JUnit tests in progress
2019.06.18
- Refactored project architecture
- JUnit tests in progress
- Add maven build process
- Improved algorithm to find all valuable combinations of 4 actions
- JMH benchmark
The steps I Building a decent Pandemic Board game
- Initializing the game (create architecture classes, useful methods) is its simplest way : no event card, no card limit, no character player
- Add log4j to track
- build the game mechanics : what the game do , effect of each action etc.
- Create the game engine : waiting for input to perform player actions and automatically performing game actions
- Add eventhandling to throw event when : player hand is full or when it must make an action -> DONE
- Build an interface to play pandemic and check everything runs smoothly
II Build a Monte Carlo Tree Search based AI and check if it works
- Undertsanding MCTS algorithm https://int8.io/monte-carlo-tree-search-beginners-guide/
- Implementing the algorithm
- Testing & debugging
- Optimization
III Build a neural network learning from the Monte Carlo Tree Search, Alphagozero's way
IV Standardize AI entry points and API to make it "game" independant
V Add events and characters role