README.md for the code used in the paper "Learning to Manipulate under Limited Information" by Wesley H. Holliday, Alexander Kristoffersen, and Eric Pacuit.
-
Learning to Manipulate.ipynb: This is the main notebook containing all the code for training and evaluating MLPs (including code to create graphs).
-
Learning to Manipulate - Example Manipulations.ipynb: In this notebook, you can select a trained MLP (for Borda) to manipulate using majority matrix information.
- model_functions.ipynb: The notebook containing all the code needed to find example manipulations. This notebook is imported into Learning to Manipulate - Example Manipulations.ipynb.
-
Ideal Manipulators.ipynb: Code to generate the ideal manipulator graphs in Figures 1 and 2.
-
example_trained_models/Borda_1_6_10_uniform_('majority',)_1_08-18-2023_09-10-18.pickle: Pickle file containing a dictionary of all the trained MLPs for Borda, generation 1, 6 candidates, 10 voters using majority matrix information.
-
evaluation/*: Subfolders that contain the evaluation data to produce the graphs in the paper and the supplementary material.
-
ideal_manipulator_data/*: Subfolders that contain the evaluation data for the ideal manipulators.
-
graphs/*: Subfolders that contain the graphs generated by the visualization code.
-
graphs_in_papers/*: Subfolders that contain the graphs used in the paper and the supplementary material.
-
supplementary_material_graphs/*: Subfolders that contain the graphs for the supplementary material.
Note: Running the main notebook will generate additional subdirectories.
The following packages are required to run the notebooks:
- PyTorch
- pref_voting: Preferential Voting Tools
- Google Cloud Storage
- The notebooks and the pref_voting library is built around a full SciPy stack: MatPlotLib, Numpy, Pandas, numba,
- tqdm.notebook
- seaborn
- multiprocess