start to fix iterative solvers

release/4.3a0
Yong-Dian Jian 2012-02-01 16:35:18 +00:00
parent c901ceee27
commit 00023f0c67
3 changed files with 30 additions and 5 deletions

View File

@ -18,6 +18,8 @@
#pragma once
#include <gtsam/inference/VariableIndex.h>
#include <gtsam/linear/VectorValues.h>
#include <gtsam/linear/IterativeOptimizationParameters.h>
namespace gtsam {
@ -25,10 +27,29 @@ namespace gtsam {
class IterativeSolver {
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():
parameters_(new IterativeOptimizationParameters()) {}
@ -41,6 +62,10 @@ public:
IterativeSolver(const sharedParameters parameters):
parameters_(parameters) {}
virtual ~IterativeSolver() {}
virtual VectorValues::shared_ptr optimize () = 0;
};
}

View File

@ -48,7 +48,7 @@ void SubgraphSolver<GRAPH,LINEAR,VALUES>::replaceFactors(const typename LINEAR::
}
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
VectorValues zeros = pc_->zero();

View File

@ -85,7 +85,7 @@ public:
IterativeSolver(parameters), ordering_(ordering), pairs_(pairs), pc_(pc), useQR_(useQR) {}
void replaceFactors(const typename LINEAR::shared_ptr &graph);
VectorValues::shared_ptr optimize() const ;
VectorValues::shared_ptr optimize() ;
shared_ordering ordering() const { return ordering_; }
protected: