Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.
La computación paralela es la técnica de usar varios procesadores en un solo problema. La razón para utilizar la computación paralela es acelerar los cálculos.
Los siguientes solucionadores pueden distribuir automáticamente la estimación numérica de gradientes de funciones objetivas y funciones de restricción no lineal a varios procesadores:Optimization Toolbox™
fmincon
fminunc
fgoalattain
fminimax
fsolve
lsqcurvefit
lsqnonlin
Estos solucionadores utilizan la estimación de degradado paralela en las siguientes condiciones:
Tiene una licencia para el software.Parallel Computing Toolbox™
La opción se establece en, o, si hay una función de restricción no lineal, la opción se establece en.SpecifyObjectiveGradient
false
SpecifyConstraintGradient
false
Puesto que es el valor predeterminado de estas opciones, no tiene que establecerlas; simplemente no los estableces a ambos.false
true
La computación paralela está habilitada con una función.parpool
Parallel Computing Toolbox
La opción está configurada en.UseParallel
true
El valor predeterminado de esta opción es.false
Cuando estas condiciones se mantiene, los solucionadores calculan los degradados en paralelo.
Nota
Incluso cuando se ejecuta en paralelo, un solucionador ocasionalmente llama a las funciones de restricción objetiva y no lineal en serie en el equipo host. Por lo tanto, asegúrese de que sus funciones no tienen suposiciones sobre si se evalúan en serie o en paralelo.
Una subrutina de solucionador puede computar en paralelo automáticamente: la subrutina que estima el degradado de la función objetiva y las funciones de restricción. Este cálculo implica calcular los valores de función en puntos cercanos a la ubicación actual.x Esencialmente, el cálculo es
Dónde
representa funciones objetivas o de restricciónf
ei son los vectores de dirección de unidad
Δi es el tamaño de un paso en el ei Dirección
Para estimar ∇f(x) en paralelo, los solucionadores distribuyen la evaluación deOptimization Toolbox (f(x + Δiei) – f(x))/Δi a procesadores adicionales.
Puede elegir que los degradados se calculen por diferencias finitas centrales en lugar de las diferencias finitas adelantas predeterminadas. La fórmula básica de diferencia finita central es
Esto toma el doble de evaluaciones de funciones que las diferencias finitas de avance, pero suele ser mucho más preciso. Las diferencias finitas centrales funcionan en paralelo exactamente igual que las diferencias finitas adelantan.
Habilite las diferencias finitas centrales utilizando para establecer la opción.optimoptions
FiniteDifferenceType
'central'
Para utilizar las diferencias finitas hacia delante, establezca la opción en.FiniteDifferenceType
'forward'
Solvers emplea la función para realizar la estimación paralela de gradientes. no funciona en paralelo cuando se llama desde dentro de otro bucle.Parallel Computing Toolboxparfor
(Parallel Computing Toolbox)parfor
parfor
Por lo tanto, no puede utilizar simultáneamente la estimación de degradado paralela y la funcionalidad paralela dentro de sus funciones de objetivo o restricción.
Supongamos, por ejemplo, que las llamadas de función objetivo, y desea llamar en un bucle.userfcn
parfor
fmincon
Supongamos también que se satisfacen las condiciones para la evaluación de gradiente paralela, como se da en. muestra tres casos:fmincon
Funcionalidad de optimización paralelaCuando parfor se ejecuta en paralelo
El bucle más externo es.parfor
Sólo ese bucle se ejecuta en paralelo.
El bucle más externo está en.parfor
fmincon
Sólo se ejecuta en paralelo.fmincon
El bucle más externo está en. puede utilizar en paralelo.parfor
userfcn
userfcn
parfor
Cuando parfor se ejecuta en paralelo
Mejorar el rendimiento con la computación paralela | Minimizar un costoso problema de optimización mediante la caja de herramientas de computación paralela™ | Uso de la computación paralela enOptimization Toolbox