# factorGraphSolverOptions

Solver options for factor graph

Since R2022a

## Description

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

## Creation

### Syntax

``Options = factorGraphSolverOptions``
``Options = factorGraphSolverOptions(Name=Value)``

### Description

example

````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`.```

## Properties

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:

$|newCost-oldCost|

All costs are greater than 0.

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

$max_norm\left\{x-\left[x*Oplus-g\left(x\right)\right]\right\}<=GradientTolerance$

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|<=\left(|x|+StepTolerance\right)*StepTolerance$

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

## Examples

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 ```

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"); addFactor(G,fgps);```

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.`

`optimize(G,optns);`
```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 1.08e-03 8.65e-03 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 Linear solver SPARSE_NORMAL_CHOLESKY SPARSE_NORMAL_CHOLESKY Threads 1 1 Linear solver ordering AUTOMATIC 1 Cost: 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.007575 Residual only evaluation 0.000000 (0) Jacobian & residual evaluation 0.000983 (1) Linear solver 0.000000 (0) Minimizer 0.010046 Postprocessor 0.000010 Total 0.017631 Termination: CONVERGENCE (Gradient tolerance reached. Gradient max norm: 0.000000e+00 <= 1.000000e-10) ```

## Version History

Introduced in R2022a