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