# Lindo Programa

## LINDO for MPL

LINDO Simplex Optimizer

LINDO Barrier Optimizer

LINDO Integer Optimizer

LINDO Nonlinear Optimizer

## For LPs

### MIP problems can be extremely difficult to solve, though there are no steadfast rules on enhancing MIP performance, certain things may be advantageous in improving the performance on some models and be a hinderous on other problems. Below are some of the considerations one should look into when try to solve difficult MIP problems:

**Heuristic setting:**LINDO has a number of heuristics that can be used to find initial integer feasible solutions, finding good solutions fast greatly benefits the subsequent brand and bound search process eliminating may 'bad' branches. For difficult problems one should try to set the heuristic level parameter ('MIPHeuristicLevel') to 3,4 or 5. Higher value settings will cause more time to be spent in the heuristic, which may not be worthwhile.**Cuts:**Addition of cuts helps eliminate non-integer feasible regions from the LP relaxed convex hull. This provides improved bounds during the branch and bound process. The option 'MIPCutLevel' which is a bit setting has a default value of 22526 which means 12 types of cuts are set out of 14. To include full cut generation one can set this value to 32766. The more cuts added, the larger the inherent matrix becomes which can increase the processing time at the nodes. However usually on difficult models an aggressive cut strategy is the best mode of practice.

### The area of nonlinear programming is diverse, and there is no anyone method that can handle all types of NLPs unlike in linear programming. If the NLPs are large or are highly nonlinear in nature, utilizing the global optimizer will generally give bad performance. Models larger than 100 variables can be extremely difficult to solve to proven global optimality. Large models should use the local solver, MPL by default will use LINDO's local optimizer when solving NLP one has to specify the boolean option 'UseGlobalOptimizer' to activate the global solver. One can employ a multi-start methodology using the local solver to find better local optima, this naturally will increase the total solve time but should result in better solutions. Typically one should set a multi-start value of 4 or 5 (setting: 'NLPMaxLocalSearch').

## MPL shows the progress of LINDO during a solve run in the message window which also can be relayed to a log file. One can set various log file parameters in MPL, allowing one to display log information for NLPs and MIPs. The log initially displays information about the model, for LPs and MIPS it will also show the a summary of the scaling done by LINDO, the message log has the following appearance:

For a local NLP log the output will include the objective, primal and dual infeasibities for the iterations. One can set the amount of log information displayed by setting the 'NLPTrace' option.