An active set-based NLP solver

SLEQP

Introduction

SLEQP is a software package for large-scale nonlinear optimization. It is designed to find (local) solutions of mathematical optimization problems of the form

   min     f(x)
  x ∈ ℝⁿ

s.t.         l ≤ c(x) ≤ u
           x_l ≤  x   ≤ x_u

where f: ℝⁿ --> ℝ is the optimization objective, and c: ℝⁿ --> ℝᵐ are optimization constraints.

The vectors l, u ∈ ℝᵐ denote the lower and upper bounds on the nonlinear constraints, while the vectors x_l, x_u ∈ ℝⁿ are bounds on the variables. The functions f(x) and c(x) can be nonlinear and nonconvex, but should be twice continuously differentiable.

Dependencies

For the solution of the linear programming problem, one of the following linear programming libraries is required:

For factorizations, one of the following factorization libraries is required:

Additional dependencies:

  • trlib for nonconvex trust region QP solving

Optional dependencies for the python bindings:

  • Python itself, including setuptools, numpy, and scipy
  • Cython to build the extension

Optional dependencies for the mex bindings:

Optional dependencies for the AMPL bindings:

  • The AMPL solver library ASL

Optional dependencies for the unit tests:

Installation

In order to compile this package, use the following sequence of commands:

mkdir build && cd build
cmake .. <OPTIONS>
make
[make build_tests && make test]

Options

Use the following options to customize the build process:

  • SLEQP_ENABLE_UNIT_TESTS: Enables the unit tests (default: On)
  • SLEQP_ENABLE_CUTEST: Enables the CUTest suite (default: Off)
  • SLEQP_ENABLE_PYTHON: Enables the build of the python bindings (default : On)
  • SLEQP_LPS: Set to specify a linear programming library
  • SLEQP_FACT: Set to specify a factorization library
  • SLEQP_ENABLE_MATLAB_MEX: Enables the build of mex bindings using MATLAB (default : Off)
  • SLEQP_ENABLE_OCTAVE_MEX: Enables the build of mex bindings using Octave (default : Off)
  • SLEQP_ENABLE_AMPL: Enables the build of the AMPL interface (default: Off)

References

  • Byrd, Richard H., et al. "An algorithm for nonlinear optimization using linear programming and equality constrained subproblems." Mathematical Programming 100.1 (2003): 27-48.
  • Lenders, Felix, Christian Kirches, and Andreas Potschka. "trlib: A vector-free implementation of the GLTR method for iterative solution of the trust region problem." Optimization Methods and Software 33.3 (2018): 420-449.
Owner
Christoph Hansknecht
Christoph Hansknecht
Similar Resources

Contains a sudoku solver - OCR. Project done with classmates during third semester at EPITA.

sudokUwU sudokUwU is a sudoku solver made by 4 students at EPITA. This project is a mandatory work from S3 cycle! The Team Johan Tran Adrian Grillet V

May 5, 2022

Tic-Tac-Toe, Scientific calculator, Sudoku solver written in C.

Simple command line projects in C: Tic-Tac-Toe - A computer Tic-Tac-Toe player. No algorithms used, simply written using too many if statements. Sudok

Dec 25, 2021

DG-Mesh-Optimization - Discontinuous Galerkin (DG) solver coupled with a Quasi-Newton line-search algorithm to optimize the DG mesh.

DG-Mesh-Optimization - Discontinuous Galerkin (DG) solver coupled with a Quasi-Newton line-search algorithm to optimize the DG mesh.

Date written: December 2020 This project was pursued as my final project for MECH 579 (Multidisciplinary Design Optimization) at McGill University, ta

Apr 6, 2022

Openmind - Deduction framework with arbitrary mathematical system solver.

openmind Compilation: Debian/Ubuntu: sudo apt install cmake g++ git libboost-all-dev libxss-dev libx11-dev libxcb-screensaver0-dev ocl-icd-opencl-dev

