/k_aug

KKT matrix sensitivity and Reduced Hessian computation

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Drawing

k_aug (kay-ogg)

Basic feature list:

  • Sensitivity matrices with K*dsdp = [d2Ldxdp^T dcdp^T]
  • Reduced Hessian matrices
  • Hessian and Jacobian computation via ASL.
  • dot_sens computations (for sensitivity)

k_aug is compatible with Pyomo and AMPL via ASL. The main functionality can be used through suffixes.

Requirements

  • CMAKE Version 3.5 or higher.
  • In some systems zlib might be required. For example, in ubuntu one can get it by using sudo apt install zlib1g-dev. On a mac brew install zlib reportedly works.
  • gcc compilers including gfortran

Dependencies

  • MC19 (HSL)
  • METIS (Script that downloads and configures is included)
  • SCOTCH (Script that downloads and configures is included)
  • OPENBLAS (Script that downloads and configures is included)
  • MUMPS (Script that downloads and configures is included)
  • ASL (Script that downloads and configures is included)
  • MC30 (HSL) (NOW OPTIONAL)
  • Pardiso (NOT SUPPORTED ANYMORE)

Installation

  1. Be sure to have a steady internet connection. Enter thirdparty directory and run the get.X or help.X scripts in the following order:
    1. ASL
    2. OpenBlas
    3. Metis
    4. Scotch
    5. Mumps
  2. Download and place the .tar.gz file of mc19 into the thirdparty/hsl/mc19 directory and then run help.mc19
  3. At the root directory use cmake to generate the makefile e.g. cmake CMakeLists.txt
  4. Run make
  5. Check the bin directory to find the k_aug executable

Known issues

  • AMPL can not recognize command line options
  • MUMPS will often try to use multiple cores. It is preferable to turn off this functionallity, set OMP_NUM_CORES=1 .

So far, hundreds of times tested. k_aug is part of the NMPC-MHE framework. Written by David Thierry, under BSD 3-Clause license.