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.
- 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.
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)
- 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.
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.