LINDO API includes a set of built-in solvers to tackle a wide variety of problems. It offers increased control of the algorithms and solver parameters. This allows the user to customize the solution strategy to individual applications to achieve optimal control and speed.
The LINDO API is available with three state of the art solvers for linear models.
Primal and Dual Simplex Solvers
The base version includes the Primal and Dual Simplex solvers, which incorporate numerous enhancements for maximum speed and robustness. Pricing options, for instance, include partial pricing and Devex. You have the option to choose the best pricing strategy based upon problem characteristics.
The optional Barrier solver provides an alternative means of solving linear models. The Barrier option utilizes a barrier or interior point method to solve linear models. Unlike the Simplex solvers that move along the exterior of the feasible region, the Barrier solver moves through the interior space to find the optimum. Depending upon the size and structure of a particular model, the Barrier solver may be significantly faster than the Simplex solvers and can provide exceptional speed on large linear models -- particularly on sparse models with more than 5,000 constraints or highly degenerate models. The Barrier license option is required to utilize the Barrier solver.
For models with general and binary integer restrictions, LINDO API includes an integer solver that works in conjunction with the linear, nonlinear and quadratic solver. For linear models, you have the ability to tailor the solution strategy and apply different classes of cuts to ensure maximum speed on particular problem structures.
LINDO API is the first full-featured callable solver to offer general nonlinear capabilities. LINDO API includes a number of ways to find locally or globally optimal solutions to nonlinear models.
General Nonlinear Solver
For nonlinear programming models, the primary underlying technique used by LINDO API's optional nonlinear solver is based upon a Generalized Reduced Gradient (GRG) algorithm. However, to help get to a good feasible solution quickly, LINDO API also incorporates Successive Linear Programming (SLP). The nonlinear solvertakes advantage of sparsity for improved speed and more efficient memory usage. The Nonlinear license option is required to solve nonlinear models.
Local search solvers are generally designed to search only until they have identified a local optimum. If the model is non-convex, other local optima may exist that yield significantly better solutions. Rather than stopping after the first local optimum is found, the Global solver will search until the global optimum is confirmed. The Global solver converts the original non-convex, nonlinear problem into several convex, linear subproblems. Then, it uses the branch-and-bound technique to exhaustively search over these subproblems for the global solution. The Nonlinear and Global license options are required to utilize the global optimization capabilities.
When limited time makes searching for the global optimum prohibitive, the Multistart solver can be a powerful tool for finding good solutions more quickly. This intelligently generates a set of candidate starting points in the solution space. Then, the general nonlinear solver intelligently selects a subset of these to initialize a series of local optimizations. For non-convex nonlinear models, the quality of the solution returned by the multistart solver will be superior to that of the general nonlinear solver. The Nonlinear and Global license options are required to utilize the multistart capabilities.
In addition to solving linear and mixed integer models, with the Barrier option LINDO API can automatically detect and solve models in which the objective function and/or some constraints include quadratic terms. By taking advantage of the quadratic structure, LINDO API can solve these models much more quickly than using the general nonlinear solver. LINDO API can even handle quadratic models with binary and general integer restrictions. These quadratic capabilities make LINDO API suitable for applications such as portfolio optimization problems, constrained regression problems, and certain classes of difficult logistics problems (e.g., layout problems, fixed-charge-network problems with quadratic objectives). The Quadratic solver is included in the Barrier license option.
The Barrier option LINDO API includes a Conic solver to efficiently solve Second Order Cone Problems (SOCP). By expressing certain nonlinear models as SOCPs, the Conic solver can be used to solve the model substantially faster than the general nonlinear solver.
Stochastic Programming Solver
Incorporate risk into multi-stage optimization models, maximize expected profit, and summarize results in histograms showing the distribution of possible profit, etc. This new option allows modeling and optimization for models with uncertain elements via multistage stochastic linear, nonlinear and integer stochastic programming (SP). Benders decomposition is used for solving large linear SP models. Deterministic equivalent method is used for solving nonlinear and integer SP models. Support is available for over 20 distribution types (discrete or continuous). The Stochastic Programming solver is included in the Stochastic Programming option.
Preprocessing and User Control
Preprocessing routines are included in all solvers. The Linear and Nonlinear solvers include scaling and model reduction techniques. Scaling procedures can improve speed and robustness on numerically difficult models. Model reduction techniques can often make models solve faster by analyzing the original formulation and mathematically condensing it into a smaller problem. The Integer solver includes extensive preprocessing and cut generation routines.
LINDO API is designed, so the user has as much control over the input to the solvers as possible. When the Solve routine is initiated, LINDO API analyzes the problem and considers internal parameters set by the user to achieve optimal performance for your particular problem.
LINDO API's Linearization cap common nonsmooth functions. The feature can automatically convert many nonsmooth functions and operators (e.g., max and absolute value) to a series of linear, mathematically equivalent expressions. Many nonsmooth models may be entirely linearized. This allows the linear solver to quickly find a global solution to what would have otherwise been and intractable problem.
LINDO Systems has begun shipping a new release of LINDO API that includes new features to allow users to incorporate uncertainty into their optimization models. LINDO API 6.1 also includes enhancements to the linear, integer and global solvers.
- Modeling and optimization with uncertain elements through multistage linear, nonlinear and integer stochastic programming (SP).
- Extensive set of API functions to setup and solve SP models.
- Benders decomposition for solving linear SP models.
- Deterministic equivalent method for solving nonlinear and integer SP models.
- Supports most (20+) parametric (continuous or discrete) distributions.
- User-defined distribution functions to be used through callbacks.
- Customized sampling scenarios through the statistical sampling API.
- Extensive API functions to sample directly from various statistical distributions,
- Variance reduction with Latin-Hyper-Cube and Anti-thetic variates sampling,
- Generation of correlated samples via Pearson, Spearman, or Kendall correlation measures.
- Pseudo random number generation via a choice of three different generators.
- Large linear models solve an average of 20% faster with improved primal and dual solvers.
- Substantial improvements in all heuristics for finding close to optimal solutions quickly.
- Significant improvements in cuts for certain types of special model structures.
- Significant improvement in the handling of nonlinear models with quadratic terms, especially non-convex quadratic expressions.
New Stochastic Programming Interface
Statistical Sampling API
Simplex Solver Improvements
MIP Solver Improvements
Global Solver Improvements
Below is a list of routines by category. For more information on a particular function, consult the LINDO API User's Manual or see the lindoapi.pdf file installed with the trial version
Parameter Setting and Retrieving
Structure Creation and Deletion
Model and Solution Analysis
Link the ease and flexibility of the MATLAB modeling and programming environment with the optimization power of the LINDO API (supported in the Windows x86 and Windows x64 versions only).
Key Benefits for LINDO API Users
Using LINDO API and MATLAB, you can prototype and build optimization models and applications quickly and easily. MATLAB includes powerful tools for matrix manipulation, a high-level programming language, and a user-friendly modeling environment. These features can allow you to quickly create and manipulate models with a fraction of the coding required for lower level languages such as C++ or Visual Basic.
Key Benefits for MATLAB Users
Solve Large Scale Linear Problems
MATLAB users can access the power and robustness of the LINDO API optimizers to solve large scale linear programming problems. The suite of available LP solvers include Primal and Dual Simplex solvers as well as a Barrier/Interior Point solver. These same solvers have been field tested on large models by thousands of Operations Research professionals worldwide.
Solve Integer Optimization Models
MATLAB users can utilize an exceptionally fast integer solver. The integer solver includes a wide range of options that can allow you to tailor the solution strategy and cut application to particular problem structures.
Create Custom Algorithms
MATLAB users have low level access to the LINDO API's comprehensive set of powerful optimization routines. This can allow you to quickly create algorithms customized to your own needs.
The interface makes the LINDO API a MATLAB callable function. This makes calling the solver as easy as using MATLAB's native functions
LINDO API provides all of the tools you will need to get up and running quickly. The LINDO API User Manual fully describes the calls and features of the program and includes sample M-files illustrating its use.
LINDO API comes with everything you need to get started quickly and easily.
The LINDO API User's Manual
This 450+ page manual provides complete information on all aspects of using the LINDO API package. The manual includes detailed definitions of all routines as well as a full tutorial, which walks you through building and solving your first application to analyzing the solution. The manual discusses examples of calling the API from a variety of development environments including Visual Basic, C++, C#.NET, VB.NET, VJava, and Delphi. It explains mixed-integer programs as well as quadratic programs and how to use callback functions and error handling in your applications. There is also an in depth discussion of the MATLAB interface as well as descriptions of the MPS and LINDO file formats.
Comprehensive Online Manual
An Acrobat pdf file of the LINDO API User Manual is included with the LINDO API software. This lets you conveniently access information on the fly. Not only are the entire contents of the LINDO API User Manual available at the click of your mouse, but the pdf file also contains up-to-date information on any enhancements added since the documentation went to press.