dualalg.c File Reference

Implements the dual-scaling algorithm. More...

Go to the source code of this file.

## Functions

int | DSDPChooseBarrierParameter (DSDP, double, double *, double *)
| DSDP barrier heuristic choses the smalles value of mu such that X>0.
int | DSDPComputeDualStepDirections (DSDP dsdp)
| Compute the step direction by computing a linear system and solving it.
int | DSDPInitializeVariables (DSDP dsdp)
| Initialize variables and factor S.
int | DSDPResetY0 (DSDP)
| After 1 iteration, consider increasing the variable r.
int | DSDPSolveDynamicRho (DSDP dsdp)
| Apply dual-scaling algorithm.
int | DSDPYStepLineSearch (DSDP, double, double, DSDPVec)
| Used for Newton step, the merit function of this line search is the dual potential function.
int | DSDPYStepLineSearch2 (DSDP, double, double, DSDPVec)
| Used for centering steps, the merit function of this line search is the objective function plus the barrier term.

## Detailed Description

Implements the dual-scaling algorithm.

Definition in file dualalg.c.

## Function Documentation

## DSDPChooseBarrierParameter()

int DSDPChooseBarrierParameter | ( | DSDP | dsdp,
|  | double | mutarget,
|  | double * | ppstep,
|  | double * | nextmutarget
| ) |  |

DSDP barrier heuristic choses the smalles value of mu such that X>0.

Parameters

  dsdp | solver
  mutarget | current barrier parameter
  ppstep | set to primal step length
  nextmutarget | set to new target barrier parameter

This routine implements a dynamic strategy for reducing the barrier parameter. Basically, it looks for the smallest barrier parameter for which the primal matrix X is psd. Lower and upper bounds to this parameter also apply.

Definition at line 240 of file dualalg.c.

Referenced by DSDPSolveDynamicRho().

## DSDPComputeDualStepDirections()

int DSDPComputeDualStepDirections | ( | DSDP | dsdp | ) |

Compute the step direction by computing a linear system and solving it.

Parameters

  dsdp | the solver

DSDP first attempts unpreconditioned CG to the matrix. Once the number of iterations becomes too large, it swithes a CG preconditioned by the Cholesky factorization. Usually only one iteration of the preconditioned CG is necessary, but solutions with large norms and very precise solutions may require additional iterations.

Definition at line 370 of file dualalg.c.

Referenced by DSDPSolveDynamicRho().

## DSDPInitializeVariables()

int DSDPInitializeVariables | ( | DSDP | dsdp | ) |

Initialize variables and factor S.

Parameters

  dsdp | the solver

Definition at line 475 of file dualalg.c.

## DSDPResetY0()

int DSDPResetY0 | ( | DSDP | dsdp | ) |

After 1 iteration, consider increasing the variable r.

Parameters

  dsdp | solver

Definition at line 328 of file dualalg.c.

Referenced by DSDPSolveDynamicRho().

## DSDPSolveDynamicRho()

int DSDPSolveDynamicRho | ( | DSDP | dsdp | ) |

Apply dual-scaling algorithm.

Parameters

  dsdp | the solver

Definition at line 121 of file dualalg.c.

## DSDPYStepLineSearch()

int DSDPYStepLineSearch | ( | DSDP | dsdp,
|  | double | mutarget,
|  | double | dstep0,
|  | DSDPVec | dy
| ) |  |

Used for Newton step, the merit function of this line search is the dual potential function.

Parameters

  dsdp | the solver
  mutarget | barrier parameter
  dstep0 | initial step length
  dy | step direction

Definition at line 24 of file dualalg.c.

Referenced by DSDPSolveDynamicRho().

## DSDPYStepLineSearch2()

int DSDPYStepLineSearch2 | ( | DSDP | dsdp,
|  | double | mutarget,
|  | double | dstep0,
|  | DSDPVec | dy
| ) |  |

Used for centering steps, the merit function of this line search is the objective function plus the barrier term.

Parameters

  dsdp | the solver
  mutarget | barrier parameter
  dstep0 | initial step length
  dy | step direction

Definition at line 73 of file dualalg.c.

Referenced by DSDPSolveDynamicRho().