diff --git a/gtsam/hybrid/HybridBayesNet.cpp b/gtsam/hybrid/HybridBayesNet.cpp index fe87795fe..f0d53c416 100644 --- a/gtsam/hybrid/HybridBayesNet.cpp +++ b/gtsam/hybrid/HybridBayesNet.cpp @@ -273,4 +273,10 @@ AlgebraicDecisionTree HybridBayesNet::error( return error_tree; } +AlgebraicDecisionTree HybridBayesNet::probPrime( + const VectorValues &continuousValues) const { + AlgebraicDecisionTree error_tree = this->error(continuousValues); + return error_tree.apply([](double error) { return exp(-error); }); +} + } // namespace gtsam diff --git a/gtsam/hybrid/HybridBayesNet.h b/gtsam/hybrid/HybridBayesNet.h index f296ba644..c6ac6dcec 100644 --- a/gtsam/hybrid/HybridBayesNet.h +++ b/gtsam/hybrid/HybridBayesNet.h @@ -144,6 +144,17 @@ class GTSAM_EXPORT HybridBayesNet : public BayesNet { */ AlgebraicDecisionTree error(const VectorValues &continuousValues) const; + /** + * @brief Compute unnormalized probability for each discrete assignment, + * and return as a tree. + * + * @param continuousValues Continuous values at which to compute the + * probability. + * @return AlgebraicDecisionTree + */ + AlgebraicDecisionTree probPrime( + const VectorValues &continuousValues) const; + /// @} private: