# Overview

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