negLogConstant methods for HybridBayesNet
							parent
							
								
									9be3f41ca2
								
							
						
					
					
						commit
						e52970aa92
					
				|  | @ -197,6 +197,35 @@ AlgebraicDecisionTree<Key> HybridBayesNet::errorTree( | |||
|   return result; | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| double HybridBayesNet::negLogConstant() const { | ||||
|   double negLogNormConst = 0.0; | ||||
|   // Iterate over each conditional.
 | ||||
|   for (auto &&conditional : *this) { | ||||
|     negLogNormConst += conditional->negLogConstant(); | ||||
|   } | ||||
|   return negLogNormConst; | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| double HybridBayesNet::negLogConstant(const DiscreteValues &discrete) const { | ||||
|   double negLogNormConst = 0.0; | ||||
|   // Iterate over each conditional.
 | ||||
|   for (auto &&conditional : *this) { | ||||
|     if (auto gm = conditional->asHybrid()) { | ||||
|       negLogNormConst += gm->choose(discrete)->negLogConstant(); | ||||
|     } else if (auto gc = conditional->asGaussian()) { | ||||
|       negLogNormConst += gc->negLogConstant(); | ||||
|     } else if (auto dc = conditional->asDiscrete()) { | ||||
|       negLogNormConst += dc->choose(discrete)->negLogConstant(); | ||||
|     } else { | ||||
|       throw std::runtime_error( | ||||
|           "Unknown conditional type when computing negLogConstant"); | ||||
|     } | ||||
|   } | ||||
|   return negLogNormConst; | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| AlgebraicDecisionTree<Key> HybridBayesNet::discretePosterior( | ||||
|     const VectorValues &continuousValues) const { | ||||
|  |  | |||
|  | @ -237,6 +237,23 @@ class GTSAM_EXPORT HybridBayesNet : public BayesNet<HybridConditional> { | |||
| 
 | ||||
|   using BayesNet::logProbability;  // expose HybridValues version
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * @brief Get the negative log of the normalization constant corresponding | ||||
|    * to the joint density represented by this Bayes net. | ||||
|    * | ||||
|    * @return double | ||||
|    */ | ||||
|   double negLogConstant() const; | ||||
| 
 | ||||
|   /**
 | ||||
|    * @brief Get the negative log of the normalization constant | ||||
|    * corresponding to the joint Gaussian density represented by | ||||
|    * this Bayes net indexed by `discrete`. | ||||
|    * | ||||
|    * @return double | ||||
|    */ | ||||
|   double negLogConstant(const DiscreteValues &discrete) const; | ||||
| 
 | ||||
|   /**
 | ||||
|    * @brief Compute normalized posterior P(M|X=x) and return as a tree. | ||||
|    * | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue