32 namespace linearAlgorithms
49 template<
class CLIQUE>
55 const std::shared_ptr<CLIQUE>& clique,
59 myData.parentData = &parentData;
61 for(
Key parent: clique->conditional_->parents())
62 myData.cliqueResults.emplace(parent, myData.parentData->cliqueResults.at(parent));
73 parentPointers.reserve(clique->conditional()->nrParents());
74 for(
Key parent: clique->conditional()->parents()) {
75 parentPointers.push_back(myData.cliqueResults.at(parent));
76 dim += parentPointers.
back()->second.size();
83 const Vector& parentVector = parentPointer->second;
84 xS.block(vectorPos,0,parentVector.size(),1) = parentVector.block(0,0,parentVector.size(),1);
85 vectorPos += parentVector.size();
93 const Vector rhs = c.
getb() - c.
S() * xS;
96 const Vector solution = c.
R().triangularView<Eigen::Upper>().solve(rhs);
104 auto result = collectedResult.
emplace(*frontal, solution.segment(vectorPosition, c.
getDim(frontal)));
106 throw std::runtime_error(
107 "Internal error while optimizing clique. Trying to insert key '" + DefaultKeyFormatter(*frontal)
111 myData.cliqueResults.emplace(r->first, r);
112 vectorPosition += c.
getDim(frontal);
142 template<
class BAYESTREE>
143 VectorValues optimizeBayesTree(
const BAYESTREE& bayesTree)
145 gttic(linear_optimizeBayesTree);
151 treeTraversal::no_op postVisitor;
154 return preVisitor.collectedResult;
FACTOR::const_iterator endFrontals() const
Definition: Conditional.h:182
std::vector< T, typename internal::FastDefaultVectorAllocator< T >::type > FastVector
Definition: FastVector.h:34
Definition: VectorValues.h:74
constABlock S() const
Definition: GaussianConditional.h:219
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:108
constABlock R() const
Definition: GaussianConditional.h:216
FACTOR::const_iterator beginFrontals() const
Definition: Conditional.h:179
Key back() const
Last key.
Definition: Factor.h:136
std::pair< VectorValues::iterator, bool > emplace(Key j, Args &&... args)
Definition: VectorValues.h:185
Definition: GaussianConditional.h:38
void DepthFirstForestParallel(FOREST &forest, DATA &rootData, VISITOR_PRE &visitorPre, VISITOR_POST &visitorPost, int problemSizeThreshold=10)
Definition: treeTraversal-inst.h:154
const constBVector getb() const
Definition: JacobianFactor.h:298
DenseIndex getDim(const_iterator variable) const override
Definition: JacobianFactor.h:277
Conditional Gaussian Base class.
Values::const_iterator const_iterator
Const iterator over vector values.
Definition: VectorValues.h:82
Definition: chartTesting.h:28
const KeyVector & keys() const
Access the factor's involved variable keys.
Definition: Factor.h:142
Definition: linearExceptions.h:94
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:82
Definition: linearAlgorithms-inst.h:35
Definition: linearAlgorithms-inst.h:50
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102