One of **LINGO's** most powerful features is its **mathematical modeling language**. LINGO's modeling language lets you express your problems in a natural manner very similar to standard mathematical notation. LINGO allows you to do things such as quickly express a series of similar constraints in a single compact statement. Your models are compact and easy to read.

When building models, you typically find there are one or more sets of related objects (e.g., sets of factories, customers, vehicles, or employees). Often if a constraint applies to one member of a set, then a constraint of the same form also applies to each of the other set members. Rather than requiring that you express an individual constraint for each set member, LINGO allows you to express the entire group of constraints in one concise statement. Taking advantage of sets is the foundation of LINGO's modeling language, the fundamental building block of the program's most powerful capabilities. LINGO even allows you to express common sets implicitly, such as days of the week or months of the year.

LINGO's modeling language can help you drastically cut your model development time. Very large models can often be efficiently expressed with LINGO in less than a single page. The modeling language's similarity to standard mathematical notation makes it very easy to read. Models are easier for the developer to maintain and for colleagues to read and understand.

Using LINGO, you can easily make your model "scalable". This means the dimensions of your model can change without requiring changes to your expression of the problem. For example, suppose you are finding the cheapest way to supply a product from several different warehouses to several different customers. If the number of warehouses or customers change, many modeling packages would require significant changes to the problem's formulation. However, with LINGO, your problem formulation needs no modification. You can simply change the size of your data files and LINGO takes care of the rest.

**LINGO's modeling language includes an extensive library of mathematical, probability and financial functions. **

Gathering the model's data and getting it in an appropriate format can be a frustrating and time consuming task, but with LINGO you can manage your data in a variety of convenient forms. LINGO lets you keep your data:

- in an Excel or Lotus spreadsheet file. For more information, see LINGO's Spreadsheet Capabilities.
- in a database such as Access, Oracle, DB/2, Paradox, SQL Server etc. For more information, see LINGO's Database Capabilities.
- in a separate text file in list or table form
- stored with the model expression
- entered by the user when the model is run

By providing a

wide variety of data options

, LINGO provides you with maximum flexibility and convenience. By allowing you to separate your expression of the problem from the data, LINGO models are easier to read and modify, and there is less chance of errors. It also makes prototyping problems on a smaller data set easy. Once you are comfortable with the model, you can easily swap in a larger set of data or several different data sets to investigate different scenarios.LINGO's flexibility even makes creating reports easy. In addition to being able to read data from spreadsheets and databases, LINGO can also write solution information to these formats. This means that, rather than forcing you to learn some built-in report generator, you can simply output the solution to your application of choice for building reports and analyzing the output.

Spreadsheets are one of today's most popular and convenient tools for storing data. They can also be very useful tools for manipulating and representing the results generated by your model. LINGO's ability to link to spreadsheets allows you to take full advantage of the power and flexibility of the spreadsheet environment.

**Read Values from Spreadsheets**

You can store data for your LINGO model in one or more spreadsheet files where they can be easily entered and edited. Your LINGO model can reference spreadsheet data using simple, straightforward commands. For example, the LINGO language statement:

COST, CAPACITY = @OLE('SPECS.XLS');

would access tables of data in an SPECS.XLS Excel file in ranges named COST and CAPACITY.

LINGO offers direct, real-time access to Excel spreadsheet values using OLE (Object Linking and Embedding) links. LINGO can also read data saved to a Lotus spreadsheet file.

**Write Solution Information to Spreadsheets**

In addition to reading spreadsheet information, you can also have LINGO write solution information to a spreadsheet file. Again, by doing this, spreadsheet users can easily create reports and analyze the solution in a convenient and familiar environment.

The process can be done automatically when the model is solved, or manually after solving. Much like reading spreadsheet data, the LINGO statement:

@OLE('ROUTING.XLS') = USED, LOAD;

would automatically put the solved values for data sets USED and LOAD into the ranges of the same name in the Excel file named ROUTING.XLS.

**Run LINGO from an Excel File**

LINGO can be run as a server application from an Excel macro. This allows you to do things such as create a "Solve" button on an Excel sheet that directly calls LINGO and runs a series of commands.

**Embed LINGO models and Excel Files**

LINGO allows you the convenience of having your LINGO model formulation and Excel workbook in the same file. You can embed an Excel workbook in your LINGO model file or embed your LINGO model file into an Excel workbook. By opening a single file, you can view and edit both the formulation and data as well as run both LINGO and Excel. Similarly, you can embed LINGO in other supported applications and vice versa.

Databases are the tool of choice for managing large amounts of information. LINGO uses ODBC technology to allow you to access set information and data in virtually any popular Windows database application. Using a single statement in your model you can transfer data between LINGO and database applications such as:

- Microsoft Access
- Oracle
- DB/2
- Paradox
- Microsoft SQL server

or any other application with an ODBC driver. You can even access databases that are password protected by entering the user-id and password in LINGO at the start of your session.

**Read Database Information**

LINGO lets you easily and conveniently store your model's information in a database. LINGO can read two types of information from databases. It can read numbers used as data in your optimization model. It can also read set member names such as a list of destination cities on a routing problem.

**Write Solution Information to Databases**

As with spreadsheets, LINGO can write solution information directly to a database file. This makes it easy to produce customized solution reports

**Build Turn-key Database Applications**

