Optimization Toolbox

Università degli studi di Salerno
Facoltà di Scienze Matematiche Fisiche e Naturali
Optimization Toolbox di
MATLAB
Tesina di Ottimizzazione
Studente:
Prof. Giancarlo Raiconi
Gianluca Carbone
0522500116
Anno Accademico 2011/2012
1
INTRODUZIONE…
Il presente lavoro riguarda lo studio delle più
importanti funzioni che il tool mette a
disposizione, degli algoritmi utilizzati e
applicazione del software a problemi di
test reperibili in rete.
Optimization Toolbox di MATLAB
2
…INTRODUZIONE
Nello specifico ho lavorato su :
• Comprensione generale del tool Optimization Toolbox;
• Utilizzo del tool su problemi di nonlineare nonvincolata e
di minimizzazione unidimensionale;
• Utilizzo del tool su problemi riguardo i minimi quadrati
lineari e nonlineari.
Optimization Toolbox di MATLAB
3
Il tool nel complesso…
Una collezione di funzioni che estendono la capacità
dell'ambiente di calcolo numerico di Matlab. La toolbox
include procedure per molti tipi di ottimizzazione tra
cui:
•
•
•
•
•
•
•
Minimizzazione non lineare non vincolata;
Minimizzazione non lineare vincolata, tra cui problemi goal attainment,
problemi minimax e problemi di minimizzazione semi- infinita;
Programmazione quadratica e lineare;
Minimi quadrati e curve-fitting non lineari;
Risoluzione di sistemi di equazioni non lineari;
Minimi quadrati lineari vincolati;
Problemi su larga scala sparsi e strutturati.
Optimization Toolbox di MATLAB
4
ALGORITMI…
Due classi di algoritmi:
1. Medium – Scale ( or Standard) algorithm :
- Minimizzazione non vincolata : metodi di ricerca del simplesso Nelder - Mead e il
metodo Quasi-Newton di BFGS( Broyden-Fletcher-Goldfarb-Shanno );
- Minimizzazione vincolata (minimax, goal attainment e ottimizzazione semi – infinita )
: sono usate variazioni della programmazione quadratica sequenziale (SQP);
- Minimi quadrati non lineari : metodi di Gauss – Newton e Levemberg – Marquardt;
- Equazioni non lineari : risoluzione anche attraverso l’algoritmo Trust – Region
Dogleg;
Optimization Toolbox di MATLAB
5
…ALGORITMI
2. Large Scale algorithm :
- Tutti gli algoritmi su larga scala, eccetto la programmazione lineare, sono metodi
Trust – Region.
- I problemi vincolati sono risolti usando metodi di Newton Riflessivo.
- I problemi con vincoli di eguaglianza sono risolti con i metodi del Gradiente
Coniugato Precondizionato;
- Per individuare il passo corrente per risolvere sistemi lineari , si possono
utilizzare risolutori sparsi o risolutori sparsi diretti.
- Il metodo di programmazione lineare è una variante dell’algoritmo predictorcorrector di Mehrotra , un metodo primale duale interior-point.
L’idea di base dei metodi di “ trust - region” è di determinare la direzione e l’ampiezza
dello spostamento da effettuare a partire dal punto corrente x , in modo da
minimizzare un modello quadratico della funzione obiettivo in una regione sferica di
centro x.
Optimization Toolbox di MATLAB
6
FUNZIONI…
Il tool mette a disposizione tre categorie di funzioni :
1. Minimization : minimizzazione scalare(fminbnd),
minimizzazione non vincolata (fminunc, fminsearch), linear
programming (linprog), programmazione quadratica (quadprog),
minimizzazione vincolata (fmincon), goal attainment( fgoalattain),
minimax (fminimax), minimizzazione semi – infinita (fseminf);
2. Rioluzione di equazioni : equazioni lineari ( \ (slash)),
equazioni non lineari di una variabile (fzero), equazioni non lineari
(fsolve);
Optimization Toolbox di MATLAB
7
…FUNZIONI
3. Minimi quadrati (curve fitting) : minimi quadrati lineari
( \(slash)), minimi quadrati lineari non negativi (lsqnonneg), minimi
quadrati lineari vincolati (lsqlin), minimi quadrati non lineari
(lsqnonlin), curve fitting (lsqcurvefit).
Il curve fitting è il processo di costruzione di una curva o di una funzione
matematica, che abbia la migliore corrispondenza ad una serie di punti
assegnati, possibilmente soggetti a limitazioni. Il curve fitting può implicare
sia l'interpolazione, dove è richiesta un'esatta corrispondenza con i punti
dati, o lo spianamento, dove viene costruita una funzione piana che
combaci approssimativamente con i dati.
Optimization Toolbox di MATLAB
8
Tornando agli algoritmi
Qualche algoritmo standard :
Gradient methods : i metodi del gradiente usano informazioni circa la
pendenza della funzione per dettare una direzione di ricerca dove si ritiene
che sia il minimo. Il più semplice di questi è il metodo di steepest
descent(gradiente) in cui viene eseguita una ricerca in una direzione, -f(x),
dove f(x) è il gradiente della funzione obbiettivo. Questo metodo è
inefficiente quando la funzione da minimizzare ha lunghe curvature strette.
Quasi – Newton methods : utilizza le informazioni del gradiente,
costruisce le informazioni della curvatura ad ogni iterazione per formulare il
problema del modello quadratico della forma:
H matrice Hessiana, c vettore costante, b costante
Implementazione consiste di due fasi:
-
Determinazione di una direzione di ricerca( aggiornamento Hessiano);
Procedure di Line Search.
Optimization Toolbox di MATLAB
9
Tornando agli algoritmi
…Qualche algoritmo Standard
Quasi – Newton : Il metodo di tipo-Newton (come opposto ai metodi Quasi
-Newton) calcola H direttamente e procede in una direzione di discesa per
localizzare il minimo dopo un numero di iterazioni. Calcolare H numericamente
comporta un grande numero di computazioni. I metodi Quasi -Newton evitano
questo usando il comportamento osservato di f(x) e ∆f(x) per costruire le
informazioni di curvatore per fare un approssimazione di H usando un’
appropriata tecnica di aggiornamento.
Tra le tecniche di aggiornamento dell’Hessiano vi è BFGS:
dove
Optimization Toolbox di MATLAB
10
ALGORITMI
… ancora qualche algoritmo Standard
Ottimizzazione con i minimi quadrati
Metodo Gauss – Newton : è ottenuta una direzione di ricerca D di
k ad ogni iterazione k, cioè una soluzione del problema dei minimi
quadrati. La direzione di ricerca D può essere utilizzata come parte
di una strategia di ricerca di linea per garantire che ad ogni
iterazione la funzione f(x) decrementa. Questo metodo ha limiti con
valori molto grandi nell’equazione .
J matrice Jacobiaba, G vettore gradiente, H matrice hessiana
Problemi risolti nel metodo di Levemberg-Marquardt.
Levemberg – Marquardt : trova una soluzione di un insieme
lineare di equazioni, usa una direzione di ricerca che è un incrocio
tra la direzione di Gauss – Newton e Steepest Descent.
Optimization Toolbox di MATLAB
11
ALGORITMI
Algoritmi su Larga scala…
Trust – Region : esempio minimizzare f(x). Supponiamo di essere in un
punto x in uno spazio n e vogliamo migliorare ad un valore di funzione
inferiore. L’idea di base è di approssimare f ad una semplice funzione q, che
riflette adeguatamente il comportamento della funzione f in un vicino N
intorno al punto x. Questo punto è detto trust – region. Il punto viene
aggiornato solo se la soluzione è migliorata.
Preconditioned Conjugate Gradients : risolvere grandi sistemi definiti
positivi simmetrici di equazioni lineari o l’equivalente problema di
programmazione quadratica.
Consiste nel decomporre un problema di minimo quadratico n – dimensionale in n problemi
monodimensionali mediante l’introduzione di direzioni coniugate. Leggermente più
complesso di steepest descent ma molto più veloce nella convergenza.
Optimization Toolbox di MATLAB
12
ALGORITMI
…algoritmi su Larga scala
Minimi quadrati non lineari :
Il metodo di base usato per risolvere questo problema è lo stesso come nel
caso generale descritto per Trust Region. Tuttavia la struttura del
problema dei minimi quadrati non lineari è sfruttata per migliorare
l’efficienza.
Minimi quadrati lineari :
Ogni iterazione implica la soluzione approssimata di un sistema lineare grande (di
ordine n dove n è la lunghezza di x). Il metodo dei gradienti è utilizzato per
risolvere approssimativamente l’equazione normale, ad esempio,
Il metodo Trust-region è utlizzato per individuare una direzione di ricerca
Optimization Toolbox di MATLAB
13
FUNZIONI ANALIZZATE
Le funzioni che sono state analizzate:
fminsearch : trova il minimo di una funzione multi-variabile non lineare non vincolata ;
fminunc : trova il minimo di una funzione multi variabile non lineare non vincolata ;
fmincon : trova il minimo di una funzione multi-variaible non lineare vincolata
lsqlin : risolve il problema dei minimi quadrati lineari ;
lsqnonlin : risolve problemi dei minimi quadrati non lineari (data-fitting non lineari).
Per ognuna delle funzioni vi sono diverse sezioni, in particolare :
scopo
descrizione
note particolari
algoritmi che utilizzano
Optimization Toolbox di MATLAB
14
fminsearch
[x,fval,exitflag,output] = fminsearch(fun,x0,options,P1,P2,…)
Input
fun -> funzione da minimizzare
x0 -> punto di inizio
options -> permette di modificare i parametri di ottimizzazione
P1,P2 -> argomenti addizionali passati a fun.
Output
x -> minimo locale della funzione descritta in fun
fval -> valore della funzione obbiettivo alla soluzione x
exitflag -> descrive la condizione di uscita
output -> contiene informazioni circa l’ottimizzazione (iterazioni, algoritmo, ecc).
Algoritmi
Usa il metodo di ricerca del simplesso; potrebbe solo dare una soluzione locale;
minimizza solo su numeri reali ( ha bisogno di scomporre variabili complesse).
Optimization Toolbox di MATLAB
15
fminunc
[x, fval, exitflag, output, grad, hessian]= fminunc(fun, x0, options, P1,
P2,…);
Input
fun -> funzione da minimizzare
x0 -> punto di inizio
options -> permette di modificare i parametri di ottimizzazione
P1,P2 -> argomenti addizionali passati a fun.
Output
x -> minimo locale della funzione descritta in fun
fval -> valore della funzione obbiettivo alla soluzione x
exitflag -> descrive la condizione di uscita
output -> contiene informazioni circa l’ottimizzazione (iterazioni, algoritmo, ecc)
grad -> è il valore del gradiente di fun alla soluzione x
hessian -> è il valore dell’Hessiano della funzione obbiettivo fun alla soluzione x.
Algoritmi
-
large-scale (on) : metodo Trust- Region,Newton interior- reflective,gradiente(PCG).
large –scale (off) : quasi- Newton , formula BFGS e DFP, steepest descent.
Optimization Toolbox di MATLAB
16
lsqlin
[x, resnorm, residual, exitflag, output, lambda]= lsqlin(C, d, A, b, Aeq,
beq, lb, ub, x0, options, p1, p2,…);
Input
C,A e Aeq sono matrici
d, b, beq, lb(lower bound), e ub(upper bound) sono vettori
P1,P2 -> argomenti addizionali passati a fun
x0 -> punto di inizio
options -> permette di modificare i parametri di ottimizzazione
Output
x -> minimo locale della funzione descritta in fun
residual-> C*x-d;
exitflag -> descrive la condizione di uscita
output -> contiene informazioni circa l’ottimizzazione (iterazioni, algoritmo, ecc)
Lambda -> struttura contenente il moltiplicatore di Lagrange alla soluzione x;
Resnorm -> norm(C*x-d)^2;
Algoritmi
Large Scale (on) -> metodo trust region basato sul metodo di Newton interior-reflective, gradienti:
Large Scale (off) -> programmazione quadratica
Optimization Toolbox di MATLAB
17
lsqnonlin
• [x, resnorm, residual, exitflag, output, lambda, jacobian] = lsqnonlin
(fun,x0,lb,ub,options,P1,P2,…);
Input
Fun -> funzione in input
lb(lower bound), e ub(upper bound) sono vettori
P!,P2 -> argomenti addizionali passati a fun
x0 -> punto di inizio
options -> permette di modificare i parametri di ottimizzazione
Output
x -> minimo locale della funzione descritta in fun
residual-> C*x-d;
exitflag -> descrive la condizione di uscita
output -> contiene informazioni circa l’ottimizzazione (iterazioni, algoritmo, ecc)
Lambda -> struttura contenente il moltiplicatore di Lagrange alla soluzione x;
Resnorm -> norm(C*x-d)^2;
Jacobian -> ritorna lo Jacobiano di fun alla soluzione x
Algoritmi
Larga scala(on) -> trust- region si basa sul metodo di Newton interior-reflective, gradienti preconditioned
Larga scala(off) -> Levemberg – Marquardt con ricerca di linea, Gauss- Newton con ricerca di linea
18
Optimization Toolbox di MATLAB
Esempi
Fminunc -
•
•
•
•
minimizzare la funzione data, trovare x1 e x2.
X0[-1,1];
Options =optimset(‘LargeScale’,’off’);
[x,fval,exitflag,output] =fminunc(@objfun,x0,options);
algoritmo-> medium scale ,’Quasi-Newton line search’
X=0.5000, -1,000
Optimization Toolbox di MATLAB
19
Esempi
Fminsearch - minimizza la funzione unidimensionale per trovare un minimo vicino a 2
Function : sen(x) + 3
• x = fminsearch (@myfun2,2);
• x= 4.7124;
Optimization Toolbox di MATLAB
20
Esempi
Esempio tratto da COPS
Problema - il più grande tra poligoni piccoli, cioè
Se
trovare il poligono di massima area,
tra i poligoni con n lati e diametro d<=1;
sono le coordinate dei vertici dei poligoni, allora dobbiamo massimizzare:
con i vincoli :
Optimization Toolbox di MATLAB
21
GRAZIE PER
L’ATTENZIONE
22