implement evaluate in DiscreteFactor

release/4.3a0
Varun Agrawal 2024-12-08 11:15:57 -05:00
parent 9844a555d4
commit aa25ccfa6e
5 changed files with 14 additions and 20 deletions

View File

@ -131,11 +131,6 @@ namespace gtsam {
/// Calculate probability for given values,
/// is just look up in AlgebraicDecisionTree.
double evaluate(const Assignment<Key>& values) const override {
return ADT::operator()(values);
}
/// Evaluate probability distribution, sugar.
double operator()(const Assignment<Key>& values) const override {
return ADT::operator()(values);
}

View File

@ -476,7 +476,7 @@ string DiscreteConditional::html(const KeyFormatter& keyFormatter,
/* ************************************************************************* */
double DiscreteConditional::evaluate(const HybridValues& x) const {
return this->evaluate(x.discrete());
return this->operator()(x.discrete());
}
/* ************************************************************************* */

View File

@ -168,11 +168,6 @@ class GTSAM_EXPORT DiscreteConditional
static_cast<const BaseConditional*>(this)->print(s, formatter);
}
/// Evaluate, just look up in AlgebraicDecisionTree
double evaluate(const Assignment<Key>& values) const override {
return ADT::operator()(values);
}
using DecisionTreeFactor::error; ///< DiscreteValues version
using DecisionTreeFactor::operator(); ///< DiscreteValues version

View File

@ -93,8 +93,18 @@ class GTSAM_EXPORT DiscreteFactor : public Factor {
size_t cardinality(Key j) const { return cardinalities_.at(j); }
/// Calculate probability for given values
virtual double evaluate(const Assignment<Key>& values) const = 0;
/**
* @brief Calculate probability for given values.
* Calls specialized evaluation under the hood.
*
* Note: Uses Assignment<Key> as it is the base class of DiscreteValues.
*
* @param values Discrete assignment.
* @return double
*/
double evaluate(const Assignment<Key>& values) const {
return operator()(values);
}
/// Find value for given assignment of values to variables
virtual double operator()(const Assignment<Key>& values) const = 0;

View File

@ -169,13 +169,7 @@ class GTSAM_EXPORT TableFactor : public DiscreteFactor {
// /// @name Standard Interface
// /// @{
/// Calculate probability for given values,
/// is just look up in TableFactor.
double evaluate(const Assignment<Key>& values) const override {
return operator()(values);
}
/// Evaluate probability distribution, sugar.
/// Evaluate probability distribution, is just look up in TableFactor.
double operator()(const Assignment<Key>& values) const override;
/// Calculate error for DiscreteValues `x`, is -log(probability).