Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/altaris/noisy-moo
A wrapper-based framework for pymoo problem modification.
https://github.com/altaris/noisy-moo
multi-objective-optimization optimization optimization-algorithms pymoo python
Last synced: about 1 month ago
JSON representation
A wrapper-based framework for pymoo problem modification.
- Host: GitHub
- URL: https://github.com/altaris/noisy-moo
- Owner: altaris
- License: mit
- Created: 2021-05-30T06:14:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-08T02:20:34.000Z (almost 2 years ago)
- Last Synced: 2024-11-02T07:49:38.469Z (about 2 months ago)
- Topics: multi-objective-optimization, optimization, optimization-algorithms, pymoo, python
- Language: Python
- Homepage: https://altaris.github.io/noisy-moo/nmoo.html
- Size: 3.79 MB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
noisy-moo
=========![Python 3](https://img.shields.io/badge/python-3-blue?logo=python)
[![MIT License](https://img.shields.io/badge/license-MIT-yellow)](https://choosealicense.com/licenses/mit/)
[![Code style](https://img.shields.io/badge/style-black-black)](https://pypi.org/project/black)
[![Maintainability](https://api.codeclimate.com/v1/badges/aedd8e97a23534a85bc5/maintainability)](https://codeclimate.com/github/altaris/noisy-moo/maintainability)
[![Documentation](https://badgen.net/badge/documentation/here/blue)](https://altaris.github.io/noisy-moo/nmoo.html)
A wrapper-based framework for [pymoo](https://pymoo.org/) problem modification
and algorithm benchmarking. Initially developed to test
*KNN-averaging*[^quatic21].# Installation
Simply run
```sh
pip install nmoo
```# Getting started
## In a notebook
See
[example.ipynb](https://github.com/altaris/noisy-moo/blob/main/example.ipynb)
for a quick example.
[![Launch Google Colab
notebook](https://img.shields.io/badge/launch-colab-blue?logo=googlecolab)](https://colab.research.google.com/github/altaris/noisy-moo/blob/main/example.ipynb)## For larger benchmarks
For larger benchmarks, you may want to use nmoo's CLI. First, create a module,
say [`example.py`](https://github.com/altaris/noisy-moo/blob/main/example.py),
containing your benchmark factory (a function that returns your
[benchrmark](https://altaris.github.io/noisy-moo/nmoo/benchmark.html#Benchmark)),
say `make_benchmark()`. Then, run it using
```sh
python -m nmoo run --verbose 10 example:make_benchmark
```
Refer to
```sh
python -m nmoo --help
```
for more information.# Main submodules and classes
* `nmoo.benchmark.Benchmark`: A `Benchmark` object represents... a benchmark
π€. At construction, you can specify problems and algorithms to run, how many
times to run them, what performance indicators to compute, etc. Refer to
`nmoo.benchmark.Benchmark.__init__` for more details.
* `nmoo.wrapped_problem.WrappedProblem`: The main idea of `nmoo` is to wrap
problems in layers. Each layer should redefine `pymoo.Problem._evaluate` to
intercept calls to the wrapped problem. It is then possible to apply/remove
noise, keep a call history, log, etc.
* `nmoo.denoisers`: Sublasses of `nmoo.wrapped_problem.WrappedProblem` that
implement denoising algorithms. In a simple scenario, a synthetic problem
would be wrapped in a noise layer, and further wrapped in a denoising layer
to test the performance of the latter.
* `nmoo.noises`: Sublasses of `nmoo.wrapped_problem.WrappedProblem` that apply
noise.# Contributing
## Dependencies
* `python3.8` or newer;
* `requirements.txt` for runtime dependencies;
* `requirements.dev.txt` for development dependencies (optional);
* `make` (optional).Simply run
```sh
virtualenv venv -p python3.8
. ./venv/bin/activate
pip install -r requirements.txt
pip install -r requirements.dev.txt
```## Documentation
Simply run
```sh
make docs
```
This will generate the HTML doc of the project, and the index file should be at
`docs/index.html`. To have it directly in your browser, run
```sh
make docs-browser
```## Code quality
Don't forget to run
```sh
make
```
to format the code following [black](https://pypi.org/project/black/),
typecheck it using [mypy](http://mypy-lang.org/), and check it against coding
standards using [pylint](https://pylint.org/).[^quatic21]: Klikovits, S., Arcaini, P. (2021). KNN-Averaging for Noisy
Multi-objective Optimisation. In: Paiva, A.C.R., Cavalli, A.R., Ventura
Martins, P., PΓ©rez-Castillo, R. (eds) Quality of Information and
Communications Technology. QUATIC 2021. Communications in Computer and
Information Science, vol 1439. Springer, Cham.
https://doi.org/10.1007/978-3-030-85347-1_36