revised interfaces

release/4.3a0
Yong-Dian Jian 2010-10-26 21:43:57 +00:00
parent 012e6b86cc
commit 71a5f26d40
4 changed files with 39 additions and 13 deletions

View File

@ -20,19 +20,27 @@ namespace gtsam {
class ConjugateGradientSolver : public IterativeSolver { class ConjugateGradientSolver : public IterativeSolver {
protected: protected:
const LINEAR *ptr_;
typedef boost::shared_ptr<GRAPH> sharedGRAPH ;
typedef boost::shared_ptr<LINEAR> sharedLINEAR ;
typedef boost::shared_ptr<VALUES> sharedVALUES ;
typedef boost::shared_ptr<VectorValues> sharedVectorValues ; typedef boost::shared_ptr<VectorValues> sharedVectorValues ;
const LINEAR *ptr_;
sharedVectorValues zeros_; sharedVectorValues zeros_;
public: public:
typedef boost::shared_ptr<const ConjugateGradientSolver> shared_ptr ; typedef boost::shared_ptr<const ConjugateGradientSolver> shared_ptr ;
ConjugateGradientSolver(const GRAPH &graph, const VALUES &initial, const Ordering &ordering, const sharedParameters parameters): // ConjugateGradientSolver(const GRAPH &graph, const VALUES &initial, const Ordering &ordering, const sharedParameters parameters):
// IterativeSolver(parameters), ptr_(0), zeros_(boost::make_shared<VectorValues>(initial.zero(ordering))) {}
ConjugateGradientSolver(const GRAPH &graph, const VALUES &initial, const Ordering &ordering, const Parameters &parameters = Parameters()):
IterativeSolver(parameters), ptr_(0), zeros_(boost::make_shared<VectorValues>(initial.zero(ordering))) {} IterativeSolver(parameters), ptr_(0), zeros_(boost::make_shared<VectorValues>(initial.zero(ordering))) {}
ConjugateGradientSolver(const LINEAR &GFG) { ConjugateGradientSolver(const LINEAR &GFG) {
std::cout << "[ConjugateGradientSolver] Unexpected usage.." << std::endl;
throw std::runtime_error("SubgraphSolver: gaussian factor graph initialization not supported"); throw std::runtime_error("SubgraphSolver: gaussian factor graph initialization not supported");
} }

View File

@ -11,15 +11,36 @@ namespace gtsam {
// a container for all related parameters // a container for all related parameters
struct IterativeOptimizationParameters { struct IterativeOptimizationParameters {
public:
typedef enum { typedef enum {
SILENT, SILENT,
ERROR, ERROR,
} verbosityLevel; } verbosityLevel;
protected:
int maxIterations_;
int reset_ ; // number of iterations before reset, for cg and gmres
double epsilon_; // relative error
double epsilon_abs_; // absolute error
verbosityLevel verbosity_;
public:
IterativeOptimizationParameters(): IterativeOptimizationParameters():
maxIterations_(100), maxIterations_(100),
reset_(101), reset_(101),
epsilon_(1e-5),epsilon_abs_(1e-5),verbosity_(SILENT) {} epsilon_(1e-5),
epsilon_abs_(1e-5),
verbosity_(SILENT) {}
IterativeOptimizationParameters(const IterativeOptimizationParameters &parameters):
maxIterations_(parameters.maxIterations_),
reset_(parameters.reset_),
epsilon_(parameters.epsilon_),
epsilon_abs_(parameters.epsilon_abs_),
verbosity_(parameters.verbosity_) {}
IterativeOptimizationParameters IterativeOptimizationParameters
(int maxIterations, double epsilon, double epsilon_abs, verbosityLevel verbosity=SILENT, int reset=-1): (int maxIterations, double epsilon, double epsilon_abs, verbosityLevel verbosity=SILENT, int reset=-1):
@ -34,11 +55,5 @@ namespace gtsam {
double epsilon_abs() const { return epsilon_abs_ ; } double epsilon_abs() const { return epsilon_abs_ ; }
verbosityLevel verbosity() const { return verbosity_ ; } verbosityLevel verbosity() const { return verbosity_ ; }
protected:
int maxIterations_;
int reset_ ; // number of iterations before reset, for cg and gmres
double epsilon_; // relative error
double epsilon_abs_; // absolute error
verbosityLevel verbosity_;
}; };
} }

View File

@ -30,6 +30,9 @@ public:
IterativeSolver(const IterativeSolver &solver): IterativeSolver(const IterativeSolver &solver):
parameters_(solver.parameters_) {} parameters_(solver.parameters_) {}
IterativeSolver(const IterativeOptimizationParameters &parameters):
parameters_(new IterativeOptimizationParameters(parameters)) {}
IterativeSolver(const sharedParameters parameters): IterativeSolver(const sharedParameters parameters):
parameters_(parameters) {} parameters_(parameters) {}
}; };

View File

@ -54,7 +54,11 @@ namespace gtsam {
public: public:
SubgraphSolver(const GRAPH& G, const VALUES& theta0, const Parameters &parameters = Parameters()):
IterativeSolver(parameters){ initialize(G,theta0); }
SubgraphSolver(const LINEAR &GFG) { SubgraphSolver(const LINEAR &GFG) {
std::cout << "[SubgraphSolver] Unexpected usage.." << std::endl;
throw std::runtime_error("SubgraphSolver: gaussian factor graph initialization not supported"); throw std::runtime_error("SubgraphSolver: gaussian factor graph initialization not supported");
} }
@ -67,10 +71,6 @@ namespace gtsam {
sharedParameters parameters = boost::make_shared<Parameters>()) : sharedParameters parameters = boost::make_shared<Parameters>()) :
IterativeSolver(parameters), ordering_(ordering), pairs_(pairs), pc_(pc) {} IterativeSolver(parameters), ordering_(ordering), pairs_(pairs), pc_(pc) {}
SubgraphSolver(const GRAPH& G, const VALUES& theta0):IterativeSolver(){
initialize(G,theta0);
}
shared_ptr update(const LINEAR &graph) const ; shared_ptr update(const LINEAR &graph) const ;
VectorValues::shared_ptr optimize() const ; VectorValues::shared_ptr optimize() const ;
shared_ordering ordering() const { return ordering_; } shared_ordering ordering() const { return ordering_; }