removed typename because MacOS gcc 4.2 complained
							parent
							
								
									71a7ddb354
								
							
						
					
					
						commit
						872b145b16
					
				|  | @ -15,7 +15,7 @@ using namespace gtsam; | ||||||
| namespace gtsam { | namespace gtsam { | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
| void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& clique, double threshold, | void optimize2(const BayesTree<GaussianConditional>::sharedClique& clique, double threshold, | ||||||
| 		vector<bool>& changed, const vector<bool>& replaced, Permuted<VectorValues>& delta, int& count) { | 		vector<bool>& changed, const vector<bool>& replaced, Permuted<VectorValues>& delta, int& count) { | ||||||
| 	// if none of the variables in this clique (frontal and separator!) changed
 | 	// if none of the variables in this clique (frontal and separator!) changed
 | ||||||
| 	// significantly, then by the running intersection property, none of the
 | 	// significantly, then by the running intersection property, none of the
 | ||||||
|  | @ -85,7 +85,7 @@ void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& cliq | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Recurse to children
 |     // Recurse to children
 | ||||||
|     BOOST_FOREACH(const typename BayesTree<GaussianConditional>::sharedClique& child, clique->children_) { |     BOOST_FOREACH(const BayesTree<GaussianConditional>::sharedClique& child, clique->children_) { | ||||||
|       optimize2(child, threshold, changed, replaced, delta, count); |       optimize2(child, threshold, changed, replaced, delta, count); | ||||||
|     } |     } | ||||||
| 	} | 	} | ||||||
|  | @ -93,14 +93,14 @@ void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& cliq | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
| // fast full version without threshold
 | // fast full version without threshold
 | ||||||
| void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& clique, VectorValues& delta) { | void optimize2(const BayesTree<GaussianConditional>::sharedClique& clique, VectorValues& delta) { | ||||||
| 
 | 
 | ||||||
| 	// parents are assumed to already be solved and available in result
 | 	// parents are assumed to already be solved and available in result
 | ||||||
|   (*clique)->rhs(delta); |   (*clique)->rhs(delta); | ||||||
|   (*clique)->solveInPlace(delta); |   (*clique)->solveInPlace(delta); | ||||||
| 
 | 
 | ||||||
|   // Solve chilren recursively
 |   // Solve chilren recursively
 | ||||||
|   BOOST_FOREACH(const typename BayesTree<GaussianConditional>::sharedClique& child, clique->children_) { |   BOOST_FOREACH(const BayesTree<GaussianConditional>::sharedClique& child, clique->children_) { | ||||||
| 		optimize2(child, delta); | 		optimize2(child, delta); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -115,7 +115,7 @@ void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& cliq | ||||||
| //}
 | //}
 | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
| int optimize2(const typename BayesTree<GaussianConditional>::sharedClique& root, double threshold, const vector<bool>& keys, Permuted<VectorValues>& delta) { | int optimize2(const BayesTree<GaussianConditional>::sharedClique& root, double threshold, const vector<bool>& keys, Permuted<VectorValues>& delta) { | ||||||
| 	vector<bool> changed(keys.size(), false); | 	vector<bool> changed(keys.size(), false); | ||||||
| 	int count = 0; | 	int count = 0; | ||||||
| 	// starting from the root, call optimize on each conditional
 | 	// starting from the root, call optimize on each conditional
 | ||||||
|  | @ -124,18 +124,18 @@ int optimize2(const typename BayesTree<GaussianConditional>::sharedClique& root, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
| void nnz_internal(const typename BayesTree<GaussianConditional>::sharedClique& clique, int& result) { | void nnz_internal(const BayesTree<GaussianConditional>::sharedClique& clique, int& result) { | ||||||
|   int dimR = (*clique)->dim(); |   int dimR = (*clique)->dim(); | ||||||
|   int dimSep = (*clique)->get_S().cols() - dimR; |   int dimSep = (*clique)->get_S().cols() - dimR; | ||||||
|   result += ((dimR+1)*dimR)/2 + dimSep*dimR; |   result += ((dimR+1)*dimR)/2 + dimSep*dimR; | ||||||
| 	// traverse the children
 | 	// traverse the children
 | ||||||
| 	BOOST_FOREACH(const typename BayesTree<GaussianConditional>::sharedClique& child, clique->children_) { | 	BOOST_FOREACH(const BayesTree<GaussianConditional>::sharedClique& child, clique->children_) { | ||||||
| 		nnz_internal(child, result); | 		nnz_internal(child, result); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
| int calculate_nnz(const typename BayesTree<GaussianConditional>::sharedClique& clique) { | int calculate_nnz(const BayesTree<GaussianConditional>::sharedClique& clique) { | ||||||
| 	int result = 0; | 	int result = 0; | ||||||
| 	// starting from the root, add up entries of frontal and conditional matrices of each conditional
 | 	// starting from the root, add up entries of frontal and conditional matrices of each conditional
 | ||||||
| 	nnz_internal(clique, result); | 	nnz_internal(clique, result); | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ template <class VALUES> | ||||||
| class GaussianISAM2 : public ISAM2<GaussianConditional, VALUES> {}; | class GaussianISAM2 : public ISAM2<GaussianConditional, VALUES> {}; | ||||||
| 
 | 
 | ||||||
| // optimize the BayesTree, starting from the root
 | // optimize the BayesTree, starting from the root
 | ||||||
| void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& root, VectorValues& delta); | void optimize2(const BayesTree<GaussianConditional>::sharedClique& root, VectorValues& delta); | ||||||
| 
 | 
 | ||||||
| // optimize the BayesTree, starting from the root; "replaced" needs to contain
 | // optimize the BayesTree, starting from the root; "replaced" needs to contain
 | ||||||
| // all variables that are contained in the top of the Bayes tree that has been
 | // all variables that are contained in the top of the Bayes tree that has been
 | ||||||
|  | @ -40,10 +40,10 @@ void optimize2(const typename BayesTree<GaussianConditional>::sharedClique& root | ||||||
| // and recursive backsubstitution might eventually stop if none of the changed
 | // and recursive backsubstitution might eventually stop if none of the changed
 | ||||||
| // variables are contained in the subtree.
 | // variables are contained in the subtree.
 | ||||||
| // returns the number of variables that were solved for
 | // returns the number of variables that were solved for
 | ||||||
| int optimize2(const typename BayesTree<GaussianConditional>::sharedClique& root, | int optimize2(const BayesTree<GaussianConditional>::sharedClique& root, | ||||||
|     double threshold, const std::vector<bool>& replaced, Permuted<VectorValues>& delta); |     double threshold, const std::vector<bool>& replaced, Permuted<VectorValues>& delta); | ||||||
| 
 | 
 | ||||||
| // calculate the number of non-zero entries for the tree starting at clique (use root for complete matrix)
 | // calculate the number of non-zero entries for the tree starting at clique (use root for complete matrix)
 | ||||||
| int calculate_nnz(const typename BayesTree<GaussianConditional>::sharedClique& clique); | int calculate_nnz(const BayesTree<GaussianConditional>::sharedClique& clique); | ||||||
| 
 | 
 | ||||||
| }/// namespace gtsam
 | }/// namespace gtsam
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue