next up previous contents index
Next: Improving Performance Up: DSDP Subroutine Library Previous: Convergence Criteria   Contents   Index


Solutions and Statistics

The objective values in (P) and (D) can be retrieved using the commands
DSDPGetPrimalObjective(DSDP dsdp, double *pobj); 
DSDPGetDualObjective(DSDP dsdp, double *dobj);
The second argument in these routines is the address of a double precision variable.

The solution vector $y$ can be viewed by using the command

DSDPGetY(DSDP dsdp, double y[], int m);
The user passes an array of size $m$ where $m$ is the number of variables in the problem. This subroutine will copy the solution into this array.

The success of DSDP can be interpreted with the command

DSDPStopReason(DSDP dsdp, DSDPTerminationReason *reason);
This command sets the second argument to an enumerated type. The various reasons for termination are listed below.
l
[DSDP_CONVERGED] The solutions to (D) and (D) satisfy the convergence criteria.
l
[DSDP_MAX_IT] The solver applied the maximum number of iterations without finding solution.
l
[DSDP_INFEASIBLE_START] The initial point in (DD) was infeasible.
l
[DSDP_INDEFINITE_SCHUR] Numerical issues created an indefinite Schur matrix that prevented the further progress.
l
[DSDP_SMALL_STEPS] Small step sizes prevented further progress.
l
[DSDP_NUMERICAL_ERROR] Numerical issues prevented further progress.

The subroutines

DSDPGetBarrierParameter(DSDP dsdp, double *mu); 
DSDPGetR(DSDP dsdp, double *r); 
DSDPGetStepLengths(DSDP dsdp, double *pstep, double *dstep); 
DSDPGetPnorm(DSDP dsdp, double *pnorm);
provide more information about the current solution. The subroutines obtain the barrier parameter, the variable $r$ in (DD), the step lengths in (PP) and (DD), and a distance to the central path at the current iteration.

A history of information about the convergence of the solver can be obtained with the commands

DSDPGetGapHistory(DSDP dsdp, double gaphistory[], int history); 
DSDPGetRHistory(DSDP dsdp, double rhistory[], int history);
retrieve the history of the duality gap and the variable $r$ in (DD) for up to 100 iterations. The user passes an array of double precision variables and the length of this array. The subroutine
DSDPGetTraceX(DSDP dsdp, double *tracex);
gets the trace of the solution $X$ in (P). Recall that the penalty parameter must exceed this quantity in order to return a feasible solution from an infeasible starting point. The subroutine
DSDPEventLogSummary(void)
will print out a summary of time spent in each cone and many of the primary computational subroutines.


next up previous contents index
Next: Improving Performance Up: DSDP Subroutine Library Previous: Convergence Criteria   Contents   Index
Steven Benson 2005-02-11