add back PotentiallyPrunedComponentError as an inline function
parent
cd3e0f37fb
commit
4ae5596200
|
|
@ -175,13 +175,19 @@ HybridGaussianProductFactor HybridGaussianFactor::asProductFactor() const {
|
||||||
}}};
|
}}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* *******************************************************************************/
|
||||||
|
inline static double PotentiallyPrunedComponentError(
|
||||||
|
const GaussianFactorValuePair& pair, const VectorValues& continuousValues) {
|
||||||
|
return pair.first ? pair.first->error(continuousValues) + pair.second
|
||||||
|
: std::numeric_limits<double>::infinity();
|
||||||
|
}
|
||||||
|
|
||||||
/* *******************************************************************************/
|
/* *******************************************************************************/
|
||||||
AlgebraicDecisionTree<Key> HybridGaussianFactor::errorTree(
|
AlgebraicDecisionTree<Key> HybridGaussianFactor::errorTree(
|
||||||
const VectorValues& continuousValues) const {
|
const VectorValues& continuousValues) const {
|
||||||
// functor to convert from sharedFactor to double error value.
|
// functor to convert from sharedFactor to double error value.
|
||||||
auto errorFunc = [&continuousValues](const GaussianFactorValuePair& pair) {
|
auto errorFunc = [&continuousValues](const GaussianFactorValuePair& pair) {
|
||||||
return pair.first ? pair.first->error(continuousValues) + pair.second
|
return PotentiallyPrunedComponentError(pair, continuousValues);
|
||||||
: std::numeric_limits<double>::infinity();
|
|
||||||
};
|
};
|
||||||
DecisionTree<Key, double> error_tree(factors_, errorFunc);
|
DecisionTree<Key, double> error_tree(factors_, errorFunc);
|
||||||
return error_tree;
|
return error_tree;
|
||||||
|
|
@ -191,8 +197,7 @@ AlgebraicDecisionTree<Key> HybridGaussianFactor::errorTree(
|
||||||
double HybridGaussianFactor::error(const HybridValues& values) const {
|
double HybridGaussianFactor::error(const HybridValues& values) const {
|
||||||
// Directly index to get the component, no need to build the whole tree.
|
// Directly index to get the component, no need to build the whole tree.
|
||||||
const GaussianFactorValuePair pair = factors_(values.discrete());
|
const GaussianFactorValuePair pair = factors_(values.discrete());
|
||||||
return pair.first ? pair.first->error(values.continuous()) + pair.second
|
return PotentiallyPrunedComponentError(pair, values.continuous());
|
||||||
: std::numeric_limits<double>::infinity();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace gtsam
|
} // namespace gtsam
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue