Struct sym::OptimizationStats#

template<typename MatrixType>
struct OptimizationStats

Debug stats for a full optimization run

Public Functions

inline optimization_stats_t GetLcmType() const
inline auto JacobianView(const optimization_iteration_t &iteration) const

Get a view of the Jacobian at a particular iteration

The lifetime of the result is tied to the lifetime of the OptimizationStats object

inline void Reset(const size_t num_iterations)

Reset the optimization stats

Does not cause reallocation, except for things in debug stats

Public Members

std::vector<optimization_iteration_t> iterations
int32_t best_index = {0}

Index into iterations of the best iteration (containing the optimal Values)

optimization_status_t status = {}

What was the result of the optimization?

int32_t failure_reason = {}

If status == FAILED, why? This should be cast to the Optimizer::FailureReason enum for the nonlinear solver you used.

optional<Linearization<MatrixType>> best_linearization = {}

The linearization at best_index (at optimized_values), filled out if populate_best_linearization = true

sparse_matrix_structure_t jacobian_sparsity = {}

The sparsity pattern of the problem jacobian

Only filled if Optimizer created with debug_stats = true and include_jacobians = true, otherwise default constructed.

If using a dense linearization, only the shape field will be filled.

Eigen::VectorXi linear_solver_ordering = {}

The permutation used by the linear solver

Only filled if using an Optimizer created with debug_stats = true and a linear solver that exposes Permutation() (such as the default SparseCholeskySolver). Otherwise, will be default constructed.

sparse_matrix_structure_t cholesky_factor_sparsity = {}

The sparsity pattern of the cholesky factor L

Only filled if using an Optimizer created with debug_stats = true and a linear solver that exposes L() (such as the default SparseCholeskySolver). Otherwise, will be default constructed.