All Projects → ZJU-FAST-Lab → SDLP

ZJU-FAST-Lab / SDLP

Licence: other
Seidel's LP Algorithm: Linear-Complexity Linear Programming for Small-Dimensional Variables

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to SDLP

Gosl
Linear algebra, eigenvalues, FFT, Bessel, elliptic, orthogonal polys, geometry, NURBS, numerical quadrature, 3D transfinite interpolation, random numbers, Mersenne twister, probability distributions, optimisation, differential equations.
Stars: ✭ 1,629 (+4425%)
Mutual labels:  linear-programming, computational-geometry
polytope
Geometric operations on polytopes of any dimension
Stars: ✭ 51 (+41.67%)
Mutual labels:  computational-geometry, polytope
minizinc-python
Access to all MiniZinc functionality directly from Python
Stars: ✭ 92 (+155.56%)
Mutual labels:  linear-programming
rmpk
Mixed Integer Linear and Quadratic Programming in R
Stars: ✭ 37 (+2.78%)
Mutual labels:  linear-programming
ELEMENTS
The C++ ELEMENTS library contains a suite of sub-libraries to support mathematical functions (elements), data representations (MATAR), and novel mesh classes (geometry and SWAGE) to support a very broad range of element types, numerical methods, and mesh connectivity data structures useful for computational physics and engineering.
Stars: ✭ 13 (-63.89%)
Mutual labels:  computational-geometry
blt
Lattice-based integer linear programming solver
Stars: ✭ 60 (+66.67%)
Mutual labels:  linear-programming
minilp
A pure Rust linear programming solver
Stars: ✭ 61 (+69.44%)
Mutual labels:  linear-programming
geojson-rbush
GeoJSON implementation of RBush — a high-performance JavaScript R-tree-based 2D spatial index for points and rectangles
Stars: ✭ 60 (+66.67%)
Mutual labels:  computational-geometry
pydata-london-2018
Slides and notebooks for my tutorial at PyData London 2018
Stars: ✭ 22 (-38.89%)
Mutual labels:  linear-programming
3D interactive graphics rendering engine
Develop a 3D interactive graphics rendering engine
Stars: ✭ 31 (-13.89%)
Mutual labels:  computational-geometry
polliwog
2D and 3D computational geometry library
Stars: ✭ 22 (-38.89%)
Mutual labels:  computational-geometry
rdp
A library providing FFI access to fast Ramer–Douglas–Peucker and Visvalingam-Whyatt line simplification algorithms
Stars: ✭ 20 (-44.44%)
Mutual labels:  computational-geometry
bentley-ottmann
simple Java implementation of Bentley-Ottmann sweep line algorithm for listing all intersections in a set of line segments
Stars: ✭ 16 (-55.56%)
Mutual labels:  computational-geometry
pytope
Minimal package for operations on polytopes, zonotopes, and invariant sets.
Stars: ✭ 26 (-27.78%)
Mutual labels:  polytope
Linear-Algebra-and-Its-Applications-notes
《线性代数及其应用》笔记
Stars: ✭ 196 (+444.44%)
Mutual labels:  linear-programming
tektosyne
The Tektosyne Library for Java provides algorithms for computational geometry and graph-based pathfinding, along with supporting mathematical utilities and specialized collections.
Stars: ✭ 52 (+44.44%)
Mutual labels:  computational-geometry
antaresViz
ANTARES Visualizations
Stars: ✭ 19 (-47.22%)
Mutual labels:  linear-programming
venn7
A musical interface based on symmetric 7-set Venn diagrams
Stars: ✭ 29 (-19.44%)
Mutual labels:  computational-geometry
emhass
emhass: Energy Management for Home Assistant, is a Python module designed to optimize your home energy interfacing with Home Assistant.
Stars: ✭ 54 (+50%)
Mutual labels:  linear-programming
polygon-splitter
A small (<10kb minified) javascript library for splitting polygons by a polyline.
Stars: ✭ 20 (-44.44%)
Mutual labels:  computational-geometry

SDLP

Seidel's LP Algorithm: Linear-Complexity Linear Programming (LP) for Small-Dimensions

About

  1. This solver is super efficient for small-dimensional LP with any constraint number, mostly encountered in computational geometry. It enjoys linear complexity about the constraint number.

  2. The speed is at least an order of magnitude faster than GLPK in small-dimensional LP (<10) with a large constraints number (>100).

  3. This solver is adapted from the linear-fractional programming (LFP) from Mike Hohmeyer at UC Berkeley based on Raimund Seidel's algorithm. Kernel functions are reorganized. Previously-existed bugs are fixed here. An easy-to-use interface for LP via Eigen is also added.

  4. Only a header file is all you need.

Interface

To solve a linear programming:

    min cTx, 
    s.t. Ax<=b,

where x and c are d-dimensional vectors, b an m-dimensional vector and A an mxd matrix. It is assumed that d is small (<10) while m can be arbitrary value (1<= m <= 1e+8).

Only one function is all you need:

template <int d>
double linprog(const Eigen::Matrix<double, d, 1> &c,
               const Eigen::Matrix<double, -1, d> &A,
               const Eigen::Matrix<double, -1, 1> &b,
               Eigen::Matrix<double, d, 1> &x);

Input:

    c: objective coefficient
    A: constraint matrix
    b: constraint bound

Output:

    x: optimal solution if solved
    return: finite value if solved
            -infinity if unbounded
            infinity if infeasible

Reference

  1. Megiddo, N., 1984. Linear programming in linear time when the dimension is fixed. Journal of the ACM (JACM), 31(1), pp.114-127.
  2. Seidel, R., 1991. Small-dimensional linear programming and convex hulls made easy. Discrete & Computational Geometry, 6(3), pp.423-434.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].