Skip to main content

PyXAB - A Python Library for X-Armed Bandit and Online Blackbox Optimization Algorithms.

Project description

PyXAB - Python X-Armed Bandit

PyPI version Documentation Status Code style: black testing github-PyXAB forks github-PyXAB stars downloads github-PyXAB license Code style: black

PyXAB is a Python open-source library for X-armed bandit algorithms, a prestigious set of optimizers for online black-box optimization and hyperparameter optimization.

trajectory heatmap

PyXAB contains the implementations of 10+ optimization algorithms, including the classic ones such as Zooming, StoSOO, and HCT, and the most recent works such as GPO, StroquOOL and VHCT. PyXAB also provides the most commonly-used synthetic objectives to evaluate the performance of different algorithms and the implementations for different hierarchical partitions

PyXAB is featured for:

  • User-friendly APIs, clear documentation, and detailed examples
  • Comprehensive library of optimization algorithms, partitions and synthetic objectives
  • High standard code quality and high testing coverage
  • Low dependency for flexible combination with other packages such as PyTorch, Scikit-Learn

Reminder: The algorithms are maximization algorithms!

Quick Links

Quick Example

PyXAB follows a natural and straightforward API design completely aligned with the online blackbox optimization paradigm. The following is a simple 6-line usage example.

First, we define the parameter domain and the algorithm to run. At every round t, call algo.pull(t) to get a point and call algo.receive_reward(t, reward) to give the algorithm the objective evaluation (reward)

domain = [[0, 1]]               # Parameter is 1-D and between 0 and 1
algo = T_HOO(rounds=1000, domain=domain) 
for t in range(1000):
    point = algo.pull(t)
    reward = 1                  #TODO: User-defined objective returns the reward
    algo.receive_reward(t, reward)

More detailed examples can be found here

Documentations

Installation

To install via pip, run the following lines of code

pip install PyXAB                 # normal install
pip install --upgrade PyXAB       # or update if needed

To install via git, run the following lines of code

git clone https://github.com/WilliamLwj/PyXAB.git
cd PyXAB
pip install .

Features:

X-armed bandit algorithms

  • Algorithm starred are meta-algorithms (wrappers)
Algorithm Research Paper Year
Zooming Multi-Armed Bandits in Metric Spaces 2008
T-HOO X-Armed Bandit 2011
DOO Optimistic Optimization of a Deterministic Function without the Knowledge of its Smoothness 2011
SOO Optimistic Optimization of a Deterministic Function without the Knowledge of its Smoothness 2011
StoSOO Stochastic Simultaneous Optimistic Optimization 2013
HCT Online Stochastic Optimization Under Correlated Bandit Feedback 2014
POO* Black-box optimization of noisy functions with unknown smoothness 2015
GPO* General Parallel Optimization Without A Metric 2019
PCT General Parallel Optimization Without A Metric 2019
SequOOL A Simple Parameter-free And Adaptive Approach to Optimization Under A Minimal Local Smoothness Assumption 2019
StroquOOL A Simple Parameter-free And Adaptive Approach to Optimization Under A Minimal Local Smoothness Assumption 2019
VROOM Derivative-Free & Order-Robust Optimisation 2020
VHCT Optimum-statistical Collaboration Towards General and Efficient Black-box Optimization 2023
VPCT N.A. (GPO + VHCT) N.A.

Hierarchical partition

Partition Description
BinaryPartition Equal-size binary partition of the parameter space, the split dimension is chosen uniform randomly
RandomBinaryPartition Random-size binary partition of the parameter space, the split dimension is chosen uniform randomly
DimensionBinaryPartition Equal-size partition of the space with a binary split on each dimension, the number of children of one node is 2^d
KaryPartition Equal-size K-ary partition of the parameter space, the split dimension is chosen uniform randomly
RandomKaryPartition Random-size K-ary partition of the parameter space, the split dimension is chosen uniform randomly

Synthetic objectives

Objectives Image
Garland Garland
DoubleSine DoubleSine
DifficultFunc DifficultFunc
Ackley Ackley
Himmelblau Himmelblau
Rastrigin Rastrigin

Contributing

We appreciate all forms of help and contributions, including but not limited to

  • Star and watch our project
  • Open an issue for any bugs you find or features you want to add to our library
  • Fork our project and submit a pull request with your valuable codes

Please read the contributing instructions before submitting a pull request.

Citations

If you use our package in your research or projects, we kindly ask you to cite our work

@misc{Li2023PyXAB,
  doi = {10.48550/ARXIV.2303.04030},
  url = {https://arxiv.org/abs/2303.04030},
  author = {Li, Wenjie and Li, Haoze and Honorio, Jean and Song, Qifan},
  title = {PyXAB -- A Python Library for $\mathcal{X}$-Armed Bandit and Online Blackbox Optimization Algorithms},
  publisher = {arXiv},
  year = {2023},
}

We would also appreciate it if you could cite our related works.

@article{li2023optimumstatistical,
    title={Optimum-statistical Collaboration Towards General and Efficient Black-box Optimization},
    author={Wenjie Li and Chi-Hua Wang and Guang Cheng and Qifan Song},
    journal={Transactions on Machine Learning Research},
    issn={2835-8856},
    year={2023},
    url={https://openreview.net/forum?id=ClIcmwdlxn},
    note={}
}
@misc{li2022Federated,
  doi = {10.48550/ARXIV.2205.15268},
  url = {https://arxiv.org/abs/2205.15268}, 
  author = {Li, Wenjie and Song, Qifan and Honorio, Jean and Lin, Guang},
  title = {Federated X-Armed Bandit},
  publisher = {arXiv},
  year = {2022},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyXAB-0.3.0.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

PyXAB-0.3.0-py3-none-any.whl (54.4 kB view details)

Uploaded Python 3

File details

Details for the file PyXAB-0.3.0.tar.gz.

File metadata

  • Download URL: PyXAB-0.3.0.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.3

File hashes

Hashes for PyXAB-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d026e7e52868e7339219ecf8ab602bd8182f9df504b86b7d654bcc5c93d8e085
MD5 543b6a38efb0d1acc8b7513ea8b3bb3d
BLAKE2b-256 0180e2a57267708fe523d7f11995487e8e2ff5fa8c2c0ff085b5ff300bf2a7ce

See more details on using hashes here.

File details

Details for the file PyXAB-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: PyXAB-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 54.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.3

File hashes

Hashes for PyXAB-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07631b3cd4e9226c06e644145d175ddbdbd77220d89254c860b39ddc98a51d05
MD5 49228705d44fa97930e157de2a938f8e
BLAKE2b-256 291f6883d921325a8d9726c4d2f4e564ee8031dde75c46f707ffb84653ae8954

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page