Loading...
Searching...
No Matches
gtsam::SubgraphPreconditioner Class Reference

## Detailed Description

Subgraph conditioner class, as explained in the RSS 2010 submission.

Starting with a graph A*x=b, we split it in two systems A1*x=b1 and A2*x=b2 We solve R1*x=c1, and make the substitution y=R1*x-c1. To use the class, give the Bayes Net R1*x=c1 and Graph A2*x=b2. Then solve for yhat using CG, and solve for xhat = system.x(yhat).

Inheritance diagram for gtsam::SubgraphPreconditioner:

## Public Member Functions

| SubgraphPreconditioner (const SubgraphPreconditionerParameters &p=SubgraphPreconditionerParameters())
| SubgraphPreconditioner (const GaussianFactorGraph &Ab2, const GaussianBayesNet &Rc1, const VectorValues &xbar, const SubgraphPreconditionerParameters &p=SubgraphPreconditionerParameters())
| Constructor.
void | print (const std::string &s="SubgraphPreconditioner") const
| print the object
const GaussianFactorGraph & | Ab2 () const
| Access Ab2.
const GaussianBayesNet & | Rc1 () const
| Access Rc1.
const Errors | b2bar () const
| Access b2bar.
VectorValues | x (const VectorValues &y) const
| Add zero-mean i.i.d.
VectorValues | zero () const
void | transposeMultiplyAdd2 (double alpha, Errors::const_iterator begin, Errors::const_iterator end, VectorValues &y) const
| Add constraint part of the error only y += alpha*inv(R1')*A2'*e2 Takes a range indicating e2 !
double | error (const VectorValues &y) const
VectorValues | gradient (const VectorValues &y) const
| gradient = y + inv(R1')*A2'*(A2*inv(R1)*y-b2bar)
Errors | operator* (const VectorValues &y) const
| Apply operator A.
void | multiplyInPlace (const VectorValues &y, Errors &e) const
| Apply operator A in place: needs e allocated already.
VectorValues | operator^ (const Errors &e) const
| Apply operator A'.
void | transposeMultiplyAdd (double alpha, const Errors &e, VectorValues &y) const
| Add A'e to y y += alpha*A'[e1;e2] = [alpha*e1; alpha*inv(R1')*A2'*e2].
void | solve (const Vector &y, Vector &x) const override
| implement x = R^{-1} y
void | transposeSolve (const Vector &y, Vector &x) const override
| implement x = R^{-T} y
void | build (const GaussianFactorGraph &gfg, const KeyInfo &info, const std::map< Key, Vector > &lambda) override
| build/factorize the preconditioner

## Public Types

typedef boost::shared_ptr< SubgraphPreconditioner > | shared_ptr
Public Types inherited from gtsam::Preconditioner
typedef boost::shared_ptr< Preconditioner > | shared_ptr
typedef std::vector< size_t > | Dimensions

## Constructor & Destructor Documentation

## SubgraphPreconditioner()

gtsam::SubgraphPreconditioner::SubgraphPreconditioner | ( | const GaussianFactorGraph & | Ab2,
|  | const GaussianBayesNet & | Rc1,
|  | const VectorValues & | xbar,
|  | const SubgraphPreconditionerParameters & | p = SubgraphPreconditionerParameters() )

Constructor.

Parameters

  Ab2 | the Graph A2*x=b2
  Rc1 | the Bayes Net R1*x=c1
  xbar | the solution to R1*x=c1

## Member Function Documentation

## build()

void gtsam::SubgraphPreconditioner::build | ( | const GaussianFactorGraph & | gfg,
|  | const KeyInfo & | info,
|  | const std::map< Key, Vector > & | lambda )

override virtual

build/factorize the preconditioner

Implements gtsam::Preconditioner.

## solve()

void gtsam::SubgraphPreconditioner::solve | ( | const Vector & | y,
|  | Vector & | x ) const

override virtual

implement x = R^{-1} y

Implements gtsam::Preconditioner.

## transposeMultiplyAdd2()

void gtsam::SubgraphPreconditioner::transposeMultiplyAdd2 | ( | double | alpha,
|  | Errors::const_iterator | begin,
|  | Errors::const_iterator | end,
|  | VectorValues & | y ) const

Add constraint part of the error only y += alpha*inv(R1')*A2'*e2 Takes a range indicating e2 !

!!!

## transposeSolve()

void gtsam::SubgraphPreconditioner::transposeSolve | ( | const Vector & | y,
|  | Vector & | x ) const

override virtual

implement x = R^{-T} y

Implements gtsam::Preconditioner.

## x()

VectorValues gtsam::SubgraphPreconditioner::x | ( | const VectorValues & | y | ) | const

Add zero-mean i.i.d.

Gaussian prior terms to each variable

Parameters

  sigma | Standard deviation of Gaussian

The documentation for this class was generated from the following files:

- /build/gtsam-Xg031d/gtsam-4.2.0+dfsg/gtsam/linear/SubgraphPreconditioner.h
- /build/gtsam-Xg031d/gtsam-4.2.0+dfsg/gtsam/linear/SubgraphPreconditioner.cpp