Ottimizza la funzione utilizzando particleswarm
, basata sui problemi
Questo esempio mostra come minimizzare una funzione utilizzando uno sciame di particelle nell'approccio basato sui problemi quando l'obiettivo è un file di funzione, possibilmente dal contenuto sconosciuto (una funzione "scatola nera"). La funzione per minimizzare, dejong5fcn(x)
, è inclusa quando si esegue questo esempio.
dejong5fcn
Crea una variabile di ottimizzazione 2D x
. La funzione dejong5fcn
si aspetta che la variabile sia un vettore riga, quindi specificare x
come vettore riga a 2 elementi.
x = optimvar("x",1,2);
Per utilizzare dejong5fcn
come funzione obiettivo, convertire la funzione in un'espressione di ottimizzazione utilizzando fcn2optimexpr
.
fun = fcn2optimexpr(@dejong5fcn,x);
Creare un problema di ottimizzazione con la funzione obiettivo fun
.
prob = optimproblem("Objective",fun);
Imposta limiti variabili da -50 a 50 in tutti i componenti. Quando si specificano limiti scalari, il software estende i limiti a tutte le variabili.
x.LowerBound = -50; x.UpperBound = 50;
Risolvi il problema specificando il risolutore 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
Vedi anche
particleswarm
| fcn2optimexpr
| solve