27#define MAX_DSDP_MONITORS 5
51 int (*monitor)(
struct DSDP_C *,
void*);
80 int solvetime,cgtime,ptime,dtime,ctime;
97 double rho,potential,logdet,rhon;
99 double maxtrustradius;
100 double cnorm,anorm,bnorm;
101 double tracex,tracexs;
120 DSDPPenalty UsePenalty;
125 XMaker xmaker[MAX_XMAKERS];
136 ConvergenceMonitor conv;
139 DMonitor dmonitor[MAX_DSDP_MONITORS];
142 DRoutine droutine[10];
150#define DSDPValid(a) {if (!(a)||((a)->keyid!=DSDPKEY)){ DSDPSETERR(101,"DSDPERROR: Invalid DSDP object\n");}}
181extern int DSDPGetMaxYElement(
DSDP,
double*);
206extern int DSDPComputeDualStepDirection(
DSDP,
double,
DSDPVec);
225extern int DSDPMonitor(
DSDP);
226extern int DSDPPrintStats(
DSDP,
void*);
227extern int DSDPPrintStatsFile(
DSDP,
void*);
237extern int RConeSetType(
RRCone, DSDPPenalty);
238extern int RConeGetRX(
RRCone,
double*);
240extern int DSDPGetConvergenceMonitor(
DSDP, ConvergenceMonitor**);
241extern int DSDPDefaultConvergence(
DSDP,
void *);
243extern int DSDPSetDefaultSchurMatrixStructure(
DSDP);
int DSDPComputePotential2(DSDP, DSDPVec, double, double, double *)
Compute the objective function plus the barrier function.
int DSDPComputeSS(DSDP, DSDPVec, DSDPDualFactorMatrix, DSDPTruth *)
Compute the dual variables S in each cone.
int DSDPSetDefaultStatistics(DSDP)
Set default statistics.
int DSDPSetRR(DSDP, double)
Set variable r.
int DSDPSetUpCones(DSDP)
Each cone should factor data or allocate internal data structures.
int DSDPSetDefaultMonitors(DSDP)
Set convergence monitor.
int DSDPComputeG(DSDP, DSDPVec, DSDPVec, DSDPVec)
Compute the gradient of the barrier for each cone.
int DSDPComputeRHS(DSDP, double, DSDPVec)
Compute the right-hand side of the linear system that determines the step direction.
int DSDPComputeHessian(DSDP, DSDPSchurMat, DSDPVec, DSDPVec)
Compute the Schur complement, or Gram, matrix for each cone.
int DSDPScaleData(DSDP)
Scale the matrix C.
int DSDPComputeLogSDeterminant(DSDP, double *)
Compute the logarithmic barrier function for the dual varialbe S.
int DSDPObjectiveGH(DSDP, DSDPSchurMat, DSDPVec)
Compute gradient of dual objective.
int DSDPSchurSparsity(DSDP, int, int[], int)
Each cone should print its state.
int DSDPInvertS(DSDP)
Invert the S variables in each cone.
int DSDPPassXVectors(DSDP, double, DSDPVec, DSDPVec)
Pass the information needed to compute the variables X in each cone but do not compute X.
int DSDPCGSolve(DSDP, DSDPSchurMat, DSDPVec, DSDPVec, double, DSDPTruth *)
Apply CG to solve for the step directions.
int DSDPComputeANorm2(DSDP, DSDPVec)
Compute norm of A and C.
int DSDPComputeNewY(DSDP, double, DSDPVec)
Update the Y variables.
int DSDPComputeDualityGap(DSDP, double, double *)
Compute the current duality gap.
int BoundYConeSetBounds(YBoundCone, double, double)
Set bounds on the variables.
struct LUBounds_C * YBoundCone
Cone with bounds on variables y.
int DSDPComputeObjective(DSDP, DSDPVec, double *)
Compute the objective function (DD).
int DSDPMonitorCones(DSDP, int)
This routine is called once per iteration.
int DSDPComputePNorm(DSDP, double, DSDPVec, double *)
Compute proximity to a point on the central path.
int DSDPViewCones(DSDP)
Each cone should print its state.
int DSDPComputeXVariables(DSDP, double, DSDPVec, DSDPVec, DSDPVec, double *)
Compute the X variables in each cone.
int DSDPComputePDY(DSDP, double, DSDPVec, double *)
Compute the step direction.
int DSDPHessianMultiplyAdd(DSDP, DSDPVec, DSDPVec)
Add the product of Schur matrix with v.
int DSDPSolveDynamicRho(DSDP)
Apply dual-scaling algorithm.
int DSDPComputeDataNorms(DSDP)
Compute norms of A,C, and b.
int DSDPSetCone(DSDP, DSDPCone)
Pass a cone to the DSDP solver.
struct RDCone * RRCone
Cone with nonnegativity on variable r.
int DSDPCheckConvergence(DSDP, DSDPTerminationReason *)
Check for convergence and monitor solution.
int DSDPComputeDY(DSDP, double, DSDPVec, double *)
Compute the step direction.
int DSDPComputePDY1(DSDP, double, DSDPVec)
Compute an affine step direction dy1.
int DSDPComputePY(DSDP, double, DSDPVec)
Compute PY = Y - beta DY for use in computing X.
int DSDPSetDefaultParameters(DSDP)
Set default parameters.
int DSDPSaveYForX(DSDP, double, double)
Save the current solution for later computation of X.
int DSDPComputeMaxStepLength(DSDP, DSDPVec, DSDPDualFactorMatrix, double *)
Compute the maximum step length for the given step direction.
int DSDPGetConicDimension(DSDP, double *)
Get the total dimension of the cones.
int DSDPComputePotential(DSDP, DSDPVec, double, double *)
Compute the potential of the given point.
int BoundYConeGetBounds(YBoundCone, double *, double *)
Get bounds on the variables.
int DSDPComputeDualStepDirections(DSDP)
Compute the step direction by computing a linear system and solving it.
int DSDPDestroyCones(DSDP)
Each cone shoudl free its data structures.
int DSDPInitializeVariables(DSDP)
Initialize variables and factor S.
int DSDPCreateLUBoundsCone(DSDP, YBoundCone *)
Create bounds cone.
int DSDPSetUpCones2(DSDP, DSDPVec, DSDPSchurMat)
Each cone should allocate its data structures .
int DSDPGetRR(DSDP, double *)
Get variable r.
int DSDPTakeDown(DSDP)
Destroy internal data structures.
int DSDPSetY(DSDP, double, double, DSDPVec)
Update the solver with these y variables.
Solver, solution types, termination codes,.
DSDPTerminationReason
There are many reasons to terminate the solver.
DSDPSolutionType
Formulations (P) and (D) can be feasible and bounded, feasible and unbounded, or infeasible.
DSDPDualFactorMatrix
DSDP requires two instances of the data structures S.
DSDPTruth
Boolean variables.
The public interface between the cones and the solver.
struct DSDPCone_C DSDPCone
This object holds the data of a SDP, LP, or other cone. Its structure is opaque to the DSDP Solver,...
Detect convergence of the solver from the duality gap and step sizes.
Methods of a Schur Matrix.
Vector operations used by the solver.
struct DSDPVec_C DSDPVec
This object hold m+2 variables: a scaling of C, the y variables, and r.
Schur complement matrix whose solution is the Newton direction.
Internal structures for the DSDP solver.