formatting and comments
							parent
							
								
									977ac0d762
								
							
						
					
					
						commit
						4c74ec113a
					
				|  | @ -25,12 +25,12 @@ | |||
| #include <gtsam/hybrid/HybridValues.h> | ||||
| #include <gtsam/inference/Conditional-inst.h> | ||||
| #include <gtsam/linear/GaussianBayesNet.h> | ||||
| #include <gtsam/linear/GaussianConditional.h> | ||||
| #include <gtsam/linear/GaussianFactorGraph.h> | ||||
| #include <gtsam/linear/JacobianFactor.h> | ||||
| 
 | ||||
| #include <cstddef> | ||||
| #include <memory> | ||||
| #include "gtsam/linear/GaussianConditional.h" | ||||
| 
 | ||||
| namespace gtsam { | ||||
| /* *******************************************************************************/ | ||||
|  | @ -162,7 +162,7 @@ HybridGaussianConditional::HybridGaussianConditional( | |||
| /* *******************************************************************************/ | ||||
| const HybridGaussianConditional::Conditionals | ||||
| HybridGaussianConditional::conditionals() const { | ||||
|   return Conditionals(factors(), [](const auto& pair) { | ||||
|   return Conditionals(factors(), [](auto &&pair) { | ||||
|     return std::dynamic_pointer_cast<GaussianConditional>(pair.first); | ||||
|   }); | ||||
| } | ||||
|  | @ -170,7 +170,7 @@ HybridGaussianConditional::conditionals() const { | |||
| /* *******************************************************************************/ | ||||
| size_t HybridGaussianConditional::nrComponents() const { | ||||
|   size_t total = 0; | ||||
|   factors().visit([&total](const auto& node) { | ||||
|   factors().visit([&total](auto &&node) { | ||||
|     if (node.first) total += 1; | ||||
|   }); | ||||
|   return total; | ||||
|  | @ -178,8 +178,8 @@ size_t HybridGaussianConditional::nrComponents() const { | |||
| 
 | ||||
| /* *******************************************************************************/ | ||||
| GaussianConditional::shared_ptr HybridGaussianConditional::choose( | ||||
|     const DiscreteValues& discreteValues) const { | ||||
|   auto& [ptr, _] = factors()(discreteValues); | ||||
|     const DiscreteValues &discreteValues) const { | ||||
|   auto &[ptr, _] = factors()(discreteValues); | ||||
|   if (!ptr) return nullptr; | ||||
|   auto conditional = std::dynamic_pointer_cast<GaussianConditional>(ptr); | ||||
|   if (conditional) | ||||
|  | @ -196,9 +196,10 @@ bool HybridGaussianConditional::equals(const HybridFactor &lf, | |||
|   if (e == nullptr) return false; | ||||
| 
 | ||||
|   // Factors existence and scalar values are checked in BaseFactor::equals.
 | ||||
|   // Here we check additionally that the factors *are* conditionals and are equal.
 | ||||
|   auto compareFunc = [tol](const GaussianFactorValuePair& pair1, | ||||
|                            const GaussianFactorValuePair& pair2) { | ||||
|   // Here we check additionally that the factors *are* conditionals
 | ||||
|   // and are equal.
 | ||||
|   auto compareFunc = [tol](const GaussianFactorValuePair &pair1, | ||||
|                            const GaussianFactorValuePair &pair2) { | ||||
|     auto c1 = std::dynamic_pointer_cast<GaussianConditional>(pair1.first), | ||||
|          c2 = std::dynamic_pointer_cast<GaussianConditional>(pair2.first); | ||||
|     return (!c1 && !c2) || (c1 && c2 && c1->equals(*c2, tol)); | ||||
|  | @ -222,7 +223,8 @@ void HybridGaussianConditional::print(const std::string &s, | |||
|       "", [&](Key k) { return formatter(k); }, | ||||
|       [&](const GaussianFactorValuePair &pair) -> std::string { | ||||
|         RedirectCout rd; | ||||
|         if (auto gf = std::dynamic_pointer_cast<GaussianConditional>(pair.first)) { | ||||
|         if (auto gf = | ||||
|                 std::dynamic_pointer_cast<GaussianConditional>(pair.first)) { | ||||
|           gf->print("", formatter); | ||||
|           return rd.str(); | ||||
|         } else { | ||||
|  | @ -323,7 +325,7 @@ HybridGaussianConditional::shared_ptr HybridGaussianConditional::prune( | |||
| 
 | ||||
| /* *******************************************************************************/ | ||||
| double HybridGaussianConditional::logProbability( | ||||
|     const HybridValues& values) const { | ||||
|     const HybridValues &values) const { | ||||
|   auto [factor, _] = factors()(values.discrete()); | ||||
|   if (auto conditional = std::dynamic_pointer_cast<GaussianConditional>(factor)) | ||||
|     return conditional->logProbability(values.continuous()); | ||||
|  | @ -333,7 +335,7 @@ double HybridGaussianConditional::logProbability( | |||
| } | ||||
| 
 | ||||
| /* *******************************************************************************/ | ||||
| double HybridGaussianConditional::evaluate(const HybridValues& values) const { | ||||
| double HybridGaussianConditional::evaluate(const HybridValues &values) const { | ||||
|   auto [factor, _] = factors()(values.discrete()); | ||||
|   if (auto conditional = std::dynamic_pointer_cast<GaussianConditional>(factor)) | ||||
|     return conditional->evaluate(values.continuous()); | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ | |||
| 
 | ||||
| #include <gtsam/base/utilities.h> | ||||
| #include <gtsam/discrete/Assignment.h> | ||||
| #include <gtsam/discrete/DecisionTreeFactor.h> | ||||
| #include <gtsam/discrete/DiscreteEliminationTree.h> | ||||
| #include <gtsam/discrete/DiscreteFactorGraph.h> | ||||
| #include <gtsam/discrete/DiscreteJunctionTree.h> | ||||
|  | @ -48,8 +49,6 @@ | |||
| #include <utility> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "gtsam/discrete/DecisionTreeFactor.h" | ||||
| 
 | ||||
| namespace gtsam { | ||||
| 
 | ||||
| /// Specialize EliminateableFactorGraph for HybridGaussianFactorGraph:
 | ||||
|  | @ -367,6 +366,7 @@ HybridGaussianFactorGraph::eliminate(const Ordering &keys) const { | |||
|   // any difference in noise models used.
 | ||||
|   HybridGaussianProductFactor productFactor = collectProductFactor(); | ||||
| 
 | ||||
|   // Check if a factor is null
 | ||||
|   auto isNull = [](const GaussianFactor::shared_ptr &ptr) { return !ptr; }; | ||||
| 
 | ||||
|   // This is the elimination method on the leaf nodes
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue