Sunteți pe pagina 1din 15

Lucrarea nr.

Toolbox-ul OPTIMIZATION

Toolbox-ul OPTIMIZATION al MATLAB conine o serie de funcii care realizeaz


minimizarea (sau maximizarea) unor funcii neliniare generale. In Tabelul 1 sunt prezentate
cteva dintre funciile disponibile n acest Toolbox pentru rezolvarea problemelor de
minimizare.

Tabelul 1
Tip Formularea problemei Funcia
problem
Minimizare min f (x ) | x 1 x x 2 fminbnd
scalar
Minimizare min f ( x ) fminunc,
fr fminsearch
restricii
Minimizare f (x ) | c( x ) 0, ceq (x ) 0 fmincon
cu restricii min
A x b, Aeq x beq, l x u

Majoritatea rutinelor de optimizare necesit definirea unui fiier M-file care conine funcia ce
urmeaz s fie minimizat. Sunt tratate separat problemele de dimensiuni mari (Large Scale) i
problemele de dimensiune medie.

In continuare sunt descrise funcii din Tabelul 1.

fminbnd
Scopul
Determin minimul unei funcii de o variabil ntr-un interval fixat
min f ( x) | x1 x x 2

Sintaxa
x = fminbnd(fun,x1,x2)
x = fminbnd(fun,x1,x2,options)
[x,fval] = fminbnd(...)
[x,fval,exitflag] = fminbnd(...)
[x,fval,exitflag,output] = fminbnd(...)

Descriere
x = fminbnd(fun,x1,x2) returneaz o valoare x care este un minim local al funciei
descris n fun (de obicei un M-file) n intervalul x1<x<x2. Funcia fun trebuie s returneze
un scalar.

x = fminbnd(fun,x1,x2,options) realizeaz minimizarea cu parametrii de


optimizare specificai n structura options.
[x,fval] = fminbnd(...) returneaz valoarea funciei obiectiv, fval, pentru soluia
x.

1
Lucrarea nr. 7

[x,fval,exitflag] = fminbnd(...) returneaz o valoare exitflag care


descrie condiia de ieire a funciei fminbnd.

[x,fval,exitflag,output] = fminbnd(...) returneaz o structur output


care conine informaii despre optimizare .

Argumente
fun funcia de minimizat
options opiuni ale parametrilor de optimizare; fminbnd utilizeaz urmtoarele
structuri:
Display - nivelul de afiare. off nu afieaz ieirea; iter afieaz ieirea dup
fiecare iteraie; final afieaz numai ieirea final;
MaxFunEvals - numrul maxim de evaluri ale funciei;
MaxIter - numrul maxim de iteraii;
TolX - tolerana de terminare pentru x;
exitflag descrie condiia de ieire:
> 0 funcia a convers la soluia x;
0 numrul maxim de evaluri ale funciei sau iteraii a fost atins;
< 0 funcia nu a convers la o soluie;
output o structur ale crei cmpuri conine informaii despre optimizare:
output.iterations - numrul de iteraii efectuate;
output.algorithm - algoritmul utilizat;
output.funcCount - numrul de evaluri ale funciei.

Algortitmul
Se bazeaz pe metoda de cutarea a seciunii de aur i pe interpolarea parabolic.
Limitri
Funcia de minimizat trebuie s fie continu;
Rezultatul este un minim local;
fminbnd trateaz variabile reale.

Exemplu
Determinarea minimului functiei f(x) = (x-3)2-1 in intervalul (0, 5)

Pasul 1: Se scrie un fisier M


function f = objfun2(x)
f = (x-3).^2-1;

Pasul 2: Se apeleaza rutina de optimizare


x=fminbnd('objfun2',0,5)
Rezulta solutia
x = 3

2
Lucrarea nr. 7

fminunc
Scopul
Determin minimul unei funcii de mai multe variabile, fr restricii
min f ( x )

