better naming

release/4.3a0
Varun Agrawal 2024-09-23 15:55:27 -04:00
parent 92b829dd55
commit 9b3176e5ef
3 changed files with 14 additions and 15 deletions

View File

@ -51,14 +51,14 @@ HybridGaussianConditional::HybridGaussianConditional(
discreteParents, GetFactorValuePairs(conditionals)), discreteParents, GetFactorValuePairs(conditionals)),
BaseConditional(continuousFrontals.size()), BaseConditional(continuousFrontals.size()),
conditionals_(conditionals) { conditionals_(conditionals) {
// Calculate logConstant_ as the minimum of the negative-log normalizers of // Calculate negLogConstant_ as the minimum of the negative-log normalizers of
// the conditionals, by visiting the decision tree: // the conditionals, by visiting the decision tree:
logConstant_ = std::numeric_limits<double>::infinity(); negLogConstant_ = std::numeric_limits<double>::infinity();
conditionals_.visit( conditionals_.visit(
[this](const GaussianConditional::shared_ptr &conditional) { [this](const GaussianConditional::shared_ptr &conditional) {
if (conditional) { if (conditional) {
this->logConstant_ = this->negLogConstant_ =
std::min(this->logConstant_, conditional->negLogConstant()); std::min(this->negLogConstant_, conditional->negLogConstant());
} }
}); });
} }
@ -84,7 +84,7 @@ GaussianFactorGraphTree HybridGaussianConditional::asGaussianFactorGraphTree()
auto wrap = [this](const GaussianConditional::shared_ptr &gc) { auto wrap = [this](const GaussianConditional::shared_ptr &gc) {
// First check if conditional has not been pruned // First check if conditional has not been pruned
if (gc) { if (gc) {
const double Cgm_Kgcm = gc->negLogConstant() - this->logConstant_; const double Cgm_Kgcm = gc->negLogConstant() - this->negLogConstant_;
// If there is a difference in the covariances, we need to account for // If there is a difference in the covariances, we need to account for
// that since the error is dependent on the mode. // that since the error is dependent on the mode.
if (Cgm_Kgcm > 0.0) { if (Cgm_Kgcm > 0.0) {
@ -155,8 +155,7 @@ void HybridGaussianConditional::print(const std::string &s,
std::cout << "(" << formatter(dk.first) << ", " << dk.second << "), "; std::cout << "(" << formatter(dk.first) << ", " << dk.second << "), ";
} }
std::cout << std::endl std::cout << std::endl
<< " logNormalizationConstant: " << -negLogConstant() << " logNormalizationConstant: " << -negLogConstant() << std::endl
<< std::endl
<< std::endl; << std::endl;
conditionals_.print( conditionals_.print(
"", [&](Key k) { return formatter(k); }, "", [&](Key k) { return formatter(k); },
@ -214,7 +213,7 @@ std::shared_ptr<HybridGaussianFactor> HybridGaussianConditional::likelihood(
[&](const GaussianConditional::shared_ptr &conditional) [&](const GaussianConditional::shared_ptr &conditional)
-> GaussianFactorValuePair { -> GaussianFactorValuePair {
const auto likelihood_m = conditional->likelihood(given); const auto likelihood_m = conditional->likelihood(given);
const double Cgm_Kgcm = conditional->negLogConstant() - logConstant_; const double Cgm_Kgcm = conditional->negLogConstant() - negLogConstant_;
if (Cgm_Kgcm == 0.0) { if (Cgm_Kgcm == 0.0) {
return {likelihood_m, 0.0}; return {likelihood_m, 0.0};
} else { } else {

View File

@ -66,7 +66,7 @@ class GTSAM_EXPORT HybridGaussianConditional
Conditionals conditionals_; ///< a decision tree of Gaussian conditionals. Conditionals conditionals_; ///< a decision tree of Gaussian conditionals.
///< Negative-log of the normalization constant (log(\sqrt(|2πΣ|))). ///< Negative-log of the normalization constant (log(\sqrt(|2πΣ|))).
///< Take advantage of the neg-log space so everything is a minimization ///< Take advantage of the neg-log space so everything is a minimization
double logConstant_; double negLogConstant_;
/** /**
* @brief Convert a HybridGaussianConditional of conditionals into * @brief Convert a HybridGaussianConditional of conditionals into
@ -158,7 +158,7 @@ class GTSAM_EXPORT HybridGaussianConditional
* *
* @return double * @return double
*/ */
inline double negLogConstant() const override { return logConstant_; } inline double negLogConstant() const override { return negLogConstant_; }
/** /**
* Create a likelihood factor for a hybrid Gaussian conditional, * Create a likelihood factor for a hybrid Gaussian conditional,

View File

@ -233,13 +233,13 @@ continuousElimination(const HybridGaussianFactorGraph &factors,
/* ************************************************************************ */ /* ************************************************************************ */
/** /**
* @brief Exponentiate (not necessarily normalized) log-values, normalize, and * @brief Exponentiate (not necessarily normalized) negative log-values,
* then return as AlgebraicDecisionTree<Key>. * normalize, and then return as AlgebraicDecisionTree<Key>.
* *
* @param logValues DecisionTree of (unnormalized) log values. * @param logValues DecisionTree of (unnormalized) log values.
* @return AlgebraicDecisionTree<Key> * @return AlgebraicDecisionTree<Key>
*/ */
static AlgebraicDecisionTree<Key> probabilitiesFromLogValues( static AlgebraicDecisionTree<Key> probabilitiesFromNegativeLogValues(
const AlgebraicDecisionTree<Key> &logValues) { const AlgebraicDecisionTree<Key> &logValues) {
// Perform normalization // Perform normalization
double min_log = logValues.min(); double min_log = logValues.min();
@ -271,7 +271,7 @@ discreteElimination(const HybridGaussianFactorGraph &factors,
DecisionTree<Key, double>(gmf->factors(), logProbability); DecisionTree<Key, double>(gmf->factors(), logProbability);
AlgebraicDecisionTree<Key> probabilities = AlgebraicDecisionTree<Key> probabilities =
probabilitiesFromLogValues(logProbabilities); probabilitiesFromNegativeLogValues(logProbabilities);
dfg.emplace_shared<DecisionTreeFactor>(gmf->discreteKeys(), dfg.emplace_shared<DecisionTreeFactor>(gmf->discreteKeys(),
probabilities); probabilities);
@ -337,7 +337,7 @@ static std::shared_ptr<Factor> createDiscreteFactor(
AlgebraicDecisionTree<Key> negLogProbabilities( AlgebraicDecisionTree<Key> negLogProbabilities(
DecisionTree<Key, double>(eliminationResults, negLogProbability)); DecisionTree<Key, double>(eliminationResults, negLogProbability));
AlgebraicDecisionTree<Key> probabilities = AlgebraicDecisionTree<Key> probabilities =
probabilitiesFromLogValues(negLogProbabilities); probabilitiesFromNegativeLogValues(negLogProbabilities);
return std::make_shared<DecisionTreeFactor>(discreteSeparator, probabilities); return std::make_shared<DecisionTreeFactor>(discreteSeparator, probabilities);
} }