/deep-opt-auctions

Implementation of Optimal Auctions through Deep Learning

Primary LanguageJupyter NotebookMIT LicenseMIT

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 v1 ∼ U[4, 16]and v2 ∼ U[4, 7].

  • additive_1x2_uniform_triangle: A single additive bidder with preferences over two items, where (v1, v2) 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 v1 ∼ U[0, 4], v2 ∼ 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 v1,1, v1,2, v2,1, v2,2 ∼ U[1, 2], v1,{1,2} = v1,1 + v1,2 + C1 and v2,{1,2} = v2,1 + v2,2 + C2, where C1, C2 ∼ U[−1, 1].

  • CA_asym_uniform_12_15: Two bidders and two items, with v1,1, v1,2 ∼ U[1, 2], v2,1, v2,2 ∼ U[1, 5], v1,{1,2} = v1,1 + v1,2 + C1 and v2,{1,2} = v2,1 + v2,2 + C2, where C1, C2 ∼ 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:

Allocation Probabilty plots for additive_1x2_uniform_416_47 setting learnt by rochetNet:

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},
}