Question to NN practicioners. I'd like to encode Azul board game state as an input to NN, let's focus on 2-player variant for a while.
There are 5 round "Factories" on the table (7 on picture, ignore it). Each one can keep 4 tiles of 5 colors. There is also center of the board which can keep up to 15 tiles. What are the advantages and disadvantages of different encodings? Here are my ideas:
Every Factory has five integer counters, one for each tile color. Sample encoding of single Factory:
Every Factory has 20 binary flags, four for each color. Single flag encodes presence of tile of given color. Sample encoding of single factory:
[1,1,1,0, 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]
Every Factory has 20 binary flags, four for each color, but only one flag can be set for given color and position of raised flag encodes number of tiles of given color. Sample encoding of single factory:
[0,0,1,0, 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]
Every Factory has 4 enum fields, with 6 possible values each (5 colors + empty). Sample encoding of single factory:
[red, red, red, blue]or
(note: encoding schema would also cover center of the board, up to 15 tiles, as said earlier. Of course player's board would also be encoded, but I don't want to ask too broad question)
I'd like to train NN to play Azul, which means it needs to properly process number of tiles taken in given round (up to 15 in theory, 2-4 in practice) because it would also need to indicate where to put all those tiles to player board positions.
Based on your experience, which encoding is most promising? Or maybe there is some better method I didn't think of? Or it is not possible to tell or it doesn't matter?