Convergence: technical details
In the following sections we shall use the subscript 0 to refer to values used to build the linear approximation (the assumed value) and the subscript 1 to refer to values in the solution to the linear approximation (the actual value). We shall also use δ to indicate the change between the assumed and the actual values, so that for example:
δX = X1 - X0.
The tests are described in detail later in this section. Tests are first carried out on each variable in turn, according to the following sequence:
Strict convergence criteria:
- Closure tolerance (CTOL).
This tests δX against the initial step bound of X. - Delta tolerance (ATOL)
This tests δX against X0.
If the strict convergence tests fail for a variable, it is tested against the extended convergence criteria:
- Matrix tolerance (MTOL)
This tests whether the effect of a matrix coefficient is adequately approximated by the linearization. It tests the error against the magnitude of the effect. - Impact tolerance (ITOL)
This tests whether the effect of a matrix coefficient is adequately approximated by the linearization. It tests the error against the magnitude of the contributions to the constraint. - Slack impact tolerance (STOL)
This tests whether the effect of a matrix coefficient is adequately approximated by the linearization and is applied only if the constraint has a negligible marginal value (that is, it is regarded as "not constraining"). The test is the same as for the impact tolerance, but the tolerance values may be different.
Regardless of whether the variable has passed the system convergence tests or not, if a convergence callback function has been set using XSLPsetcbitervar then it is called to allow the user to determine the convergence status of the variable.
- User convergence test
This test is entirely in the hands of the user and can return one of three conditions: the variable has converged on user criteria; the variable has not converged; or the convergence status of the variable is unchanged from that determined by the system.
Once the tests have been completed for all the variables, there are several possibilities for the convergence status of the solution:
- All variables have converged on strict criteria or user criteria.
- All variables have converged, some on extended criteria, and there are no active step bounds (that is, there is no delta vector which is at its bound and has a significant reduced cost).
- All variables have converged, some on extended criteria, and there are active step bounds (that is, there is at least one delta vector which is at its bound and has a significant reduced cost).
- Some variables have not converged, but these have non-constant coefficients only in constraints which are not active (that is, the constraints do not have a significant marginal value);
- Some variables have not converged, and at least one has a non-constant coefficient in an active constraint (that is, the constraint has a significant marginal value);
If (a) is true, then the solution has converged on strict convergence criteria.
If (b) is true, then the solution has converged on extended convergence criteria.
If (c) is true, then the solution is a practical solution. That is, the solution is an optimal solution to the linearization and, within the defined tolerances, it is a solution to the original nonlinear problem. It is possible to accept this as the solution to the nonlinear problem, or to continue optimizing to see if a better solution can be obtained.
If (d) or (e) is true, then the solution has not converged. Nevertheless, there are tests which can be applied to establish whether the solution can be regarded as converged, or at least whether there is benefit in continuing with more iterations.
The first convergence test on the solution simply tests the variation in the value of the objective function over a number of SLP iterations:
- Objective function convergence test 1 (VTOL)
This test measures the range of the objective function (the difference between the maximum and minimum values) over a number of SLP iterations, and compares this against the magnitude of the average objective function value. If the range is small, then the solution is deemed to have converged.
If the convergence status of the variables is as in (d) above, then it may be that the solution is practical and can be regarded as converged:
- Objective function convergence test 2 (XTOL)
If there are no unconverged values in active constraints, then the inaccuracies in the linearization (at least for small errors) are not important. If a constraint is not active, then deleting the constraint does not change the feasibility or optimality of the solution. The convergence test measures the range of the objective function (the difference between the maximum and minimum values) over a number of SLP iterations, and compares this against the magnitude of the average objective function value. If the range is small, then the solution is deemed to have converged.
Unless test 7 (VTOL) is being applied, if the convergence status of the variables is (e) then the solution has not converged and another SLP iteration will be carried out.
If the convergence status is (c), then the solution is practical. Because there are active step bounds in the solution, a "better" solution would be obtained to the linearization if the step bounds were relaxed. However, the linearization becomes less accurate the larger the step bounds become, so it might not be the case that a better solution would also be achieved for the nonlinear problem. There are two convergence tests which can be applied to decide whether it is worth continuing with more SLP iterations in the hope of improving the solution:
- Objective function convergence test 3 (OTOL)
If all variables have converged (even if some are converged on extended criteria only, and some of those have active step bounds), the solution is a practical one. If the objective function has not changed significantly over the last few iterations, then it is reasonable to suppose that the solution will not be significantly improved by continuing with more SLP iterations. The convergence test measures the range of the objective function (the difference between the maximum and minimum values) over a number of SLP iterations, and compares this against the magnitude of the average objective function value. If the range is small, then the solution is deemed to have converged. - Extended convergence continuation test (WTOL)
Once a solution satisfying (c) has been found, we have a practical solution against which to compare solution values from later SLP iterations. As long as there has been a significant improvement in the objective function, then it is worth continuing. If the objective function over the last few iterations has failed to improve over the practical solution, then the practical solution is restored and the solution is deemed to have converged.
Closure tolerance (CTOL)
If an initial step bound is provided for a variable, then the closure test measures the significance of the magnitude of the delta compared to the magnitude of the initial step bound. More precisely:
If a variable passes the closure test, then it is deemed to have converged.
Delta tolerance (ATOL)
The simplest tests for convergence measure whether the actual value of a variable in the solution is significantly different from the assumed value used to build the linear approximation.
The absolute test measures the significance of the magnitude of the delta; the relative test measures the significance of the magnitude of the delta compared to the magnitude of the assumed value. More precisely:
Relative delta test:
If a variable passes the absolute or relative delta tests, then it is deemed to have converged.
Matrix tolerance (MTOL)
The matrix tests for convergence measure the linearization error in the effect of a coefficient. The effect of a coefficient is its value multiplied by the activity of the column in which it appears.
where V is the activity of the matrix column in which the coefficient appears, and C is the value of the coefficient. The linearization approximates the effect of the coefficient as
where V is as before, C0 is the value of the coefficient C calculated using the assumed values for the variables and C'0 is the value of
∂C |
∂X |
The error in the effect of the coefficient is given by
Relative matrix test:
If all the coefficients which involve a given variable pass the absolute or relative matrix tests, then the variable is deemed to have converged.
Impact tolerance (ITOL)
The impact tests for convergence also measure the linearization error in the effect of a coefficient. The effect of a coefficient was described in the previous section. Whereas the matrix test compares the error against the magnitude of the coefficient itself, the impact test compares the error against a measure of the magnitude of the constraint in which it appears. All the elements of the constraint are examined: for each, the contribution to the constraint is evaluated as the element multiplied by the activity of the vector in which it appears; it is then included in a total positive contribution or total negative contribution depending on the sign of the contribution. If the predicted effect of the coefficient is positive, it is tested against the total positive contribution; if the effect of the coefficient is negative, it is tested against the total negative contribution.
As in the matrix tests, the predicted effect of the coefficient is
and the error is
Relative impact test:
where
c is the value of the constraint coefficient in the vector v; V is the set of vectors such that v0*c0 >0 if E is positive, or the set of vectors such that v0*c0 <0 if E is negative.
If a coefficient passes the matrix test, then it is deemed to have passed the impact test as well. If all the coefficients which involve a given variable pass the absolute or relative impact tests, then the variable is deemed to have converged.
Slack impact tolerance (STOL)
This test is identical in form to the impact test described in the previous section, but is applied only to constraints whose marginal value is less than XSLP_MVTOL. This allows a weaker test to be applied where the constraint is not, or is almost not, binding.
Relative slack impact test:
where the items in the expressions are as described in the previous section, and the tests are applied only when
where πi is the marginal value of the constraint.
If all the coefficients which involve a given variable pass the absolute or relative matrix, impact or slack impact tests, then the variable is deemed to have converged.
Fixed variables due to determining columns smaller than threshold (FX)
Variables having a determining column, that are temporarily fixed due to the absolute value of the determining column being smaller than the threshold XSLP_DRCOLTOL are regarded as converged.
User-defined convergence
Regardless of what the Xpress-SLP convergence tests have said about the status of an individual variable, it is possible for the user to set the convergence status for a variable by using a function defined through the XSLPsetcbitervar callback registration procedure. The callback function returns an integer result S which is interpreted as follows:
- S<0
- mark variable as unconverged
- S=0
- leave convergence status of variable unchanged
- S≥11
- mark variable as converged with status S
Values of S in the range 1 to 10 are interpreted as meaning convergence on the standard system-defined criteria.
If a variable is marked by the user as converged, it is treated as if it has converged on strict criteria.
Static objective function (1) tolerance (VTOL)
This test does not measure convergence of individual variables, and in fact does not in any way imply that the solution has converged. However, it is sometimes useful to be able to terminate an optimization once the objective function appears to have stabilized. One example is where a set of possible schedules are being evaluated and initially only a good estimate of the likely objective function value is required, to eliminate the worst candidates.
The variation in the objective function is defined as
where Iter is the XSLP_VCOUNT most recent SLP iterations and Obj is the corresponding objective function value.
Absolute static objective function (3) test:
Relative static objective function (3) test:
The static objective function (3) test is applied only after at least XSLP_VLIMIT + XSLP_SBSTART SLP iterations have taken place. Where step bounding is being applied, this ensures that the test is not applied until after step bounding has been introduced.
If the objective function passes the relative or absolute static objective function (3) test then the solution will be deemed to have converged.
Static objective function (2) tolerance (OTOL)
This test does not measure convergence of individual variables. Instead, it measures the significance of the changes in the objective function over recent SLP iterations. It is applied when all the variables interacting with active constraints (those that have a marginal value of at least XSLP_MVTOL) have converged. The rationale is that if the remaining unconverged variables are not involved in active constraints and if the objective function is not changing significantly between iterations, then the solution is more-or-less practical.
The variation in the objective function is defined as
where Iter is the XSLP_OCOUNT most recent SLP iterations and Obj is the corresponding objective function value.
Absolute static objective function (2) test:
Relative static objective function (2) test:
If the objective function passes the relative or absolute static objective function (2) test then the solution is deemed to have converged.
Static objective function (3) tolerance (XTOL)
It may happen that all the variables have converged, but some have converged on extended criteria (MTOL, ITOL or STOL) and at least one of these is at its step bound. It is therefore possible that an improved result could be obtained by taking another SLP iteration. However, if the objective function has already been stable for several SLP iterations, then there is less likelihood of an improved result, and the converged solution can be accepted.
The static objective function (1) test measures the significance of the changes in the objective function over recent SLP iterations. It is applied when all the variables have converged, but some have converged on extended criteria (MTOL, ITOL or STOL) and at least one of these is at its step bound. Because all the variables have converged, the solution is already converged but the fact that some variables are at their step bound limit suggests that the objective function could be improved by going further.
The variation in the objective function is defined as
where Iter is the XSLP_XCOUNT most recent SLP iterations and Obj is the corresponding objective function value.
Absolute static objective function (1) test:
Relative static objective function (1) test:
The static objective function (1) test is applied only until XSLP_XLIMIT SLP iterations have taken place. After that, if all the variables have converged on strict or extended criteria, the solution is deemed to have converged.
If the objective function passes the relative or absolute static objective function (1) test then the solution is deemed to have converged.
Extended convergence continuation tolerance (WTOL)
This test is applied after a converged solution has been found where at least one variable has converged on extended criteria and is at its step bound limit. As described under XTOL above, it is possible that by continuing with additional SLP iterations, the objective function might improve. The extended convergence continuation test measures whether any improvement is being achieved. If not, then the last converged solution will be restored and the optimization will stop.
For a maximization problem, the improvement in the objective function at the current iteration compared to the objective function at the last converged solution is given by:
(for a minimization problem, the sign is reversed).
Absolute extended convergence continuation test:
Relative extended convergence continuation test:
A solution is deemed to have a significantly better objective function value than the converged solution if δObj passes the relative and absolute extended convergence continuation tests.
When a solution is found which converges on extended criteria and with active step bounds, the solution is saved and SLP optimization continues until one of the following:
- a new solution is found which converges on some other criterion, in which case the SLP optimization stops with this new solution
- a new solution is found which converges on extended criteria and with active step bounds, and which has a significantly better objective function, in which case this is taken as the new saved solution
- none of the XSLP_WCOUNT most recent SLP iterations has a significantly better objective function than the saved solution, in which case the saved solution is restored and the SLP optimization stops
© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.