Metadata-Version: 2.1
Name: waggon
Version: 0.6.1
Summary: WAsserstein Global Gradient-free OptimisatioN (WAGGON) methods library.
Home-page: https://github.com/hse-cs/waggon
Author: Tigran Ramazyan
Author-email: ramazyant@gmail.com
License: MIT
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: GPy==1.13.2
Requires-Dist: gpytorch==1.10.0
Requires-Dist: matplotlib==3.7.5
Requires-Dist: numpy>=1.26.2
Requires-Dist: scikit_learn==1.3.2
Requires-Dist: scipy==1.12.0
Requires-Dist: setuptools==72.1.0
Requires-Dist: torch==2.2.2
Requires-Dist: torchbnn==1.2
Requires-Dist: torchensemble==0.1.9
Requires-Dist: tqdm==4.66.4
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: twine>=4.0.2; extra == "dev"

# Welcome to WAGGON: WAssrestein Global Gradient-free OptimisatioN

[![PyPI version](https://badge.fury.io/py/waggon.svg)](https://badge.fury.io/py/waggon.svg)
[![Documentation](https://img.shields.io/badge/documentation-yes-green.svg)](https://hse-cs.github.io/waggon)
[![Downloads](https://static.pepy.tech/badge/waggon)](https://pepy.tech/project/waggon)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

`WAGGON` is a python library of black box gradient-free optimisation. Currently, the library contains implementations of optimisation methods based on Wasserstein uncertainty and baseline approaches from the following papers:

- Tigran Ramazyan, Mikhail Hushchyn and Denis Derkach. Global Optimisation of Black-Box Functions with Generative Models in the Wasserstein Space, 2024.[[arxiv]](https://arxiv.org/abs/2407.11917) [[ECAI 2024 Proceedings]](https://ebooks.iospress.nl/doi/10.3233/FAIA240765)

<!-- ![](https://github.com/hse-cs/waggon/blob/master/images/readme_image.png) -->

## Implemented methods
- Wasserstein Uncertainty Global Optimisation (WU-GO)
- Bayesian optimisation: via Expected Improvement (EI), Lower and Upper Confidence Bounds (LCB, UCB)

## Installation

```
pip install waggon
```
or
```
git clone https://github.com/hse-cs/waggon
cd waggon
pip install -e
```

## Basic usage

(See more examples in the [documentation](https://hse-cs.github.io/waggon/).)

The following code snippet is an example of surrogate optimisation.

```python
import waggon
from waggon.optim import SurrogateOptimiser

from waggon.acquisitions import WU
from waggon.surrogates.gan import WGAN_GP as GAN
from waggon.test_functions import three_hump_camel

# initialise the function to be optimised
func = three_hump_camel()
# initialise the surrogate to carry out optimisation
surr = GAN()
# initialise optimisation acquisition function
acqf = WU()

# initialise optimiser
opt = SurrogateOptimiser(func=func, surr=surr, acqf=acqf)

# run optimisation
opt.optimise()

# visualise
waggon.utils.display()
```


## Support

- Home: [https://github.com/hse-cs/waggon](https://github.com/hse-cs/waggon)
- Documentation: [https://hse-cs.github.io/waggon](https://hse-cs.github.io/waggon)
- For any usage questions, suggestions and bugs please use the [issue page](https://github.com/hse-cs/waggon/issues).

<!-- ## Thanks to all our contributors

<a href="https://github.com/HSE-LAMBDA/probaforms/graphs/contributors">
  <img src="https://contributors-img.web.app/image?repo=HSE-LAMBDA/probaforms" />
</a> -->