Sintaxa
x = fminunc(fun,x0)
x = fminunc(fun,x0,options)
x = fminunc(fun,x0,options,P1,P2,...)
[x,fval] = fminunc(...)
[x,fval,exitflag] = fminunc(...)
[x,fval,exitflag,output] = fminunc(...)
[x,fval,exitflag,output,grad] = fminunc(...)
[x,fval,exitflag,output,grad,hessian]=fminunc(...)
Descriere
fminunc determin minimul unei funcii scalare de mai multe variabile, pornind de la o
estimare iniial.
x = fminunc(fun,x0) pornete de la punctul x0 i determin un minim local x al
funciei descris n fun. x0 poate fi un scalar, un vector sau o matrice.

x = fminunc(fun,x0,options) realizeaz minimizarea cu parametrii de optimizare


specificai n structura options.
Parametrii de optimizare pot fi Display, TolX, TolFun, DerivativeCheck,
Diagnostics, GradObj, HessPattern, LineSearchType, Hessian,
HessUpdate, MaxFunEvals, MaxIter, DiffMinChange, DiffMaxChange,
LargeScale, MaxPCGIter, PrecondBandWidth, TolPCG, TypicalX.
Se utilizeaz opiunea GradObj pentru ca fun s poat returna dou argumente de ieire, unde
al doilea argument, este derivata parial de ordinul I a funciei n x.
Se utilizeaz opiunea Hessian pentru ca fun s poat returna trei argumente de ieire,
unde al doilea argument este derivata parial a funciei, n x, iar al treilea argument este
derivata parial de ordinul 2 a funciei (hessianul) n x.
x = fminunc(fun,x0,options,P1,P2,...) trece parametrii P1, P2, etc. direct
n funcia fun.
[x,fval] = fminunc(...) returneaz valoarea funciei obiectiv, fval, pentru soluia
x.
[x,fval,exitflag] = fminunc(...) returneaz o valoare exitflag care
descrie condiia de ieire.
[x,fval,exitflag,output] = fminunc(...) returneaz o structur output
care conine informaii despre optimizare .
[x,fval,exitflag,output,grad] = fminunc(...) returneaz n grad
valoarea gradientului funciei fun pentru soluia x.

[x,fval,exitflag,output,grad,hessian]=fminunc(...)
returneaz n hessian valoarea hessianului funciei fun pentru soluia x.

3
Lucrarea nr. 7

Argumente
fun funcia de minimizat
options opiuni ai parametrilor de optimizare. Valorile acestor parametri pot fi atribuite
sau modificate utiliznd funcia optimset. Unii parametri sunt aplicabili pentru toi
algoritmii, iar unii sunt relevani numai cnd se utilizeaz tehnici de optimizare pentru probleme
de dimensiuni mari:
LargeScale - se utilizeaz (dac este posibil) tehnici de optimizare pentru probleme
de dimensiuni mari cnd este 'on'.
Parametrii utilizai de tehnicile de optimizare pentru problemele de dimensiuni medii i pentru
cele de dimensiuni mari sunt:
Diagnostics tiprete informaii despre funcia de minimizat t;
Display - nivelul de afiare. 'off' nu afieaz ieirea; 'iter' afieaz ieirea
dup fiecare iteraie; 'final' afieaz numai ieirea final;
GradObj gradientul funciei obiectiv definit de utilizator. Gradientul trebuie s fie
furnizat pentru tehnicile de optimizare ale problemelor de dimensiuni mari. Este opional
pentru celelalte probleme;
MaxFunEvals - numrul maxim de evaluri ale funciei;
MaxIter - numrul maxim de iteraii;
TolFun - tolerana de terminare pentru valoarea funciei;
TolX - tolerana de terminare pentru x.
Parametrii utilizai numai de tehnicile de optimizare pentru problemele de dimensiuni mari sunt:
Hessian Hessianul funciei obiectiv, definit de utilizator;
HessPattern Modelul de matrice rar al Hessianului pentru diferene finite;
MaxPCGIter Numrul maxim de iteraii PCG (gradient conjugat cu
precondiionare);
PrecondBandWidth Limea benzii superioare de precondiionare pentru PCG.
Implicit se folosete precondiionare diagonal (limea benzii superioare este 0);
TolPCG Tolerana de terminare pentru iteraia PCG;
TypicalX Valori x tipice .
Parametrii utilizai numai de tehnicile de optimizare pentru problemele de dimensiuni medii
sunt:
DerivativeCheck Comparaia valorilor gradientului introdus de utilizator cu
derivatele obinute;
DiffMaxChange Modificarea maxim a variabilelor pentru gradienii obinui prin
diferene finite;
DiffMinChange Modificarea minim a variabilelor pentru gradienii obinui prin
diferene finite;
LineSearchType Alegerea algoritmului de cutare liniar.
exitflag descrie condiia de ieire:
> 0 funcia a convers la soluia x;
0 numrul maxim de evaluri ale funciei sau iteraii a fost atins;
< 0 funcia nu a convers la o soluie.
output o structur ale crei cmpuri conine informaii despre optimizare:
output.iterations - numrul de iteraii efectuate;
output.algorithm - algoritmul utilizat;

