From aa25ccfa6ecbaef12e549b3e0ac6a09d5c2d30de Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 8 Dec 2024 11:15:57 -0500 Subject: [PATCH] implement evaluate in DiscreteFactor --- gtsam/discrete/DecisionTreeFactor.h | 5 ----- gtsam/discrete/DiscreteConditional.cpp | 2 +- gtsam/discrete/DiscreteConditional.h | 5 ----- gtsam/discrete/DiscreteFactor.h | 14 ++++++++++++-- gtsam/discrete/TableFactor.h | 8 +------- 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/gtsam/discrete/DecisionTreeFactor.h b/gtsam/discrete/DecisionTreeFactor.h index f8f2835e5..85491b909 100644 --- a/gtsam/discrete/DecisionTreeFactor.h +++ b/gtsam/discrete/DecisionTreeFactor.h @@ -131,11 +131,6 @@ namespace gtsam { /// Calculate probability for given values, /// is just look up in AlgebraicDecisionTree. - double evaluate(const Assignment& values) const override { - return ADT::operator()(values); - } - - /// Evaluate probability distribution, sugar. double operator()(const Assignment& values) const override { return ADT::operator()(values); } diff --git a/gtsam/discrete/DiscreteConditional.cpp b/gtsam/discrete/DiscreteConditional.cpp index 048f35e5b..c90f7f9a0 100644 --- a/gtsam/discrete/DiscreteConditional.cpp +++ b/gtsam/discrete/DiscreteConditional.cpp @@ -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()); } /* ************************************************************************* */ diff --git a/gtsam/discrete/DiscreteConditional.h b/gtsam/discrete/DiscreteConditional.h index 77003f232..29292f57e 100644 --- a/gtsam/discrete/DiscreteConditional.h +++ b/gtsam/discrete/DiscreteConditional.h @@ -168,11 +168,6 @@ class GTSAM_EXPORT DiscreteConditional static_cast(this)->print(s, formatter); } - /// Evaluate, just look up in AlgebraicDecisionTree - double evaluate(const Assignment& values) const override { - return ADT::operator()(values); - } - using DecisionTreeFactor::error; ///< DiscreteValues version using DecisionTreeFactor::operator(); ///< DiscreteValues version diff --git a/gtsam/discrete/DiscreteFactor.h b/gtsam/discrete/DiscreteFactor.h index 3151afe80..5b4665d4d 100644 --- a/gtsam/discrete/DiscreteFactor.h +++ b/gtsam/discrete/DiscreteFactor.h @@ -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& values) const = 0; + /** + * @brief Calculate probability for given values. + * Calls specialized evaluation under the hood. + * + * Note: Uses Assignment as it is the base class of DiscreteValues. + * + * @param values Discrete assignment. + * @return double + */ + double evaluate(const Assignment& values) const { + return operator()(values); + } /// Find value for given assignment of values to variables virtual double operator()(const Assignment& values) const = 0; diff --git a/gtsam/discrete/TableFactor.h b/gtsam/discrete/TableFactor.h index 47a7c6bbb..d8df12821 100644 --- a/gtsam/discrete/TableFactor.h +++ b/gtsam/discrete/TableFactor.h @@ -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& values) const override { - return operator()(values); - } - - /// Evaluate probability distribution, sugar. + /// Evaluate probability distribution, is just look up in TableFactor. double operator()(const Assignment& values) const override; /// Calculate error for DiscreteValues `x`, is -log(probability).