python eef practical solver
Project description
eefpy -- efficient envy-free practical solver in Python
This is a Python envelope for the C++ library eef-practical-solver-code, by Andrzej Kaczmarczyk. The C++ code accompanies the paper "High-Multiplicity Fair Allocation Made More Practical", by Robert Bredereck, Aleksander Figiel (the main code contributor), Andrzej Kaczmarczyk, Dušan Knop and Rolf Niedermeier, which was presented at AAMAS 2021. The code is protected by GNU GPL v3.0.
The solver, given a collection of indivisible resources, agents and the agents' valuations of resources, finds an allocation meeting some configurable fairness and efficiency properties, or declares that such an allocation meeting the desired desiderata does not exist.
For a description of the supported fairness and efficiency concepts, techniques used by this solver, and the results obtained, see the above-mentioned paper.
Prerequisites
-
eefpy
depends oncppyy
, which requires C++ GNU. Therefore, it currently works on Linux and does not work on Windows. -
eefpy
uses the CPLEX solver by IBM. To get a free academic license, follow this guide: create an IBM id with your university-based email, login, and then click on "Data Science" at the left menu bar. Then, follow the installation guide -- install on Linux.
Installation (pip)
- Run:
pip install eefpy
- Navigate to the
solver_cpp
folder:cd solver_cpp
- Edit the file eefpy/solver_cpp/Makefile: update the
CPLEX_DIR
variable to match the folder in which you installed CPLEX. - Save the Makefile and run:
make eef.so
Installation from source
-
Clone the repository:
git clone https://github.com/ariel-research/eefpy cd eefpy
-
Create a Python virtual environment and activate it:
virtualenv venv source venv/bin/activate
-
Edit the file eefpy/solver_cpp/Makefile: update the
CPLEX_DIR
variable to match the folder in which you installed CPLEX. -
Install requirements:
pip install -r requirements.txt
-
Build and install eefpy from source
pip install -e .
-
Edit the file eefpy/solver_cpp/Makefile: update the
CPLEX_DIR
variable to match the folder in which you installed CPLEX. -
Save the Makefile and run:
make eef.so
Usage examples
Run the file examples/lib_examples.py.
Verification
To verify the results, make the solver in the eefpy/solver_cpp/ folder, then run:
eefpy/solver_cpp/main
Copy and paste the text from the files examples/paper_example and examples/example2.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.