Apr 3, 2022

Maya Soft IK Solver

Maya Soft IK Solver Our maya IK solver is an advanced solution for 2 bones setup. It fixes the annoying “pop” problem at full extension in the normal

Mar 3, 2022

Offline fluid simulation solver adopted from https://github.com/doyubkim/fluid-engine-dev.

Offline fluid simulation solver adopted from https://github.com/doyubkim/fluid-engine-dev.

FluidEngine This is a fluid simulation engine for computer graphics applications. I adopt it from Doyub Kim's fluid-engine-dev. It's built on C++11 an

May 7, 2022

A set of tutorial projects for creating a simple digital radio receiver based on the STM32G431KB microcontroller

simple-radio Обучающие проекты по созданию простого цифрового радиоприемника на базе микроконтроллера STM32G431KB. Разработка программ выполнялась в W

Apr 11, 2022

Mystikos is a set of tools for running applications in a hardware trusted execution environment (TEE)

Mystikos is a set of tools for running applications in a hardware trusted execution environment (TEE)

Mystikos is a set of tools for running applications in a hardware trusted execution environment (TEE). The current release supports Intel ® SGX while other TEEs may be supported in future releases. Linux is also a supported target, though only suitable for testing purposes as it provides no additional protection.

May 19, 2022

A guide and set of tools for working with TinyML powered Audio Sensors

A guide and set of tools for working with TinyML powered Audio Sensors

Audio Sensor Toolkit This is a guide on how to build an Audio Sensor using Machine Learning, and helpful tools. Audio Sensor Guide Audio Tools Acceler

Sep 16, 2021
Comments
  • Fail to build on Ubuntu 18.04 no <threads.h>

    Fail to build on Ubuntu 18.04 no

    Trying to build on Ubuntu 18.04 I'm getting the error that `#include <threads.h>" can not be found. Maybe it's a cross platform header made by yourself but not included on this project ?

    make
    [  0%] Built target sleqp_local_headers
    Scanning dependencies of target sleqp_objects
    [  1%] Building C object src/main/CMakeFiles/sleqp_objects.dir/aug_jac/aug_jac.c.o
    [  3%] Building C object src/main/CMakeFiles/sleqp_objects.dir/aug_jac/box_constrained_aug_jac.c.o
    [  3%] Building C object src/main/CMakeFiles/sleqp_objects.dir/aug_jac/standard_aug_jac.c.o
    [  5%] Building C object src/main/CMakeFiles/sleqp_objects.dir/aug_jac/unconstrained_aug_jac.c.o
    [  5%] Building C object src/main/CMakeFiles/sleqp_objects.dir/callback_handler.c.o
    [  7%] Building C object src/main/CMakeFiles/sleqp_objects.dir/cauchy/box_constrained_cauchy.c.o
    [  9%] Building C object src/main/CMakeFiles/sleqp_objects.dir/cauchy/cauchy.c.o
    [  9%] Building C object src/main/CMakeFiles/sleqp_objects.dir/cauchy/standard_cauchy.c.o
    [ 11%] Building C object src/main/CMakeFiles/sleqp_objects.dir/cauchy/unconstrained_cauchy.c.o
    [ 11%] Building C object src/main/CMakeFiles/sleqp_objects.dir/cmp.c.o
    [ 13%] Building C object src/main/CMakeFiles/sleqp_objects.dir/deriv_check.c.o
    [ 15%] Building C object src/main/CMakeFiles/sleqp_objects.dir/dual_estimation/dual_estimation.c.o
    [ 15%] Building C object src/main/CMakeFiles/sleqp_objects.dir/dual_estimation/dual_estimation_lp.c.o
    [ 16%] Building C object src/main/CMakeFiles/sleqp_objects.dir/dual_estimation/dual_estimation_lsq.c.o
    [ 16%] Building C object src/main/CMakeFiles/sleqp_objects.dir/dual_estimation/dual_estimation_mixed.c.o
    [ 18%] Building C object src/main/CMakeFiles/sleqp_objects.dir/dyn.c.o
    [ 18%] Building C object src/main/CMakeFiles/sleqp_objects.dir/enum.c.o
    /home/mingo/dev/lp/sleqp/src/main/enum.c:6:10: fatal error: threads.h: No such file or directory
        6 | #include <threads.h>
          |          ^~~~~~~~~~~
    compilation terminated.
    src/main/CMakeFiles/sleqp_objects.dir/build.make:289: recipe for target 'src/main/CMakeFiles/sleqp_objects.dir/enum.c.o' failed
    make[2]: *** [src/main/CMakeFiles/sleqp_objects.dir/enum.c.o] Error 1
    CMakeFiles/Makefile2:1212: recipe for target 'src/main/CMakeFiles/sleqp_objects.dir/all' failed
    make[1]: *** [src/main/CMakeFiles/sleqp_objects.dir/all] Error 2
    Makefile:181: recipe for target 'all' failed
    make: *** [all] Error 2
    
