Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/odiroot/pyho

Hybrid Optimizer in Python (Github mirror)
https://github.com/odiroot/pyho

Last synced: 23 days ago
JSON representation

Hybrid Optimizer in Python (Github mirror)

Awesome Lists containing this project

README

        

=================================
PyHO - Hybrid optimizer in Python
=================================

PyHO is a prototype of an universal two-stage optimizer written in Python.

This project is based on the original C++ optimizer module from `FMDT`
(Flow Meter Design Tool) project.

Current status
--------------
- Objective function optimization with a genetic algorithm engine
- Support for customized genetic operators
- Support for `PyEvolve` specific `allele` operators
- Second stage optimization with Levenberg-Marquardt algorithm
- Optimization speedup using memoization
- Parallel processing using network or local worker processes
- `Local mode` with automatic worker management
- `Network mode` with arbitrary number of worker nodes
- Currently optimizer and worker processes need access to the same file system
(passing files through the network channel is not implemented nor designed)
- Reading original FMDT input file formats (coil and grid definitions)
- Optimizer can be successfully launched by the `FMDT` GUI.

Dependencies
------------

**PyHO has some hard dependencies**:

* ``zmq`` Python package (called ``python-zmq`` in Debian based systems) -
version 2.1.9 or newer is highly recommended
* The `ZeroMQ` library (or ``libzmq1``) with sources (``libzmq-dev``) - again
the 2.1.9+ version is preferred.

If you want to use hybrid optimization mode make sure you also have:

* Source distribution of BLAS (``libblas-dev``) and LAPACK (``liblapack-dev``) libraries
* The `NumPy` Python library (try ``python-numpy``)

PyHO also uses following Python packages:

* ``Cython`` (version at least 0.16)
* ``pyximport``
* ``PyEvolve``
* ``levmar`` (modified version supporting user initiated breaks)

All these libraries are included in the ``libs`` directory for convenience.
When present in the standard Python path, system installed versions take
precedence.

**A note of warning**: This project uses custom ``levmar`` package, officially
available version cannot be used, as it will break during hybrid optimization.

Quick start
-----------

You can start the optimizer directly by launching ``run_optimizer`` Python
script from the root project directory. Running it with ``--help`` option
will show all available options.

You can use example evaluator based on FMDT project by using ``run_bc_evaluator``
shell script. There are example coil/grid definition files located in ``assets``
directory under ``examples/fmdt/`` path.

There are 32-bit Linux and 64-bit Linux precompiled binaries of `FMDT` GUI
application packaged in a ``GUI`` directory. Run it by calling ``Kanal_v1``
shell script.