The following output parameters are provided by both sdp.m (as variables in the Matlab workspace) and fsdp.m (as return values):
,
,
and
have multiple blocks, they are stored using
Matlab's sparse format. If they have only one block, then they are
always full.
and
are numerically positive semidefinite in
the sense that Matlab's chol function does not encounter
negative pivots when applied to them.
, with entries equal to the
value of
(
) as a function of the iteration count.
The first entry in the
array is the value of
corresponding to the initial point provided.
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.
rows, whose
entries are the values of
and
in the first and
the second columns respectively, as a function of the iteration count.
is numerically
indefinite, i.e. chol(X) encountered a negative pivot. This
would not occur in exact arithmetic. The algorithm terminates,
returning the current iterate
(which is positive semidefinite).
This is normal, and usually means the problem is essentially solved
but the termination criteria were too stringent. (If
,
this means that the initial
provided was not positive
semidefinite. This is easily remedied by adding a positive multiple
of the identity to
.)
is numerically
indefinite, i.e. chol(Z) encountered a negative pivot. This
would not occur in exact arithmetic. The algorithm terminates,
returning the current iterate
(which is positive semidefinite).
This termination flag is also used if chol finds that the new
iterate
is numerically positive semidefinite, but the routine
blkeig finds that it has a zero (or negative) eigenvalue, in
which case the algorithm returns the new iterate, and then
terminates.
, this
means that the initial
provided was not positive semidefinite.
This is easily remedied by adding a positive multiple of the identity
to
.)
was
rank deficient. The routine preproc.m can help in detecting
inconsistent constraints and in the elimination of redundant
constraints (see Section 5). Otherwise, this is a
rare situation which might occur close to the solution, if the
termination criteria are too stringent.
and
. This indicates
that the termination criteria may be too stringent. (If
,
then the initial point was probably already too close to the
boundary.)
is
large, it is recommended to try restarting with either a reduced value
of
or with
and
set to larger multiples of the
identity, or both. This is done automatically when the driver script
sdp.m is used, but is the user's responsibility when the
driver script is bypassed by a direct call to the function
fsdp.m. (If
, then the initial guesses
and
were most likely too close to the boundary of the positive
semidefinite cone. Adding a positive multiple of the identity to
and/or
will rectify this.)
, then the data
passed the validation test.)
, this could additionally mean
that the initial
or
did not conform to the specified block
structure.
exceeded
, indicating possible dual infeasibility.
exceeds
, indicating possible primal infeasibility.
We encourage the reader to consult Appendix B which contains a sample Matlab session illustrating the use of the sdp script.