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 querun
finalice.'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:
@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
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)