(Tested on Ubuntu 20.04)
git clone --recursive git@github.com:indylab/tabular_xdo.git
cd tabular_xdo
If you've already cloned this repo but not the submodules, you can clone them with:
git submodule update --init --recursive
After installing Anaconda, enter the repo directory and create the new environment:
conda env create -f environment.yml
conda activate grl
DeepMind's OpenSpiel is used for poker game logic as well as tabular game utilities.
# Starting from the repo root
cd dependencies/open_spiel
export BUILD_WITH_ACPC=ON # to compile with the optional universal poker game variant
./install.sh
pip install -e . # This will start a compilation process. Will take a few minutes.
cd ../..
Installation is now done!
If you need to compile/recompile OpenSpiel without pip installing it. Perform the following steps with your conda env active. (The conda env needs to be active so that OpenSpiel can find and compile against the python development headers in the env. Python version related issues may occur otherwise):
export BUILD_WITH_ACPC=ON # to compile with the optional universal poker game variant
mkdir build
cd build
CXX=clang++ cmake -DPython_TARGET_VERSION=3.6 -DCMAKE_CXX_COMPILER=${CXX} -DPython3_FIND_VIRTUALENV=FIRST -DPython3_FIND_STRATEGY=LOCATION ../open_spiel
make -j$(nproc)
cd ../../..
To import OpenSpiel without using pip, add OpenSpiel directories to your PYTHONPATH in your ~ /.bashrc (more details here):
# Add the following lines to your ~/.bashrc:
# For the python modules in open_spiel.
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel_submodule>
# For the Python bindings of Pyspiel
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel_submodule>/build/python
To replicate figure 3.a, run the following commands:
python xdo_psro_fixed_population_comparison.py --num_strats 2
python xdo_psro_fixed_population_comparison.py --num_strats 10
python xdo_psro_fixed_population_comparison.py --num_strats 20
python xdo_psro_fixed_population_comparison.py --num_strats 50
python xdo_psro_fixed_population_comparison.py --num_strats 100
python xdo_psro_fixed_population_comparison.py --num_strats 300
python xdo_psro_fixed_population_comparison.py --num_strats 1000
To replicate figure 3.b, run the following commands:
python main_experiments.py --algorithm xdo --game_name leduc_poker
python main_experiments.py --algorithm psro --game_name leduc_poker
To replicate figure 3.c and figure 4.a, run the following commands:
python main_experiments.py --algorithm xdo --game_name leduc_poker_dummy
python main_experiments.py --algorithm psro --game_name leduc_poker_dummy
python main_experiments.py --algorithm cfr --game_name leduc_poker_dummy
python main_experiments.py --algorithm xfp --game_name leduc_poker_dummy