Awesome
Optimal Auctions through Deep Learning
Implementation of "Optimal Auctions through Deep Learning" (https://arxiv.org/pdf/1706.03459.pdf)
Getting Started
Install the following packages:
- Python 2.7
- Tensorflow
- Numpy and Matplotlib packages
- Easydict -
pip install easydict
Running the experiments
RegretNet
For Gradient-Based approach:
Default hyperparameters are specified in regretNet/cfgs/.
For Sample-Based approach:
Modify the following hyperparameters in the config file specified in regretNet/cfg/.
cfg.train.gd_iter = 0
cfg.train.num_misreports = 100
cfg.val.num_misreports = 100 # Number of val-misreports is always equal to the number of train-misreports
For training the network, testing the mechanism learnt and computing the baselines, run:
cd regretNet
python run_train.py [setting_name]
python run_test.py [setting_name]
python run_baseline.py [setting_name]
setting_no | setting_name |
---|---|
(a) | additive_1x2_uniform |
(b) | unit_1x2_uniform_23 |
(c) | additive_2x2_uniform |
(d) | CA_sym_uniform_12 |
(e) | CA_asym_uniform_12_15 |
(f) | additive_3x10_uniform |
(g) | additive_5x10_uniform |
(h) | additive_1x2_uniform_416_47 |
(i) | additive_1x2_uniform_triangle |
(j) | unit_1x2_uniform |
(k) | additive_1x10_uniform |
(l) | additive_1x2_uniform_04_03 |
(m) | unit_2x2_uniform |
RochetNet (Single Bidder Auctions)
Default hyperparameters are specified in rochetNet/cfgs/.
For training the network, testing the mechanism learnt and computing the baselines, run:
cd rochetNet
python run_train.py [setting_name]
python run_test.py [setting_name]
python run_baseline.py [setting_name]
setting_no | setting_name |
---|---|
(a) | additive_1x2_uniform |
(b) | additive_1x2_uniform_416_47 |
(c) | additive_1x2_uniform_triangle |
(d) | additive_1x2_uniform_04_03 |
(e) | additive_1x10_uniform |
(f) | unit_1x2_uniform |
(g) | unit_1x2_uniform_23 |
MyersonNet (Single Item Auctions)
Default hyperparameters are specified in utils/cfg.py.
For training the network, testing the mechanism learnt and computing the baselines, run:
cd myersonNet
python main.py -distr [setting_name] or
bash myerson.sh
setting_no | setting_name |
---|---|
(a) | exponential |
(b) | uniform |
(c) | asymmetric_uniform |
(d) | irregular |
Settings
Single Bidder
-
additive_1x2_uniform: A single bidder with additive valuations over two items, where the items is drawn from U[0, 1].
-
unit_1x2_uniform_23: A single bidder with unit-demand valuations over two items, where the item values are drawn from U[2, 3].
-
additive_1x2_uniform_416_47: Single additive bidder with preferences over two non-identically distributed items, where v<sub>1</sub> ∼ U[4, 16]and v<sub>2</sub> ∼ U[4, 7].
-
additive_1x2_uniform_triangle: A single additive bidder with preferences over two items, where (v<sub>1</sub>, v<sub>2</sub>) are drawn jointly and uniformly from a unit-triangle with vertices (0, 0), (0, 1) and (1, 0).
-
unit_1x2_uniform: A single unit-demand bidder with preferences over two items, where the item values from U[0, 1]
-
additive_1x2_uniform_04_03: A Single additive bidder with preferences over two items, where the item values v<sub>1</sub> ∼ U[0, 4], v<sub>2</sub> ∼ U[0, 3]
-
additive_1x10_uniform: A single additive bidder and 10 items, where bidders draw their value for each item from U[0, 1].
Multiple Bidders
-
additive_2x2_uniform: Two additive bidders and two items, where bidders draw their value for each item from U[0, 1].
-
unit_2x2_uniform: Two unit-demand bidders and two items, where the bidders draw their value for each item from identical U[0, 1].
-
additive_2x3_uniform: Two additive bidders and three items, where bidders draw their value for each item from U[0, 1].
-
CA_sym_uniform_12: Two bidders and two items, with v<sub>1,1</sub>, v<sub>1,2</sub>, v<sub>2,1</sub>, v<sub>2,2</sub> ∼ U[1, 2], v<sub>1,{1,2}</sub> = v<sub>1,1</sub> + v<sub>1,2</sub> + C<sub>1</sub> and v<sub>2,{1,2}</sub> = v<sub>2,1</sub> + v<sub>2,2</sub> + C<sub>2</sub>, where C<sub>1</sub>, C<sub>2</sub> ∼ U[−1, 1].
-
CA_asym_uniform_12_15: Two bidders and two items, with v<sub>1,1</sub>, v<sub>1,2</sub> ∼ U[1, 2], v<sub>2,1</sub>, v<sub>2,2</sub> ∼ U[1, 5], v<sub>1,{1,2}</sub> = v<sub>1,1</sub> + v<sub>1,2</sub> + C<sub>1</sub> and v<sub>2,{1,2}</sub> = v<sub>2,1</sub> + v<sub>2,2</sub> + C<sub>2</sub>, where C<sub>1</sub>, C<sub>2</sub> ∼ U[−1, 1].
-
additive_3x10_uniform: 3 additive bidders and 10 items, where bidders draw their value for each item from U[0, 1].
-
additive_5x10_uniform: 5 additive bidders and 10 items, where bidders draw their value for each item from U[0, 1].
Visualization
Allocation Probabilty plots for unit_1x2_uniform_23 setting learnt by regretNet:
<img src="https://github.com/saisrivatsan/deep-opt-auctions/blob/master/regretNet/plots/visualization/unit_1x2_uniform_23_alloc1.png" width="300"> <img src="https://github.com/saisrivatsan/deep-opt-auctions/blob/master/regretNet/plots/visualization/unit_1x2_uniform_23_alloc2.png" width="300">
Allocation Probabilty plots for additive_1x2_uniform_416_47 setting learnt by rochetNet:
<img src="https://github.com/saisrivatsan/deep-opt-auctions/blob/master/rochetNet/plots/visualization/additive_1x2_uniform_416_47_alloc1.png" width="300"> <img src="https://github.com/saisrivatsan/deep-opt-auctions/blob/master/rochetNet/plots/visualization/additive_1x2_uniform_416_47_alloc2.png" width="300">
For other allocation probability plots, check-out the ipython notebooks in regretNet
or rochetNet
folder.
Reference
Please cite our work if you find our code/paper is useful to your work.
@article{DFNP19,
author = {Paul D{\"{u}}tting and Zhe Feng and Harikrishna Narasimhan and David C. Parkes and Sai Srivatsa Ravindranath},
title = {Optimal Auctions through Deep Learning},
journal = {arXiv preprint arXiv:1706.03459},
year = {2019},
}