File gnc_optimizer.h

namespace sym
template<typename BaseOptimizerType>
class GncOptimizer : public BaseOptimizerType
#include <gnc_optimizer.h>

Subclass of Optimizer for using Graduated Non-Convexity (GNC)

Assumes the convexity of the cost function is controlled by a hyperparameter mu. When mu == 0 the cost function should be convex and as mu goes to 1 the cost function should smoothly transition to a robust cost.

Public Types

using BaseOptimizer = BaseOptimizerType
using Scalar = typename BaseOptimizer::Scalar

Public Functions

template<typename ...OptimizerArgs>
inline GncOptimizer(const optimizer_params_t &optimizer_params, const optimizer_gnc_params_t &gnc_params, const Key &gnc_mu_key, OptimizerArgs&&... args)

Constructor that copies in factors and keys

virtual ~GncOptimizer() = default
inline void Optimize(Values<Scalar> &values, int num_iterations, bool populate_best_linearization, typename BaseOptimizer::Stats &stats) override

Private Functions

inline void OptimizeContinue(Values<Scalar> &values, const int num_iterations, const bool populate_best_linearization, typename BaseOptimizer::Stats &stats)

Private Members

optimizer_gnc_params_t gnc_params_
Key gnc_mu_key_