Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

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

| |

Argomenti