argomento: introduzione allapiattaformamatlab. risoluzione ...unina.stidue.net/identificazione e...
TRANSCRIPT
![Page 1: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/1.jpg)
LEZIONE ICO 12-10-2009
Lucia [email protected]
Argomento: introduzione alla piattaforma Matlab. Risoluzione numerica di problemi di minimo liberi e vincolati.
![Page 2: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/2.jpg)
http://www.mathworks.com/access/helpdesk/help/toolbox/optim/optim.shtml
![Page 3: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/3.jpg)
Definizione funzione obiettivo in MatlabDefinizione funzione obiettivo in Matlab
Definizione della funzione obiettivo : creazione di una MATLAB function:• Input• Output
• Modi di scrivere la funzione obiettivo:1. Creare una funzione anonima nella riga di comando2. Scrivere un M-file3. Utilizzo del comando “Inline”
![Page 4: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/4.jpg)
1.Creare una funzione anonimanella riga di comandoesempio
>>f = @(x) 2*x^2-3*x+4; >>f(3)
ans = 13
>>f = @(x,y) 2*x*y; >>f(2,2)ans = 8
Si utilizza quando la f è semplice o quando non si userà in una successiva sessione di MATLAB
![Page 5: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/5.jpg)
2. Usando il comando inline
• Utilizzando il comando inline:– Crea una funzione nella linea di comando:Sintassi: f = inline(‘expr’,’n’) con
>f = inline('2*x^2-3*x+4','x'); >>f(3)ans = 13
>> f = inline('2*x*y', 'x', 'y'); >> f(2,2)ans = 8
![Page 6: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/6.jpg)
3. Scrivere un M-file
Bisogna aprire un file di Matlab editorfunction [out1, out2, ...] = funname(in1,in2, ...)
esempio: nell’editor square.mfunction f = square(x)f = x.^2;
Nella command window si richiama la funzione@ square per creare una funzione handle per square. Si può usare questo metodo quando la f(x) è complicata o se si intende riutilizzare la funzione.
NOTA BENE attenzione ai path!
![Page 7: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/7.jpg)
MINIMIZZAZIONE NON VINCOLATA: fminunc
• Scopo: trovare il minimo di una funzione multivariabile non vincolata:
– x è un vettore ed f(x) è una funzione che ritorna uno scalare
• Sintassi:
![Page 8: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/8.jpg)
[x,fval,exitflag,output,grad,hessian] = fminunc(fun,x0,options)
INPUT• x0 è punto iniziale di ricerca, scalare, vettore o matrice• fun è la funzione obiettivo • options: crea attraverso il comando optmiset parametri di
ottimizzazione (numero di iterazioni, tolleranza dell’algoritmo,ecc..)
OUTPUT• fval valore della funzione obiettivo nel punto di minimo • Exitflag: descrive le condizioni di uscita• Output: genera una struttura di uscita che riporta informazioni
circa l’operazione di ottimizzazione• grad: ritorna il valore del gradiente di fun alla soluzione x• hessian: ritorna il valore dell’hessiano di fun alla soluzione x
![Page 9: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/9.jpg)
Input>>x = fminunc (myfun,x0)
x0=scelta iniziale;myfun è una Matlab function, ovvero:
x = fminunc(@myfun,x0)
function f = myfun(x)f = ...
![Page 10: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/10.jpg)
>>x = fminunc (myfun,x0,options)
Options:
Sintassi:options=optimset('param1',value1,'param2',value2,...)
Input
![Page 11: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/11.jpg)
Algoritmi utilizzati da fminunc
• Per default fminunc utilizza algoritmi :– Quasi Newton method con BFGS, steepest
discendentmedium scale: se poniamo nell’opzione LargeScale ‘off’ nel comando optimset
– Trust region method, Newton method e gradiente coniugato
large scale: se l’opzione GradObj è ‘on’ nel comando optimset
![Page 12: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/12.jpg)
![Page 13: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/13.jpg)
![Page 14: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/14.jpg)
Output
• x: valore ottimo (soluzione del problema)• fval: valore della funzione nel punto ottimo• exitflag: descrive le condizioni di uscita:
» se>0 la funzione converge ad una soluzione x» se=0 l’algoritmo non è in grado di ottenere una
soluzione nel numero di iterazioni stabilite» se <0 la funzione non converge alla soluzione x
• output: informazioni circa il processo di ottimizzazione » Iterations: numero di iterazione dell’algoritmo» funcCount : numero di valutazioni della funzione » Algorithm: algoritmo usato » Step-size » Firstorderopt: norma del gradiente nella soluzione
![Page 15: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/15.jpg)
![Page 16: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/16.jpg)
Esempio 1: Unconstrained Minimization
• Problema di minimizzazione della funzione:
• Passi da effettuare:– Generare un M-file che ritorni il valore della
funzione – Invocare la routine di risoluzione fminunc
![Page 17: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/17.jpg)
Step 1: scrittura dell’M-file myfun.m
Step 2: nella command window chiamo fminunc
>>x0=[1 1];>>[x,fval] = fminunc(@myfun,x0)
![Page 18: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/18.jpg)
Quasi_Newton
![Page 19: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/19.jpg)
![Page 20: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/20.jpg)
• Minimizziamo con un altro algoritmo: • Modifichiamo l’M-file:myfun.m fornendo gradiente
• Creazione di una struttura options
![Page 21: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/21.jpg)
trust-region Newton
![Page 22: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/22.jpg)
Limiti dell’ fminunc
• La funzione da minimizzare deve essere continua
• Potrebbe determinare soluzioni locali
• Ottimizzazione di funzioni di variabili reali: x deve essere una variabile reale
![Page 23: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/23.jpg)
• Trova il minimo di una funzione obiettivo multivariabile in assenza di vincoli SENZA CALCOLARE GRADIENTEALGORITMO: Nelder-Mead simplex direct search
• Sintassi:
MINIMIZZAZIONE NON VINCOLATAfminsearch
![Page 24: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/24.jpg)
– x= fminsearch (fun,x0), partendo da un punto di ricerca iniziale tenta di trovare il minimo di fun
– fun è una funzione descritta nella linea di comando, dal comando inline o da un M.file
– x= fminsearch (fun,x0,options), tenta la minimizzazione usando il parametro options. Usare optimset per stabilire le opzioni dell’algoritmo
![Page 25: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/25.jpg)
• [x,fval]=fminsearch(…) , riporta in fval il valore il valore della funzione obiettivo fun nel valore x
• [x,fval,exitflag]=fminsearch(…), riporta un valoreexitflag che descrive le condizioni di uscita di fminsearch
• [x,fval,exitflag,output]=fminsearch(…), riporta in output le informazioni inerenti il processo di ottimizzazione.
• [x,fval,exitflag,output]=fminsearch(…P1,P2…), dove P1… Pn sono parametri della funzione obiettivo
![Page 26: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/26.jpg)
Input arguments• fun: funzione da minimizzare
– fun può essere:• M.file:
con myfun Matlab function
• Funzione anonima nella linea di comando
• Options: valgono le stesse considerazioni per fminunc….. ma i più usati sono:
![Page 27: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/27.jpg)
Options
![Page 28: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/28.jpg)
Output Arguments
![Page 29: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/29.jpg)
Esempio 1
Minimizzazione della funzione di Rosenbrock: x0=[-1.2, 1]
Presenta minimo (1,1) ed fval=0
-Scriviamo l’M.file: function f= myfun(x)f=
-Passiamo dall’M.file alla routine di ottimizzazione:[x,fval] = fminsearch (f , [-1.2, 1] )
OPPURELa definiamo nella command window
100*(x(2)-x(1)^2)^2+(1-x(1))^2;
![Page 30: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/30.jpg)
![Page 31: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/31.jpg)
Esempio 2• Se la funzione obiettivo è parametrica:
>>f= inline('100*(x(2)-x(1)^2)^2+(a-x(1))^2','x','a')>>a=2;>>options= optimset ('Display','iter','TolX',1e-8);>>[x,fval]= fminsearch (f,[1 2],options,a)
![Page 32: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/32.jpg)
Vantaggi e limiti
• Vantaggi: – se f(x) è discontinua, fminsearch è un
comando robusto
• Svantaggi: – è in genere meno efficiente di fminunc per
problemi di ottimizzazione di ordine maggiore di 2
– Ottimizzazione di funzioni di variabili reali: x deve essere una variabile reale
![Page 33: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/33.jpg)
MINIMIZZAZIONE VINCOLATAMINIMIZZAZIONE VINCOLATAfminconfmincon
dove x; b; beq; lb; ub sono vettori, A; Aeq sono matrici; c(x) e ceq(x) sono funzioni vettoriali (cioe’ ad ogni vettore x associano un vettore) e f e’ una funzione scalare (cioe’ ad ogni vettore x associaun numero reale). Le funzioni f(x), c(x) e ceq(x) possono esserenon lineari.
![Page 34: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/34.jpg)
sintassi input
x=fmincon(fun,x0,A,b) partendo da x0 cerca il minimo x della funzione funsotto i vincoli lineari A*x <= b .x0 può essere uno scalare, un vettore o una matrice.
x=fmincon(fun,x0,A,b,Aeq,beq)vincoli lineari Aeq*x = beq e anche A*x <= b.
(A=[ ] and B=[ ] se non ci sono disuguaglianze)
min F(x) vincoli: A*x <= b, Aeq*x= beqC(x) <= 0, Ceq(x) = 0 LB <= x<= UB
![Page 35: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/35.jpg)
x=fmincon(fun,x0,A,b,Aeq,beq,LB,UB)Definisce un set di lower e upper per la variabile x,di modo che la soluzione sia trovata nel range
LB <= x <= UB. Porre LB(i) = -Inf se x(i) é illimitata inferiormente; porre UB(i) = Inf se x(i) é illimitata superiormente.
x = fmincon(fun,x0,A,b,Aeq,beq,LB,Ub,nonlcon,options)se ci sono anche dei vincoli non lineari definiti in
nonlcon e delle opzioni specificate con optimset.
min F(x) vincoli: A*x <= b, Aeq*x= beqC(x) <= 0, Ceq(x) = 0 LB <= x<= UB
![Page 36: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/36.jpg)
sintassi output
[x,fval] = fmincon(...) ritorna il valore della funzione Obiettivo raggiunto
[x,fval,exitflag] = fmincon(...)[x,fval,exitflag,output] = fmincon(...)[x,fval,exitflag,output,lambda] = fmincon(...)Ritorna una struttura lambda i cui campi contengonoI moltiplicatori di Lagrange alla soluzione x[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(...)
![Page 37: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/37.jpg)
-active-set (DEFAULT)
-interior-point
-trust-region-reflective SE SPECIFICATOMA BISOGNA DARE IL JACOBIANO
ALGORITMI
![Page 38: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/38.jpg)
Esempio 1
Minimizzare f(x)=-x1x2x3
x0 = [10; 10; 10]Vincolo: 1 2 30 2 2 72x x x≤ + + ≤
1.Scrivo m file myfun_vin.m
function f = myfun_vin(x)f = -x(1) * x(2) * x(3);
![Page 39: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/39.jpg)
min F(x) vincoli: A*x <= b, Aeq*x= beq C(x) <= 0, Ceq(x) = 0 LB <= x<= UB
2. Riscrivo il vincolo riportandolo a due minorazioni
1 2 30 2 2 72x x x≤ + + ≤ 1 2 3
1 2 3
2 2 02 2 72
x x xx x x− − − ≤+ + ≤
In questo modo posso formulare i due vincoli, entrambi lineari, come
A=[-1 -2 -2; 1 2 2];b=[0;72];
A*X <= b
![Page 40: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/40.jpg)
>> A=[-1 -2 -2;1 2 2];>> b=[0;72];>> x0 = [10; 10; 10]; % Starting guess at the solution>> [x,fval] = fmincon(@myfun_vin,x0,A,b)
3 . Chiamo routine fmincon dalla command window
![Page 41: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/41.jpg)
Esempio 2
C=10; V=6; X0=[1 1 1];
Mfile nlcon.m per il vincolo non lineare
function [C,Ceq]=nlcon(x)C=[ ];Ceq=[x(1)*x(2)*x(3)-6];
min F(x) vincoli: A*x <= b, Aeq*x= beq C(x) <= 0, Ceq(x) = 0 LB <= x<= UB
![Page 42: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/42.jpg)
>>[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(inline('2*10*(x(1)*x(2)+x(1)*x(3)+x(2)*x(3))‘,’x’),[1;1;1],[ ],[ ],[ ],[ ],[-Inf;-Inf;-Inf],[Inf;Inf;Inf],@nlcon)
![Page 43: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/43.jpg)
![Page 44: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/44.jpg)
Esempio 3
![Page 45: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/45.jpg)
M-files:
Command window
![Page 46: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/46.jpg)
Risoluzione di sistemi di equazioni
• fsolve e fzero:
fsolve : risoluzione di sistemi non lineari di equazioni: con x vettore e F(X) che ritorna un valore vettoriale (determinazione delle radici (zero) di un sistema non lineare di equazioni)
Sintassi
![Page 47: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/47.jpg)
Input Argument• fun: sistema di equazioni non lineari da risolvere:
accetta un vettore x e ritorna un vettore F, equazioni non lineari valutate in x. fun può essere richiamata da :
• M.file:• funzione anonima:
• Jacobiano:
– in tal modo la funzione fun richiama in un secondo output il valore della matrice J in x.
![Page 48: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/48.jpg)
Output Arguments• exitflag:
Caratteristiche Caratteristiche delldell’’algoritmo algoritmo utilizzatoutilizzato
![Page 49: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/49.jpg)
• Output:Informazioni circa Informazioni circa il processo di il processo di ottimizzazioneottimizzazione
Algoritmo• Per default viene utilizzato Trust-region dogleg.
• Alternativamente, si puo’ scegliere Levenberg-Marquardt oppure Gauss-Newton.
![Page 50: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/50.jpg)
Esempio 1
• Sistema di equazioni in 2 incognite:
• Risolviamo in x:
– Scriviamo un M.file:
– Routine di ottimizzazione:
xx00=[=[--5,5,--5]5]
![Page 51: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/51.jpg)
Esempio 2• Trovare una matrice X tale che:
con x0=[1,1;1,1] (matrice)
• Scrittura dell’M.file:
• Invochiamo la routine di ottimizzazione:
x= fval=
exitflag=1
![Page 52: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/52.jpg)
Limiti
• Le funzioni del sistema devono essere continue
• Le variabili devono essere reali
• Fsolve potrebbe convergere ad un puntoche non e’ uno stazionario; in tal caso converrebbe variare le condizioni iniziali.
![Page 53: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/53.jpg)
fzerofzero• Soluzioni di una funzione continua di una
variabile• Sintassi:
• Descrizione: – x=fzero(fun,xo), determina lo zero di fun vicino ad xo,
se xo è uno scalare. fun è una funzione descritta da M.file o da una funzione anonima. Il valore xdeterminato da fzero è vicino al punto per cui la funzione fun cambia segno, o NaN se la ricerca non ammette risultato.
![Page 54: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/54.jpg)
Input arguments• fun: funzione da risolvere
– M.file richiamata nella routine dal comando @
con
– Attraverso una funzione anonima:
– Options: cambiando i valori attraverso il comando optimiset…. Ovvero:
![Page 55: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/55.jpg)
Options
![Page 56: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/56.jpg)
Output arguments
![Page 57: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/57.jpg)
Esempi• Calcolare il valore di π determinando lo zero
della funzione seno vicino al punto 3
• Trovare lo zero della funzione coseno nell’intervallo [1 2]
![Page 58: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/58.jpg)
• Scriviamo un M.file:
• Per calcolare lo zero vicino a 2 :
• Dal momento che questa è una funzione polinomiale, è possibile usare il comando roots ([1 0-2 5]), che determina lo stesso zero reale e coppie di zero coniugate
Trovare lo zero della funzione:
![Page 59: Argomento: introduzione allapiattaformaMatlab. Risoluzione ...unina.stidue.net/Identificazione e Controllo Ottimo/Materiale... · Definizione funzione obiettivo in Matlab Definizione](https://reader035.vdocuments.mx/reader035/viewer/2022062223/5c65707809d3f2ad6e8ca15e/html5/thumbnails/59.jpg)
Limiti
• Il comando è in grado di trovare un punto dove la funzione cambia segno.
• Se la funzione è continua, tale punto è anche un punto per cui la funzione si avvicina al suo zero
• Se la funzione non è continua, il comando trova punti di discontinuità invece cha la soluzione.
• Inoltre, la funzione determina lo zero come punto di intersezione di fun con l’asse x. Punti per cui la funzione tocca l’asse, ma non lo intercetta non sono considerati zero. Esempio la funzione x^2 è una parabola che tocca l’asse x nello zero. Non attraversando l’asse x, il punto non viene visto come soluzione.