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.

GlobalSearch

Hallar el mínimo global

Descripción

Un objeto GlobalSearch contiene propiedades (opciones) que afectan cómo run ejecuta repetidamente un solucionador local para generar un objeto GlobalOptimSolution. Cuando se ejecuta, el solucionador intenta localizar una solución que tenga el valor de función objetivo más bajo.

Creación

Descripción

gs = GlobalSearch crea gs, un solucionador GlobalSearch con sus propiedades establecidas en los valores predeterminados.

ejemplo

gs = GlobalSearch(Name,Value) establece propiedades utilizando pares nombre-valor.

ejemplo

gs = GlobalSearch(oldGS,Name,Value) crea una copia del solucionador oldGS GlobalSearch y establece propiedades utilizando pares nombre-valor.

ejemplo

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

ejemplo

Propiedades

expandir todo

Factor de disminución del radio de la cuenca, especificado como un escalar desde 0 hasta 1. El radio de una cuenca disminuye después de que MaxWaitCycle puntos de inicio consecutivos estén dentro de la cuenca. El radio de la cuenca disminuye en un factor de 1 – BasinRadiusFactor .

Establezca BasinRadiusFactor en 0 para deshabilitar las actualizaciones del radio de la cuenca.

Ejemplo: 0.5

Tipos de datos: double

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

Multiplicador para determinar si un punto de prueba está en una cuenca de atracción existente, especificado como un escalar no negativo. Para obtener más detalles, consulte Examine Stage 2 Trial Point to See if fmincon Runs.

Ejemplo: 0.5

Tipos de datos: double

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 GlobalSearch se ejecuta, especificado como un escalar positivo. GlobalSearch 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

Parámetro de control del algoritmo, especificado como un entero positivo.

  • Si la función de penalización observada de MaxWaitCycle puntos de prueba consecutivos es al menos el umbral de penalización, entonces aumente el umbral de penalización (ver PenaltyThresholdFactor).

  • Si hay MaxWaitCycle puntos de prueba consecutivos en una cuenca, actualice el radio de esa cuenca (ver BasinRadiusFactor).

Ejemplo: 40

Tipos de datos: double

Número de puntos de la Etapa 1, especificado como un entero positivo. Para obtener más detalles, consulte Obtain Stage 1 Start Point, Run.

Ejemplo: 1000

Tipos de datos: double

Número de puntos de inicio potenciales, especificado como un entero positivo.

Ejemplo: 3e4

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

Aumento del umbral de sanción, especificado como escalar positivo. Para obtener más detalles, consulte Reaccionar ante valores de contador grandes.

Ejemplo: 0.4

Tipos de datos: double

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.

GlobalSearch verifica la propiedad StartPointsToRun solo durante la Etapa 2 del algoritmo GlobalSearch (el bucle principal). Para obtener más información, consulte GlobalSearch Algorithm.

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

Tipos de datos: char | string

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

Cree un problema de optimización que tenga varios mínimos locales e intente encontrar el mínimo global utilizando GlobalSearch. El objetivo es el problema de la espalda de camello de seis jorobas (ver Run the Solver).

rng default % For reproducibility
gs = GlobalSearch;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
x = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points.

All 8 local solver runs converged with a positive local solver exit flag.
x = 1×2

   -0.0898    0.7127

Puede solicitar el valor de la función objetivo en x cuando llama a run utilizando la siguiente sintaxis:

[x,fval] = run(gs,problem)

Sin embargo, si olvidó solicitar fval, aún puede calcular el valor de la función objetivo en x.

fval = sixmin(x)
fval = 
-1.0316

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 GlobalSearch 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);
gs = GlobalSearch;
[x,f] = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points.

All 23 local solver runs converged with a positive local solver exit flag.
x = 
-0.3080
f = 
-3.9032

Crea un objeto MultiStart no predeterminado.

ms = MultiStart('FunctionTolerance',2e-4,'UseParallel',true)
ms = 
  MultiStart with properties:

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

Crea un objeto GlobalSearch que utiliza las propiedades disponibles de ms.

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

             NumTrialPoints: 1000
          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

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

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

gs = GlobalSearch('FunctionTolerance',1e-4)
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    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'.

gs = GlobalSearch(gs,'XTolerance',1e-3,'StartPointsToRun','bounds')
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    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.

gs.MaxTime = 1800
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    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 GlobalSearch Algorithm. Ugray et al. [1] describen tanto el algoritmo como el método de búsqueda dispersa para generar puntos de prueba.

Referencias

[1] Ugray, Zsolt, Leon Lasdon, John Plummer, Fred Glover, James Kelly, and Rafael Martí. Scatter Search and Local NLP Solvers: A Multistart Framework for Global Optimization. INFORMS Journal on Computing, Vol. 19, No. 3, 2007, pp. 328–340.

Historial de versiones

Introducido en R2010a

expandir todo