LINGO can be run as a server application from a database program. For example, using Microsoft Access as your development environment and LINGO as your solver, you could build a complete, turn-key database application for a client or colleague. The user could be provided with input screens, output screens and customized reports as well as a "Solve" button right in their application, which directly calls LINGO and runs a series of specified commands.

LINGO includes a set of built-in solvers to tackle a wide variety of problems. Unlike many modeling packages, all of the LINGO solvers are directly linked to the modeling environment. This seamless integration allows LINGO to pass the problem to the appropriate solver directly in memory rather than through more sluggish intermediate files. This direct link also minimizes compatibility problems between the modeling language component and the solver components.

**Linear Solvers**

LINGO 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. The solver dynamically chooses the best pricing option based upon problem characteristics.

**Barrier Solver**

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.

**Integer Solver**

For models with general and binary integer restrictions, LINGO includes an integer solver that works in conjunction with the linear, nonlinear, and quadratic solvers. For linear models, the integer solver includes preprocessing and dozens of constraint "cut" generation routines that can greatly improve solution times on large classes of integer models.

**Nonlinear Solvers**

LINGO 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 LINGO's optional nonlinear solver is based upon a Generalized Reduced Gradient (GRG) algorithm. However, to help get to a good feasible solution quickly, LINGO also incorporates Successive Linear Programming (SLP). The nonlinear solver takes advantage of sparsity for improved speed and more efficient memory usage. The Nonlinear license option is required to solve nonlinear models.

**Global Solver**

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.

**Multistart Solver**

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 capabilties.

**Quadratic Solver**

In addition to solving linear and mixed integer models, with the Barrier option LINGO 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, LINGO can solve these models much more quickly than using the general nonlinear solver. LINGO can even handle quadratic models with binary and general integer restrictions. These quadratic capabilities make LINGO 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.

**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**

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. LINGO is designed, so the process of solving the model requires as little input from the user as possible. When the Solve command is initiated, LINGO analyzes the problem and, when possible, reduces the problem and even substitutes out variables. Based upon the models structure, LINGO automatically selects the appropriate solver and intelligently adjusts internal parameters.

**Linearization**

LINGO's Linearization capabilities can dramatically improve performance on models with common nonsmooth functions. The feature can automatically convert many nonsmooth functions and operators (e.g., @IF, @MAX and @ABS) to a series of linear, mathematically equivalent expressions. Similarly, the product of a continuous and binary variable can also be linearized. Many nonsmooth models may be entirely linearized. This allows the linear solver to quickly find a global solution to what would have otherwise been an intractable problem.

LINGO allows you to build and solve models interactively or embed the solver in another application.

**Interactive Modeling**

LINGO provides a complete environment in which to build and solve optimization problems interactively. The multi-windowing editor allows for easy problem entry, viewing, and modification. To aid in model creation, the "syntax aware" editor displays LINGO keywords in blue, comments in green, and all other model text in black. A toolbar is provided for fast access to frequently used commands. Solution information can be viewed in a window, graphed, or written to a spreadsheet, database or text file. While a model is solving, the user can monitor the status and has the option to interrupt the process.

**Creating Turn-key Applications**

Instead of running LINGO interactively, you may want to build a custom optimization application for use by a client or colleague. LINGO gives you a variety of options to incorporate its functionality into your own applications. Distribution of applications that call the LINGO solvers requires separate licensing. Contact LINDO Systems for more information.

**Callable DLL and OLE Interfaces**

You can seamlessly embed LINGO's functionality into your own applications using a Windows development environment such as C#.NET, VB.NET, Visual Java, Visual Basic, Visual C++, or Delphi. Your application can act as a user front-end for the optimization problem -- handling data entry and storage as well as preparing the information to be passed in memory to LINGO. It could also be set up to display the solution and produce customized reports for the user. LINGO includes both a callable DLL and OLE interfaces, which give you access to all of the features and commands available interactively.

**Calling LINGO from a Spreadsheet or Database**

You can even build a simple application, which can be run directly from a spreadsheet such as Excel or a database such as Access. It can be as easy as creating your own "Solve" button to call LINGO and run a series of specified commands.

LINGO comes with everything you need to get started quickly and easily. Super and larger versions of LINGO include two valuable references:

**The LINGO User's Manual**

This 500+ page manual provides complete information on all aspects of using the LINGO package. The manual includes a full tutorial, which walks you through building and solving your first model to analyzing the solution. It explains the syntax of the modeling language thoroughly using simple examples for illustration.

The LINGO User Manual includes in depth coverage of all of the commands and features of LINGO in a well organized manner. The manual also includes detailed discussion of how LINGO can interface with spreadsheets and databases as well as how it can be integrated into your own applications.

**Optimization Modeling with LINGO**

This 500+ page text thoroughly discusses all major classes of optimization models. Perhaps the book's most useful feature is its liberal use of examples to illustrate each application and modeling concept. The discussion and examples are designed to teach you the modeling techniques you need to tackle your toughest problems.

The text contains information, which will appeal to a broad spectrum of modelers. For the modeling novice, the book provides chapters to introduce basic mathematical programming concepts, examine the modeling process, explain how to analyze solutions, and discuss the intricacies of designing and implementing optimization-based decision support systems. More advanced modelers will appreciate the ability to pick and choose from the variety of chapters dedicated to applying optimization techniques to specific applications.

**Comprehensive Online Help**

LINGO's exhaustive Help system lets you conveniently access information on the fly. Not only are the entire contents of the LINGO User Manual available at the click of your mouse, but the Help file also contains up-to-date information on any enhancements added since the documentation went to press.