4
Lucrarea nr. 7

output.funcCount - numrul de evaluri ale funciei;


output.cgiterations numrul de iteraii pentru PCG;
output.stepsize mrimea pasului final;
output.firstorderopt norma gradientului pentru
soluia x.

Algortitmul
Pentru probleme de dimensiuni mari se utilizeaz procedura regiunii de ncredere. Fiecare
iteraie implic aproximarea soluiei unui sistem liniar mare folosind gradieni conjugai cu
precondiionare.
Pentru probleme de dimensiuni medii se folosete metoda BFGS. Formula DFP, care
aproximeaz inversa hessianului este utilizat cnd opiunea HessUpdate este setat
'dfp'. O metod a pasului descendent este utilizat cnd opiunea HessUpdate este setat
'steepdesc'.

Limitri
Funcia de minimizat trebuie s fie continu.
Rezultatul este un minim local.

Exemplu

Determinarea minimului functiei f ( x ) e x1 4 x 12 2 x 22 4x 1 x 2 2 x 2 1

Pasul 1: Se scrie un fiier M


function f=objfun1(x)
f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

Pasul 2: Se apeleaza rutina de optimizare


x0=[-1 1]; %estimarea initiala
options=optimset('LargeScale','off');
[x,fval,exitflag,output]=fminunc('objfun1',x0,options);

Rezulta solutia
x = 0.5000 -1.0000
output =
iterations: 7
funcCount: 40
stepsize: 1
firstorderopt: 8.199477441775223e-004
algorithm: 'medium-scale: Quasi-Newton line search'

5
Lucrarea nr. 7

fmincon
Scopul
Determin minimul unei funcii de mai multe variabile, n prezena restriciilor:
f (x ) | c( x ) 0, ceq (x ) 0
min
A x b, Aeq x beq, l x u
Sintaxa
x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon, options)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon, options, P1,P2,)
[x,fval] = fmincon(...)
[x,fval,exitflag] = fmincon(...)
[x,fval,exitflag,output] = fmincon(...)
[x,fval,exitflag,output,lambda] = fmincon(...)
[x,fval,exitflag,output,lambda,grad] = fmincon(...)
[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(...)

Descriere
x = fmincon(fun,x0,A,b) pornete de la punctul x0 i determin un minim x al
funciei descris n fun supus la restriciile de inegalitate A*x <= b. Argumentul x0 poate fi
un scalar, un vector sau o matrice.
x = fmincon(fun,x0,A,b,Aeq,beq) minimizeaz fun n prezena restriciilor de
egalitate Aeq*x = beq i a celor de inegalitate A*x <= b Se pune A=[] i b=[] dac
nu exist restricii de inegalitate.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) definete un set de limite inferioare i
superioare pentru variabilele de proiectare astfel nct soluia este ntotdeauna n intervalul
lb<=x<=ub. Se pune Aeq=[] i beq=[] dac nu exist restricii de egalitate.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) rezolv problema de
minimizarea supus la restricii de inegaliti neliniare c(x) sau egaliti neliniare ceq(x)
definite n nonlcon. Rutina fmincon optimizeaz pentru c(x) <= 0 i ceq(x) = 0.
Se pune lb=[] i/sau ub=[] dac nu exist limite.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub, nonlcon,options) realizeaz
minimizarea cu parametrii de optimizare specificai n structura options.
x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,) trece
parametrii P1, P2, etc. direct n funcia fun i nonlcon.
[x,fval] = fmincon(...)returneaz valoarea funciei obiectiv, fval, pentru soluia
x.
[x,fval,exitflag] = fmincon(...)returneaz o valoare exitflag care descrie
condiia de ieire.
[x,fval,exitflag,output] = fmincon(...)returneaz o structur output
care conine informaii despre optimizare.
[x,fval,exitflag,output,lambda] = fmincon(...) returneaz o structur
lambda ale crei cmpuri conin multiplicatorii Lagrange pentru soluia x.

