Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Minimiser la fonction non linéaire à l'aide d'un solveur à démarrage multiple (MultiStart) basé sur des problèmes

Trouver un minimum local de la fonction peaks sur la plage -5x,y5 à partir du point [–1,2].

x = optimvar("x",LowerBound=-5,UpperBound=5);
y = optimvar("y",LowerBound=-5,UpperBound=5);
x0.x = -1;
x0.y = 2;
prob = optimproblem(Objective=peaks(x,y));
opts = optimoptions("fmincon",Display="none");
[sol,fval] = solve(prob,x0,Options=opts)
sol = struct with fields:
    x: -3.3867
    y: 3.6341

fval = 
1.1224e-07

Essayez de trouver une meilleure solution en utilisant le solveur GlobalSearch. Ce solveur exécute fmincon plusieurs fois, ce qui donne potentiellement une meilleure solution.

ms = GlobalSearch;
[sol2,fval2] = solve(prob,x0,ms)
Solving problem using GlobalSearch.

GlobalSearch stopped because it analyzed all the trial points.

All 15 local solver runs converged with a positive local solver exit flag.
sol2 = struct with fields:
    x: 0.2283
    y: -1.6255

fval2 = 
-6.5511

GlobalSearch trouve une solution avec une meilleure valeur de fonction objectif (inférieure). Le message de sortie indique que fmincon, le solveur local, s'exécute 15 fois. La solution renvoyée a une valeur de fonction objectif d’environ –6,5511, ce qui est inférieur à la valeur de la première solution, 1,1224e–07.

Voir aussi

| | |

Rubriques