DSDP
Functions
dualimpl.c File Reference

Dual-scaling operations needed in the solver. More...

Go to the source code of this file.

Functions

int DSDPComputeDualityGap (DSDP dsdp, double mu, double *gap)
 Compute the current duality gap.
int DSDPComputeDY (DSDP dsdp, double mu, DSDPVec DY, double *pnorm)
 Compute the step direction.
int DSDPComputeNewY (DSDP dsdp, double beta, DSDPVec Y)
 Update the Y variables.
int DSDPComputeObjective (DSDP dsdp, DSDPVec Y, double *ddobj)
 Compute the objective function (DD).
int DSDPComputePDY (DSDP dsdp, double mu, DSDPVec DY, double *pnorm)
 Compute the step direction.
int DSDPComputePDY1 (DSDP dsdp, double mur, DSDPVec DY1)
 Compute an affine step direction dy1.
int DSDPComputePNorm (DSDP dsdp, double mu, DSDPVec DY, double *pnorm)
 Compute proximity to a point on the central path.
int DSDPComputePotential (DSDP dsdp, DSDPVec y, double logdet, double *potential)
 Compute the potential of the given point.
int DSDPComputePotential2 (DSDP dsdp, DSDPVec y, double mu, double logdet, double *potential)
 Compute the objective function plus the barrier function.
int DSDPComputePY (DSDP dsdp, double beta, DSDPVec PY)
 Compute PY = Y - beta DY for use in computing X.
int DSDPComputeRHS (DSDP dsdp, double mu, DSDPVec RHS)
 Compute the right-hand side of the linear system that determines the step direction.
int DSDPGetRR (DSDP dsdp, double *res)
 Get variable r.
int DSDPObjectiveGH (DSDP dsdp, DSDPSchurMat M, DSDPVec vrhs1)
 Compute gradient of dual objective.
int DSDPSetRR (DSDP dsdp, double res)
 Set variable r.
int DSDPSetY (DSDP dsdp, double beta, double logdet, DSDPVec ynew)
 Update the solver with these y variables.

Detailed Description

Dual-scaling operations needed in the solver.

Definition in file dualimpl.c.


Function Documentation

int DSDPComputeDualityGap ( DSDP  dsdp,
double  mu,
double *  gap 
)

Compute the current duality gap.

Parameters:
dsdpthe solver
mubarrier parameter
gapthe duality gap
See also:
DSDPGetDualityGap()
DSDPGetPPObjective()

Definition at line 230 of file dualimpl.c.

Referenced by DSDPSaveYForX().

int DSDPComputeDY ( DSDP  dsdp,
double  mu,
DSDPVec  DY,
double *  pnorm 
)

Compute the step direction.

Parameters:
dsdpthe solver
mubarrier parameter
DYStep direction
pnormdistance to the target

Assuming the affine direction and centering direction have alread been computed, combine them with the appropriate barrier parameter.

See also:
DSDPComputeRHS()

Definition at line 45 of file dualimpl.c.

Referenced by DSDPComputeDualityGap(), DSDPResetY0(), DSDPSaveYForX(), and DSDPSolveDynamicRho().

int DSDPComputeNewY ( DSDP  dsdp,
double  beta,
DSDPVec  Y 
)

Update the Y variables.

Parameters:
dsdpthe solver
betastep length
Ythe new solution

Add a multiple of the step direction to the current solution.

Definition at line 125 of file dualimpl.c.

Referenced by DSDPYStepLineSearch(), and DSDPYStepLineSearch2().

int DSDPComputeObjective ( DSDP  dsdp,
DSDPVec  Y,
double *  ddobj 
)

Compute the objective function (DD).

Parameters:
dsdpis the solver
YCurrent variables
ddobjobjective value
See also:
DSDPComputeNewY()
DSDPGetDDObjective()

Definition at line 21 of file dualimpl.c.

Referenced by DSDPComputePotential(), DSDPComputePotential2(), DSDPInitializeVariables(), and DSDPSetY().

int DSDPComputePDY ( DSDP  dsdp,
double  mu,
DSDPVec  DY,
double *  pnorm 
)

Compute the step direction.

Parameters:
dsdpthe solver
mubarrier parameter
DYStep direction
pnormdistance to the target

Assuming the affine direction and centering direction have alread been computed, combine them with the appropriate barrier parameter.

See also:
DSDPComputeRHS()
DSDPComputeDY()

Definition at line 77 of file dualimpl.c.

Referenced by DSDPChooseBarrierParameter(), and DSDPSolveDynamicRho().

int DSDPComputePDY1 ( DSDP  dsdp,
double  mur,
DSDPVec  DY1 
)

Compute an affine step direction dy1.

Parameters:
dsdpthe solver
murreciprocal of barrier parameter
DY1Step direction

Assuming the affine direction has alread been computed, scale it.

See also:
DSDPComputeDY()

Definition at line 105 of file dualimpl.c.

Referenced by DSDPChooseBarrierParameter().

int DSDPComputePNorm ( DSDP  dsdp,
double  mu,
DSDPVec  DY,
double *  pnorm 
)

Compute proximity to a point on the central path.

Parameters:
dsdpthe solver
mubarrier parameter
DYNewton step direction
pnormthe norm
See also:
DSDPComputeDY()

Definition at line 200 of file dualimpl.c.

Referenced by DSDPComputeDY(), and DSDPComputePDY().

int DSDPComputePotential ( DSDP  dsdp,
DSDPVec  y,
double  logdet,
double *  potential 
)

Compute the potential of the given point.

Parameters:
dsdpthe solver
yvariables
logdetlogarithmic barrier function of the given point
potentialreturn the potential of the given point.
See also:
DSDPSetPotentialParameter()

Definition at line 261 of file dualimpl.c.

Referenced by DSDPInitializeVariables(), DSDPSetY(), and DSDPYStepLineSearch().

int DSDPComputePotential2 ( DSDP  dsdp,
DSDPVec  y,
double  mu,
double  logdet,
double *  potential 
)

Compute the objective function plus the barrier function.

Parameters:
dsdpthe solver
yvariables
mubarrier function
logdetlogarithmic barrier function of the given point
potentialreturn the potential of the given point.\
See also:
DSDPGetBarrierParameter()

Definition at line 287 of file dualimpl.c.

Referenced by DSDPYStepLineSearch2().

int DSDPComputePY ( DSDP  dsdp,
double  beta,
DSDPVec  PY 
)

Compute PY = Y - beta DY for use in computing X.

Parameters:
dsdpthe solver
betastep length
PYthe new value
See also:
DSDPComputeNewY()

Definition at line 150 of file dualimpl.c.

Referenced by DSDPChooseBarrierParameter(), and DSDPSolveDynamicRho().

int DSDPComputeRHS ( DSDP  dsdp,
double  mu,
DSDPVec  RHS 
)

Compute the right-hand side of the linear system that determines the step direction.

Parameters:
dsdpthe solver
mubarrier parameter
RHSright-hand side direction

Assuming that the gradient of the objective and the gradient of the barrier have already been computed, combine them with the appropriate barrier parameter.

This vector is basically $ b - mu * A(S^{-1}) $

See also:
DSDPComputeDY()

Definition at line 177 of file dualimpl.c.

Referenced by DSDPComputeDY(), DSDPComputePDY(), DSDPComputePNorm(), and DSDPSaveYForX().

int DSDPGetRR ( DSDP  dsdp,
double *  res 
)

Get variable r.

Parameters:
dsdpsolver
*resset variable r

Definition at line 361 of file dualimpl.c.

Referenced by DSDPGetR(), DSDPInitializeVariables(), DSDPResetY0(), DSDPSaveYForX(), and DSDPSolveDynamicRho().

int DSDPObjectiveGH ( DSDP  dsdp,
DSDPSchurMat  M,
DSDPVec  vrhs1 
)

Compute gradient of dual objective.

Parameters:
dsdpsolver
MSchur matrix.
vrhs1gradient vector

Definition at line 381 of file dualimpl.c.

Referenced by DSDPComputeG(), and DSDPComputeHessian().

int DSDPSetRR ( DSDP  dsdp,
double  res 
)

Set variable r.

Parameters:
dsdpsolver
resvariable r

Definition at line 345 of file dualimpl.c.

Referenced by DSDPInitializeVariables(), DSDPResetY0(), and DSDPSetR0().

int DSDPSetY ( DSDP  dsdp,
double  beta,
double  logdet,
DSDPVec  ynew 
)

Update the solver with these y variables.

Parameters:
dsdpthe solver
betamost recent step length
logdetlogarithmic barrier function of the given point
ynewcurrent solution.

Definition at line 309 of file dualimpl.c.

Referenced by DSDPInitializeVariables(), DSDPResetY0(), DSDPYStepLineSearch(), and DSDPYStepLineSearch2().