Many nonlinear models are non-convex and/or non-smooth (for more information see 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, global optimal point. Global solvers overcome this weakness through methods of range bounding (e.g., interval analysis and convex analysis) and range reduction techniques (e.g., linear programming and constraint propagation) within a branch-and-bound framework to find the global solutions to non-convex models. LINGO has a global solver capability that is enabled through the GLOBAL parameter. Setting GLOBAL to 1 will enable the global solver on nonlinear models, while setting it to 0 (the default) will not.

The following example illustrates the power of the global solver on a non-smooth model. Consider the following model:

model:

sets:

  projects: baths, sqft, beds, cost, est;

endsets

data:

projects,        beds,        baths,        sqft,                cost =

p1                        5        4        6200                559608        

p2                        2        1        820                151826        

p3                        1        1        710                125943

p4                        4        3        4300                420801        

p5                        4        2        3800                374751

p6                        3        1        2200                251674

p7                        3        2        3400                332426        

;

enddata

min = @max( projects: @abs( cost - est));

@for( projects:

est = a0 + a1 * beds + a2 * baths + a3 * sqft

);

end

Model: COSTING

This model estimates the cost of home construction jobs based on historical data on the number of bedrooms, bathrooms, and square footage. The objective minimizes the maximum error over the sample project set. Both the @MAX() and @ABS() functions in the objective are non-smooth, and, as a result, can present problems for LINGO’s default, local search NLP solver. Running the model under the default settings with the global solver disabled, we get the following result:

  Local optimal solution found at step:             91

  Objective value:                            3997.347

        Variable           Value        Reduced Cost

              A0        37441.55            0.000000

              A1        27234.51            0.000000

              A2        23416.53            0.000000

              A3        47.77956            0.000000

Enabling the global solver with the SET GLOBAL 1 command and re-optimizing yields the substantially better solution:

  Global optimal solution found at step:           186

  Objective value:                            1426.660

        Variable           Value        Reduced Cost

              A0        46814.64            0.000000

              A1        22824.18            0.000000

              A2        16717.33            0.000000

              A3        53.74674            0.000000

Note that the maximum error has been reduced from 3,997 to 1,426!

This example illustrates the power of the global solver. Unfortunately, there is a drawback. You will find the global solver runs considerably slower than the default local solver, and may be swamped when trying to solve larger models. Therefore, the preferred option is to always try to create smooth, convex models, so that the faster, default local solver can successfully solve them.

Keep in mind that the global solver supports most, but not all, of the functions available in the LINGO language. The following is a list of the nonlinear functions not currently supported by the global solver:

All probability distributions — cumulative, inverse and pdf, with the exception of the normal distribution, which is fully supported
@PFS() — Poisson finite source
@PPL() — Poisson linear loss
@USER() — User supplied function
Note:The global solver will not operate on models containing one or more unsupported nonlinear operations that reference optimizable quantities; the default NLP solver will be called in this case.

The global solver is disabled by default.