Optimization::Solver::PLDPSolver Class Reference

#include <Mathematics/PLDPSolver.hh>

List of all members.

Public Member Functions

 PLDPSolver (unsigned int CardU, double *iPu, double *Px, double *Pu, double *iLQ)
 Constructor.
 ~PLDPSolver ()
 Destructor.
int SolveProblem (double *CstPartOfTheCostFunction, unsigned int NbOfConstraints, double *LinearPartOfConstraints, double *CstPartOfConstraints, double *ZMPRef, double *XkYk, double *X, std::vector< int > &SimilarConstraint, unsigned int NumberOfRemovedConstraints, bool StartingSequence)
 Solve the optimization problem.

Protected Member Functions

void InitializeSolver ()
void AllocateMemoryForSolver ()
double ComputeAlpha (vector< unsigned int > &NewActivatedConstraints, vector< int > &SimilarConstraint)
void StoreCurrentZMPSolution (double *XkYk)
void WriteCurrentZMPSolution (string filename, double *XkYk)
Initial solution methods related
int ComputeInitialSolution (double *ZMPRef, double *XkYk, bool StartingSequence)
int PrecomputeiPuPx ()
Projected descent direction methods related
int ComputeProjectedDescentDirection ()
 Compute Projected descent direction.
int ForwardSubstitution ()
 Forward substitution. First Phase EE^t v2 = v1 <-> LL^t v2 = v1 Now solving L y = v1.
int BackwardSubstitution ()
 Compute v2 q (14b) in Dimitrov 2009. Second phase a Now solving LL^t v2 = v1 <-> L y = v1 with L^t v2 = y y solved with first phase. So now we are looking for v2.

Detailed Description

This class implements a two stage strategy to solve the following optimal problem:


Constructor & Destructor Documentation

PLDPSolver::PLDPSolver ( unsigned int  CardU,
double *  iPu,
double *  Px,
double *  Pu,
double *  iLQ 
)

Constructor.

Destructor.


Member Function Documentation

Allocate memory for solver.

int PLDPSolver::BackwardSubstitution ( ) [protected]

Compute v2 q (14b) in Dimitrov 2009. Second phase a Now solving LL^t v2 = v1 <-> L y = v1 with L^t v2 = y y solved with first phase. So now we are looking for v2.

double PLDPSolver::ComputeAlpha ( vector< unsigned int > &  NewActivatedConstraints,
vector< int > &  SimilarConstraint 
) [protected]

Detecting violated constraints

int PLDPSolver::ComputeInitialSolution ( double *  ZMPRef,
double *  XkYk,
bool  StartingSequence 
) [protected]

Compute the initial solution

The initial solution of the problem is given by eq(14) Dimitar ICRA 2008 U0 = iPu * Px [Xkt Ykt]t + iPu * ZMPRef The only part which can not be precomputed is ZMPRef.

Compute Projected descent direction.

int PLDPSolver::ForwardSubstitution ( ) [protected]

Forward substitution. First Phase EE^t v2 = v1 <-> LL^t v2 = v1 Now solving L y = v1.

void PLDPSolver::InitializeSolver ( ) [protected]

Initialize the internal variables of the class.

int PLDPSolver::PrecomputeiPuPx ( ) [protected]

Precompite iPuPx

int PLDPSolver::SolveProblem ( double *  CstPartOfTheCostFunction,
unsigned int  NbOfConstraints,
double *  LinearPartOfConstraints,
double *  CstPartOfConstraints,
double *  ZMPRef,
double *  XkYk,
double *  X,
std::vector< int > &  SimilarConstraint,
unsigned int  NumberOfRemovedConstraints,
bool  StartingSequence 
)

Solve the optimization problem.

Initialization de cholesky.

Step two: Compute the projected descent direction.

Step three : Compute alpha

Compute new solution.

void PLDPSolver::StoreCurrentZMPSolution ( double *  XkYk) [protected]

Store the current ZMP solution for hot start purposes.

void PLDPSolver::WriteCurrentZMPSolution ( string  filename,
double *  XkYk 
) [protected]

Write current ZMP ref trajectory associated with current value of m_Vk.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Defines