Strict Convergence
Three tolerances in XSLP are used to determine whether an individual variable has strictly converged, that is they describe the numerical behaviour of convergence in the formal, mathematical sense.
-
XSLP_CTOL
-
The closure tolerance is compared against the movement of a variable relative to its initial step bound.
-
XSLP_ATOL_A
-
The absolute delta tolerance is compared against the absolute movement of a variable.
-
XSLP_ATOL_R
-
The relative delta tolerance is compared against the movement of a variable relative to its initial value.
Extended Convergence
There are six tolerances in XSLP used to determine whether an individual variable has converged according to the extended definition. These tests essentially measure the quality of the linearization, including the effect of changes to the nonlinear terms that contribute to a variable in the linearization. In order to be deemed to have converged in the extended sense, all terms in which it appears must satisfy at least one of the following:
-
XSLP_MTOL_A
-
The absolute matrix tolerance is compared against the approximation error relative only to the absolute value of the variable.
-
XSLP_MTOL_R
-
The relative matrix tolerance is compared against the approximation error relative to the size of the nonlinear term before any step is taken.
-
XSLP_ITOL_A
-
The absolute impact tolerance is compared against the approximation error of the nonlinear term.
-
XSLP_ITOL_R
-
The relative impact tolerance is compared against the approximation error relative to the positive and negative contributions to each constraint.
-
XSLP_STOL_A
-
The absolute slack impact tolerance is compared against the approximation error, but only for non-binding constraints, which is to say those for which the marginal value is small (as defined by
XSLP_MVTOL).
-
XSLP_STOL_R
-
The relative slack impact tolerance is compared against the approximation error relative to the term's contribution to its constraints, but only for non-binding constraints, which is to say those for which the marginal value is small (as defined by
XSLP_MVTOL).
Stopping Criterion
The stopping criterion requires that all variables in the problem have converged in one of the three senses. Detailed information regarding the conditions under which XSLP has terminated can be obtained from the
XSLP_STATUS solver attribute. Note that a solution is deemed to have fully converged if all variables have converged in the strict sense. If all variables have converged either in the strict or extended sense, and there are no active step bounds, then the solution is called a practical solution. In contrast, the solution may be called converged if it is feasible and the objective is no longer improving. The following four control sets can be applied by XSLP to determine whether the objective is stationary, depending on the convergence control parameter
XSLP_CONVERGENCEOPS:
-
VTOL
-
This is the baseline static objective function tolerance, which is compared against the change in the objective over a given number of iterations, relative to the average objective value. Satisfaction of VTOL does not imply convergence of the variables.
-
XSLP_VCOUNT
-
This is the number of iterations over which to apply this measure of static objective convergence.
-
XSLP_VLIMIT
-
The static objective function test is applied only after at least
XSLP_VLIMIT +
XSLP_SBSTART XSLP iterations have taken place.
-
XSLP_VTOL_A
-
This is the absolute tolerance which is compared to the range of the objective over the last
XSLP_VLIMIT iterations.
-
XSLP_VTOL_R
-
This is the used for a scaled version of the absolute test which considers the average size of the absolute value of the objective over the previous
XSLP_VLIMIT iterations.
-
OTOL
-
This static objective function tolerance is applied when there are no unconverged variables in active constraints, although some variables with active step bounds might remain. It is compared to the change in the objective over a given number of iterations, relative to the average objective value.
-
XSLP_OCOUNT
-
This is the number of iterations over which to apply this measure of static objective convergence.
-
XSLP_OTOL_A
-
This is the absolute tolerance which is compared to the range of the objective over the last
XSLP_OCOUNT iterations.
-
XSLP_OTOL_R
-
This is used for a scaled version of the absolute test which considers the average size of the absolute value of the objective over the previous
XSLP_OCOUNT iterations.
-
XTOL
-
This static objective function tolerance is applied when a practical solution has been found. It is compared against the change in the objective over a given number of iterations, relative to the average objective value.
-
XSLP_XCOUNT
-
This is the number of iterations over which to apply this measure of static objective convergence.
-
XSLP_XLIMIT
-
This is the maximum number of iterations which can have occurred for this static objective function test to be applied. Once this number is exceeded, the solution is deemed to have converged if all the variables have converged by the strict or extended criteria.
-
XSLP_XTOL_A
-
This is the absolute tolerance which is compared to the range of the objective function over the last
XSLP_XLIMIT iterations.
-
XSLP_XTOL_R
-
This is used for a scaled version of the absolute test which considers the average size of the absolute value of the objective over the last
XSLP_XLIMIT iterations.
-
WTOL
-
The extended convergence continuation tolerance is applied when a practical solution has been found. It is compared to the change in the objective during the previous iteration.
-
XSLP_WCOUNT
-
This is number of iterations over which to calculate this measure of static objective convergence in the relative version of the test.
-
XSLP_WTOL_A
-
This is the absolute tolerance which is compared to the change in the objective in the previous iteration.
-
XSLP_WTOL_R
-
This is used for a scaled version of the test which considers the average size of the absolute value of the objective over the last
XSLP_WCOUNT iterations.
Step Bounding
Step bounding in XSLP can be activated in two cases. It may be enabled adaptively in response to variable oscillation, or it may be enabled by after
XSLP_SBSTART iterations, by setting
XSLP_ALGORITHM appropriately. Two major controls define the behaviour of step bounds:
-
XSLP_SBSTART
-
This defines the number of iterations which must occur before XSLP may apply non-essential step bounding. When a linearization is unbounded, XSLP will introduce step bounding regardless of the value of this control.
-
XSLP_DEFAULTSTEPBOUND
-
This is the initial size of the step bounds introduced. Depending upon the value of
XSLP_ALGORITHM, XSLP may use the iterations before
XSLP_SBSTART to refine this initial value on a per variable basis.