next up previous contents index
Next: Iteration Monitor Up: DSDP Subroutine Library Previous: Solutions and Statistics   Contents   Index

Improving Performance

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 $y$ to (D), a multiple of the identity matrix to make the initial matrix $S$ positive definite, and an initial barrier parameter. The subroutine DSDPSetY0(DSDP dsdp, int vari, double yi0) can specify the initial value of the variable $y_i$. Like the objective function in (D), the variables are labeled from $1$ to $m$. By default the initial values of $y$ equal $0$. 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 $r$ in (DD). If $r0<0$, a default value will of $r0$ will be chosen. If $S^0$ is not positive definite, the solver will terminate will an appropriate termination flag. The default value is usually very large $(1e10)$, but smaller values can significantly improve performance. The subroutine DSDPSetZBar(DSDP dsdp, double zbar) sets an initial upper bound on the objective value at the solution. This value corresponds to the objective value of any feasible point of (P).

The subroutine DSDPSetPotentialParameter(DSDP dsdp, double rho); sets the potential parameter $\rho$. This parameter be be greater than 1. The default value is $4.0$, 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 $10e8$, but other values can affect the convergence of the algorithm. This parameter can be set using DSDPSetPenaltyParameter(DSDP dsdp, double M), where $M$ is the large positive penalty parameter. This parameter must exceed the trace of the solution $X$ 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 $0$. A positive value means that the variable $r$ 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 $y$. 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.


next up previous contents index
Next: Iteration Monitor Up: DSDP Subroutine Library Previous: Solutions and Statistics   Contents   Index
Steven Benson 2005-02-11