Skip to main content

A wrapper-based framework for pymoo problem modification.

Project description

noisy-moo

Python 3 MIT License Code style Maintainability Documentation

The C O W

A wrapper-based framework for pymoo problem modification and algorithm benchmarking. Initially developed to test KNN-averaging[^quatic21].

Installation

Simply run

pip install nmoo

Getting started

In a notebook

See example.ipynb for a quick example. Launch Google Colab notebook

For larger benchmarks

For larger benchmarks, you may want to use nmoo's CLI. First, create a module, say example.py, containing your benchmark factory (a function that returns your benchrmark), say make_benchmark(). Then, run it using

python -m nmoo run --verbose 10 example:make_benchmark

Refer to

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

virtualenv venv -p python3.8
. ./venv/bin/activate
pip install -r requirements.txt
pip install -r requirements.dev.txt

Documentation

Simply run

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

make docs-browser

Code quality

Don't forget to run

make

to format the code following black, typecheck it using mypy, and check it against coding standards using pylint.

[^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

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

nmoo-5.1.0.tar.gz (41.8 kB view details)

Uploaded Source

Built Distribution

nmoo-5.1.0-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file nmoo-5.1.0.tar.gz.

File metadata

  • Download URL: nmoo-5.1.0.tar.gz
  • Upload date:
  • Size: 41.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for nmoo-5.1.0.tar.gz
Algorithm Hash digest
SHA256 631960c7b5f49e115f0ac4e9209bef8bdccea3f4a94aacc895a2e5383c6ca9d8
MD5 a6d177338e62140c32dbed87deb9bbf7
BLAKE2b-256 645e503edea005ae1b2d200cd124c12c0a0e3ae849bdfd73341cb0ca5619cbde

See more details on using hashes here.

File details

Details for the file nmoo-5.1.0-py3-none-any.whl.

File metadata

  • Download URL: nmoo-5.1.0-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for nmoo-5.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06fa0af952dbf098e67670f33a0bdc05f66cad447ee30dbd17d4c075a39d7e18
MD5 40019a228e7666059b25cf774ec48fb0
BLAKE2b-256 fc6101a9cfbc5120c6ac159e4f738782740c206326cee644ce2f334a71293df4

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