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
Sintaxis
Descripción
ms = MultiStart crea ms, un solucionador MultiStart con sus propiedades establecidas en los valores predeterminados.
ms = MultiStart(Name,Value) establece propiedades utilizando pares nombre-valor.
ms = MultiStart(oldMS,Name,Value) crea una copia del solucionador oldMS MultiStart y establece propiedades utilizando pares nombre-valor.
ms = MultiStart(gs) crea ms, un solucionador MultiStart, con valores de parámetros comunes del solucionador gs GlobalSearch.
Propiedades
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 querunfinalice.'iter'– Informa los resultados después de la carrera inicialfmincon, después de la Etapa 1, después de cada 200 puntos de inicio y después de cada carrera defmincon, 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:
@gsplotbestftraza el mejor valor de la función objetivo.@gsplotfunccountgrafica 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
run | Run multiple-start solver |
Ejemplos
Consideremos una función con varios mínimos locales.
fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

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
Para ejecutar en paralelo, establezca la opción 'UseParallel' en true.
options = optimoptions('solvername','UseParallel',true)
Para obtener más información, consulte Cómo utilizar el procesamiento paralelo en Global Optimization Toolbox.
Historial de versiones
Introducido en R2010aLa 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.
El optimValues Structure en las funciones de salida y de gráfico ahora contiene el campo constrviolation, que tiene la máxima infracción de restricción. Este valor es 0 para que no haya violaciones de restricciones.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)