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.

MultiStart

Encuentra múltiples mínimos locales

Descripción

Un objeto MultiStart contiene propiedades (opciones) que afectan cómo run ejecuta repetidamente un solucionador local para generar un objeto GlobalOptimSolution. Cuando se ejecuta, el solucionador intenta encontrar múltiples soluciones locales a un problema comenzando desde varios puntos.

Creación

Descripción

ms = MultiStart crea ms, un solucionador MultiStart con sus propiedades establecidas en los valores predeterminados.

ejemplo

ms = MultiStart(Name,Value) establece propiedades utilizando pares nombre-valor.

ejemplo

ms = MultiStart(oldMS,Name,Value) crea una copia del solucionador oldMS MultiStart y establece propiedades utilizando pares nombre-valor.

ejemplo

ms = MultiStart(gs) crea ms, un solucionador MultiStart, con valores de parámetros comunes del solucionador gs GlobalSearch.

ejemplo

Propiedades

expandir todo

Nivel de visualización de la ventana de comandos, especificado como uno de los siguientes vectores de caracteres o cadenas:

  • 'final' – Informar resultados resumidos después de que run finalice.

  • 'iter' – Informa los resultados después de la carrera inicial fmincon, después de la Etapa 1, después de cada 200 puntos de inicio y después de cada carrera de fmincon, además del resumen final.

  • 'off' – Sin pantalla.

Ejemplo: 'iter'

Tipos de datos: char | string

Tolerancia en los valores de una función para considerar soluciones iguales, especificada como un escalar no negativo. Los solucionadores consideran que dos soluciones son idénticas si están dentro de una distancia relativa de XTolerance entre sí y tienen valores de función objetivo dentro de una diferencia relativa de FunctionTolerance entre sí. Si no se cumplen ambas condiciones, los solucionadores informan las soluciones como distintas. Establezca FunctionTolerance en 0 para obtener los resultados de cada ejecución del solucionador local. Establezca FunctionTolerance en un valor mayor para tener menos resultados. Para obtener más detalles sobre GlobalSearch, consulte Update Solution Set en When fmincon Runs. Para obtener más detalles sobre MultiStart, consulte Create GlobalOptimSolution Object.

Ejemplo: 1e-4

Tipos de datos: double

Tiempo máximo en segundos que MultiStart se ejecuta, especificado como un escalar positivo. MultiStart y sus solucionadores locales se detienen cuando han pasado MaxTime segundos desde el comienzo de la ejecución, según lo medido por tic y toc.

MaxTime no interrumpe a los solucionadores locales durante una ejecución, por lo que el tiempo total puede superar MaxTime.

Ejemplo: 180 detiene el solucionador la primera vez que una llamada al solucionador local finaliza después de 180 segundos.

Tipos de datos: double

Informar sobre el progreso del solucionador o detener el solucionador, especificado como un identificador de función o un arreglo de celdas de identificadores de función. Las funciones de salida se ejecutan después de cada llamada al solucionador local. También se ejecutan cuando el solucionador global comienza y finaliza. Escriba funciones de salida utilizando la sintaxis descrita en OutputFcn. Consulte Custom GlobalSearch Output Function.

La función de salida incorporada @savelocalsolutions guarda todas las soluciones locales en la variable localSolTable en el espacio de trabajo base. Esta función de salida guarda las soluciones locales inviables así como las soluciones locales factibles. Para ver un ejemplo, consulte Collect All Local Solutions.

Tipos de datos: cell | function_handle

Traza el progreso del solucionador, especificado como un identificador de función o un arreglo de celdas de identificadores de función. Las funciones de representación se ejecutan después de cada llamada al solucionador local. También se ejecutan cuando el solucionador global comienza y finaliza. Escriba funciones de representación utilizando la sintaxis descrita en OutputFcn .

Hay dos funciones de gráfico integradas:

  • @gsplotbestf traza el mejor valor de la función objetivo.

  • @gsplotfunccount grafica el número de evaluaciones de funciones.

Consulte MultiStart Plot Function.

Ejemplo: @gsplotbestf

Tipos de datos: cell | function_handle