6
Lucrarea nr. 7

[x,fval,exitflag,output,lambda,grad] = fmincon(...) returneaz n


grad valoarea gradientului funciei fun pentru soluia x.
[x,fval,exitflag,output,lambda,grad,hessian]= fmincon(...)
returneaz n hessian valoarea hessianului funciei fun pentru soluia x.

Argumente
fun funcia de minimizat.
Se utilizeaz opiunea GradObj 'on' pentru ca fun s poat returna dou argumente de ieire,
unde al doilea argument, este derivata parial de ordinul I a funciei n x.
Se utilizeaz opiunea Hessian 'on' pentru ca fun s poat returna trei argumente de
ieire, unde al doilea argument este derivata parial a funciei, n x, iar al treilea argument este
derivata parial de ordinul 2 al funciei (hessianul) in x.
nonlcon Funcia care calculeaz restriciile de inegalitate neliniare c(x)<=0 i restriciile
de egalitate neliniare ceq(x)=0.
options opiuni ale parametrilor de optimizare. Valorile acestor parametri pot fi atribuite
sau modificate utiliznd funcia optimset. Unii parametri sunt aplicabili pentru toi
algoritmii, iar unii sunt relevani numai cnd se utilizeaz tehnici de optimizare pentru probleme
de dimensiuni mari.
LargeScale - se utilizeaz (dac este posibil) tehnici de optimizare pentru probleme
de dimensiuni mari cnd este 'on' i tehnici de optimizare pentru probleme de dimensiuni
medii cnd este 'off'.
Parametrii utilizai de tehnicile de optimizare pentru problemele de dimensiuni medii i pentru
cele de dimensiuni mari sunt:
Diagnostics tiprete informaii despre funcia de minimizat t;
Display - nivelul de afiare. off nu afieaz ieirea; opiunea iter afieaz
ieirea dup fiecare iteraie, iar final afieaz numai ieirea final;
GradObj gradientul funciei obiectiv definit de utilizator Gradientul trebuie s fie
furnizat pentru tehnicile de optimizare ale problemelor de dimensiuni mari. Este opional
pentru celelalte probleme;
MaxFunEvals - numrul maxim de evaluri ale funciei;
MaxIter - numrul maxim de iteraii;
TolFun - tolerana de terminare pentru valoarea funciei;
TolCon tolerana de terminare pentru nclcarea restriciei;
TolX - tolerana de terminare pentru x.
Parametrii utilizai numai de tehnicile de optimizare pentru problemele de dimensiuni mari sunt:
Hessian Hessianul funciei obiectiv, definit de utilizator ;
HessPattern Modelul de matrice rar al Hessianului pentru diferene finite;
MaxPCGIter Numrul maxim de iteraii PCG (gradient conjugat cu
precondiionare);
PrecondBandWidth Limea benzii superioare de precondiionare pentru PCG.
Implicit se folosete precondiionare diagonal (limea benzii superioare este 0);
TolPCG Tolerana de terminare pentru iteraia PCG;
TypicalX Valori x tipice.
Parametrii utilizai numai de tehnicile de optimizare pentru problemele de dimensiuni medii
sunt:

7
Lucrarea nr. 7

DerivativeCheck Compar valorile gradientului introdus de utilizator cu


