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.