revised interfaces
parent
012e6b86cc
commit
71a5f26d40
|
|
@ -20,19 +20,27 @@ namespace gtsam {
|
|||
class ConjugateGradientSolver : public IterativeSolver {
|
||||
|
||||
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 ;
|
||||
|
||||
const LINEAR *ptr_;
|
||||
sharedVectorValues zeros_;
|
||||
|
||||
public:
|
||||
|
||||
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 ¶meters = Parameters()):
|
||||
IterativeSolver(parameters), ptr_(0), zeros_(boost::make_shared<VectorValues>(initial.zero(ordering))) {}
|
||||
|
||||
ConjugateGradientSolver(const LINEAR &GFG) {
|
||||
std::cout << "[ConjugateGradientSolver] Unexpected usage.." << std::endl;
|
||||
throw std::runtime_error("SubgraphSolver: gaussian factor graph initialization not supported");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,15 +11,36 @@ namespace gtsam {
|
|||
|
||||
// a container for all related parameters
|
||||
struct IterativeOptimizationParameters {
|
||||
|
||||
public:
|
||||
|
||||
typedef enum {
|
||||
SILENT,
|
||||
ERROR,
|
||||
} 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():
|
||||
maxIterations_(100),
|
||||
reset_(101),
|
||||
epsilon_(1e-5),epsilon_abs_(1e-5),verbosity_(SILENT) {}
|
||||
epsilon_(1e-5),
|
||||
epsilon_abs_(1e-5),
|
||||
verbosity_(SILENT) {}
|
||||
|
||||
IterativeOptimizationParameters(const IterativeOptimizationParameters ¶meters):
|
||||
maxIterations_(parameters.maxIterations_),
|
||||
reset_(parameters.reset_),
|
||||
epsilon_(parameters.epsilon_),
|
||||
epsilon_abs_(parameters.epsilon_abs_),
|
||||
verbosity_(parameters.verbosity_) {}
|
||||
|
||||
|
||||
IterativeOptimizationParameters
|
||||
(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_ ; }
|
||||
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_;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@ public:
|
|||
IterativeSolver(const IterativeSolver &solver):
|
||||
parameters_(solver.parameters_) {}
|
||||
|
||||
IterativeSolver(const IterativeOptimizationParameters ¶meters):
|
||||
parameters_(new IterativeOptimizationParameters(parameters)) {}
|
||||
|
||||
IterativeSolver(const sharedParameters parameters):
|
||||
parameters_(parameters) {}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -54,7 +54,11 @@ namespace gtsam {
|
|||
|
||||
public:
|
||||
|
||||
SubgraphSolver(const GRAPH& G, const VALUES& theta0, const Parameters ¶meters = Parameters()):
|
||||
IterativeSolver(parameters){ initialize(G,theta0); }
|
||||
|
||||
SubgraphSolver(const LINEAR &GFG) {
|
||||
std::cout << "[SubgraphSolver] Unexpected usage.." << std::endl;
|
||||
throw std::runtime_error("SubgraphSolver: gaussian factor graph initialization not supported");
|
||||
}
|
||||
|
||||
|
|
@ -67,10 +71,6 @@ namespace gtsam {
|
|||
sharedParameters parameters = boost::make_shared<Parameters>()) :
|
||||
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 ;
|
||||
VectorValues::shared_ptr optimize() const ;
|
||||
shared_ordering ordering() const { return ordering_; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue