https://github.com/ahmadyan/duplex
High performance optimization algorithm for nonconvex systems based on random tree search
https://github.com/ahmadyan/duplex
c-plus-plus machine-learning numerical-optimization optimization
Last synced: 8 months ago
JSON representation
High performance optimization algorithm for nonconvex systems based on random tree search
- Host: GitHub
- URL: https://github.com/ahmadyan/duplex
- Owner: ahmadyan
- License: mit
- Created: 2015-04-23T20:38:29.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-05-20T23:11:47.000Z (over 8 years ago)
- Last Synced: 2024-01-30T00:55:16.211Z (almost 2 years ago)
- Topics: c-plus-plus, machine-learning, numerical-optimization, optimization
- Language: C++
- Homepage: http://www.adel.ac
- Size: 24.5 MB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Duplex Optimization
[](https://circleci.com/gh/ahmadyan/Duplex)
[Duplex's website](http://adel.ac/duplex)
Duplex is a high-performance global optimization algorithm for nonconvex, nonlinear, and functional optimization problems. The following core capabilities are included:
* Duplex can find global optimum of nonlinear non-convex functions.
* Duplex implements variety of gradient-descent based optimizations internally, such as Momentum, AdaDelta, Adamax. Duplex can also optimize when the gradient information are not available.
* Duplex supports unsupervised learning algoriths for clustering.
* If the gradient information are not available (for circuit optimization), duplex uses reinforcement learning to predict the landscape of energy function.
* Duplex supports Synopsys HSPICE for solving nonlinear systems.
The latest release and a complete manual may be found at the Duplex home page: http://adel.ac/duplex
## Dependencies
Duplex requires the following dependencies to be installed:
* [Eigen 3.3.0](http://eigen.tuxfamily.org) linear algebra library. Install eigen using
brew install eigen
* [Boost 1.51](http://www.boost.org) Duplex requires both headers and compiled binaries. Install using brew install boost
* [Config4cpp](http://www.config4star.org/) configuration library. The binaries for the config4cpp for macOS are already shipped with Duplex (/submodules/config4cpp/lib).
* [Pangolin](https://github.com/stevenlovegrove/Pangolin) for plotting and managing display. The Pangolin will replace the gnuPlot. Duplex will install Pangolin as a submodule in /submodules/Pangolin.
* GnuPlot for drawing plots *(Optional)*. Install gnuplot using
brew install gnuplot
## Build
Duplex uses [CMake](www.cmake.org) as a build system.
git clone git://github.com/ahmadyan/Duplex
cd Duplex
mkdir build
cd build
cmake ..
make
Use cmake .. -GXcode to generate the xcode project file (or other generators).
Few examples are provided in /bin directory. Few MATLAB tests are available in the /test directory.
## Usage
* ./duplex --config example.cfg
* Currently the duplex binaries and the configurations has to be in the same directory, so please output the binary in the bin folder.
* Example configuration files are available in the /bin directory
* If using hspice as a numerical simulator, User should set an environment variable DUPLEX_SIM_ID to an integer value. If you don't want to set the environment variable, run Duplex from the python wrapper (test/duplex.py) in test directory. Python wrapper requires Python 3+.
## Misc
Duplex uses llvm coding style. Any PR will be formatted using clang-format.