derivatele obinute;
DiffMaxChange Modificarea maxim a variabilelor pentru gradienii obinui prin
diferene finite;
DiffMinChange Modificarea minim a variabilelor pentru gradienii obinui prin
diferene finite;
LineSearchType Alegerea algoritmului de cutare liniar.
exitflag descrie condiia de ieire:
> 0 funcia a convers la soluia x;
0 numrul maxim de evaluri ale funciei sau iteraii a fost atins;
< 0 funcia nu a convers la o soluie.
lambda o structur care conine multiplicatorii Lagrange pentru soluia x:
lambda.lower pentru limitele inferioare lb;
lambda.upper pentru limitele superiore ub;
lambda.ineqlin pentru inegaliti liniare;
lambda.eqlin pentru egaliti liniare;
lambda.ineqnonlin pentru inegaliti neliniare;
lambda.eqnonlin pentru egaliti neliniare.
output o structur ale crei cmpuri conine informaii despre optimizare:
output.iterations - numrul de iteraii efectuate;
output.algorithm - algoritmul utilizat;
output.funcCount - numrul de evaluri ale funciei;
output.cgiterations numrul de iteraii pentru PCG;
output.stepsize mrimea pasului final;
output.firstorderopt norma gradientului pentru
soluia x.

Algortitmul
Pentru probleme de dimensiuni mari se utilizeaz procedura regiunii de ncredere. Fiecare
iteraie implic aproximarea soluiei unui sistem linear mare folosind metoda gradientului
conjugat cu precondiionare.
Pentru probleme de dimensiuni medii se folosete metoda programrii ptratice secveniale. La
fiecare iteraie se rezolv o subproblem de programare ptratic. O estimare a hessianului
lagrangeanului este actualizat la fiecare iteraie folosind formula BFGS.

Limitri
Funcia de minimizat i restriciile trebuie s fie continue.
Rezultatul este un minim local.
Funcia obiectiv i restriciile trebuie s returneze valori reale.

Exemplu

Determinarea minimului functiei f ( x ) e x1 4 x 12 2 x 22 4x 1 x 2 2 x 2 1
x 1 x 2 x 1 x 2 1.5
supus la restriciile:
x 1 x 2 10 0

Pasul 1: Se scrie un M-file pentru restricii:

8
Lucrarea nr. 7

function [c, ceq]=confun1(x)


% restrictii neliniare de inegalitate
c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
% restrictii neliniare de egalitate
ceq=[];

Pasul 2: Se apeleaza rutina de optimizare:


x0=[-1 1]; %estimarea initiala
options=optimset('LargeScale','off');
[x,fval]=fmincon('objfun1',x0,[],[],[],[],[],[],'confun1',options);

Rezulta soluia:
x =
-9.547405025104272e+000 1.047405025104273e+000
fval =
2.355037962417515e-002

Aplicaie: Problem de sintez optimal a unei bobine

Se consider o bobin multistrat cu seciune transversal rectangular i miez din aer.


Geometria acestui dispozitiv simplu este descris prin raza a, lungimea b, adncimea c i
numrul de spire N; aceste patru variabile constituie vectorul parametrilor de proiectare x. Se
consider o repartiie uniform a curentului n seciunea transversal (model la joas frecven)
i se neglijeaz distana de izolaie dintre spire i dintre straturi.

b
a

Fig. 1 Modelul bobinei

Parametrul global care identific bobina este inductana L. Exist o serie de formule de
calcul aproximativ al inductanei L, cea mai simpl fiind formula lui Middendorf:

0.8a 2 N 2 / b
L
9 6a / b 10c / b
unde L este exprimat n H i parametrii geometrici sunt exprimai n inch (1 inch = 25.4mm).
Pentru determinarea formei optime a unei astfel de bobine pot fi formulate o serie de
probleme dependente de funcia obiectiv i de restricii. Problema clasic ce a fost prima dat
formulat de Maxwell este urmtoarea: s se determine vectorul x = (a,b,c,N) astfel nct L(x)
s fie maxim pentru o lungime l i o seciune S ale conductorului de bobinaj date. Deoarece L, l
= 2Na i S =bc/N sunt funcii neliniare de x, aceasta este o problem de optimizare neliniar.

9
Lucrarea nr. 7

Aplicaie numeric: l = 10 m i S = 1 mm2.

Cazul 1. Impunnd lungimea l i seciunea S, se pot exprima c i N ca funcii de a i b. Astfel,


problema poate fi redus la maximizarea fr restricii a inductanei L ca funcie de dou
variabile. Funcia L are un maxim pentru 2a = 3b i b = c; valorile optime pentru parametrii
de proiectare sunt prezentate n tabelul 1.

