Unofficial implementation of the algorithm proposed in the article "Learning All Optimal Policies with Multiple Criteria" by Barrett and Narayanan (Proceedings of the International Conference on Machine Learning, 2008). This implementation has been used in the experimental evaluation of "Multi-Objective Reinforcement Learning for Provably Incentivising Alignment with Value Systems" by Rodriguez-Soto et al. (accepted in Artificial Intelligence, 2026).
Clone this repository with --recursive to clone all submodules recursively.
- CMake
- A version of g++ supporting C++20
- OpenMP for C++ parallelism
- Gperftools for profiling
- pip
- Navigate to the
chvi/qhullsubdirectory - Adjust the desired optimization options in the
CMakeList.txtfile. Levels-O3and above can potentially affect the output of Qhull for some degenerate instances. - Build and install Qhull with
cmake .,makeandsudo make install
- Download required packages with
pip install -r requirements.txt - Build the Cython module and package it in a Python Wheel with
./build.sh - Install the Python Wheel with
./install.sh
- Navigate to the
chvisubdirectory - Compile the C++ native version with
./build.sh