Minimizzare la funzione non lineare utilizzando il risolutore a più inizi, basato sui problemi
Trova un minimo locale della funzione peaks
nel range a partire dal punto [–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
Prova a trovare una soluzione migliore utilizzando il risolutore GlobalSearch
. Questo risolutore esegue fmincon
più volte, il che potenzialmente produce una soluzione migliore.
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
trova una soluzione con un valore della funzione obiettivo migliore (più basso). Il messaggio di uscita mostra che fmincon
, il risolutore locale, viene eseguito 15 volte. La soluzione restituita ha un valore della funzione obiettivo di circa –6,5511, che è inferiore al valore della prima soluzione, 1,1224e–07.
Vedi anche
GlobalSearch
| MultiStart
| run
| solve