Main Content


Solver options for factor graph

Since R2022a


The factorGraphSolverOptions object contains solver options for optimizing a factor graph.




Options = factorGraphSolverOptions returns a default factor graph solver options object, Options.

Options = factorGraphSolverOptions(Name=Value) specifies properties using one or more name-value arguments. For example, factorGraphSolverOptions(MaxIterations=150) sets the MaxIterations property of the factorGraphSolverOptions object to 150.


expand all

Maximum number of solver iterations, specified as a positive integer.

Lower bound of change in the cost function, specified as a positive scalar. The cost function is:


All costs are greater than 0.

Lower bound of the norm of the gradient, specified as positive scalar. The norm function is:


Oplus is the manifold version of the plus operation and g(x) is the gradient at x.

Lower bound of step size of the linear solver, specified as a positive scalar. The relationship between the step size and the step tolerance is:


deltaX is the step size of the linear solver.

Command line verbosity flag, specified as 1, 2, or 3.

  • 0 — Do not print to command line

  • 1 — Print solver summary

  • 2 — Print per-iteration updates and solver summary

Trust region step computation algorithm, specified as 0 or 1.

  • 0 — Levenberg Marquardt

  • 1 — Dogleg


collapse all

Create and optimize a factor graph with custom solver options.

Create Factor Graph and Solver Settings

Create a factor graph and solver options with custom settings. Set the maximum number of iterations to 1000 and set the verbosity of the optimize output to 2.

G = factorGraph;
optns = factorGraphSolverOptions(MaxIterations=1000,VerbosityLevel=2)
optns = 
  factorGraphSolverOptions with properties:

              MaxIterations: 1000
          FunctionTolerance: 1.0000e-06
          GradientTolerance: 1.0000e-10
              StepTolerance: 1.0000e-08
             VerbosityLevel: 2
    TrustRegionStrategyType: 1

Add GPS Factor

Create a GPS factor with node identification number of 1 with NED ReferenceFrame and add it to the factor graph.

fgps = factorGPS(1,ReferenceFrame="NED");

Optimize Factor Graph

Optimize the factor graph with the custom settings. The results of the optimization are displayed with the level of detail depending on the VerbosityLevel.

iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  0.000000e+00    0.00e+00    0.00e+00   0.00e+00   0.00e+00  1.00e+04        0    2.45e-04    1.05e-02
Terminating: Gradient tolerance reached. Gradient max norm: 0.000000e+00 <= 1.000000e-10

Solver Summary (v 2.0.0-eigen-(3.3.4)-no_lapack-eigensparse-no_openmp-no_custom_blas)

                                     Original                  Reduced
Parameter blocks                            1                        1
Parameters                                  7                        7
Effective parameters                        6                        6
Residual blocks                             1                        1
Residuals                                   3                        3

Minimizer                        TRUST_REGION

Sparse linear algebra library    EIGEN_SPARSE
Trust region strategy                  DOGLEG (TRADITIONAL)

                                        Given                     Used
Threads                                     1                        1
Linear solver ordering              AUTOMATIC                        1

Initial                          0.000000e+00
Final                            0.000000e+00
Change                           0.000000e+00

Minimizer iterations                        1
Successful steps                            1
Unsuccessful steps                          0

Time (in seconds):
Preprocessor                         0.010235

  Residual only evaluation           0.000000 (0)
  Jacobian & residual evaluation     0.000182 (1)
  Linear solver                      0.000000 (0)
Minimizer                            0.005698

Postprocessor                        0.000008
Total                                0.015943

Termination:                      CONVERGENCE (Gradient tolerance reached. Gradient max norm: 0.000000e+00 <= 1.000000e-10)

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2022a