Fixed error calculation

release/4.3a0
Frank Dellaert 2022-12-30 13:59:20 -05:00
parent 395ffad979
commit 3a8220c264
2 changed files with 6 additions and 3 deletions

View File

@ -125,7 +125,8 @@ AlgebraicDecisionTree<Key> GaussianMixtureFactor::error(
/* *******************************************************************************/ /* *******************************************************************************/
double GaussianMixtureFactor::error(const HybridValues &values) const { double GaussianMixtureFactor::error(const HybridValues &values) const {
const FactorAndConstant factor_z = factors_(values.discrete()); const FactorAndConstant factor_z = factors_(values.discrete());
return factor_z.factor->error(values.continuous()) + factor_z.constant; return factor_z.error(values.continuous());
} }
/* *******************************************************************************/
} // namespace gtsam } // namespace gtsam

View File

@ -58,9 +58,11 @@ class GTSAM_EXPORT GaussianMixtureFactor : public HybridFactor {
sharedFactor factor; sharedFactor factor;
double constant; double constant;
// Return error with constant added. // Return error with constant correction.
double error(const VectorValues &values) const { double error(const VectorValues &values) const {
return factor->error(values) + constant; // Note minus sign: constant is log of normalization constant for probabilities.
// Errors is the negative log-likelihood, hence we subtract the constant here.
return factor->error(values) - constant;
} }
// Check pointer equality. // Check pointer equality.