Archives - Lindo API 5.0


LINDO Systems is proud to introduce LINDO API 5.0. The general features include a) global and multistart solvers for global optimization, b) nonlinear solvers for general nonlinear optimization, c) simplex solvers for linear optimization d) barrier solvers for linear, quadratic and second-order-cone optimization e) mixed-integer solvers for linear-integer and nonlinear-integer optimization, f) tools for analysis of infeasible linear, integer and nonlinear models, g) interfaces to other systems such as MATLAB, Ox, Java and .NET and h) support of more platforms (see below). The primary features in LINDO API 5.0 are:

General Nonlinear Solver:

LINDO API is the first full-featured solver callable library to offer general nonlinear and nonlinear/integer capabilities. This unique feature allows developers to incorporate a single general purpose solver into their custom applications. As with its linear and integer capabilities, LINDO API provides the user with a comprehensive set of routines for formulating, solving, and modifying nonlinear models. The Nonlinear license option is required in order to use the nonlinear capabilities with LINDO API.


Global Solver:

The global solver combines a series of range bounding (e.g., interval analysis and convex analysis) and range reduction techniques (e.g., linear programming and constraint propagation) within a branch-and-bound framework to find proven global solutions to non-convex NLPs. Traditional nonlinear solvers can get stuck at suboptimal, local solutions. This is no longer the case when using the global solver.

Multistart Solver:

The multistart solver intelligently generates a sequence of candidate starting points in the solution space of NLP and mixed integer NLPs. A traditional NLP solver is called with each starting point to find a local optimum. For non-convex NLP models, the quality of the best solution found by the multistart solver tends to be superior to that of a single solution from a traditional nonlinear solver. A user adjustable parameter controls the maximum number of multistarts to be performed.

Barrier (Interior-Point) Solver:

Barrier solver is an alternative way for solving linear and quadratic programming problems. LINDO API’s state-of-the-art implementation of the barrier method offers great speed advantages for large scale sparse models. LINDO API 5.0 also includes a special variant of the barrier solver specifically designed to solve Second-Order-Cone problems.

Simplex Solvers:

LINDO API 5.0 offers two advanced implementations of the primal and dual simplex methods as the primary means for solving linear programming problems. Its flexible design allows the users to fine tune each method by altering several of the algorithmic parameters.

Mixed Integer Solver:

The mixed integer solver’s capabilities of LINDO API 5.0 extend to linear, quadratic, and general nonlinear integer models. It contains several advanced solution techniques such as a) cut generation b) tree reordering to reduce tree growth dynamically, and c) advanced heuristic and presolve strategies.

Model and Solution Analysis Tools:

LINDO API 5.0 includes a comprehensive set of analysis tools for a) debugging of infeasible linear, integer and nonlinear programs using series of advanced techniques to isolate the source of infeasibilities to smaller subset of the original constraints, b) performing sensitivity analysis to determine the sensitivity of the optimal basis to changes in certain data components (e.g. objective vector, right-hand-size values etc..).

Quadratic Recognition Tools:

The QP recognition tool is a useful algebraic pre-processor that automatically determines if an arbitrary NLP is actually a quadratic model. QP models may then be passed to the faster quadratic solver, which is available as part of the barrier solver option.

Linearization Tools:

Linearization is a comprehensive reformulation tool that automatically converts many non-smooth functions and operators (e.g., max and absolute value) to a series of linear, mathematically equivalent expressions. Many non-smooth models may be entirely linearized. This allows the linear solver to quickly find a global solution to what would have otherwise been an intractable nonlinear problem.

Decomposition Tools:

Many large scale linear and mixed integer problems have constraint matrices that are totally decomposable into a series of independent block structures. A user adjustable parameter can be set, so the solver checks if a model can be broken into smaller independent models. If total decomposition is possible, it will solve the independent problems sequentially to reach a solution for the original model. This may result in dramatic speed improvements.

Java Native Interface:

LINDO API includes Java Native Interface (JNI) support for Windows, Solaris, and Linux platforms. This new feature allows users to call LINDO API from Java applications, such as applets running from a browser.

MATLAB Interface:

The Matlab interface allows using LINDO API functions from within MATLAB. Using MATLAB’s modeling and programming environment, you can build and solve linear, nonlinear, quadratic, and integer models and create custom algorithms based upon LINDO API’s routines and solvers.

.NET Interface:

LINDO API includes C# and VB.NET interfaces that allow it to be used from within .NET's distributed computing environment (including Windows Forms, ADO.NET, and ASP.NET). The interfaces are in the form of classes that allow managed .NET code to interact with unmanaged LINDO API code via the "System.Runtime.InteropServices" namespace.

Ox Interface:

This interface provides users of the Ox statistical package, the ability to call LINDO API’s functions the same way they call native Ox functions. This offers greater flexibility in developing higher-level Ox routines that can set up and solve different kinds of large-scale optimization problems, testing new algorithmic ideas or expressing new solution techniques.


LINDO API 5.0 is currently available on Solaris, Windows 32-bit for x86, Linux 32-bit for x86, Windows 64-bit for x64 and Linux 64-bit for x64.