start to fix iterative solvers
							parent
							
								
									c901ceee27
								
							
						
					
					
						commit
						00023f0c67
					
				| 
						 | 
					@ -18,6 +18,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <gtsam/inference/VariableIndex.h>
 | 
				
			||||||
 | 
					#include <gtsam/linear/VectorValues.h>
 | 
				
			||||||
#include <gtsam/linear/IterativeOptimizationParameters.h>
 | 
					#include <gtsam/linear/IterativeOptimizationParameters.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace gtsam {
 | 
					namespace gtsam {
 | 
				
			||||||
| 
						 | 
					@ -25,10 +27,29 @@ namespace gtsam {
 | 
				
			||||||
class IterativeSolver {
 | 
					class IterativeSolver {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	typedef IterativeOptimizationParameters Parameters;
 | 
					 | 
				
			||||||
	typedef boost::shared_ptr<Parameters> sharedParameters;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sharedParameters parameters_ ;
 | 
						typedef IterativeOptimizationParameters Parameters;
 | 
				
			||||||
 | 
						typedef Parameters::shared_ptr sharedParameters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GaussianFactorGraph::shared_ptr graph_;
 | 
				
			||||||
 | 
						VariableIndex::shared_ptr variableIndex_;
 | 
				
			||||||
 | 
						Parameters::shared_ptr parameters_ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IterativeSolver(
 | 
				
			||||||
 | 
					    const GaussianFactorGraph::shared_ptr& factorGraph,
 | 
				
			||||||
 | 
					    const VariableIndex::shared_ptr& variableIndex):
 | 
				
			||||||
 | 
					    graph_(factorGraph), variableIndex_(variableIndex),
 | 
				
			||||||
 | 
					    parameters_(new Parameters()) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IterativeSolver(
 | 
				
			||||||
 | 
					    const GaussianFactorGraph::shared_ptr& factorGraph,
 | 
				
			||||||
 | 
					    const VariableIndex::shared_ptr& variableIndex,
 | 
				
			||||||
 | 
					    const Parameters::shared_ptr& parameters):
 | 
				
			||||||
 | 
					    graph_(factorGraph), variableIndex_(variableIndex), parameters_(parameters) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	IterativeSolver():
 | 
						IterativeSolver():
 | 
				
			||||||
		parameters_(new IterativeOptimizationParameters()) {}
 | 
							parameters_(new IterativeOptimizationParameters()) {}
 | 
				
			||||||
| 
						 | 
					@ -41,6 +62,10 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	IterativeSolver(const sharedParameters parameters):
 | 
						IterativeSolver(const sharedParameters parameters):
 | 
				
			||||||
		parameters_(parameters) {}
 | 
							parameters_(parameters) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual ~IterativeSolver() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual VectorValues::shared_ptr optimize () = 0;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,7 +48,7 @@ void SubgraphSolver<GRAPH,LINEAR,VALUES>::replaceFactors(const typename LINEAR::
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template<class GRAPH, class LINEAR, class VALUES>
 | 
					template<class GRAPH, class LINEAR, class VALUES>
 | 
				
			||||||
VectorValues::shared_ptr SubgraphSolver<GRAPH,LINEAR,VALUES>::optimize() const {
 | 
					VectorValues::shared_ptr SubgraphSolver<GRAPH,LINEAR,VALUES>::optimize() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// preconditioned conjugate gradient
 | 
						// preconditioned conjugate gradient
 | 
				
			||||||
	VectorValues zeros = pc_->zero();
 | 
						VectorValues zeros = pc_->zero();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -85,7 +85,7 @@ public:
 | 
				
			||||||
				IterativeSolver(parameters), ordering_(ordering), pairs_(pairs), pc_(pc), useQR_(useQR) {}
 | 
									IterativeSolver(parameters), ordering_(ordering), pairs_(pairs), pc_(pc), useQR_(useQR) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void replaceFactors(const typename LINEAR::shared_ptr &graph);
 | 
						void replaceFactors(const typename LINEAR::shared_ptr &graph);
 | 
				
			||||||
	VectorValues::shared_ptr optimize() const ;
 | 
						VectorValues::shared_ptr optimize() ;
 | 
				
			||||||
	shared_ordering ordering() const { return ordering_; }
 | 
						shared_ordering ordering() const { return ordering_; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue