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

## DSDPComputeDualityGap()

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

Compute the current duality gap.

Parameters

  dsdp | the solver
  mu | barrier parameter
  gap | the duality gap

See also
  DSDPGetDualityGap()
  DSDPGetPPObjective()

Definition at line 230 of file dualimpl.c.

Referenced by DSDPSaveYForX().

## DSDPComputeDY()

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

Compute the step direction.

Parameters

  dsdp | the solver
  mu | barrier parameter
  DY | Step direction
  pnorm | distance 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().

## DSDPComputeNewY()

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

Update the Y variables.

Parameters

  dsdp | the solver
  beta | step length
  Y | the 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().

## DSDPComputeObjective()

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

Compute the objective function (DD).

Parameters

  dsdp | is the solver
  Y | Current variables
  ddobj | objective value

See also
  DSDPComputeNewY()
  DSDPGetDDObjective()

Definition at line 21 of file dualimpl.c.

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

## DSDPComputePDY()

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

Compute the step direction.

Parameters

  dsdp | the solver
  mu | barrier parameter
  DY | Step direction
  pnorm | distance 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().

## DSDPComputePDY1()

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

Compute an affine step direction dy1.

Parameters

  dsdp | the solver
  mur | reciprocal of barrier parameter
  DY1 | Step 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().

## DSDPComputePNorm()

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

Compute proximity to a point on the central path.

Parameters

  dsdp | the solver
  mu | barrier parameter
  DY | Newton step direction
  pnorm | the norm

See also
  DSDPComputeDY()

Definition at line 200 of file dualimpl.c.

Referenced by DSDPComputeDY(), and DSDPComputePDY().

## DSDPComputePotential()

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

Compute the potential of the given point.

Parameters

  dsdp | the solver
  y | variables
  logdet | logarithmic barrier function of the given point
  potential | return the potential of the given point.

See also
  DSDPSetPotentialParameter()

Definition at line 261 of file dualimpl.c.

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

## DSDPComputePotential2()

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

Compute the objective function plus the barrier function.

Parameters

  dsdp | the solver
  y | variables
  mu | barrier function
  logdet | logarithmic barrier function of the given point
  potential | return the potential of the given point.\

See also
  DSDPGetBarrierParameter()

Definition at line 287 of file dualimpl.c.

Referenced by DSDPYStepLineSearch2().

## DSDPComputePY()

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

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

Parameters

  dsdp | the solver
  beta | step length
  PY | the new value

See also
  DSDPComputeNewY()

Definition at line 150 of file dualimpl.c.

Referenced by DSDPChooseBarrierParameter(), and DSDPSolveDynamicRho().

## DSDPComputeRHS()

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

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

Parameters

  dsdp | the solver
  mu | barrier parameter
  RHS | right-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

See also
  DSDPComputeDY()

Definition at line 177 of file dualimpl.c.

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

## DSDPGetRR()

int DSDPGetRR | ( | DSDP | dsdp,
|  | double * | res
| ) |  |

Get variable r.

Parameters

  dsdp | solver
  *res | set variable r

Definition at line 361 of file dualimpl.c.

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

## DSDPObjectiveGH()

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

Compute gradient of dual objective.

Parameters

  dsdp | solver
  M | Schur matrix.
  vrhs1 | gradient vector

Definition at line 381 of file dualimpl.c.

Referenced by DSDPComputeG(), and DSDPComputeHessian().

## DSDPSetRR()

int DSDPSetRR | ( | DSDP | dsdp,
|  | double | res
| ) |  |

Set variable r.

Parameters

  dsdp | solver
  res | variable r

Definition at line 345 of file dualimpl.c.

Referenced by DSDPInitializeVariables(), and DSDPResetY0().

## DSDPSetY()

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

Update the solver with these y variables.

Parameters

  dsdp | the solver
  beta | most recent step length
  logdet | logarithmic barrier function of the given point
  ynew | current solution.

Definition at line 309 of file dualimpl.c.

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