The performance of the DSDP may be significantly improved with the proper selection of bounds, parameters and initial point.
The application may
specify an initial vector to (D), a multiple of the identity matrix to make
the initial matrix
positive definite, and an initial barrier parameter.
The subroutine
DSDPSetY0(DSDP dsdp, int vari, double yi0) can specify the initial value of the
variable
. Like the objective function in (D), the variables are labeled from
to
.
By default the initial values of
equal
. Since convergence of the algorithm
depends on the proximity of the point to the central path, initial points can be difficult
to determine. Nonetheless,
the subroutine
DSDPSetR0(DSDP dsdp, double r0)will set the initial value of
The subroutine
DSDPSetPotentialParameter(DSDP dsdp, double rho);
sets the potential parameter . This parameter be be greater than 1.
The default value is
, but larger
values such as 5 or 10 can significantly improve performance.
Feasibility in (D) is enforced by means of a penalty parameter. By default it is set to
, but other values can affect the convergence of the algorithm. This parameter
can be set using DSDPSetPenaltyParameter(DSDP dsdp, double M), where
is the large positive
penalty parameter. This parameter must exceed the trace of the solution
in order
to return a feasible solution from an infeasible starting point. The subroutine
DSDPUsePenalty(DSDP dsdp,int yesorno) is used to modify the algorithm. By default,
the value is
. A positive value means that the variable
in (DD) should be kept positive,
treated like other inequalities, and penalized with the parameter M.
The subroutine
DSDPSetBarrierParameter(DSDP dsdp, double mu0) sets the
initial barrier parameter. The default heuristic is very robust, but performance
can get generally be improved by providing a smaller value.
DSDP reuses the Schur complement matrix for multiple linear systems. This
feature often reduces the number of iterations and improves robustness. The cost
of each iteration increases, especially when the dimension of the semidefinite blocks
is of similar dimension or larger than the number of variables . The subroutine
DSDPReuseMatrix(DSDP dsdp, int reuse);can set a maximum on the number of times the Schur complement matrix is reused. Applications that use a low number of iterations (60 or fewer) should consider setting this number to 0. The default value is 4.