CppUTest For QP/C++ implements a CppUTest port of the QP Framework, with supporting utilities, enabling easy host based unit testing of active objects.

CppUTest for the QP/C++ Real-Time Embedded Framework Build and Test status: Copyright Matthew Eshleman If this project inspires your team to select th

May 14, 2022
Realtime Micro Kernel -- Event-driven Run-to-Completion RTOS with Active Objects, Timed Events, Memory Pools, and Message Queues

Realtime Micro Kernel Features Active Objects Message queues Variable sized, custom messages Periodic and single timed events Memory pools Supported P

Feb 25, 2022
oZKS (Ordered Zero-Knowledge Set) is a library that provides an implementation of an Ordered (and Append Only) Zero-Knowledge Set.

Ordered Zero-Knowledge Set - oZKS Introduction oZKS is a library that provides an implementation of an Ordered (and Append Only) Zero Knowledge Set. A

Mar 25, 2022
6D - Pose Annotation Tool (6D-PAT) - is a tool that allows the user to load a set of images and also a set of 3D models and annotate where in the 2D image the 3D object ist placed.
6D - Pose Annotation Tool (6D-PAT) - is a tool that allows the user to load a set of images and also a set of 3D models and annotate where in the 2D image the 3D object ist placed.

6D - Pose Annotation Tool (6D-PAT) For detiled explanations checkout the WikiPage. What is it? With 6D-PAT you can create 6D annotations on images for

May 12, 2022
This is the source code of SATCH a SAT solver written from scratch in C.

The main purpose of this solver is to provide a simple and clean code base for explaining and experimenting with SAT solvers. It is simpler than the source code of CaDiCaL and of Kissat in particular, while still featuring most important implementation techniques needed to obtain a state-of-the-art SAT solver

May 13, 2022
SANM: A Symbolic Asymptotic Numerical Solver

SANM: A Symbolic Asymptotic Numerical Solver This repository is the official implementation of the SANM solver described in our paper to appear at SIG

Apr 28, 2022
A crossword solver

Word Search Word search is a program that takes a corpus and searches for those words in a grid of letters using a trie and DFS. Quick start Word sear

Nov 3, 2021
Wavelike and Particlelike Phonon Transport (WPPT) Solver

'WPPT': A solver for Wave- and Particle-like Phonon Transport (WPPT) Authors: Zhongwei Zhang [email protected] / [email protected], Inst

May 9, 2022
The ROS version of ICP Mapping with QPEP Solver (Quadratic Pose Estimation Problems)
 The ROS version of ICP Mapping with QPEP Solver (Quadratic Pose Estimation Problems)

The ROS version of ICP Mapping with QPEP Solver (Quadratic Pose Estimation Problems) The project is based on https://github.com/ethz-asl/ethzasl_icp_m

Feb 25, 2022