The NLPC Nonlinear Optimization Solver |
Computational Problems |
If you provide bad initial values for the decision variables, the computation of the value of the objective function (and its derivatives) can lead to arithmetic overflows in the first iteration. The line-search algorithms that work with cubic extrapolation are especially sensitive to arithmetic overflows. Hence the starting point must be a point at which all the functions involved in your problem can be evaluated. In the event of arithmetic overflow, consider the following corrective actions:
Provide a new set of initial values.
Scale the variables or functions.
If possible, use bound or linear constraints to avoid regions where overflows can happen.
During the optimization process, the algorithm might iterate to a point where the objective function or nonlinear constraint functions and their derivatives cannot be evaluated. If you can identify the problematic region, you can prevent the algorithm from stepping into it by adding some bound or linear constraints to the problem, provided that adding these constraints does not alter the characteristics of the problem. As a result, the optimization algorithm reduces the step length and stays closer to the points at which the functions and their derivatives can be evaluated successfully.
Numerical difficulty is also often encountered when evaluation of the objective function or nonlinear constraints results in undesirably large function values. In this case, a possible remedy is to scale the objective functions or nonlinear constraints so that undesirably large function values do not occur.
In some applications the NLPC solver can return solutions that are not precise enough. Usually this means that the algorithm terminated too early at a point too far from the optimal point. The termination criteria define the size of the termination region around the optimal point. Any point inside this region can be accepted for terminating the optimization process. The default values of the termination criteria are set to satisfy a reasonable compromise between the computational effort (CPU time) and the precision of the solutions for the most common applications. However, there can be circumstances in which the default values of the termination criteria specify a region that is either too large or too small. If the termination region is too large, it can contain points with low precision. In such cases where the messages in the SAS log usually give some hints, you can often obtain a solution with higher precision simply by specifying a smaller value for the termination criterion that was satisfied during the previous run.
If the termination region is too small, the optimization process can take longer to find a point inside such a region or might not even find such a point due to rounding errors in function values and derivatives. This can happen when finite-difference approximations of derivatives are used or when the OPTTOL= or ABSOPTTOL= termination criteria are too small with respect to rounding errors in the gradient. In such cases, try specifying larger values for the OPTTOL= or ABSOPTTOL= option.
Copyright © SAS Institute, Inc. All Rights Reserved.