Go to the documentation of this file.
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");}}
206 extern int DSDPComputeDualStepDirection(
DSDP,
double,
DSDPVec);
225 extern int DSDPMonitor(
DSDP);
227 extern int DSDPPrintStatsFile(
DSDP,
void*);
237 extern int RConeSetType(
RRCone, DSDPPenalty);
238 extern int RConeGetRX(
RRCone,
double*);
243 extern int DSDPSetDefaultSchurMatrixStructure(
DSDP);
Detect convergence of the solver from the duality gap and step sizes.
int DSDPComputeDualityGap(DSDP, double, double *)
Compute the current duality gap.
int DSDPInitializeVariables(DSDP)
Initialize variables and factor S.
int DSDPSaveYForX(DSDP, double, double)
Save the current solution for later computation of X.
int DSDPSetCone(DSDP, DSDPCone)
Pass a cone to the DSDP solver.
DSDPTerminationReason
There are many reasons to terminate the solver.
int DSDPDefaultConvergence(DSDP, void *)
Check for Convergence.
int DSDPComputeRHS(DSDP, double, DSDPVec)
Compute the right-hand side of the linear system that determines the step direction.
int DSDPSetDefaultStatistics(DSDP)
Set default statistics.
int DSDPSetDefaultParameters(DSDP)
Set default parameters.
struct DSDPVec_C DSDPVec
This object hold m+2 variables: a scaling of C, the y variables, and r.
int DSDPComputePDY(DSDP, double, DSDPVec, double *)
Compute the step direction.
int DSDPSetUpCones2(DSDP, DSDPVec, DSDPSchurMat)
Each cone should allocate its data structures .
int DSDPViewCones(DSDP)
Each cone should print its state.
int DSDPCGSolve(DSDP, DSDPSchurMat, DSDPVec, DSDPVec, double, DSDPTruth *)
Apply CG to solve for the step directions.
int DSDPComputeHessian(DSDP, DSDPSchurMat, DSDPVec, DSDPVec)
Compute the Schur complement, or Gram, matrix for each cone.
Vector operations used by the solver.
DSDPTruth
Boolean variables.
int DSDPSolveDynamicRho(DSDP)
Apply dual-scaling algorithm.
int DSDPSchurSparsity(DSDP, int, int[], int)
Each cone should print its state.
int DSDPComputeMaxStepLength(DSDP, DSDPVec, DSDPDualFactorMatrix, double *)
Compute the maximum step length for the given step direction.
int DSDPSetUpCones(DSDP)
Each cone should factor data or allocate internal data structures.
int DSDPSetY(DSDP, double, double, DSDPVec)
Update the solver with these y variables.
int BoundYConeGetBounds(YBoundCone, double *, double *)
Get bounds on the variables.
Solver, solution types, termination codes,.
int DSDPComputeANorm2(DSDP, DSDPVec)
Compute norm of A and C.
int DSDPMonitorCones(DSDP, int)
This routine is called once per iteration.
int DSDPGetMaxYElement(DSDP, double *)
Copy the the infinity norm of the variables y.
int DSDPCreateLUBoundsCone(DSDP, YBoundCone *)
Create bounds cone.
Internal structures for the DSDP solver.
int DSDPHessianMultiplyAdd(DSDP, DSDPVec, DSDPVec)
Add the product of Schur matrix with v.
int DSDPGetConvergenceMonitor(DSDP, ConvergenceMonitor **)
Get the structure containing convergence parameters.
int DSDPTakeDown(DSDP)
Destroy internal data structures.
int DSDPComputePNorm(DSDP, double, DSDPVec, double *)
Compute proximity to a point on the central path.
int BoundYConeSetBounds(YBoundCone, double, double)
Set bounds on the variables.
struct RDCone * RRCone
Cone with nonnegativity on variable r.
int DSDPComputePY(DSDP, double, DSDPVec)
Compute PY = Y - beta DY for use in computing X.
int DSDPComputeObjective(DSDP, DSDPVec, double *)
Compute the objective function (DD).
int DSDPSetDefaultMonitors(DSDP)
Set convergence monitor.
int DSDPPassXVectors(DSDP, double, DSDPVec, DSDPVec)
Pass the information needed to compute the variables X in each cone but do not compute X.
int DSDPPrintStats(DSDP, void *)
Print statistics about the current solution to standard output.
int DSDPComputePotential2(DSDP, DSDPVec, double, double, double *)
Compute the objective function plus the barrier function.
The public interface between the cones and the solver.
int DSDPComputeDataNorms(DSDP)
Compute norms of A,C, and b.
int DSDPComputeNewY(DSDP, double, DSDPVec)
Update the Y variables.
int DSDPScaleData(DSDP)
Scale the matrix C.
int DSDPInvertS(DSDP)
Invert the S variables in each cone.
Schur complement matrix whose solution is the Newton direction.
int DSDPDestroyCones(DSDP)
Each cone shoudl free its data structures.
int DSDPCheckConvergence(DSDP, DSDPTerminationReason *)
Check for convergence and monitor solution.
struct LUBounds_C * YBoundCone
Cone with bounds on variables y.
int DSDPComputeXVariables(DSDP, double, DSDPVec, DSDPVec, DSDPVec, double *)
Compute the X variables in each cone.
int DSDPComputeSS(DSDP, DSDPVec, DSDPDualFactorMatrix, DSDPTruth *)
Compute the dual variables S in each cone.
Methods of a Schur Matrix.
int DSDPComputeLogSDeterminant(DSDP, double *)
Compute the logarithmic barrier function for the dual varialbe S.
int DSDPComputeG(DSDP, DSDPVec, DSDPVec, DSDPVec)
Compute the gradient of the barrier for each cone.
int DSDPComputeDualStepDirections(DSDP)
Compute the step direction by computing a linear system and solving it.
int DSDPObjectiveGH(DSDP, DSDPSchurMat, DSDPVec)
Compute gradient of dual objective.
DSDPSolutionType
Formulations (P) and (D) can be feasible and bounded, feasible and unbounded, or infeasible.
int DSDPComputeDY(DSDP, double, DSDPVec, double *)
Compute the step direction.
int DSDPSetRR(DSDP, double)
Set variable r.
int DSDPComputePotential(DSDP, DSDPVec, double, double *)
Compute the potential of the given point.
DSDPDualFactorMatrix
DSDP requires two instances of the data structures S.
int DSDPGetConicDimension(DSDP, double *)
Get the total dimension of the cones.
int DSDPComputePDY1(DSDP, double, DSDPVec)
Compute an affine step direction dy1.
struct DSDPCone_C DSDPCone
This object holds the data of a SDP, LP, or other cone. Its structure is opaque to the DSDP Solver,...
int DSDPAddRCone(DSDP dsdp, RCone **rrcone)
A separate cone specifies that r must be nonnegative.
int DSDPGetRR(DSDP, double *)
Get variable r.