Contenuto principale

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

Minimizzare la funzione non lineare utilizzando il risolutore a più inizi, basato sui problemi

Trova un minimo locale della funzione peaks nel range -5x,y5 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

| | |

Argomenti