Skip to content

Automatically exported from code.google.com/p/otkpp

Notifications You must be signed in to change notification settings

chivalry123/otkpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

Introduction
------------
OTK++ is a nonlinear constrained/unconstrained optimization library 
written in C++. It also has a Python-based interface for testing 
and comparing algorithms and a Qt-based GUI for demonstration 
purposes. Linear algebra operations and Python interfaces are 
written by using uBLAS and Boost.Python.

Implemented algorithms
----------------------
The currently implemented algorithms are for minimization of 
functions of the form f:R^n->R. Some algorithms also support 
imposing bound constraints.

The following algorithms are implemented by the author of this package:
  Line search algorithms:
    * More and Thuente
    * Fletcher
  Trust region algorithms:
    * Steihaug
    * Dogleg
  Multidimensional solvers:
   Direct search:
    * Hooke-Jeeves
    * Nelder-Mead simplex
   Gradient-based (with line searches)
    * PARTAN
    * Fletcher-Reeves and Polak-Ribiere conjugate gradient
    * BFGS and L-BFGS
    * Modified Newton
   Gradient-based (using trust regions)
    * Steihaug-SR1
    * Dogleg-BFGS

Other algorithms included in this library:
  * Algorithms implemented in the GSL multimin package (version 1.11)
  * L-BFGS-B for bound-constrained large-scale optimization [3]
  * LMBM algorithm for nonsmooth large-scale optimization [4]

Requirements
------------

Required dependencies:
  uBLAS   >= 1.34
  g++     >= 4.2
  CMake   >= 2.6

Optional dependencies:
  Library/program   Version    CMake flag                 Enables
  GSL               >= 1.11    -DWITH_GSL=ON/OFF          GSL minimization algorithms
  GNU libmatheval   >= 1.1.3   -DWITH_LIBMATHEVAL=ON/OFF  symbolic function evaluation
  gfortran          >= 4.2     -DWITH_FORTRAN=ON/OFF      algorithms implemented in 
                                                          Fortran (e.g. LMBM)
  Qt                >= 4.3     -DWITH_QT=ON/OFF           Qt-based GUI
  Qwt               >= 5.1     -DWITH_QT=ON/OFF           2d plotting widgets
  QwtPlot3D         >= 0.2     -DWITH_QT=ON/OFF           3d plotting widgets

The above flags are set to 'ON' by default. 

Installation
------------

Installing the C++ libraries:
-----------------------------

OTK++ uses CMake as its build system. To install the C++ libraries, 
extract the otkpp tarball and type the following commands:

  cmake . <optional flags>   <- put your CMake flags here
  make
  make install

By default, headers will be installed in /usr/local/include/otkpp, 
libraries in /usr/local/lib and binaries in /usr/local/bin. You can 
change the install prefix by appending -DCMAKE_INSTALL_PREFIX=<your-prefix> 
to the list of CMake flags.

Installing PyOTK:
-----------------

PyOTK uses distutils for compiling the C++ interface libraries and 
copying the Python scripts to appropriate directories in the system path. 
To install PyOTK, extract the pyotk tarball and type the following command:

  python setup.py install

References
----------

The algorithms implemented in OTK++ are based on the following 
references:

[1] J. Nocedal and S.J. Wright, Numerical Optimization, 1999

[2] C.T. Kelley, Iterative Methods for Optimization, 1999

[3] C. Zhu, R.H. Byrd and J. Nocedal, L-BFGS-B: Algorithm 778: L-BFGS-B, 
    FORTRAN routines for large scale bound constrained optimization (1997), 
    ACM Transactions on Mathematical Software, Vol 23, Num. 4, pp. 550-560

[4] N. Karmitsa,  "LMBM - FORTRAN Subroutines for Large-Scale Nonsmooth 
    Minimization: User's Manual", TUCS Technical Report, No. 856, Turku 
    Centre for Computer Science, Turku, 2007.

Seppo Pulkkinen <seppul@utu.fi>

About

Automatically exported from code.google.com/p/otkpp

Resources

Stars

Watchers

Forks

Packages

No packages published