Introduzione a Matlab: Funzioni di Ottimizzazione

Introduzione a Matlab:
Funzioni di Ottimizzazione
Metodi Numerici
1. Toolbox di Ottimizzazione
Matlab ha tre principali funzioni per resolvere problem di
ottimizzazione:
1. fminunc: trova il minimo di un problema non vincolato
(“unc-onstrained”), usando metodi che usano o stimano il
gradiente
2. fminsearch: trova il minimo un problema non vincolato,
senza usare nessuna informazione sul gradient (“derivate
free methods”)
3. fmincon: risolve un problema di ottimizzazione vincolata
4. fzero: trovi gli zeri di una funzione non lineare (può essere
usata per trovare i punti stazionari…)
2. Usare la funzione fminunc
Sintassi:
[xmin, fval] = fminunc(f, x0, options)
Input:
1. f: è la funzione obiettivo
2. x0: è il punto di iniziale da cui iniziare la ricerca
3. options: opzioni definite dall’utente che determinano il
tipo di algoritmo usato e diversi parametri numerici
Output:
1. xmin: punto di minimo relativo trovato
2. fval: funzione obiettivo valutata in xmin
2. Usare la funzione fminunc
Sintassi:
[xmin, fval] = fminunc(f, x0, options)
Esempio:
>> f = @(x) x(1)^2-x(2)^2;
>> [xbar, f_xbar] = fminunc(@f, [-2,0])
xbar =
-1.7099e-022
f_xbar =
0.0000e+000
2.9237e-044
2. Usare la funzione fminunc
Sintassi:
[xmin,fval,exitflag,output,grad,hessian] =
fminunc(f, x0, options)
Esempio:
>> f = @(x) x(1)^2-x(2)^2;
>> [x,fval,exitflag,output,grad,hessian]=fminunc(@f,[2,0])
PROVARE!
3.1 Opzioni per fminunc
• Opzioni per vedere il processo di ottimizzazione:
options = optimset('Display','iter’)
>> fun = @(x) x(1)*exp(-(x(1)^2+x(2)^2))+(x(1)^2+x(2)^2)/20;
>> x0 = [1,2];
>> [x,fval,exitflag,output] = fminunc(fun,x0,options)
Iteration,Func-count,f(x),Step-size,1st order optimality
PROVARE!
3.2 Opzioni per fminunc
• Opzioni per vedere il critero di arresto:
options = optimset(‘MaxFunEvals’,2000,’MaxIter’,2000’)
options = optimset(options,’TolFun’,1e-7,’TolX’,1e-7)
La norma infinito è (impiegando la nozione di limite di una funzione) il massimo dei valori
delle componenti in valore assoluto.
3.3 Opzioni per fminunc
Opzioni per vedere la scelta del metodo di soluzione:
• Trust-Region
options = optimset(’LargeScale’,’on’,’GradObj’,’on’,’Hessian’,’off’);
• Steepest Descent
options=optimset(’LargeScale’,’off’,’GradObj’,’off’,
’HessUpdate’,’steepdesc’);
• BFGS: Algoritmo di Broyden–Fletcher–Goldfarb–Shanno
options=optimset(’LargeScale’,’off’,’GradObj’,’off’,
’HessUpdate’,’bfgs’);
• DFP: Algoritmo di Davidon–Fletcher–Powell
options= optimset(’LargeScale’,’off’,’GradObj’,’off’,
’HessUpdate’,’dfp’);
Esercizio 5
Trovare il minimo della seguente funzione (chiamata di Rosenbrock),
usando i metodi di soluzione visti nella slide precedente:
f(x,y) = 100(y-x2)2 + (x-1)2
Tracciare un grafico qualitativo di f(x,y) e delle sue curve di livello e vedere
dove si trova il punto trovato dai diversi algoritmi.