Funktion optimieren mit particleswarm, problembasiert
Dieses Beispiel zeigt, wie eine Funktion mithilfe eines Partikelschwarms im problembasierten Ansatz minimiert wird, wenn das Ziel eine Funktionsdatei mit möglicherweise unbekanntem Inhalt (eine „Black Box“-Funktion) ist. Die zu minimierende Funktion dejong5fcn(x) wird einbezogen, wenn Sie dieses Beispiel ausführen.
dejong5fcn

Erstellen Sie eine 2D-Optimierungsvariable x. Die Funktion dejong5fcn erwartet, dass die Variable ein Zeilenvektor ist. Geben Sie daher x als Zeilenvektor mit 2 Elementen an.
x = optimvar("x",1,2);Um dejong5fcn als Zielfunktion zu verwenden, konvertieren Sie die Funktion mit fcn2optimexpr in einen Optimierungsausdruck.
fun = fcn2optimexpr(@dejong5fcn,x);
Erstellen Sie ein Optimierungsproblem mit der Zielfunktion fun.
prob = optimproblem("Objective",fun);Legen Sie in allen Komponenten variable Grenzen von –50 bis 50 fest. Wenn Sie skalare Grenzen angeben, erweitert die Software die Grenzen auf alle Variablen.
x.LowerBound = -50; x.UpperBound = 50;
Lösen Sie das Problem, indem Sie den particleswarm-Solver angeben.
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
Siehe auch
particleswarm | fcn2optimexpr | solve