Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

factorGraphSolverOptions

Opciones de solución para el gráfico de factores

Desde R2022a

Descripción

El objeto factorGraphSolverOptions contiene opciones de solución para optimizar un gráfico de factores.

Creación

Descripción

Options = factorGraphSolverOptions devuelve un objeto de opciones de solucionador de gráficos de factores predeterminado, Options.

ejemplo

Options = factorGraphSolverOptions(Name=Value) especifica propiedades utilizando uno o más argumentos de nombre-valor. Por ejemplo, factorGraphSolverOptions(MaxIterations=150) establece la propiedad MaxIterations del objeto factorGraphSolverOptions en 150.

Propiedades

expandir todo

Número máximo de iteraciones del solver , especificado como un entero positivo.

Límite inferior de cambio en la función de costes, especificado como un escalar positivo. La función de coste es:

|newCostoldCost|<FunctionTolerance*oldCost

Todos los costes son mayores que 0.

Límite inferior de la norma del gradiente, especificado como escalar positivo. La función norma es:

max_norm{x[x*Oplusg(x)]}<=GradientTolerance

Oplus es la versión múltiple de la operación más y g(x) es el gradiente en x.

Límite inferior del tamaño de paso del solver lineal, especificado como un escalar positivo. La relación entre el tamaño del paso y la tolerancia del paso es:

|deltaX|<=(|x|+StepTolerance)*StepTolerance

deltaX es el tamaño del paso del solucionador lineal.

Bandera de verbosidad de la línea de comandos, especificada como 1, 2 o 3.

  • 0 — No imprimir en la línea de comandos

  • 1 — Resumen del solucionador de impresión

  • 2 — Imprimir actualizaciones por iteración y resumen del solucionador

Algoritmo de cálculo de pasos de la región de confianza, especificado como 0 o 1.

  • 0 — Levenberg Marquardt

  • 1 — Pata de perro

Tipos de nodo para la estimación de la covarianza del estado del nodo, especificados como un escalar de cadena, un vector de caracteres, un arreglo de cadenas o un arreglo de celdas de vectores de caracteres.

Especifique "all-types" para estimar y almacenar la covarianza del estado del nodo para todos los tipos de nodos admitidos, y especifique "none" para no estimar ninguna covarianza del estado del nodo.

Puede utilizar un arreglo de cadenas o un arreglo de celdas de vectores de caracteres para especificar múltiples tipos de nodos para los cuales estimar y almacenar la covarianza del estado del nodo durante la optimización del gráfico de factores. Cada elemento debe ser una de estas opciones.

  • "POSE_SE2" — Estima y almacena la covarianza del estado del nodo para los nodos del tipo POSE_SE2.

  • "POSE_SE3" — Estima y almacena la covarianza del estado del nodo para los nodos del tipo POSE_SE3.

  • "POINT_XY" — Estima y almacena la covarianza del estado del nodo para los nodos del tipo POINT_XY.

  • "POINT_XYZ" — Estima y almacena la covarianza del estado del nodo para los nodos del tipo POINT_XYZ.

  • "IMU_BIAS" — Estima y almacena la covarianza del estado del nodo para los nodos del tipo IMU_BIAS.

  • "VEL_3" — Estima y almacena la covarianza del estado del nodo para los nodos del tipo VEL_3.

Después de optimizar el gráfico de factores con StateCovarianceType establecido en un valor distinto de "none", puede usar la función nodeCovariance para obtener la covarianza del estado del nodo del gráfico de factores para cualquier tipo de nodo especificado por StateCovarianceType.

Nota

El tiempo de optimización aumenta cuanto más covarianzas de estado de nodo se estiman. Si tiene un gráfico factorial con muchos nodos y tipos de nodos, considere elegir solo los tipos de nodos necesarios y utilizar la técnica de optimización de ventana deslizante. Consulte el ejemplo Optimice incrementalmente el gráfico de factores mediante la ventana deslizante para obtener más información sobre la técnica de optimización de ventana deslizante.

Radio de la región de confianza inicial, especificado como un escalar positivo. Si espera que los estados de los nodos de variables libres, establecidos después de agregar factores al gráfico de factores, sean precisos, puede especificar un radio de región de confianza inicial más pequeño, como 0,1, para una convergencia más rápida de la optimización del gráfico de factores.

Tipos de datos: double

Ejemplos

contraer todo

Cree y optimice un gráfico de factores con opciones de solver personalizadas.

Crear gráfico de factores y configuración del solucionador

Cree un gráfico de factores y opciones de solver con configuraciones personalizadas. Establezca el número máximo de iteraciones en 1000 y establezca la verbosidad de la salida optimize en 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
         StateCovarianceType: None
    InitialTrustRegionRadius: 10000

Agregar factor GPS

Cree un factor GPS con número de identificación de nodo de 1 con NED ReferenceFrame y agréguelo al gráfico de factores.

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

Optimizar gráfico de factores

Optimice el gráfico de factores con la configuración personalizada. Los resultados de la optimización se muestran con el nivel de detalle dependiendo de 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.14e-04    1.43e-04
Terminating: Gradient tolerance reached. Gradient max norm: 0.000000e+00 <= 1.000000e-10

Solver Summary (v 2.0.0-eigen-(3.4.0)-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.000029

  Residual only evaluation           0.000000 (0)
  Jacobian & residual evaluation     0.000106 (1)
  Linear solver                      0.000000 (0)
Minimizer                            0.002206

Postprocessor                        0.000004
Total                                0.002239

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

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2022a

expandir todo