Puntos de inicio para ejecutar, especificados como:

  • 'all' — Ejecutar todos los puntos de inicio.

  • 'bounds' — Ejecuta solo puntos de inicio que satisfagan los límites.

  • 'bounds-ineqs' — Ejecuta solo puntos de inicio que satisfagan límites y restricciones de desigualdad.

Ejemplo: 'bounds' ejecuta solo puntos que satisfacen todos los límites.

Tipos de datos: char | string

Distribuye llamadas de solucionador local a múltiples procesadores, especificados como false o true.

  • false — No ejecutar en paralelo.

  • true — Distribuye las llamadas del solucionador local a múltiples procesadores.

Ejemplo: true

Tipos de datos: logical

Tolerancia en la distancia para considerar soluciones iguales, especificada como un escalar no negativo. Los solucionadores consideran que dos soluciones son idénticas si están dentro de una distancia relativa de XTolerance entre sí y tienen valores de función objetivo dentro de una diferencia relativa de FunctionTolerance entre sí. Si no se cumplen ambas condiciones, los solucionadores informan las soluciones como distintas. Establezca XTolerance en 0 para obtener los resultados de cada ejecución del solucionador local. Establezca XTolerance en un valor mayor para tener menos resultados. Para obtener más detalles sobre GlobalSearch, consulte Update Solution Set en When fmincon Runs. Para obtener más detalles sobre MultiStart, consulte Create GlobalOptimSolution Object.

Ejemplo: 2e-4

Tipos de datos: double

Funciones del objeto

runRun multiple-start solver

Ejemplos

contraer todo

Consideremos una función con varios mínimos locales.

fun = @(x) x.^2 + 4*sin(5*x);
fplot(fun,[-5,5])

Figure contains an axes object. The axes object contains an object of type functionline.

Para buscar el mínimo global, ejecute MultiStart en 20 instancias del problema utilizando el algoritmo fmincon 'sqp'.

rng default % For reproducibility
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
    fun,'x0',3,'lb',-5,'ub',5,'options',opts);
ms = MultiStart;
[x,f] = run(ms,problem,20)
MultiStart completed the runs from all start points. 

All 20 local solver runs converged with a positive local solver exitflag.
x = 
-0.3080
f = 
-3.9032

Crea un objeto MultiStart con propiedades predeterminadas.

ms = MultiStart
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-06
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

Cree un objeto MultiStart con tolerancias más flexibles que las predeterminadas, de modo que el solucionador devuelva menos soluciones cercanas entre sí. Además, haga que MultiStart ejecute solo puntos iniciales que sean factibles con respecto a los límites y las restricciones de desigualdad.

ms = MultiStart('FunctionTolerance',2e-4,'XTolerance',5e-3,...
    'StartPointsToRun','bounds-ineqs')
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 2.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'bounds-ineqs'
           XTolerance: 0.0050

Crea un objeto GlobalSearch no predeterminado.

gs = GlobalSearch('FunctionTolerance',2e-4,'NumTrialPoints',2000)
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 2000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    Display: 'final'
          FunctionTolerance: 2.0000e-04
                    MaxTime: Inf
                  OutputFcn: []
                    PlotFcn: []
           StartPointsToRun: 'all'
                 XTolerance: 1.0000e-06

Crea un objeto MultiStart que utiliza las propiedades disponibles de gs.

ms = MultiStart(gs)
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 2.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

ms tiene el mismo valor no predeterminado de FunctionTolerance que gs. Pero ms no utiliza la propiedad NumTrialPoints.

Crea un objeto MultiStart con un FunctionTolerance de 1e-4.

ms = MultiStart('FunctionTolerance',1e-4)
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

Actualice la propiedad XTolerance a 1e-3 y la propiedad StartPointsToRun a 'bounds'.

ms = MultiStart(ms,'XTolerance',1e-3,'StartPointsToRun','bounds')
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'bounds'
           XTolerance: 1.0000e-03

También puede actualizar las propiedades de una en una utilizando la notación de puntos.

ms.MaxTime = 1800
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-04
              MaxTime: 1800
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'bounds'
           XTolerance: 1.0000e-03

Algoritmos

Para obtener una descripción detallada del algoritmo, consulte MultiStart Algorithm.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2010a

expandir todo