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