Cazul 2. Se rezolv problema ca fiind o problem de maximizare cu restricii a funciei L de


patru variabile. Se utilizeaz funcia Matlab fmincon. Valorile optime pentru parametrii de
proiectare sunt prezentate n tabelul 1.
Tabelul 1
Caz L[H] a[mm] b[mm] c[mm] N[spire]
1 279.91 15.85 10.566 10.566 101
2 279.7 15.84 10.564 9.508 100

O alt problem de sintez poate fi formulat astfel: s se determine x = (a,b,c,N) astfel


nct lungimea conductorului de bobinaj l s fie minim pentru valori prescrise ale inductanei
L(x) i ale seciunii S a conductorului de bobinaj.

Sursa MATLAB bob_obj.m (funcia obiectiv)


function f=bob_obj(x)
% functia obiectiv
f=-0.8/2.54*(x(1)^2*(x(4)^2)/x(2))/(9+6*x(1)/x(2)+10*x(3)/x(2));

Sursa MATLAB bob_restr.m (restriciile problemei)


function [c, ceq]=bob_restr(x)
% restrictii neliniare de inegalitate
c=[];
% restrictii neliniare de egalitate
ceq=[2*pi*x(4)*x(1)-1e3;x(2)*x(3)/x(4)-1e-2];

Sursa MATLAB (m-file)


% Programul principal
x0=[1 1 1 10]; %estimarea initiala
options=optimset('LargeScale','off');
ub=[2 2 2 200];
[x,fval,exitflag,output]=fmincon('bob_obj',x0,[],[],[],[],[],ub,'bob_restr',option
s)

10
Lucrarea nr. 7

Aplicaie: Sinteza optimal a unui inductor cu flux magnetic transversal

Pentru obinerea unui randament electric ridicat al unui sistem de nclzire n flux
magnetic transversal trebuie luai n considerare o serie de parametri. Este necesar analizarea
efectului ntrefierului, Fig. 2, dimensiunilor crestturii, pasului polar, grosimii benzii i a
frecvenei asupra randamentului.

Fig. 2. Geometria unui inductor cu flux transversal

Se propune o problem de sintez optimal a unui inductor cu flux magnetic transversal care
urmrete obinerea unui randament electric maxim. Funcia obiectiv este reciproca
randamentului electric al sistemului definit astfel:

Pb

Pb p

unde Pb este puterea indus n band i p sunt pierderile de putere activ, respectiv puterea
activ n inductor.
Variabilele de proiectare sunt frecvena de alimentare i urmtorii parametri geometrici
ai sistemului de nclzire n flux magnetic transversal: distana dintre crestturi, limea
ntrefierului, limea crestturii, nlimea crestturii
Restriciile impuse se refer la:
- limitele superioare i inferioare ale parametrilor geometrici;
- limita superioar a frecvenei de alimentare;
- valoarea densitii de curent n cresttur.

Aceast problem de optimizare cu restricii se transform ntr-o problem echivalent


de optimizare fr restricii prin metoda penalizrii interioare. n acest sens, se construiete o
nou funcie obiectiv, numit pseudo-funcie obiectiv, care are urmtoarea expresie:

(x, rp , rp' ) F(x) P(x)

unde: (x, rp , rp' ) este pseudo-funcia obiectiv;


rp, rp - factori de penalizare (scalari);
P(x) - funcia de penalizare, care are forma:

11
Lucrarea nr. 7

l m
'
P( x ) r
p 1 / g (x) r h (x)
j1
j p
k 1
k
2

Schema logic a metodei penalizrii interioare este prezentat n figura 3.

Fig. 3 - Schema logic a metodei penalizrii interioare

n problema considerat nu exist restricii de egalitate, deci nu se utilizeaz parametrul


de penalizare rp. Parametrul de penalizare rp ia valori pozitive, mari la nceput, ca apoi s
descreasc cu fiecare iteraie. Minimul pseudo-funciei obiectiv x, rp' se afl n domeniul
admisibil i converge ctre minimul lui F(x) pe msur ce parametrul rp descrete.

Pentru minimizarea funciei obiectiv se folosete funcia fminsearch.

12
Lucrarea nr. 7

Funcia obiectiv este calculat prin metoda elementului finit. Programul este scris n
MATLAB utiliznd faciliti ale Toolboxului PDE. S-a scris o funcie EVALUARE.M care are
ca parametri de intrare vectorul x al variabilelor de proiectare (dimensiunile geometrice ale
inductorului, frecvena de alimentare i densitatea de curent n cresttur) i ca parametri de
ieire randamentul sistemului i pseudo-funcia obiectiv. Randamentul este determinat n urma
calculului de cmp prin metoda elementului finit. La fiecare modificare a variabilelor de
proiectare care reprezint dimensiuni geometrice ale inductorului se genereaz o nou reea de
discretizare. Pentru ca funcia EVALUARE.M s poat fi inclus n procedura automat de
optimizare s-a procedat astfel:
- n Toolboxul PDE s-a reprezentat geometria sistemului TFIH pentru dimensiuni geometrice
arbitrar alese, s-au stabilit condiiile pe frontiere i in meniul Boundary s-a ales submeniul
Export Decomposed Geometry, Boundary Conds, operaie prin care s-a exportat
matricea geometriei i matricea condiiilor pe frontiere n spaiul de lucru MATLAB;
- pe structura matriceal existent s-a geometria parametrizat i cu funcia wbound se
creaz fiierul de tip M al condiiilor de frontier, apelate ulterior de funciile initmesh
i assempde.
Aceast procedur expus simplificat permite regenerarea automat a reelei de discretizare la
fiecare modificare a parametrilor geometrici i apoi rezolvarea problemei prin MEF.
Configuraia din Fig.2 a fost folosit ca un prim test pentru procedura de optimizare.
Variabilele problemei de optimizare i restriciile sunt:
x1=distana dintre crestturi
x2 = limea crestturii
x3 = nlimea crestturii
x4 = frecvena de alimentare

- 25 x1 700 mm
- 20 x3 300 mm
- 10 x4 50
- x5 1000 Hz

Rezultatele procedurii de optimizare aplicate pentru o band din aluminiu cu grosime de 1 mm


( = 0,034064 mm2/m) sunt prezentate n Tabelul 2.
Tabelul 2
Rezultatele optimizrii

x1 x2 x3 x4
[mm] [mm] [mm] [Hz]
Iniial 30 50 30 50 0.08
Optim 138 288 36 236 0.94

Sursa MATLAB (m-file)

options=optimset('MaxIter',25)
X=fminsearch(@evaluare,[30e-3 50e-3 30e-3 50],options)

Numrul de iteraii depinde de punctul iniial ales arbitrar dar situat n domeniul
admisibil definit de restricii. Pentru verificarea rezultatului obinut n urma optimizrii se

13
Lucrarea nr. 7

consider diferite puncte de pornire a algoritmului. Minimul obinut este unul local dar care din
punct de vedere ingineresc este acceptabil pentru problema studiat.

Sursa MATLAB (function m-file )


function [cost,eta]=evaluare(x)
% Functia obiectiv
x
if x(4)>1000
x(4)=1000;
end
x2=20e-3;
x1i=25e-3; x1s=700e-3; x2i=20e-3; x2s=300e-3;
x3i=10e-3; x3s=50e-3; x4s=1000;

strip2=0.5e-3;
miu0=4*pi*1e-7;
ndx=100;
ro=0.034064e-6;
dc=2e6; %densitatea de curent
c1=1/miu0;
c2=1/miu0;
c3=1/miu0;
c4=1/miu0;
c=strcat(num2str(c1),'!',num2str(c2),'!',num2str(c3),'!',num2str(c4));
y11=0;
x5=20e-3;
%restrictii
sumt=1e-7;
eps=2e-3;
%Coordonate puncte geometrie parametrizata
xa=0; ya=0;
xb=2*x(1)+2*x(2); yb=0;
xc=xb; yc=strip2;
xd=0; yd=yc;
xe=0;ye=strip2+x2+x(3)+x5;
xf=xb; yf=ye;
xg=x(1)/2; yg=strip2+x2+x(3);
xh=x(1)/2+x(2); yh=yg;
xi=xh; yi=strip2+x2;
xj=xg;yj=yi;
xk=3*x(1)/2+x(2); yk=yg;
xl=3*x(1)/2+2*x(2); yl=yg;
xm=xl; ym=yi;
xn=xk; yn=yi;

%Matrice geometrie
g(1,1:15)=2;
g(2,1)=xe; g(3,1)=xf;g(4,1)=ye;g(5,1)=yf;g(6,1)=0;g(7,1)=1;
g(2,2)=xi; g(3,2)=xj;g(4,2)=yi;g(5,2)=yj;g(6,2)=1;g(7,2)=2;
g(2,3)=xl; g(3,3)=xm;g(4,3)=yl;g(5,3)=ym;g(6,3)=1;g(7,3)=3;
g(2,4)=xm; g(3,4)=xn;g(4,4)=ym;g(5,4)=yn;g(6,4)=1;g(7,4)=3;
g(2,5)=xa; g(3,5)=xd;g(4,5)=ya;g(5,5)=yd;g(6,5)=0;g(7,5)=4;
g(2,6)=xd; g(3,6)=xe;g(4,6)=yd;g(5,6)=ye;g(6,6)=0;g(7,6)=1;
g(2,7)=xj; g(3,7)=xg;g(4,7)=yj;g(5,7)=yg;g(6,7)=1;g(7,7)=2;
g(2,8)=xg; g(3,8)=xh;g(4,8)=yg;g(5,8)=yh;g(6,8)=1;g(7,8)=2;
g(2,9)=xa; g(3,9)=xb;g(4,9)=ya;g(5,9)=yb;g(6,9)=4;g(7,9)=0;
g(2,10)=xn; g(3,10)=xk;g(4,10)=yn;g(5,10)=yk;g(6,10)=1;g(7,10)=3;
g(2,11)=xk; g(3,11)=xl;g(4,11)=yk;g(5,11)=yl;g(6,11)=1;g(7,11)=3;
g(2,12)=xb; g(3,12)=xc;g(4,12)=yb;g(5,12)=yc;g(6,12)=4;g(7,12)=0;
g(2,13)=xc; g(3,13)=xf;g(4,13)=yc;g(5,13)=yf;g(6,13)=1;g(7,13)=0;
g(2,14)=xh; g(3,14)=xi;g(4,14)=yh;g(5,14)=yi;g(6,14)=1;g(7,14)=2;
g(2,15)=xd; g(3,15)=xc;g(4,15)=yd;g(5,15)=yc;g(6,15)=1;g(7,15)=4;

14
Lucrarea nr. 7

% Initializare retea de discretizare


[pp,e,t]=initmesh(g);
%[pp,e,t]=refinemesh(g,pp,e,t);

xel=pp(1,:);
tau=max(xel);
hx=tau/ndx;
vol=x(2)*x(3);
pbob=ro*dc^2*vol*0.7;

a2=0;a3=0;a1=0; a4=2*pi*x(4)/ro*sqrt(-1);
a=strcat(num2str(a1),'!',num2str(a2),'!',num2str(a3),'!',num2str(a4));

f1=0; f2=dc; f3=-dc; f4=0;


f=strcat(num2str(f1),'!',num2str(f2),'!',num2str(f3),'!',num2str(f4));

% cf reprezinta matricea conditiilor pe frontiera


u=assempde('cftfih',pp,e,t,c,a,f);
% u reprezinta potentialul magnetic vector
x11=0:hx:tau;
uxy=tri2grid(pp,t,u,x11,y11);
dens=abs((-sqrt(-1)*2*pi*x(4)/ro.*uxy));
dpind=ro.*(abs(dens)).^2;
puters=trapz(x11,dpind);
puterea=puters*strip2;
% Randamentul electric
eta=puterea*2/(2*puterea+4*pbob)
% Pseudo-Functia obiectiv
cost=-eta+sumt*(1/(x(1)-x1i)+1/(x1s-x(1))+1/(x(2)-x2i)+1/(x2s-x(2))+1/(x(3)-
x3i)+1/(x3s-x(3)))+1e-4*1/(x4s-x(4))

15