The LPSolve optimizer belongs to the family of the free open source solvers. It was initially devised by Michael Berlelaar Eindhoven University of Technology and has been continually enhanced and updated along the years by various individuals. LPSolve is a linear and mixed integer optimizer, it is often used to solve simple models though it has been known to solve LPs of at least 100000 variables. It is still regarded as a non-industrial strength solver predominantly being used if there are budgetary requirements and if the models are fairly small and simple. LPSolve for MPL gives MPL users access to this renowned open-source solver of linear programming and mixed integer programming from within the user-friendly Windows environment of MPL. Like all our solvers it is accessed from MPL for Windows as a Dynamic Link Library (DLL). This tight integration allows MPL users to transparently access LPSolve's solution algorithms and options from their MPL application.

LPSolve solves models that are purely linear in nature, it can handle variable that can take binary or general integer values. It also has the facility to handle semi-continuous variable and special ordered sets (SOS) models.

LPSolve uses a revised simplex implementation to solve linear programming problems. It has both the primal and dual methods encompassing various factorization and scaling procedures to aid in numerical stability. It also has various presolving procedures that attempt to reduce the problem size.

Models that have discrete variables are solved using the branch and bound algorithm It encompasses:

- MIP presolve algorithms pre-processes the problem to reduce problem size and solve time.
- Handles binary, integer and semi-continuous variables, and special ordered sets.
- Customizable node and variable selection strategies.

LPSolve is not suited to solve very large or difficult problems be it LPs or MIPs. Models that are relatively small and simple models should only be considered to use LPSolve as the optimizer.

LPSolve offers users two choice of methods to be used for solving LP problems: the primal and dual simplex algorithms. The best algorithm to use for optimization in a given situation is problem-specific. As a general rule, the dual simplex is usually much faster than the primal simplex. If performance is an issue it is best to experiment with these different algorithms. One can also experiment with the pricing options. LPSolve has a number of pricing options though typically the more efficient methods are the Devex and the Steepest edge, which can result in far fewer iterations being required thus these option settings should be considered if the LP is performing badly.

LPSolve incorportates some features that can assist in improving the performance on MIP models. LPSolve's presolving routine incorporates reduced cost fixing, binary variable fixing, identification and simplification of knapsack constraints in the formulation. The presolve setting should always be set at its maximum allowing full presolve. The manner in which one traverses the brand and bound tree to attain solutions is one of the most fundamental points in an effective MIP strategy, LPSolve has a number of branching strategies that can enhance the search progress. Though there is no fixed rule as to which methodology works best typically in the more difficult problems one should employ a pseudo-cost based strategy. This can be set by the option "MIPBranchBoundRule", setting of 4 - 6 employs variations of this methodology.

For full description of all the LPSolve Parameters that are supported in MPL, please go to the LPSolve Option Parameters page.