Sequential quadratic programming or SQP methods are the standard general-purpose tool for solving smooth nonlinear optimization problems under the following assumptions:
The problem is not too large.
Functions and gradients can be evaluated with sufficiently high precision.
The problem is smooth and well scaled.
There is no further model structure that can be exploited.
SQP methods allow the solution of a wide range of nonlinear programming problems in an efficient and reliable way. Either implicitly or proceeding from simple modifications of the underlying optimization problem, a much larger class of different nonlinear programming problems can be solved by NLPQLP, for example least squares or min-max optimization.
This algorithm can be used either with the classical Objective Node or with the Objective Gradient Node when derivatives are available in analytical form. The objective gradient node allows user-supplied derivatives. If constraints are present, the user should even provide derivatives for each constraint, this can be done using the constraint gradient node. These features make the algorithm much faster since finite difference perturbations are not anymore required.
On the contrary, if NLPQLP has access only to numerical derivatives, the user should take care of specifying proper settings for finite difference perturbation; when using finite differences, bad settings can significally alter the results.
NLPQLP is developed by K. Schittkowski and represents a very robust implementation of a sequential quadratic programming algorithm. It requires only very few user-provided parameters. All other parameters, solution tolerances or options usually required by a nonlinear programming code, are set internally.
The user must specify:
Maximum Number of Iterations: the algorithm will always stop when the maximum number of designs have been evaluated. This is done independently from any other convergence limits.
Approximate derivatives: when analytical derivatives are not available, they can be approximated numerically; two options are provided, Central and Forward differences. Central Difference are more accurate but more expensive. In fact, a gradient computation requires NV computations in case of Forward differences and 2*NV computations in case of Central differences.
Final Termination Accuracy: the algorithm stops when it cannot find solution with improvements higher that the convergence value. The default is set to 1.0E-5.
Finite Difference Relative Perturbation: the value is the fraction of the variable value that is used to perturb the starting point in order to compute the derivatives. The default is set to 1.0E-7. For local refinements low values should be used.
Finite Difference Minimum Perturbation Policy: it is possible to choose between two different policies: Constant or Range Percentage.
Constant Minimum Perturbation: this field is active only when the Finite Difference Minimum Perturbation Policyis Constant. The value is the minimal value that is used to perturb the starting point. The perturbation step is then given by the maximum value between the Finite Difference Relative Perturbation and this Constant Minimum Perturbation.
Range Percentage Minimum Perturbation: this field is active only when the Finite Difference Minimum Perturbation Policyis Range Percentage. This percentage gives the minimal value that is used to perturb the starting point. For each variable this value is equal to:
Minimum_Perturbation = (Upper_bound - Lower_bound) * (Range_Percentage_Minimum_Perturbation)The perturbation step is then given by the maximum value between the Finite Difference Relative Perturbation and the Minimum_Perturbation.
Note:
The number of concurrent designs evaluation can be set in the Run Project Dialog. The entries of the DOE table are used as a sequence of initial points for different local optimization problems.