Dominion is a game where a small advantage early on can snowball into a decisive advantage later on. As such, your opening buys (i.e., the cards you buy in the first two turns of the game) are very important in laying the foundation for your strategy throughout the rest of the game.
This is the sequel to bskull-openings, in which the TrueSkill rating system was used to rank openings in the bskull-openings dataset by considering matches between openings as a 1 vs 1 game. Although this approach effectively ranks the openings that were played, it is not able to generalize to openings that were not played. Moreover, it underutilizes the available comparisons between openings in the dataset. One way to overcome these limitations to is to explicitly model the cards that make up the openings and consider matches between openings as a team vs team game.
TrueSkill is capable of modeling such games, but is based on the assumption that the skill of a team is the sum of the skills of its players. This assumption does not hold in this setting, so a latent factor model, explicitly modeling the cards and diminishing marginal utility, was used to assess the quality of different openings better than the TrueSkill rating system.
If you are not familiar with dominion, learn to play for free at Dominion Online.
You can simply view in your browser: How To Base Dominion Opening, Part 2.
For those who would like to dig through the code, install the requirements below, then run the following command at the Terminal (Mac/Linux) or Command Prompt (Windows):
jupyter notebook
A browser window should open. Wait for the page to load, then click 'How to Base Dominion Opening, Part 2.ipynb'. Click Kernel > Restart & Run All to run all the cells, or Shift + Enter to run an individual cell.
Run the appropriate commands at the Terminal (Mac/Linux) or Command Prompt (Windows).
If you have Anaconda or Miniconda installed:
To create a conda environment, run:
conda create --name tensor-skill --file requirements.txt
To activate the environment, run:
conda activate tensor-skill
Alternatively, if you have Python installed, run:
pip install notebook pandas trueskill matplotlib tensorflow lxml scikit-learn tqdm