Solver Status Window
If there are no formulation errors during the compilation phase, LINGO will invoke the appropriate internal solver to begin searching for the optimal solution to your model. When the solver starts, it displays a solver status window on your screen resembling the following:
The solver status window is useful for monitoring the progress of the solver and the dimensions of your model. The various fields are described in more detail below.
The solver status window also provides you with an Interrupt Solver button. Interrupting the solver causes LINGO to halt the solver on the next iteration. In most cases, LINGO will be able to restore and report the best solution found so far. The one exception is in the case of linear programming models (i.e., linear models without integer variables). If a linear programming model is interrupted, the solution returned will be meaningless and should be ignored. This should not be a problem because linear programs generally solve quickly, thus minimizing the need to interrupt.
Note: | You must be careful how you interpret solutions after interrupting the solver. These solutions 1) will definitely not be optimal, 2) may not be feasible to all the constraints, and 3) are worthless if the model is a linear program. |
Next to the Interrupt Solver button is another button labeled Close. Hitting the Close button will close the solver status window. This window can be reopened at any time by selecting the Window|Status Window command.
At the bottom of the solver status window, you will find a field titled: Update Interval. LINGO will update the solver status window every n seconds, where n is the value contained in the Update Interval field. You may set this interval to any value you desire. However, setting it to 0 will result in longer solution times—LINGO will spend more time updating the solver status window than solving your model. On larger models, LINGO may not always be able to update the solver status window on a regular interval. So, don't be concerned if you sometimes must wait longer than the indicated interval.
Variables Box
The Variables box shows the total number of variables in the model. The Variables box also displays the number of the total variables that are nonlinear. A variable is considered to be nonlinear if it enters into any nonlinear relationship in any constraint in the model. For instance, the constraint:
X + Y = 100;
would be considered linear because the graph of this function would be a straight line. On the other hand, the nonlinear function:
X * Y = 100;
is quadratic and has a curved line as its graph. If we were to solve a model containing this particular nonlinear constraint, the nonlinear variable count would be at least 2 to represent the fact that the two variables X and Y appear nonlinearly in this constraint.
As another example, consider the constraint:
X * X + Y = 100;
In this case, X appears nonlinearly while Y appears as a linear variable. This constraint would not cause Y to be counted as one of the nonlinear variables. See On Mathematical Modeling for more information on the difference between linear and nonlinear equations.
The Variables box in the solver status window also gives you a count of the total number of integer variables in the model. In general, the more nonlinear and integer variables your model has, the more difficult it will be to solve to optimality in a reasonable amount of time. Pure linear models without integer variables will tend to solve the fastest. For more details on the use of integer variables, refer to Using Variable Domain Functions.
The variable counts do not include any variables LINGO determines are fixed in value. For instance, consider the following constraints:
X = 1;
X + Y = 3;
From the first constraint, LINGO determines X is fixed at the value of 1. Using this information in constraint 2, LINGO determines Y is fixed at a value of 2. X and Y will then be substituted out of the model and they will not contribute to the total variable count.
Constraints Box
The Constraints box shows the total constraints in the expanded model and the number of these constraints that are nonlinear. A constraint is considered nonlinear if one or more variables appear nonlinearly in the constraint.
LINGO searches your model for fixed constraints. A constraint is considered fixed if all the variables in the constraint are fixed. Fixed constraints are substituted out of the model and do not add to the total constraint count.
Nonzeroes Box
The Nonzeros box shows the total nonzero coefficients in the model and the number of these that appear on nonlinear variables. In a given constraint, only a small subset of the total variables typically appears. The implied coefficient on all the non-appearing variables is zero, while the coefficients on the variables that do appear will be nonzero. Thus, you can view the total nonzero coefficient count as a tally of the total number of times variables appear in all the constraints. The nonlinear nonzero coefficient count can be viewed as the number of times variables appear nonlinearly in all the constraints.
Generator Memory Used Box
The Generator Memory Used box lists the amount of memory LINGO’s model generator is currently using from its memory allotment. You may change the size of the generator’s memory allotment using the Solver|Options command.
Elapsed Runtime Box
The Elapsed Runtime box shows the total time used so far to generate and solve the model. This is an elapsed time figure and may be affected by the number of other applications running on your system.
Solver Status Box
The Solver Status box shows the current status of the solver. A description of the fields appear in the table below followed by a more in depth explanation:
Field |
Description |
Model Class |
Displays the model’s classification. Possible classes are "LP", "QP", "CONE", "NLP", "MILP", "MIQP", "MICONE", "MINLP" "PILP", "PIQP", "PICONE", and "PINLP". |
State |
Gives the Status of the current solution. Possible states are "Global Optimum", "Local Optimum", "Feasible", "Infeasible", "Unbounded", "Interrupted", and "Undetermined". |
Objective |
Current value of the objective function. |
Infeasibility |
Amount constraints are violated by. |
Iterations |
Number of solver iterations. |
Model Class Field
The Model Class field summarizes the properties of your model. The various classes you will encounter are listed below:
Abbreviation |
Class |
Description |
LP |
Linear Program |
All expressions are linear and the model contains no integer restrictions on the variables. |
QP |
Quadratic Program |
All expressions are linear or quadratic and there are no integer restrictions. |
CONE |
Conic Program |
The model is a conic (second-order cone) program and all variables are continuous. |
NLP |
Nonlinear Program |
At least one of the relationships in the model is nonlinear with respect to the variables. |
MILP |
Mixed Integer Linear Program |
All expressions are linear, and a subset of the variables is restricted to integer values. |
MIQP |
Mixed Integer Quadratic Program |
All expressions are either linear or quadratic and a subset of the variables has integer restrictions. |
MICONE |
Mixed Integer Conic Program |
The model is a conic (second-order cone) program, and a subset of the variables is restricted to integer values. |
MINLP |
Integer Nonlinear Program |
At least one of the expressions in the model is nonlinear, and a subset of the variables has integer restrictions. In general, this class of model will be very difficult to solve for all but the smallest cases. |
PILP |
Pure Integer Linear Program |
All expressions are linear, and all variables are restricted to integer values. |
PIQP |
Pure Integer Quadratic Program |
All expressions are linear or quadratic and all variables are restricted to integer values. |
PICONE |
Pure Integer Conic (Second-Order Cone) Program |
The model is a conic (second-order cone) program, and all the variables are restricted to integer values. |
PINLP |
Pure Integer Nonlinear Program |
At least one of the expressions in the model is nonlinear, and all variables have integer restrictions. In general, this class of model will be very difficult to solve for all but the smallest cases. |
Note: | Certain model classes may not be available on your installation of LINGO: nonlinear models require the nonlinear option, quadratic models require the barrier option and conic models require the barrier, global and conic options. |
State Field
When LINGO begins solving your model, the initial state of the current solution will be "Undetermined". This is because the solver has not yet had a chance to generate a solution to your model.
Once the solver begins iterating, the state will progress to "Infeasible". In the infeasible state, LINGO has generated tentative solutions, but none that satisfy all the constraints in the model.
Assuming a feasible solution exists, the solver will then progress to the "Feasible" state. In the feasible state, LINGO has found a solution that satisfies all the constraints in your model. If your model does not have an objective function, then the solver will stop once feasibility is reached. If the model does have an objective, LINGO will continue solving, attempting to find additional feasible solutions with improved objective values.
Once the solver can no longer find better solutions to your model, it will terminate in either the "Global Optimum" or "Local Optimum" state. If your model does not have any nonlinear constraints, then any locally optimal solution will also be a global optimum. Thus, all optimized linear models will terminate in the global optimum state. If, on the other hand, your model has one or more nonlinear constraints, then any locally optimal solution may not be the best solution to your model. There may be another "peak" that is better than the current one, but the solver's local search procedure is unable to "see" the better peak. Thus, on nonlinear models, LINGO can terminate only in the local optimum state. LINGO may, in fact, have a globally optimal solution, but, given the nature of nonlinear problems, LINGO is unable to claim it as such. Given this fact, it is always preferred to formulate a model using only linear constraints whenever possible. For more details on the concept of global vs. local optimal points, refer to On Mathematical Modeling.
Note: | LINGO’s optional global solver may be used to find globally optimal solutions to nonlinear models. For more information on the global solver, refer to the Nonlinear Solver Tab help topic. |
Note: | If a model terminates in the "Unbounded" state, it means LINGO can improve the objective function without bound. In real life, this would correspond to a situation where you can generate infinite profits. Because such a situation is rare, if not impossible, you have most likely omitted or misspecified some constraints in your model. |
Finally, the "Interrupted" state will occur when you prematurely interrupt LINGO's solver before it has found the final solution to your model. The mechanics of interrupting the solver are discussed in more detail above.
Objective Field
The Objective field gives the objective value for the current solution. If your model does not have an objective function, then "N/A" will appear in this field.
Infeasibility Field
The Infeasibility field lists the amount that all the constraints in the model are violated by. Keep in mind that this figure does not track the amount of any violations on variable bounds. Thus, it is possible for the Infeasibility field to be zero while the current solution is infeasible due to violated variable bounds. The LINGO solver may also internally scale a model such that the units of the Infeasibility field no longer correspond to the unscaled version of the model. To determine whether LINGO has found a feasible solution, you should refer to the State field discussed above.
Iterations Field
The Iterations field displays a count of the number of iterations completed thus far by LINGO's solver. The fundamental operation performed by LINGO's solver is called an iteration. An iteration involves finding a variable, currently at a zero value, which would be attractive to introduce into the solution at a nonzero value. This variable is then introduced into the solution at successively larger values until either a constraint is about to be driven infeasible or another variable is driven to zero. At this point, the iteration process begins anew. In general, as a model becomes larger, it will require more iterations to solve and each iteration will require more time to complete.
Extended Solver Status Box
The Extended Solver Status box shows status information pertaining to several of the specialized solvers in LINGO. These solvers are:
• | BNP Solver |
• | Branch-and-Bound Solver |
• | Global Solver, and |
• | Multistart Solver. |
The fields in this box will be updated only when one of these three specialized solvers is running. The fields appearing in the Extended Solver Status box are:
Field |
Description |
Solver Type |
The type of specialized solver in use, and will be either "B-and-B", "Global", "Multistart", or "BNP". |
Best Obj |
The objective value of the best solution found so far. |
Obj Bound |
The theoretical bound on the objective. |
Steps |
The number of steps taken by the extended solver. |
Active |
The number of active subproblems remaining to be analyzed. |
Solver Type Field
This field displays either "BNP", "B-and-B", "Global", or "Multistart", depending on the specialized solver in use.
LINGO employs a strategy called branch-and-bound to solve models with integer restrictions. Branch-and-bound is a systematic method for implicitly enumerating all possible combinations of the integer variables. Refer to Hillier and Lieberman (1995) for more information on the branch-and-bound algorithm.
In addition to the branch-and-bound solver, there are three other specialized solvers that may be invoked, which are: the global solver, the multistart solver, and the BNP Solver.
Many nonlinear models are non-convex and/or non-smooth. For more information see the Chapter 15, On Mathematical Modeling. Nonlinear solvers that rely on local search procedures (as does LINGO’s default nonlinear solver) will tend to do poorly on these types of models. Typically, they will converge to a local, sub-optimal point that may be quite distant from the true, globally optimal point. The multistart solver and the global solver are specialized solvers that attempt to find the globally optimal solution to non-convex models. You can read more about these solvers in the Nonlinear Solver Tab section in Chapter 5.
The BNP solver is a mixed integer programming solver for solving linear models with block structure. Based on the decomposition structure, the solver divides the original problem into several subproblems and solves them (almost) independently, exploiting parallel processing if multiple cores are available. You can read more about the BNP solver in the BNP Solver section in Chapter 5.
Best Obj and Obj Bound Fields
The Best Obj field displays the best feasible objective value found so far. Obj Bound displays the bound on the objective. This bound is a limit on how far the solver will be able to improve the objective. At some point, these two values may become very close. Given that the best objective value can never exceed the bound, the fact that these two values are close indicates that LINGO's current best solution is either the optimal solution, or very close to it. At such a point, the user may choose to interrupt the solver and go with the current best solution in the interest of saving on additional computation time.
Steps Field
The information displayed in the Steps field depends on the particular solver that is running. The table below explains:
Solver |
Steps Field Interpretation |
BNP |
Number of branches in the branch-and-bound tree. |
Branch-and-Bound |
Number of branches in the branch-and-bound tree. |
Global |
Number of subproblem boxes generated. |
Multistart |
Number of solver restarts. |
Active Field
This field pertains to the BNP, branch–and–bound and global solvers. It lists the number of open subproblems remaining to be evaluated. The solver must run until this valve goes to zero.