Lily Xu, 2022
This code implements and evaluates algorithms for the paper "Ranked Prioritization of Groups in Combinatorial Bandit Allocation" from AAMAS-22. In this paper we introduce RankedCUCB, a multi-armed bandit approach to select combinatorial actions that optimize the prioritization-based objective introduced. This code also implements and compares against a variety of baselines.
@inproceedings{xu2022ranked,
title={Ranked Prioritization of Groups in Combinatorial Bandit Allocation},
author={Xu, Lily and Biswas, Arpita and Fang, Fei and Tambe, Milind},
booktitle={Proc.~31st International Joint Conference on Artificial Intelligence (IJCAI-22)},
year={2022},
}
This project is licensed under the terms of the MIT license.
To execute the code and run experiments comparing RankedCUCB and the baselines, run:
python driver.py
To vary the settings, use the options:
python driver.py -N 25 -B 5 -G 5 -T 500 -l 0.4 -s 0 -V
The options are
N
- number of arms (e.g., targets, ports, or neighborhoods in the wildlife, COVID testing, or mobile health domains)B
- budget (total number of resources to spend)G
- number of demographic groups (e.g., wildlife species or human age group)D
- domain {synthetic, wildlife}T
- horizonl
- lambdas
- random seedV
- whether to use verbose output (default False)
driver.py
- main script to execute one set of experimentsadversary.py
- set up reward functions (adversary.py from AAAI-21 paper on Dual-Mandate Patrols)ranked_cucb.py
- abstract class for RankedCUCB objective + algorithmranked_linear.py
- instantiated class for the linear objective + algoroithmget_domain.py
- sets up the two experimental domains (wildlife and synthetic). Note that we areprocess_results.py
- after running full set of experiments with different seeds, this script will consolidate the CSVs from each domain, computing mean and standard error, to be used in the paper
- python==3.7.4
- numpy==1.17.2
- pandas==0.25.1
- matplotlib==3.1.1
- scipy==1.3.1
- pytorch==1.4.0
- scikit-learn==0.21.3
- gurobi==9.1.2