Optimizar una función usando particleswarm
, basado en problemas
Este ejemplo muestra cómo minimizar una función utilizando un enjambre de partículas en el enfoque basado en problemas cuando el objetivo es un archivo de función, posiblemente de contenido desconocido (una función de "caja negra"). La función para minimizar, dejong5fcn(x)
, se incluye cuando ejecuta este ejemplo.
dejong5fcn
Cree una variable de optimización x
en 2D. La función dejong5fcn
espera que la variable sea un vector de fila, así que especifique x
como un vector de fila de 2 elementos.
x = optimvar("x",1,2);
Para utilizar dejong5fcn
como función objetivo, convierta la función en una expresión de optimización utilizando fcn2optimexpr
.
fun = fcn2optimexpr(@dejong5fcn,x);
Cree un problema de optimización con la función objetivo fun
.
prob = optimproblem("Objective",fun);
Establezca límites variables de –50 a 50 en todos los componentes. Cuando se especifican límites escalares, el software expande los límites a todas las variables.
x.LowerBound = -50; x.UpperBound = 50;
Resuelva el problema, especificando el solucionador particleswarm
.
rng default % For reproducibility [sol,fval] = solve(prob,"Solver","particleswarm")
Solving problem using particleswarm. Optimization ended: relative change in the objective value over the last OPTIONS.MaxStallIterations iterations is less than OPTIONS.FunctionTolerance.
sol = struct with fields:
x: [-31.9751 -31.9719]
fval = 0.9980
Consulte también
particleswarm
| fcn2optimexpr
| solve