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
can be viewed by using the command
DSDPGetY(DSDP dsdp, double y[], int m);
The user passes an array of size
where
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
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
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
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: Improving Performance
Up: DSDP Subroutine Library
Previous: Convergence Criteria
  Contents
  Index
Steven Benson
2005-02-11