56 static std::pair<std::shared_ptr<ConditionalType>, std::shared_ptr<FactorType> >
62 std::optional<std::reference_wrapper<const VariableIndex>> variableIndex) {
100 template<
typename ITERATOR>
104 template<
class CONTAINER>
108 template<
class DERIVEDFACTOR>
115 bool equals(
const This& fg,
double tol = 1e-9)
const;
132 void add(
const Vector& b) {
137 const Vector& b,
const SharedDiagonal& model = SharedDiagonal()) {
142 Key key2,
const Matrix& A2,
143 const Vector& b,
const SharedDiagonal& model = SharedDiagonal()) {
148 Key key2,
const Matrix& A2,
149 Key key3,
const Matrix& A3,
150 const Vector& b,
const SharedDiagonal& model = SharedDiagonal()) {
154 template<
class TERMS>
155 void add(
const TERMS& terms,
const Vector &b,
const SharedDiagonal& model = SharedDiagonal()) {
166 std::map<Key, size_t> getKeyDimMap()
const;
176 double* newError =
nullptr)
const;
216 const Ordering& ordering,
size_t& nrows,
size_t& ncols)
const;
219 std::vector<std::tuple<int, int, double> >
sparseJacobian()
const;
263 std::pair<Matrix,Vector>
jacobian()
const;
305 std::pair<Matrix,Vector>
hessian()
const;
318 const Eliminate& function = EliminationTraitsType::DefaultEliminate)
const;
325 const Eliminate& function = EliminationTraitsType::DefaultEliminate)
const;
391 void multiplyHessianAdd(
double alpha,
const VectorValues& x,
402 const std::string& str =
"GaussianFactorGraph: ",
406 [](
const Factor*, double, size_t) {
return true; }})
const;
410#if GTSAM_ENABLE_BOOST_SERIALIZATION
412 friend class boost::serialization::access;
413 template<
class ARCHIVE>
414 void serialize(ARCHIVE & ar,
const unsigned int ) {
415 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
Predicate used to filter factor-graph error output.
Variable elimination algorithms for factor graphs.
Contains the HessianFactor class, a general quadratic factor.
A factor with a quadratic error function - a Gaussian.
std::pair< std::shared_ptr< GaussianConditional >, std::shared_ptr< GaussianFactor > > EliminatePreferCholesky(const GaussianFactorGraph &factors, const Ordering &keys)
Densely partially eliminate with Cholesky factorization.
Definition HessianFactor.cpp:646
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
bool hasConstraints(const GaussianFactorGraph &factors)
Evaluates whether linear factors have any constrained noise models.
Definition GaussianFactorGraph.cpp:473
Point2 operator*(double s, const Point2 &p)
multiply with scalar
Definition Point2.h:52
std::function< bool(const Factor *, double, std::size_t)> FactorErrorPredicate
Predicate used to select factor errors for graph diagnostics.
Definition FactorErrorPredicate.h:27
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
FastList< Vector > Errors
Errors is a vector of errors.
Definition Errors.h:34
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
Template to create a binary predicate.
Definition Testable.h:112
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
bool isEqual(const FactorGraph &other) const
Check exact equality of the factor pointers. Useful for derived ==.
Definition FactorGraph.h:95
IsDerived< DERIVEDFACTOR > push_back(std::shared_ptr< DERIVEDFACTOR > factor)
Definition FactorGraph.h:147
FactorGraph()
Definition FactorGraph.h:103
std::shared_ptr< GaussianFactor > sharedFactor
Definition FactorGraph.h:62
Traits class for eliminateable factor graphs, specifies the types that result from elimination,...
Definition EliminateableFactorGraph.h:38
EliminateableFactorGraph is a base class for factor graphs that contains elimination algorithms.
Definition EliminateableFactorGraph.h:59
std::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
Definition EliminateableFactorGraph.h:91
static Ordering Colamd(const FACTOR_GRAPH &graph)
Compute a fill-reducing ordering using COLAMD from a factor graph (see details for note on performanc...
Definition Ordering.h:93
GaussianBayesNet is a Bayes net made from linear-Gaussian conditionals.
Definition GaussianBayesNet.h:36
A Bayes tree representing a Gaussian density.
Definition GaussianBayesTree.h:53
A GaussianConditional functions as the node in a Bayes network.
Definition GaussianConditional.h:43
Definition GaussianEliminationTree.h:29
An abstract virtual base class for JacobianFactor and HessianFactor.
Definition GaussianFactor.h:39
virtual GaussianFactor::shared_ptr clone() const =0
Clone a factor (make a deep copy).
static Ordering DefaultOrderingFunc(const FactorGraphType &graph, std::optional< std::reference_wrapper< const VariableIndex > > variableIndex)
The default ordering generation function.
Definition GaussianFactorGraph.h:60
GaussianBayesTree BayesTreeType
Type of Bayes tree.
Definition GaussianFactorGraph.h:53
GaussianConditional ConditionalType
Type of conditionals from elimination.
Definition GaussianFactorGraph.h:50
GaussianFactor FactorType
Type of factors in factor graph.
Definition GaussianFactorGraph.h:48
GaussianEliminationTree EliminationTreeType
Type of elimination tree.
Definition GaussianFactorGraph.h:52
GaussianFactorGraph FactorGraphType
Type of the factor graph (e.g. GaussianFactorGraph).
Definition GaussianFactorGraph.h:49
GaussianBayesNet BayesNetType
Type of Bayes net from sequential elimination.
Definition GaussianFactorGraph.h:51
static std::pair< std::shared_ptr< ConditionalType >, std::shared_ptr< FactorType > > DefaultEliminate(const FactorGraphType &factors, const Ordering &keys)
The default dense elimination function.
Definition GaussianFactorGraph.h:57
GaussianJunctionTree JunctionTreeType
Type of Junction tree.
Definition GaussianFactorGraph.h:54
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition GaussianFactorGraph.h:77
GaussianFactorGraph negate() const
Returns the negation of all factors in this graph - corresponds to antifactors.
Definition GaussianFactorGraph.cpp:137
std::pair< Matrix, Vector > jacobian(const Ordering &ordering) const
Return the dense Jacobian and right-hand-side , with the noise models baked into A and b.
Definition GaussianFactorGraph.cpp:263
EliminateableFactorGraph< This > BaseEliminateable
Typedef to base elimination class.
Definition GaussianFactorGraph.h:82
Matrix augmentedJacobian(const Ordering &ordering) const
Return a dense Jacobian matrix, augmented with b with the noise models baked into A and b.
Definition GaussianFactorGraph.cpp:248
void add(const TERMS &terms, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add an n-ary factor.
Definition GaussianFactorGraph.h:155
std::vector< std::tuple< int, int, double > > sparseJacobian(const Ordering &ordering, size_t &nrows, size_t &ncols) const
Returns a sparse augmented Jacbian matrix as a vector of i, j, and s, where i(k) and j(k) are the bas...
Definition GaussianFactorGraph.cpp:150
GaussianFactorGraph(std::initializer_list< sharedFactor > factors)
Construct from an initializer lists of GaussianFactor shared pointers.
Definition GaussianFactorGraph.h:96
VectorValues optimizeGradientSearch() const
Optimize along the gradient direction, with a closed-form computation to perform the line search.
Definition GaussianFactorGraph.cpp:412
virtual VectorValues gradientAtZero() const
Compute the gradient of the energy function, , centered around zero.
Definition GaussianFactorGraph.cpp:400
virtual std::map< Key, Matrix > hessianBlockDiagonal() const
Return the block diagonal of the Hessian for this factor.
Definition GaussianFactorGraph.cpp:321
Matrix sparseJacobian_() const
Matrix version of sparseJacobian: generates a 3*m matrix with [i,j,s] entries such that S(i(k),...
Definition GaussianFactorGraph.cpp:230
virtual GaussianFactorGraph::shared_ptr cloneToPtr() const
CloneToPtr() performs a simple assignment to a new graph and returns it.
Definition GaussianFactorGraph.cpp:118
GaussianFactorGraph()
Default constructor.
Definition GaussianFactorGraph.h:89
double deltaError(const VectorValues &x, double *oldError=nullptr, double *newError=nullptr) const
Compute the change in error from zero to x, using a single pass over the factors.
Definition GaussianFactorGraph.cpp:83
void add(const GaussianFactor &factor)
Add a factor by value - makes a copy.
Definition GaussianFactorGraph.h:126
double probPrime(const VectorValues &c) const
Unnormalized probability.
Definition GaussianFactorGraph.cpp:112
std::pair< Matrix, Vector > hessian(const Ordering &ordering) const
Return the dense Hessian and information vector , with the noise models baked in.
Definition GaussianFactorGraph.cpp:295
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition GaussianFactorGraph.h:83
VectorValues optimize(const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
Solve the factor graph by performing multifrontal variable elimination in COLAMD order using the dens...
Definition GaussianFactorGraph.cpp:340
virtual GaussianFactorGraph clone() const
Clone() performs a deep-copy of the graph, including all of the factors.
Definition GaussianFactorGraph.cpp:125
void multiplyInPlace(const VectorValues &x, const Errors::iterator &e) const
return A*x / Errors operator(const VectorValues& x) const;
Definition GaussianFactorGraph.cpp:458
void add(Key key1, const Matrix &A1, Key key2, const Matrix &A2, Key key3, const Matrix &A3, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add a ternary factor.
Definition GaussianFactorGraph.h:147
Errors gaussianErrors(const VectorValues &x) const
return A*x-b
Definition GaussianFactorGraph.cpp:543
void add(const sharedFactor &factor)
Add a factor by pointer - stores pointer without copying the factor.
Definition GaussianFactorGraph.h:129
friend bool operator==(const GaussianFactorGraph &lhs, const GaussianFactorGraph &rhs)
Check exact equality.
Definition GaussianFactorGraph.h:120
VectorValues gradient(const VectorValues &x0) const
Compute the gradient of the energy function, , centered around .
Definition GaussianFactorGraph.cpp:388
GaussianFactorGraph This
Typedef to this class.
Definition GaussianFactorGraph.h:80
KeySet Keys
Return the set of variables involved in the factors (computes a set union).
Definition GaussianFactorGraph.h:162
virtual VectorValues hessianDiagonal() const
Return only the diagonal of the Hessian A'*A, as a VectorValues.
Definition GaussianFactorGraph.cpp:310
double error(const VectorValues &x) const
unnormalized error
Definition GaussianFactorGraph.cpp:73
void add(const Vector &b)
Add a null factor.
Definition GaussianFactorGraph.h:132
void add(Key key1, const Matrix &A1, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add a unary factor.
Definition GaussianFactorGraph.h:136
void transposeMultiplyAdd(double alpha, const Errors &e, VectorValues &x) const
x += alpha*A'*e
Definition GaussianFactorGraph.cpp:486
void add(Key key1, const Matrix &A1, Key key2, const Matrix &A2, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add a binary factor.
Definition GaussianFactorGraph.h:141
Matrix augmentedHessian(const Ordering &ordering) const
Return a dense Hessian matrix, augmented with the information vector .
Definition GaussianFactorGraph.cpp:278
VectorValues transposeMultiply(const Errors &e) const
x = A'*e
Definition GaussianFactorGraph.cpp:524
GaussianFactorGraph(ITERATOR firstFactor, ITERATOR lastFactor)
Construct from iterator over factors.
Definition GaussianFactorGraph.h:101
VectorValues optimizeDensely() const
Optimize using Eigen's dense Cholesky factorization.
Definition GaussianFactorGraph.cpp:354
FactorGraph< GaussianFactor > Base
Typedef to base factor graph type.
Definition GaussianFactorGraph.h:81
GaussianFactorGraph(const FactorGraph< DERIVEDFACTOR > &graph)
Implicit copy/downcast constructor to override explicit template container constructor.
Definition GaussianFactorGraph.h:109
GaussianFactorGraph(const CONTAINER &factors)
Construct from container of factors (shared_ptr or plain objects).
Definition GaussianFactorGraph.h:105
A junction tree specialized to Gaussian factors, i.e., it is a cluster tree with Gaussian factors sto...
Definition GaussianJunctionTree.h:39
A Gaussian factor in the squared-error form.
Definition JacobianFactor.h:92
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73