Next: Problems in Nonstandard Form
Up: The Script sql.m and
Previous: Invoking sql.m or fsql.m
The following output parameters are provided by both sql.m
(as variables in the Matlab workspace) and fsql.m (as
return values):
- , ,
- The final values of the variables.
As on input, and are each structures with three fields,
, and and , and , respectively.
If the matrices and have multiple blocks, they are stored using
Matlab's sparse format. If they have only one block, then they are
always full. As long as is not equal to one (see below),
and are numerically positive definite in
the sense that Matlab's Cholesky function chol does not encounter
zero or negative pivots when applied to them; likewise
the blocks of the vectors and strictly satisfy the
quadratic cone constraints and the vectors and
are strictly positive.
If equals one, at least one component of the
computed solution is (numerically) either outside the cone or
on its boundary.
-
- The number of iterations taken by the algorithm.
-
- A vector of length , with entries equal to the
value of (see (5)) as a function of the iteration count.
The first entry in the array is the value of
corresponding to the initial point provided.
-
- A matrix with two columns and rows, whose
entries are the values of the primal and the dual objectives in the
first and the second columns respectively, as a function of the
iteration count.
-
- A matrix with two columns and rows, whose
entries are the values of and
(see (3) and (4))
in the first and the second columns respectively, as a function
of the iteration count.
-
- An integer informing the user why fsql.m
terminated, with the following meanings:
-
- Successful termination: both the absolute and
relative tolerances were satisfied.
-
- The iterate or generated by the
algorithm is numerically outside the cone or on its boundary.
This would not occur in exact arithmetic,
and indicates that the computation has reached its limiting accuracy.
This is normal, and usually means that the problem is essentially
solved but the termination criteria were too stringent.
If (see below), further information is printed.
Specifically, if Matlab's Cholesky routine chol determines
that either or (or both) is not positive definite,
the smallest eigenvalue of or (or both) is computed
(by blkeig: see Section 7) and printed.
Likewise if , , or lies
outside the cone or on its boundary, that information is printed.
If necessary, this information can be used
to shift the solution inside the cone or onto its boundary.
(If , the initial or provided
is not in the interior of the cone as required.)
-
-
This occurs if the eigenvalue routine blkeig
(see Section 7) determines that has a zero
(or negative) eigenvalue, even though chol reported
that is positive definite. This indicates that the algorithm
has reached its limiting accuracy. The minimum eigenvalue is
printed if . (The eigenvalues of
(but not ) are required to compute the search direction.)
-
- Termination occurred because the Schur
complement was numerically singular, i.e. the Matlab routine
lu generated a zero pivot, making the search direction
undefined. The most likely explanation is that the matrix
is rank deficient.
The routine preproc.m can help to detect
inconsistent constraints and eliminate redundant
constraints (see Section 7). Otherwise, this is a
rare situation which might occur close to the solution, if the
termination criteria are too stringent.
-
- Termination occurred because the progress made
by the algorithm was no longer significant. See the description of
the input options and .
This indicates
that the termination criteria may be too stringent. (If ,
then the initial point was probably already too close to the
boundary.)
-
- Termination occurred because either the primal or the
dual steplength became too small. If , or is
large, a restart is recommended, with either a reduced value
of , or with and reset using a larger value of ,
or both. Such a restart is done automatically when the driver script
sql.m is used, but is the user's responsibility when the
driver script is bypassed by a direct call to the function fsql.m.
(If , then the initial guesses and
were most likely too close to the boundary of the
cone.)
-
- Termination occurred because the maximum
number of iterations was reached. (If , then the data
passed the validation test.)
-
- Termination occurred because data failed
validation checks. This means that some input argument was not of the
correct dimension or fsql.m was called with an incorrect
number of arguments. If , this could
alternatively mean
that the initial or did not conform to the specified block
structure.
-
- Termination occurred because at least one
of the components of (see (6))
exceeded , indicating possible dual infeasibility.
-
- Termination occurred because at least one
of the components of (see (6))
exceeded , indicating possible primal infeasibility.
The reader is encouraged to consult Appendix B which contains
a sample Matlab session illustrating the use of the sql
script.
Next: Problems in Nonstandard Form
Up: The Script sql.m and
Previous: Invoking sql.m or fsql.m
Madhu Nayakkankuppam
Wed Jun 25 18:01:54 EDT 1997