solver for parallel noisy global black-box optimization -- this is currently only work in progress
Python Shell
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.idea
doc
panobbgo
panobbgo_lib
sketchpad
.gitignore
.travis.yml
README.md
codestyle.sh
doc.sh
fabfile.py
requirements.txt
setup.py
setup_lib.py
test.sh

README.md

Panobbgo: Parallel Noisy Black-Box Global Optimization.

It minimizes a function over a box in $R^n$ (n = dimension of the problem) while respecting a vector of constraint violations.

Build Status

Documentation

DOWNLOAD & INSTALL

This program is work in progress. Only do python setup.py build|install if you know what you are doing.

To get it running, you have to install the reqired dependencies. I installed IPython 0.13 (or higher) from their git sources, git checkout v0.13, and installed it locally: python setup.py install --user (which required to install the python-zmq Debian package, too).

To meet the other dependencies, I used virtualenv

$ virtualenv --system-site-packages .
$ . bin/activate #remember, you have to source this *always*
$ pip install numpy
$ pip install scipy
$ pip install matplotlib

to have up to date versions without having to rely on the packages of Debian.

For the user-interface, you also have to install python-gtk2, which also provides the pygtk module, right?

Dependencies

  • IPython ≥ 0.13

    • and you have to start your cluster via ipcluster start ... and tell Panobbgo about it :-)
  • NumPy ≥ 1.5.0

  • SciPy ≥ 0.8.0

  • matplotlib ≥ 1.1.0 (at least)

  • pyGTK ≥ 2.0: python-gtk2 in Debian/Ubuntu

  • nose ≥ 1.1

  • coverage ≥ 3.4

  • It also calls Git to get the ref of the HEAD for logging.

Running

One time

  1. Setup your cluster according to the IPython documentation (you have to know the profile name, default is default)
  2. panobbgo_lib must be available on all nodes. It contains the problem definitions you want to use. In particular, you have to create a script to execute everything - while especially the problem definition needs to be available for deserialization on the remote machine.
  3. After running it the first time, it will create a configuration file. There you have to enter the profile name, if it is not default.

Every time

  1. Start the cluster.
  2. If you use virtualenv, do $ . bin/activate in another terminal.
  3. Run the script, examples are included.

License

Apache 2.0

Credits

Based on ideas of Snobfit: