make PCGSolverParameters a public struct

release/4.3a0
Varun Agrawal 2024-10-15 23:43:41 -04:00
parent df1c008955
commit 49a3b2e8a2
3 changed files with 13 additions and 32 deletions

View File

@ -34,17 +34,13 @@ namespace gtsam {
void PCGSolverParameters::print(ostream &os) const { void PCGSolverParameters::print(ostream &os) const {
Base::print(os); Base::print(os);
os << "PCGSolverParameters:" << endl; os << "PCGSolverParameters:" << endl;
preconditioner_->print(os); preconditioner->print(os);
} }
/*****************************************************************************/ /*****************************************************************************/
PCGSolver::PCGSolver(const PCGSolverParameters &p) { PCGSolver::PCGSolver(const PCGSolverParameters &p) {
parameters_ = p; parameters_ = p;
preconditioner_ = createPreconditioner(p.preconditioner()); preconditioner_ = createPreconditioner(p.preconditioner);
}
void PCGSolverParameters::setPreconditionerParams(const std::shared_ptr<PreconditionerParameters> preconditioner) {
preconditioner_ = preconditioner;
} }
void PCGSolverParameters::print(const std::string &s) const { void PCGSolverParameters::print(const std::string &s) const {

View File

@ -33,30 +33,19 @@ struct PreconditionerParameters;
/** /**
* Parameters for Preconditioned Conjugate Gradient solver. * Parameters for Preconditioned Conjugate Gradient solver.
*/ */
struct GTSAM_EXPORT PCGSolverParameters: public ConjugateGradientParameters { struct GTSAM_EXPORT PCGSolverParameters : public ConjugateGradientParameters {
public:
typedef ConjugateGradientParameters Base; typedef ConjugateGradientParameters Base;
typedef std::shared_ptr<PCGSolverParameters> shared_ptr; typedef std::shared_ptr<PCGSolverParameters> shared_ptr;
protected: std::shared_ptr<PreconditionerParameters> preconditioner;
std::shared_ptr<PreconditionerParameters> preconditioner_;
public:
PCGSolverParameters() {} PCGSolverParameters() {}
PCGSolverParameters( PCGSolverParameters(
const std::shared_ptr<PreconditionerParameters> &preconditioner) const std::shared_ptr<PreconditionerParameters> &preconditioner)
: preconditioner_(preconditioner) {} : preconditioner(preconditioner) {}
void print(std::ostream &os) const override; void print(std::ostream &os) const override;
const std::shared_ptr<PreconditionerParameters> preconditioner() const {
return preconditioner_;
}
void setPreconditionerParams(
const std::shared_ptr<PreconditionerParameters> preconditioner);
void print(const std::string &s) const; void print(const std::string &s) const;
}; };

View File

@ -710,17 +710,11 @@ virtual class IterativeOptimizationParameters {
#include <gtsam/linear/ConjugateGradientSolver.h> #include <gtsam/linear/ConjugateGradientSolver.h>
virtual class ConjugateGradientParameters : gtsam::IterativeOptimizationParameters { virtual class ConjugateGradientParameters : gtsam::IterativeOptimizationParameters {
ConjugateGradientParameters(); ConjugateGradientParameters();
int getMinIterations() const ; int minIterations;
int getMaxIterations() const ; int maxIterations;
int getReset() const; int reset;
double getEpsilon_rel() const; double epsilon_rel;
double getEpsilon_abs() const; double epsilon_abs;
void setMinIterations(int value);
void setMaxIterations(int value);
void setReset(int value);
void setEpsilon_rel(double value);
void setEpsilon_abs(double value);
}; };
#include <gtsam/linear/Preconditioner.h> #include <gtsam/linear/Preconditioner.h>
@ -739,8 +733,10 @@ virtual class BlockJacobiPreconditionerParameters : gtsam::PreconditionerParamet
#include <gtsam/linear/PCGSolver.h> #include <gtsam/linear/PCGSolver.h>
virtual class PCGSolverParameters : gtsam::ConjugateGradientParameters { virtual class PCGSolverParameters : gtsam::ConjugateGradientParameters {
PCGSolverParameters(); PCGSolverParameters();
PCGSolverParameters(gtsam::PreconditionerParameters* preconditioner);
void print(string s = ""); void print(string s = "");
void setPreconditionerParams(gtsam::PreconditionerParameters* preconditioner);
gtsam::PreconditionerParameters* preconditioner;
}; };
#include <gtsam/linear/SubgraphSolver.h> #include <gtsam/linear/SubgraphSolver.h>