ladies and gents... GNC!
parent
dab00907b9
commit
ef47741881
|
@ -48,7 +48,7 @@ public:
|
||||||
GM /*Geman McClure*/, TLS /*Truncated least squares*/
|
GM /*Geman McClure*/, TLS /*Truncated least squares*/
|
||||||
};
|
};
|
||||||
|
|
||||||
// using BaseOptimizer = GaussNewtonOptimizer; // BaseOptimizerParameters::OptimizerType;
|
using BaseOptimizer = GaussNewtonOptimizer; // BaseOptimizerParameters::OptimizerType;
|
||||||
|
|
||||||
GncParams(const BaseOptimizerParameters& baseOptimizerParams):
|
GncParams(const BaseOptimizerParameters& baseOptimizerParams):
|
||||||
baseOptimizerParams(baseOptimizerParams),
|
baseOptimizerParams(baseOptimizerParams),
|
||||||
|
@ -165,7 +165,7 @@ public:
|
||||||
// variable/values update
|
// variable/values update
|
||||||
NonlinearFactorGraph graph_iter = this->makeWeightedGraph(weights);
|
NonlinearFactorGraph graph_iter = this->makeWeightedGraph(weights);
|
||||||
GaussNewtonOptimizer baseOptimizer_iter(graph_iter, state_);
|
GaussNewtonOptimizer baseOptimizer_iter(graph_iter, state_);
|
||||||
result = baseOptimizer.optimize();
|
result = baseOptimizer_iter.optimize();
|
||||||
|
|
||||||
// stopping condition
|
// stopping condition
|
||||||
if( checkMuConvergence(mu) ) {
|
if( checkMuConvergence(mu) ) {
|
||||||
|
@ -492,7 +492,7 @@ TEST(GncOptimizer, optimize) {
|
||||||
|
|
||||||
// .. but graduated nonconvexity ensures both robustness and convergence in the face of nonconvexity
|
// .. but graduated nonconvexity ensures both robustness and convergence in the face of nonconvexity
|
||||||
GncParams<GaussNewtonParams> gncParams(gnParams);
|
GncParams<GaussNewtonParams> gncParams(gnParams);
|
||||||
gncParams.setVerbosityGNC(GncParams<GaussNewtonParams>::VerbosityGNC::VALUES);
|
// gncParams.setVerbosityGNC(GncParams<GaussNewtonParams>::VerbosityGNC::SUMMARY);
|
||||||
auto gnc = GncOptimizer<GncParams<GaussNewtonParams>>(fg, initial, gncParams);
|
auto gnc = GncOptimizer<GncParams<GaussNewtonParams>>(fg, initial, gncParams);
|
||||||
Values gnc_result = gnc.optimize();
|
Values gnc_result = gnc.optimize();
|
||||||
CHECK(assert_equal(Point2(0.0,0.0), gnc_result.at<Point2>(X(1)), 1e-3));
|
CHECK(assert_equal(Point2(0.0,0.0), gnc_result.at<Point2>(X(1)), 1e-3));
|
||||||
|
|
Loading…
Reference in New Issue