Upload
mikula89
View
135
Download
1
Embed Size (px)
Citation preview
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 201
5. OPĆE NELINEARNO PROGRAMIRANJE (NLP).
METODE OPTIMIZACIJE n-DIMENZIONALNIH
PROBLEMA S OGRANIČENJIMA
- Područje NLP, određivanje optimuma nelinearnih n-
dimenzionalnih problema s ograničenjima, najzastupljenije je u
inženjerskoj (i drugoj) praksi jer je većina fizikalnih modela
nelinearna, kako u funkciji cilja tako i u danim ograničenjima.
Složenost ove kategorije problema očituje se ne samo u karakteru
funkcija cilja i ograničenja (često visoka nelinearnost), nego obično i u
velikom broju varijabli. Fizikalni model problema često ne postoji u
obliku gdje su funkcije cilja i ograničenja raspoložive u eksplicitnom
obliku kao funkcionalna ovisnost odziva sustava na ulazne varijable. Tada
su nužne numeričke simulacije odziva matematičkog modela (npr. sustav
parcijalnih diferencijalnih jednadžbi) koji često zahtijeva iterativno
rješavanje, prostornu diskretizaciju, numeričku integraciju po vremenu,
itd. Takav je slučaj primjerice kod statičke i dinamičke analize
mehaničkih komponenti, kada je potrebno primijeniti metodu konačnih
elemenata za diskretizaciju prostora (vidjeti primjer 4.7) i približno
rješavanje sustava parcijalnih diferencijalnih jednadžbi koji opisuje
ponašanje opterećene komponente. Ako je uz to riječ o materijalu s
nelinearnim konstitutivnim zakonom, vremenski promjenjivom
opterećenju ili pojavi plastifikacije, potrebna je i vremenska integracija
odziva te numerička integracija po domeni što znatno komplicira analizu.
Prostorna diskretizacija rezultira u velikom broju varijabli u čvorovima
prostorne mreže elemenata što uz nelinearnost i iterativno rješavanje
ukupno rješavanje problema čini numerički vrlo opsežnim i složenim.
Kod ovakvih problema optimizacija unosi dodatne vanjske petlje u
cijelom procesu, pri čemu su gore spomenute petlje numeričke simulacije
odziva fizikalnog modela ugniježđene unutar optimizacijskih petlji. Stoga
su kod ovakvih problema potrebni vrlo efikasni algoritmi i procesorski
vrlo jaka računala.
Zbog toga se u novije vrijeme u nekim slučajevima rješavanje
matematičkog modela barem u dijelu procesa pokušava raspregnuti od
procesa optimiranja, na način da se simulacija odziva matematičkog
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 202
modela radi funkcionalno raspregnuto od procesa optimizacije, izvan
'realnog procesorskog vremena' optimizacije. To se postiže na način da se
simulacija napravi za niz kombinacija ulaznih varijabli fizikalnog modela
za koje su poznati odzivi sustava, te odrede pripadni odgovarajući odzivi
generičkog aproksimacijskog modela. Takve poznate kombinacije ulaznih
veličina i pripadnih odziva koriste se za određivanje unutarnjih
parametara generičkog aproksimacijskog modela promatranog fizikalnog
sustava. Razlika poznatog odziva stvarnog sustava i odziva
aproksimacijskog modela (npr. neuralne mreže) za istu uzbudu daje
grešku čijom minimizacijom se određuju i poboljšavaju unutarnje
varijable aproksimacijskog modela (slično kao u primjeru 4.8).
Time se dolazi do zanimljivog dvosmjernog odnosa: u procesu
optimizacije mogu se koristiti funkcijski aproksimatori čije formiranje
(određivanje vrijednosti parametara generičkog modela za promatrani
problem) i samo predstavlja proces optimizacije (minimizacija greške).
Takav rezultirajući zamjenski (brzi) aproksimacijski model se onda
uključuje u optimizacijski proces umjesto (spore i složene) simulacije
odziva izvornog fizikalnog modela. Ovo u naravi znači da se numeričko
određivanje odziva sustava na različite moguće pobude (unutar dopustive
domene varijabli) ne vrši unutar procesa optimizacije nego unutar procesa
formiranja aproksimatora promatranog sustava, odnosno raspregnuto -
izvan procesa optimiranja.
Optimizacija kod stvarnih problema nije ostvariva 'pritiskom na dugme'
ili po principu 'crne kutije', nego zahtijeva kvalificirano praćenje i
interveniranje na više razina u samom procesu, te je stoga samo ekspert u
tom području može provoditi kvalitetno. Odabir konkretne metode
optimizacije, odabir početnih točki, odabir kontrolnih parametara metode,
i niz drugih elemenata zahtijevaju kako poznavanje konkretnog tehničkog
problema koji se rješava, tako i postupaka optimizacije, te uz to iziskuje i
određeno iskustvo. Vrlo često je nužan timski rad tih eksperata te
interaktivan i iterativan proces sinteze i analize.
Uz sve ove teškoće, primjena optimizacije kod ove kategorije problema
nudi i potencijalno najveću korist, jer se klasična optimizacija provodi
'iskustveno', 'intuitivno' i na temelju 'najboljih praksi i rješenja' unutar
inženjerskog naslijeđa u tom konkretnom tehničkom području. Upravo
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 203
zato ova kategorija problema ima posebnu težinu te nudi potencijalno
najveće iskorake u smislu određivanja optimalnih rješenja u praksi.
Postoje dva suštinski različita pristupa u optimizaciji kod problema s
ograničenjima. Prvi je izravno određivanje optimuma uz zadovoljavanje
ograničenja, a drugi je transformacija problema na način da se
zadovoljavanje ograničenja 'ugradi' u funkciju cilja, kada se
transformirani problem rješava kao problem bez ograničenja, postupcima
kao u poglavlju 4.
Predstavljeni postupci su ilustrirani uglavnom na primjerima problema s
dvije varijable jer se jedino kod njih može grafički (u 2D) pratiti tijek
postupka optimizacije u odnosu na dopustivo područje, geometrijski
smisao ograničenja, kao i nivo-linije funkcije cilja, prema slikama u
nastavku.
Opća formulacija problema optimizacije je sljedeća:
Skup varijabli optimizacije: x Є Rn
Minimum funkcije cilja f(x) (5.1)
Uz ograničenja jednakosti: hi(x) = 0 , i=1, r (5.2)
i ograničenja nejednakosti: gi(x) ≤ 0 , i=1, p (5.3)
Na slici 5.2 je prikazana domena problema s primjerom gornjih
ograničenja zadovoljenih uz neku toleranciju. Rješenje problema je ona
točka zatamnjenog područja u kojoj je funkcija cilja minimalna.
Postojanje ograničenja unosi niz promjena u strategiji optimizacije jer ona
definiraju dopustivu domenu problema te ih se mora uzeti u obzir za
vrijeme cijelog postupka traženja optimuma. Prije same primjene
postupaka optimizacije potrebno je naravno provjeriti definiciju
problema, jer loše postavljena ograničenja mogu dopustivu domenu
pretjerano reducirati ili oduzeti previše stupnjeva slobode, te u krajnjem
slučaju problem učiniti nerješivim.
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 204
x2 g2
h1(x1,x2) = 0 g1
g1(x1,x2) ≤ 0
g2(x1,x2) ≤ 0
x1
Slika 5.2. Geometrijski prikaz 2D problema s ograničenjima
5.1. Postupci s kaznenom funkcijom ('Penalty Function')
Kod postupaka s kaznenom funkcijom, zadana funkcija cilja se modificira
uvođenjem kaznenih funkcija na bazi zadanih ograničenja. U dijelu
domene koji ne zadovoljava zadana ograničenja (nedopustivo područje),
iznosu funkcije cilja dodaje se 'kazneni dodatak' koji pogoršava vrijednost
tako modificirane funkcije cilja. Time su točke u nedopustivom području
napravljene 'lošim' (nekonkurentnim), što slijed traženja prilikom
optimizacije (postupci 4.1.1- 4.2.4) 'tjera' iz nedopustivog područja. Kako
su ograničenja 'ugrađena' u modificiranu funkciju cilja, domena problema
postaje neograničenom te se mogu primijeniti postupci traženja optimuma
funkcija sa n-varijabli bez ograničenja (poglavlje 4).
Vrijednosti kaznene funkcije 'konkurentnim' čine samo dopustivi dio
domene, dok funkcija cilja u dijelu domene koji ne zadovoljava
ograničenja zbog kaznenog dodatka poprima velike vrijednosti. Upravo
ovaj mehanizam s modificiranom funkcijom cilja omogućava primjenu
postupaka optimizacije za probleme bez ograničenja, a da ograničenja
ipak budu zadovoljena. Pri tome zbog moguće nedovoljne relativne
dopustivo područje
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 205
numeričke uravnoteženosti utjecaja funkcije cilja i kaznenih funkcija ipak
(uz normiranje funkcija) treba i nadzirati zadovoljenost ograničenja.
Kazneni dodatak mora imati zanemarivi utjecaj na iznos funkcije cilja u
dopustivom području gdje se modificirana funkcija cilja mora poklapati
sa zadanom funkcijom. U ovom smislu se doprinos kaznene funkcije
učinkom kaznene konstante kontrolirano 'dozira' u nekoliko uzastopnih
prolaza kako je pokazano u nastavku.
Funkcije f(x), g(x) i h(x) ne moraju biti derivabilne u domeni; u tim
slučajevima se koriste negradijentne metode određivanja optimuma (npr.
4.1.1- 4.1.3). Nedostaci postupaka s kaznenom funkcijom kod primjene
gradijentnih metoda optimizacije (4.2.1- 4.2.4) su, između ostalog, slabija
konvergencija, slaba uvjetovanost Hesseove matrice za velike vrijednosti
kaznene konstante, a neki oblici kaznene funkcije mogu unijeti i
diskontinuitete u derivacijama na rubu područja. Kod velikih vrijednosti
kaznene konstante dobiva se numerički slabo uvjetovan problem i vrlo
velike vrijednosti kaznenog dodatka. Osim toga, metode temeljene na
kvadratnoj interpolaciji ili zamjenskoj funkciji drugog reda ne opisuju
dobro modificiranu funkciju cilja F(x) oko granice dopustivog područja.
Primjena kaznenih funkcija zbog svog karaktera čak i kod primjene
negradijentnih postupaka često vodi prema sporoj konvergenciji pa i
divergenciji. Zbog toga se kazneni dodatak narinjava postupno, od manjih
iznosa do većih, te tek u konačnici procesa dobivamo optimalno rješenje
koje potpuno zadovoljava ograničenja.
Ne preporuča se primjena čistih metoda drugog reda (npr. Newtonova
metoda) s kvadratnom kaznenom funkcijom za ograničenja nejednakosti,
jer Hesseova matrica može biti diskontinuirana. Kao primjer, iz (5.9)
unutar dopustivog područja slijedi ekvivalentni izraz P(x)=0 , a izvan
dopustivog područja P(x)=2(g(x))2. Gradijent kaznene funkcije P(x) je
kontinuiran bez obzira da li granici (ograničenja nejednakosti) pristupamo
iz dopustivog ili nedopustivog područja, no to ne vrijedi nužno za drugu
derivaciju P(x).
Također je bitno napomenuti da doprinosi kaznenih funkcija ukupnoj
modificiranoj funkciji cilja moraju biti međusobno uravnoteženi s
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 206
doprinosom zadane funkcije cilja na način da ni jedan član numerički ne
dominira nad ostalima, što se postiže normiranjem i po potrebi
promjenom mjerila ('scaling'). Obično se normiranje ograničenja radi na
način da se apsolutne vrijednosti svih normiranih ograničenja kreću u
intervalu <-1,0> ili <-1,1>.
Kod gradijentnih postupaka važno je napraviti normiranje i zbog
uravnoteženosti gradijenata funkcije cilja )(xf∇ i pojedinih ograničenja
)(xjg∇ , tako da kod numeričkog određivanja smjera traženja nema
numeričke dominacije nekog od članova modificirane funkcije F(x).
Ako se primjenjuju gradijentni postupci s formulacijom putem kaznene
funkcije, nakon faze određivanja smjera kretanja (slika 4.2) obično je
bolje koristiti postupak zlatnog reza nego interpolacijske postupke za
određivanje koraka po odabranom smjeru. Razlog ovome je činjenica da
zbog visoke nelinearnosti F(x) polinomska interpolacija može biti loša.
Ako se pak koristi polinomska interpolacija, bolje je napraviti je zasebno
za f(x) i g(x) te iz njih formirati približni F(x).
Zbog numeričkih problema kod postupaka s kaznenom funkcijom važan
je i izbor kaznene konstante R kao i izbor početne točke koja zbog
visoke nelinearnosti P(x) mora biti što bliža stvarnom rješenju da bi
algoritmi traženja minimuma modificirane funkcije F(x) konvergirali
prema rješenju. Ove činjenice su razlog da se prvo odredi minimum F(x)
s malom vrijednosti parametra R (manja nelinearnost), pa tako određeni
minimum postaje početna točka za iduću, povećanu vrijednosti parametra
R. Početna točka blizu rješenju je povoljna jer se općenito funkcije blizu
minimuma ponašaju približno kvadratno. Ovi ciklusi se ponavljaju do
dobivanja optimuma sa zadovoljenim ograničenjima.
Postupak se u praksi zaustavlja kada su narušavanja ograničenja mala, a
ne postiže se više značajno smanjenje funkcije f(x). Metoda kaznene
funkcije je jednostavna u primjeni. Može se i uspostaviti veza iznosa
kaznene konstante i vrijednosti Lagrangeovih multiplikatora u KT
uvjetima (poglavlje 1).
Zbog načina optimizacije postupci s kaznenim funkcijama nazivaju se i
postupcima sekvencijalnog optimiranja bez ograničenja (SUMT =
'Sequential Unconstrained Minimization Techniques').
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 207
5.1.1. Unutarnja kaznena funkcija
Kod postupka s unutarnjom kaznenom funkcijom, odabrana kaznena
funkcija za ograničenja nejednakosti mora imati zanemariv (u stvarnosti
'mali') doprinos iznosu funkcije cilja u dopustivom području, a
progresivno veliki iznos u blizini rubova dopustivog područja. Ovaj
postupak zahtijeva dopustivu, 'unutarnju' početnu točku. Kada se tijekom
postupka traženja trenutna točka približi ograničenju, iznos modificirane
funkcije cilja F(x) značajno raste zbog kaznenog dodatka P(x), te se tako
postupak traženja vraća u dopustivo područje. Unutarnja kaznena funkcija
na ovaj način formira svojevrstan 'zid' na rubovima dopustivog područja,
koji sprečava da postupak traženja iziđe iz dopustivog područja.
Neke od mogućih kaznenih funkcija s ovakvim svojstvom su:
P(x) = - Σ ln(-gj(x)) (5.4)
P(x) = Σ 1/( - gj(x) ) (5.5)
gdje zbroj prema (5.3) ide po ograničenjima nejednakosti, j = 1, p .
Sada se od izvorne funkcije i kaznenog dodatka formira modificirana
(ukupna) funkcija cilja na način
F(x) = f(x) + 1/Ri ⋅ P(x) , Ri+1 > Ri (5.6)
gdje je i redni broj uzastopne optimizacije s rastućom vrijednošću
kaznene konstante Ri. Kazneni parametar Ri se sukcesivno povećava,
smanjujući time doprinos kaznene funkcije. Rješenja (minimumi) za
uzastopne vrijednosti Ri daju niz rješenja koja konvergiraju prema
optimumu koji zadovoljava ograničenja, kao na slici 5.3.
Unutarnja kaznena funkcije primjenjiva je kod ograničenja nejednakosti
(5.3), a ograničenja jednakosti (5.2) mogu se ugraditi putem vanjske
kaznene funkcije kao u (5.10). Ukupni kazneni dodatak 1/Ri ⋅ P(x) se
tijekom procesa optimiranja u uzastopnim koracima smanjuje kako bi na
kraju postupka (veliki iznos R) vrijednost modificirane funkcije cilja F(x)
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 208
u dopustivom području bila što bliža vrijednosti zadane funkcije cilja
f(x), kao na slici 5.3.
Dopustiva početna točka može se dobiti iskustveno ili putem
min{P(x)} (5.7)
odnosno određivanjem minimuma vanjske kaznene funkcije ograničenja
(bez zadane funkcije cilja).
f(x), F(x)
dopustivo područje
R1, F1 F(x) f(x)
R2, F2
R3, F3
g(x) ≥ 0 g(x) ≤ 0 x
Slika 5.3. Geometrijska interpretacija unutarnje kaznene funkcije
kod 1D problema
Tijek postupka unutarnje kaznene funkcije može se načelno prikazati
pseudokodom u nastavku, pri čemu se mora pratiti konvergencija procesa
dobivanja optimuma xopt
(Ri), jer taj niz s povećanjem R mora
konvergirati prema konačnom optimumu funkcije s ograničenjima.
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 209
Slika 5.4. Dijagram toka kod postupka unutarnje kaznene funkcije
5.1.2. Vanjska kaznena funkcija
Kod vanjske kaznene funkcije početna točka i druge točke za vrijeme
procesa traženja optimuma ne moraju biti u dopustivom području.
Kazneni dodatak ovdje ne stvara 'zid' kako tijek traženja ne bi izišao iz
dopustivog područja, nego 'gura' tijek (slijed točaka) traženja optimuma u
dopustivo područje gdje su manje vrijednosti ukupne modificirane
funkcije cilja jer tu nema kaznenog dodatka.
Tipične kaznene funkcije koje se mogu koristiti su
P(x) = Σ max (0, gj(x))2 (5.8)
Započeti sa dopustivim počet. rješenjem x , početnim R1 , te iteracijom i = 1
Odrediti xopt optimum za F(x) = f(x) + 1/R·P(x) nekom od metoda za nD probleme bez ograničenja
Nova vrijednost parametra, Ri+1 > Ri te ponoviti postupak
rješenje
Dobiveni xopt funkcije F(x) je optimum f(x) uz zadovoljavanje
ograničenja gi(x) ≤ 0 , i=1,p tj. f∼F
da
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 210
P(x) = Σ (gj(x) + abs gj(x))2 / 2 (5.9)
gdje suma ide po zadanim ograničenjima, j=1, p, prema (5.3).
Kada postoje ograničenja jednakosti (5.2), odgovarajuća dodatna kaznena
funkcija je:
P(x) = Σ hj(x)2 (5.10)
gdje je suma po odgovarajućim ograničenjima j=1, r .
Oblik kaznenih funkcija (5.8)-(5.10) osigurava ranije navedene zahtjeve,
tj. nulti kazneni dodatak u dopustivom području i progresivnu kaznu
odnosno porast modificirane funkcije cilja izvan dopustivog područja.
Bitno svojstvo kaznenih funkcija jest da su to kvadratne funkcije koje
osiguravaju kontinuitet nagiba modificirane funkcije cilja (5.11), no druge
derivacije nisu kontinuirane na rubu dopustivog područja (vidjeti raspravu
u pogl. 5.1.). Uslijed te činjenice postupci optimizacije drugog reda
(Newtonova metoda) mogu divergirati dok Kvazi- Newtonovi postupci
imaju manje problema jer Hesseovu matricu aproksimiraju na temelju
prvih derivacija.
Modificirana (ukupna) funkcija cilja formira se kao
F(x) = f(x) + Ri ⋅ P(x) , Ri+1 > Ri (5.11)
gdje se Ri sukcesivno povećava i time osigurava zadovoljavanje uvjeta
ograničenja.
Primjer 5.1:
Formulirati problem cilindričnog spremnika minimalnog
oplošja i zadanog najmanjeg volumena za primjenu
postupka s vanjskom kaznenom funkcijom. (vidjeti i
primjer 1.7 te sliku dopustivog područja u primjeru
7.3)
l V
r
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 211
Na slikama u nastavku iscrtano je dopustivo područje
i izvorna funkcija cilja (oplošje)
2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 70
5
10
15
20
25
30
35
40
fun1 = 330
fun2 = 360
fun3 = 390
Ogr
x(1)
x(2
)
a u nastavku putem skripte
[x1, x2]=meshgrid(1: 0.5: 7 , 5: 5: 50);
FunCilj=2.*x1.^2*Pi+ 2.*x1.*x2*Pi ;
ogr = Vol - x1 .^2 .* x2 * Pi ;
FunKazn = (ogr + abs(ogr)) .^2 ./ 2 ;
fun = FunCilj + Kazn .* FunKazn ;
surfl(x1, x2, fun);
view([ 5, 40, 20]);
model: nD problem s ograničenjem nejednakosti:
varijable: x1 = r, x2= l
funkcija cilja: min. f = 2r2π + 2rlπ
ograničenje: r2πl ≥ V
uvođenje formulacije s kaznenom funkcijom
transformirani nD problem bez ograničenja
−+−⋅++
222
2
2
)()(22min
lrVlrVRrlr i
ππππ
1234567
0
20
40
60
0
500
1000
1500
2000
2500
3000
x(1) x(2)
fun1
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 212
modificirana funkcija cilja (s rastućom vrijednošću
kaznene konstante od lijeve prema desnoj slici):
1234567
0
50
0
1000
2000
3000
4000
5000
x(1) x(2)
fun1
U početku procesa kaznena konstanta se odabire s relativno malom
vrijednošću i tada se rješenje dobiva bez numeričkih problema, no
ograničenja ne moraju nužno biti zadovoljena u potpunosti zbog malog
iznosa kaznenog dodatka. U kasnijim koracima optimizacije s velikim R
ograničenja su sigurno zadovoljena, no zbog slabe uvjetovanosti može
doći do numeričkih problema u određivanju minimuma, vidjeti tekst u
poglavlju 5.1. i poglavlju 1.6.
Kod određivanja optimuma (5.11) za Ri+1 kao početna točka postupka
uzima se optimum određen za Ri .
f(x), F(x)
dopustivo područje
R3 , F3 f(x)
R2,F2
R1 , F1
g(x) > 0 g(x) ≤ 0 x
Slika 5.5. Geometrijska interpretacija vanjske kaznene funkcije za 1D
1234567
0
20
40
60
0
1
2
3
4
5
x 105
x(1) x(2)
fun1
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 213
Tijek postupka kod vanjske kaznene funkcije odgovara onome ranije
navedenom kod unutarnje kaznene funkcije (slika 5.4), ali ne treba
dopustiva početna točka. Jedna od mana vanjske kaznene funkcije je ta da
se slijed dobivenih optimuma (za različite R) stvarnom optimumu
približava iz nedopustivog područja, pa nedovoljno velik konačni R
rezultira u optimumu koji blago narušava zadana ograničenja. Za potpuno
zadovoljenje ograničenja ponekad je potrebna vrlo velika konačna
vrijednost kaznene konstante.
Primjer 5.2
Primjenom postupka vanjske kaznene funkcije potrebno
je odrediti minimum funkcije f=(x1-2)2+(x2-3)
2+4
iz početne točke (5,5) uz ograničenje x2 ≤ 3 - x1 .
FunkcijaCilja=@FunkcijaKaznenaProbno;
BrojVarijabli=2;
x0 = [ 5 5 ]; % vanjska pocetna tocka
options = optimset('LargeScale','off');
[x, fval, exitflag, output] = ...
fminunc(FunkcijaCilja, x0, options)
------
function f=FunkcijaKaznenaProbno(x)
fun=(x(1) - 2)^2 + (x(2) -3)^2 + 4 ;
kaz = 10 ;
ogr1=( x(1) + x(2) -3 ) ;
% vanjska kaznena funkcija
pen = (ogr1 + abs(ogr1))^2/2 ;
f= fun + kaz * pen ;
Dobiveni optimumi u slijedu povećavanja vrijednosti
kaznene konstante iznose:
točka kaznena
konstanta
optimum (x1,x2) funkcija
cilja
iznos
ograničenja
0
(5 , 5) 17 početna
točka
1 0.0001 (2 , 3) 4 2
2 0.1 (1.71 , 2.71) 4.57 1.42
3 1 (1.2 , 2.2) 5.6 0.4
4 10 (1.02 , 2.02) 5.95 0.04
5 1000 (1.0002, 2.0002) 5.99 0.0004
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 214
Grafički je slijed (kroz nedopustivo područje)
dobivanja optimuma za različite vrijednosti kaznene
konstante prikazan na prethodnoj slici.
Primjer 5.3:
Potrebno je postaviti problem određivanja ravnotežnog
stanja mehaničkog sustava sa zadanom silom F i
pomakom x1 prema slici kao optimizacijski problem.
1 x1,zadani
k1
2 F2, zadani
k2
3
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 215
Može se postaviti uvjet minimuma potencijalne
energije sustava u ravnotežnom stanju, uz nametanje
zadanih pomaka kao ograničenja, kada slijedi:
( ) ( ){ }22
2
322
2
211 2/12/1min xFxxkxxk ⋅−−⋅+−⋅=Π
ograničenja: 0,x 3zadani1,1 == xx
Formulacija pomoću kaznene funkcije može biti
( ) ( )
23
2zadani1,1
22
2
322
2
211321
)()x(
2/12/1),,,(
xRxR
xFxxkxxkRxxxF
⋅+−⋅+
+⋅−−⋅+−⋅=
Rješenje se može dobiti primjenom funkcije fminunc():
1
2
3
x 10-3-50510
x 10-3
-1
0
1
2
3
4
5
6
x1 x2
f
Na slici je nacrtana F uz eksplicitno ugrađen x3=0 te
je vidljiv učinak kaznene funkcije oko x1=0.002 .
Ovaj primjer pokazuje postupak gdje se na osnovu minimuma
potencijalne energije sustava određuju vrijednosti varijabli za slučaj
ravnoteže, uz zadane vanjske uvjete narinute na sustav kao ograničenja.
Ovaj princip se koristi u nekim numeričkim postupcima analize u
mehanici kontinuuma.
global l k1 k2 x1z F2z Kazna;
Kazna= 1e7;
k1= 10000 ; k2= 20000 ; %N/m
x1z= 0.002 ; %m F2z= 60 ; %N
x0= [ 0.05 0.06 0.07 ];
[x,fval]=fminunc(@primjer53,x0)
function f= primjer53(x)
%--------------
global l k1 k2 x1z F2z Kazna;
fun=k1*(x(1)-x(2))^2+ ...
k2*(x(2)-x(3))^2;
fun= fun /2;
fun= fun- F2z*x(2) ;
ogr= (x(1)-x1z)^2 + x(3)^2 ;
f = fun + Kazna * ogr ;
Optimization terminated:
x= 0.0020 0.00266 0.00 fval = --0.0867
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 216
5.2. Direktni postupci NLP Kod NLP, optimum općenito može ležati ili unutar dopustivog područja
ili na njegovoj granici. Ako trenutna bazna točka leži unutar dopustivog
područja, tada se metodama nD optimizacije bez ograničenja (pogl. 4)
može doći ili do granice dopustivog područja ili do optimuma unutar
dopustivog područja. Kod početne točke izvan dopustivog područja, prvo
se dolazi do granice dopustivog područja.
Nakon što trenutna točka dođe do granice dopustivog područja, neka od
zadanih ograničenja postaju aktivnim te nastavak procesa optimizacije
slijedi metodama u nastavku poglavlja 5.2.
Kretanje od točke na granici
do nove točke s manjom
vrijednošću funkcije cilja
obično se vrši po smjeru
lagano otklonjenom od
tangente na granicu prema
unutrašnjosti dopustivog
područja.
I kod ovih metoda, kao i kod metoda u poglavlju 4, proces optimizacije
slijedi u dva koraka koji se ciklički ponavljaju do dolaska u optimum:
(1) korak određivanja smjera traženja, i
(2) korak 1D traženja minimuma po odabranom smjeru.
U tom smislu može se prikazati načelni tijek tipičnog procesa direktne
optimizacije kod nD problema s ograničenjima putem pseudokoda:
g(x)=0
g(x)<0
t
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 217
(5.22)
(5.23)
(5.24)
Glavna razlika u odnosu na postupke kod nD optimizacije bez
ograničenja (pogl. 4) je u određivanju smjera kretanja, koje ovdje mora
obuhvatiti i učinak ograničenja. Ovdje je potrebno istovremeno
zadovoljavati:
(1) smanjivanje vrijednosti funkcije cilja, i
(2) uvjete zadovoljavanja ograničenja,
kako je pokazano u poglavlju 1.5 (smjerovi pada i dopustivi smjerovi).
Kod definiranja smjera traženja (5.22), (5.23) u trenutnoj baznoj točki xi
dovoljno je razmatrati skup 'aktivnih ograničenja' gdje spadaju:
(1) sva ograničenja jednakosti,
(2) nezadovoljena ograničenja nejednakosti, i
(3) ograničenja nejednakosti zadovoljena znakom jednakosti
u trenutnoj baznoj točki. Zbog greške uslijed linearizacije te zbog pomaka
uzduž smjera traženja iz trenutne bazne točke, u treću grupu se uključuje i
uski pojas (ε) u dopustivom području oko dotičnog ograničenja, prema:
1. korak linearizacija problema u trenutnoj baznoj točki xi
{ aktivni skup ograničenja NLP u xi } → { LP u ∆xi } (NLP je nelinearni problem a LP pripadni linearizirani)
2. korak rješavanje pripadnog lineariziranog LP
{ LP sa varijablama ∆xi } → smjer traženja di
3. korak 1D pomak uzduž smjera di tako da se smanjuje funkcija cilja. Pomak je ograničen jer je linearizacija dobra samo u okolini xi
xi = xi + αi ·di
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 218
Uvjet
g(x) = 0 (5.25)
ublažava se (relaksira) u uvjet
g(x) = 0 - ε ; ε << ; ε > 0 (5.26)
pa se i ograničenja u čijem ε - pojasu se nalazi (dopustiva) trenutna bazna
točka uključuju u skup aktivnih ograničenja.
Preporučuje se normiranje ograničenja. Skup aktivnih ograničenja nije
fiksni skup, jer pomicanjem bazne točke neka aktivna ograničenja postaju
neaktivna i obrnuto. Kod problema sa ograničenjima napredovanje prema
minimumu uz zadovoljavanje ograničenja može se pratiti kroz vrijednost
funkcije pada (funkcije spusta, 'descent function') koja se formulira tako
da integralno obuhvaća i vrijednost funkcije cilja i ukupno narušavanje
uvjeta ograničenja. Time funkcija pada zamjenjuje funkciju cilja kod
problema bez ograničenja odnosno modificiranu funkciju cilja (5.11) kod
formulacije sa kaznenom funkcijom.
U nastavku su prikazane samo načelne informacije o ovim metodama u
svrhu razumijevanja tijeka optimizacije uz primjenu gotovih funkcija.
Detaljna razrada postupaka je izvan opsega teksta.
5.2.3. Postupak sekvencijalnog linearnog programiranja
(SLP)
Najjednostavnije i najizravnije korištenje linearizacije je zamjena općeg
nelinearnog problema s linearizacijom pripadnih funkcija (funkcija cilja,
funkcije ograničenja) koje definiraju problem optimizacije, [1]. Pošto se
na ovaj način sve funkcije problema zamjenjuju svojim linearnim
g(x)=0
ε g(x)<0
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 219
aproksimacijama, definirani problem koji rezultira u pojedinoj točki može
se riješiti kao i svaki drugi linearni problem. Ova metoda, kod koje se u
svakoj iteraciji koriste postupci linearnog programiranja, zove se metoda
sekvencijalnog linearnog programiranja ('Sequential Linear
Programming', SLP). Kod metode SLP rješenjem linearnog problema
(LP) nastalog linearizacijom zadanog nelinearnog problema (NLP) dobiva
se pomak iz trenutne točke.
Općeniti problem nelinearnog programiranja, uzimajući u obzir ranije
razmatranje aktivnih ograničenja, uz (k) kao indeks iteracije, može se
zapisati kao:
Min )(xf , uz
0)( ≤xjg , pj ,...,2,1=
0)( =xjh , rj ,...,2,1=
U trenutnoj točki )(kx , primjenom razvoja u Taylorov red (1.15) po x te
zanemarivanjem članova drugog i viših redova, linearizirani problem
glasi:
Min )()()( )()( kkTk ff xxx ∆∇+ (5.44)
uz )()( kk xxx −=∆ te ograničenja
0)()()( )()()()()( ≤∆∇+≅∆+ kkTj
kj
kkj ggg xxxxx , pj ,...,2,1= (5.45)
0)()()( )()()()()( =∆∇+≅∆+ kkTj
kj
kkj hhh xxxxx , rj ,...,2,1=
x2 g1 f=const.
g1L fL =const.
g2 g2L
minL
Slika 5.8. Linearizacija (indeks L) kod SLP metode
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 220
Matrični zapis ovih izraza odnosno lineariziranog problema uz:
nix
fc
i
i ,...,2,1; =∂
∂=
nirjx
hn
i
j
ji ,...,2,1,,...2,1; ==∂
∂= } (5.46)
nipjx
ga
i
j
ji ,...,2,1;,...2,1; ==∂
∂=
ej = - hj(x) , rj ,...,2,1=
bj = - gj(x) , pj ,...,2,1=
je:
f = cTd (5.47)
ograničenja: NTd = e
==∑
=
rjedn ji
n
i
ji ,1,1
} (5.48)
ATd ≤ b
==∑
=
pjbda ji
n
i
ji ,1,1
pri čemu f predstavlja lineariziranu promjenu (prirast) izvorne funkcije
cilja a d = ∆x prirast varijabli (vidjeti primjer 5.4 za linearizaciju).
Iz gornjeg je vidljivo da na ovaj način linearizirani NLP problem postaje
LP problem čije su varijable d prirasti zadanih varijabli x. Stoga se
mogu koristiti LP metode (poglavlje 2) za dolazak u novu točku )1( +kx . Pri
tome d može biti proizvoljnog predznaka, što je putem transformacije
varijabli potrebno ugraditi u standardni oblik LP, te je potrebno (5.48) u
potpunosti svesti na standardni oblik kao u poglavlju 2.1.
Rješenje lineariziranog NLP putem LP postupaka naravno ne daje odmah
optimum, nego je potrebno iterativno nastaviti s postupkom do
zadovoljavanja kriterija za prihvaćanje rješenja. Valja naglasiti da bez
obzira što je )(kx točka u dopustivom području nelinearnog problema, to
ne mora nužno implicirati da će i točka )1( +kx biti u dopustivom području.
Iako je linearizacija (5.47) dobra aproksimacija unutar nekog malog
područja oko točke linearizacije )(kx , ona može biti prilično loša izvan tog
područja. Jedan način osiguranja da se linearizacija koristi samo unutar
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 221
nekog užeg područja oko točke aproksimacije (″valjanog″ područja), je
nametanje ograničenja na dopuštenu promjenu ('increments') varijabli. Za
svaki potproblem oko točke )(kx , narinjavaju se granice:
ig
k
iid d δδ ≤≤− )( , ni ,...2,1= (5.49)
gdje su idδ igδ prikladno odabrani pozitivni parametri koji predstavljaju
dopuštenu donju i gornju granicu veličine koraka po i-toj varijabli.
U slučaju velikog koraka (bez (5.49)), osim loše linearizacije problem
može biti i neograničeni LP (neomeđeno područje), kada ne bi imao
rješenje (pogl. 2). Jedan od načina ograničavanja veličine koraka odnosno
postavljanja granica u (5.49) jest da korak ne može prekoračiti određeni
dio vrijednosti trenutne točke )(kx . Na žalost, pravilnu veličinu iδ je teško
procijeniti, tako da loše odabrane vrijednosti dovode do spore
konvergencije i velikog broja iteracija. Slika 5.9 pokazuje utjecaj
odabira granica koraka:
Slika 5.9. Ograničenje linearnog pomaka kod SLP
Rješenje se prihvaća za zadovoljena ograničenja (5.2) i (5.3) te
stacionarnost ||d||<tol∆x za LP prema (5.47)-(5.48). Metoda SLP je manje
δ1d
dopustivo
područje
δ1g
δ2d
δ2g
x1
x2
dopustivo
područje
x(k)
ε
SLP
SQP
g(x)=0
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 222
učinkovita od drugih metoda jer se ne izvršava 1D traženje po smjeru koji
je određen te joj učinkovitost znatno ovisi o granicama koraka (5.49).
Slika 5.10. Načelni dijagram toka metode SLP
Početna točka x (metodom pokušaja) )0(x .
Iteracija k=0, kriteriji zaustavljanja tologr , tol∆x
Funkcija cilja i ograničenja (sva ili samo aktivna) u trenutnoj točki x(k) ,
izračunati )( )(kxf , pjxg k
j ,...,2,1),( )( = , rjxh kj ,...2,1),( )( = ..
Izračunati vrijednosti gradijenata funkcije cilja i ograničenja u točki x(k), tj. izračunati sljedeće (linearizacija):
nix
fc
i
i ,...,2,1; =∂
∂= nirj
x
hn
i
j
ji ,...,2,1,,...2,1; ==∂
∂=
nipjx
ga
i
j
ji ,...,2,1;,...2,1; ==∂
∂=
Odabrati prikladne granice koraka igid δδ ,
Definirati LP model problema sa (5.47) - (5.49), svesti na standardni oblik
Riješiti LP model problema (pogl.2.2): dobiveni LP model postaviti u
standardni Simplex oblik i rješiti ga za )(kd .
Prihvaćanje rješenja:
pjtolg ogrj ,...1, =≤
rjtolh ogrj ,...1, =≤
xk told ∆≤)(
Nova vrijednost točke: )()()1( kkk dxx +=+, podesiti 1+= kk .
rješenje
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 223
Primjeri primjene optimizacije kod nD problema s
ograničenjima
Cilj ovih primjera nije učinkovito numeričko rješavanje konkretnih
primjera ni puna dosljednost u primjeni metoda, nego što jednostavnija
ilustracija logike postupaka optimizacije. U tom smislu zbog preglednosti
primjera nisu uključena normiranja i nesuštinski dijelovi programskog
koda.
Primjer 5.5.
Gredni nosač, nastavak primjera 1.8.
Potrebno je optimalno dimenzionirati gredni nosač
geometrijski zadan i opterećen prema slici, ako je:
F = 5 kN, a = 0.2 m, σdop = 120 MPa.
Problem riješiti analitički, analitički uz kaznenu
funkciju, grafički, direktnom nD optimizacijom s
ograničenjima primjenom MATLAB funkcije fmincon(), te
optimizacijom s kaznenom funkcijom primjenom MATLAB
funkcije fminunc().
q F
4a 4a 2a
1.8F
poprečne sile
0.2F
1.2F
3.24 kNm
momenti savijanja
xm
Odabir presjeka: pravokutni presjek, 2 varijable, uz
konstrukcijsko ograničenje h/b ≤ 3 . Svođenje ograničenja nosivosti na standardni oblik
moguće je na više načina.
h
b
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 224
1. način: Analitičko rješenje uz eliminaciju jedne
varijable
Iz mehanike materijala poznato je da za maksimalno
naprezanje uslijed savijanja vrijedi
σ = M/W ≤ σdop , pri čemu je moment otpora pravokutnog presjeka
W = bh2/6 .
Jasno je da moment otpora ima maksimum za maksimalni
omjer h/b, pa se uvodi granični omjer h/b = 3 , čime
je problem redukcijom broja varijabli sveden na
problem sa jednom varijablom, kada slijedi rješenje:
6
)3( 2bb
W⋅
=
odnosno iz W ≥ M/σdop dobije se rješenje b ≥ 26.1 mm.
2. način: Ilustracija rješenja uz primjenu
formulacije s kaznenom funkcijom.
Postupak u nastavku nema praktičnu vrijednost već
samo služi za ilustraciju metode. Zadano je:
min f = cx1x2 (minimalna masa)
uz M - σd/6 ·x1x22 ≤ 0 (ograničenje nosivosti)
x2 - 3x1 ≤ 0 (ograničenje dimenzija)
Formulacija s unutarnjom kaznenom funkcijom može
biti: (zbog preglednosti nije uvedeno normiranje)
−+
⋅−=
12221d
213
1
xx/6 - M
11)(
xxRxcxxF
σ
za koju se mogu postaviti nužni uvjeti za ekstrem
0)3(
3
) xx/6 - (M
x/612
1222
21d
22d
2
1
=
−+
⋅
⋅−=
∂
∂
xxRcx
x
F
σ
σ
0)3(
1
) xx/6 - (M
x x/312
1222
21d
21d1
2
=
−
−+
⋅
⋅−=
∂
∂
xxRcx
x
F
σ
σ
MATLAB omogućava simboličko određivanje derivacija:
syms x1 x2 c R M Sigd ;
f= c*x1*x2-1/R*(1/(M-Sigd/6*x1*x2^2) + 1/(x2-3*x1))
grad = [ diff(f,x1) ; diff(f,x2) ] ;
disp( ' funkcija_f') ; disp( f) ; disp( ' gradijent_fx1_fx2') ; disp( grad ) ;
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 225
Rješenje:
Ovaj se sustav može riješiti numerički kao sustav
nelinearnih jednadžbi za niz vrijednosti parametra
R. Rješenja sustava za rastuće vrijednosti R daju
niz koji konvergira prema optimumu zadanog problema
sa ograničenjima. Ova formulacija se naravno može
provjeriti uvrštenjem rješenja dobivenog drugim
načinima. Na slikama u nastavku je prikazana domena
problema sa ograničenjima i izvorna funkcija cilja
0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.050
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
fun1 = 0.001
fun1 = 0.002
fun1 = 0.003
fun1 = 0.003
Ogr1
Ogr2
x(1)
x(2
)
te modificirana funkcija cilja sa kaznenom funkcijom
(R=1) prema prethodnom izrazu za F(x) pomoću:
. . .
FunCilj= x1 .* x2 ;
Ogr1=6*Mmax ./ (SigDop .* x1 .* x2 .^2)-1 ;
Ogr2= x2 ./ ( 3 .* x1 ) - 1 ,
FunKazn1= (Ogr1 + abs(Ogr1)) .^2 ./ 2 ;
FunKazn2= (Ogr2 + abs(Ogr2)) .^2 ./ 2 ;
fun=FunCilj+ Kazn .* (FunKazn1 FunKazn2) ;
...
surfl(x1, x2, fun) ;
view([ 0.05, 0.1, 0.4 ]) ;
funkcija_f
c*x1*x2-1/R*(1/(M-1/6*Sigd*x1*x2^2)+1/(x2-3*x1))
gradijent_fx1_fx2
c*x2-1/R*(1/6/(M-
1/6*Sigd*x1*x2^2)^2*Sigd*x2^2+3/(x2-3*x1)^2)
c*x1-1/R*(1/3/(M-1/6*Sigd*x1*x2^2)^2*Sigd*x1*x2-
1/(x2-3*x1)^2)
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 226
3
.
n
ačin: Grafičko rješenje, dio programa
Skriptom u MATLABu kao u nastavku može se iscrtatati
grafičko rješenje (klasično putem programskih petlji
radi ilustracije):
SigDop = 120e6 ; Mmax = 3240 ; % Nm
figure(1) ;
%--------------
pocet = 0.01 ; kraj = 0.05 ; korak = kraj/50 ;
x1 = pocet :korak :kraj ; % formiraj vektor x1
% FUNKCIJA CILJA
f1 = 0.001 ;
f1_x2 = f1 ./ x1 ; % formiraj vektor x2
. . .
% ogranicenja
Priv1 = Mmax/SigDop * 6 ;
Priv2 = Priv1 ./ x1 ;
Ogr1_x2 = sqrt(Priv2) ;
Ogr2_x2 = 3 .* x1 ;
...
title(' graficko rjesenje greda') ;
plot(x1, f1_x2, x1, f2_x2, x1, f3_x2, x1, f4_x2) ;
text(x1(36) , f1_x2(36), 'fun1 = 0.001') ;
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 227
. . .
hold on ;
plot(x1, Ogr1_x2, '*', x1, Ogr2_x2, '*') ;
text(x1(1) , Ogr1_x2(1), 'Ogr1') ;
text(x1(1) , Ogr2_x2(1), 'Ogr2') ;
xlabel(' x(1)') ; ylabel(' x(2)') ;
grid on ;
. . .
figure(3) ;
%--------------
[x1, x2] = meshgrid(0: 0.02: 1 , 0: 0.02: 1) ;
Ogr1 = Mmax - SigDop .* x1 .* x2 .^2 /6 ;
contour3(x1, x2, Ogr1, 40) ;
xlabel(' x(1)') ;
ylabel(' x(2)') ;
zlabel(' Ogr1') ;
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 228
Funkcija cilja: Ograničenje g1:
U MATLAB-u se primjenom funkcije contour() može
jednostavnije nacrtati nivo-linije funkcije cilja te
ograničenja (bez računanja u petljama), prema:
SigDop = 120 * 10^6 ; % 120 MPa
Mmax = 3240 ; % Nm
figure(1);
[x1,x2]=meshgrid(0.01:0.005:0.05,0:0.05:0.4);
fun= x1 .* x2 ;
Ogr1 = Mmax - SigDop .* x1 .* x2 .^ 2 /6 ;
Ogr2 = x2 - 3 .* x1 ;
...
[ kr1, hand1 ]= contourf(x1, x2, fun, 9) ;
clabel(kr1, hand1);
colorbar ;
grid on ;
hold on ;
[ kr2, hand2 ] = contour(x1, x2, Ogr1, ...
[ 0, 0 ], 'k-', 'LineWidth',2 ) ;
clabel(kr2, hand2);
[ kr3, hand3 ] = contour(x1, x2, Ogr2, ...
[ 0, 0 ], 'k-', 'LineWidth',2 ) ;
clabel(kr3, hand3);
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 229
0.0025
0.0025
0.0025
0.0025
0.005
0.005
0.005
0.005
0.0075
0.0075
0.0075
0.01
0.01
0.01
0.0125
0.0125
0.015
0.0175
0
00
0
0
0
0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.050
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
2
4
6
8
10
12
14
16
x 10-3
4.način: Direktno optimiranje, obitelj SQP metoda,
fmincon() funkcija
Primjenom MATLAB funkcije fmincon() za određivanje
optimuma funkcija sa n varijabli i ograničenjima,
temeljenoj na SQP algoritmu, može se uz definiciju
problema programskim skriptama kao u nastavku dobiti
rješenje ovog problema.
Napomena 1: česti razlozi da proces optimizacije ne
konvergira kod rješavanja ovakvih problema su loša
početna točka i nenormirana ograničenja, vidjeti
raniji tekst. Napomena 2: U svrhu veće preglednosti procesa
rješavanja, u nizu primjera nisu uvedeni koraci
potrebni za veću numeričku učinkovitost, kao što je
normiranje funkcije cilja i ograničenja. Također nije
prikazano variranje kaznene konstante i odgovarajući
slijed rješenja.
% fminunc() sa TestFunkcijaKaznenaGreda1
% fmincon() sa TestFunkcijaGreda1 i
% TestOgranicenjaGreda1
ogr1
ogr2
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 230
FunkcijaCilja=@TestFunkcijaGreda1 ;
FunkcijaOgranicenja=@TestOgranicenjaGreda1 ;
FunkcijaCiljaKaznen=@TestFunkcijaKaznenaGreda1;
BrojVarijabli=2;
x0 = [ 1 1 ];
options = optimset('LargeScale','off');
% VERZIJA KAZNENA FMINUNC:
%-------------------------
% [x, fval, exitflag, output] =
% fminunc(FunkcijaCiljaKaznena, x0)
% VERZIJA DIREKTNA FMINCON:
%-------------------------------
[x, fval, exitflag, output] = fmincon( ...
FunkcijaCilja, x0, [], [], [], [], [], ...
[], FunkcijaOgranicenja, options)
-------
function f=TestFunkcijaGreda1(x,y)
% izvorna funkcija cilja
JedinCijenaMaterijala = 1 ;
JedinTrosakOdrzavanja = 1 ;
% minimalna tezina grede (min. materijala)
fun1 = x(1) * x(2) * JedinCijenaMaterijala ;
fun2= 2*(x(1)+ x(2))* JedinTrosakOdrzavanja;
disp(['TestFunkcijaGreda1:x(1)=',num2str(x(1))…
,'x(2)=',num2str(x(2)),'fun1=',num2str(fun1)]);
f=fun1;
--------------------
function [ogr_g,ogr_h]=TestOgranicenjaGreda1(x)
% ogran. ogr_g nejednakosti oblika ogr_g <= 0
% ogran. ogr_h jednakosti oblika ogr_h = 0
SigDop = 120e6 ; % 120 MPa
Mmax = 3240 ; % Nm
% normiranje: eksperimentirati unutar skripte
Wotp = x(1) * x(2)^2 /6 ;
Ogr0 = - x(1) ;
Ogr1 = Mmax - SigDop * Wotp ;
Ogr2 = x(2) - 3 * x(1) ;
ogr_g = [ Ogr0 ;
Ogr1 * 10^(-4) ;
Ogr2 ] ;
fprintf('TestOgranicenjaGreda1:x(1), x(2)=...
%5.3e, %5.3e ', x(1), x(2) ) ;
fprintf('ogr_g= %5.3e,%5.3e,%5.3e /n', ...
ogr_g(1), ogr_g(2), ogr_g(3) ) ;
disp(' ') ;
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 231
ogr_h = [] ;
Djelomični tijek izračuna:
U ispisu su kao 'active constraints' navedena
ograničenja aktivna u točki minimuma.
5.način: Primjena kaznene funkcije, fminunc()
funkcija
Primjena MATLAB funkcije fminunc() za određivanje
optimuma funkcija sa n varijabli bez ograničenja,
temeljena na Kvazi- Newton algoritmima korištena je u
ovom primjeru uz formulaciju s kaznenom funkcijom.
Poziv funkcije dan je u primjeru 5.5- 4.način.
Napomena: česti razlozi nekonvergencije prema
rješenju su loša početna točka, nenormirana
ograničenja, iznos kaznene konstante, vidjeti ranije.
Ovi parametri su u primjeru varirani.
function f=TestFunkcijaKaznenaGreda1(x)
% ogranicenja ugradena putem kaznene funkcije
% global Mmax SigDop ;
SigDop = 120e6 ; % 120 MPa
Mmax = 3240 ; % Nm
>> TestFunkcijaGreda1: x(1)=1 x(2)=1 fun1=1
TestOgranicenjaGreda1: x(1), x(2)= 1.000e+000, 1.000e+000
ogr_g = -1.000e+000, -2.000e+003, -2.000e+000
TestFunkcijaGreda1: x(1)=0.40003 x(2)=0.80006 fun1=0.32005
TestOgranicenjaGreda1: x(1), x(2)= 4.000e-001, 8.001e-001
ogr_g= -4.00e-001, -5.118e+002, -4.00e-001
...
TestFunkcijaGreda1: x(1)=0.026207 x(2)=0.078463 fun1=0.002056
TestOgranicenjaGreda1: x(1), x(2)= 2.621e-002, 7.846e-002
ogr_g = -2.621e-002,1.308e-003,-1.588e-004
Optimization terminated successfully:
First-order optimality measure less than options.TolFun and
maximum constraint violation is less than options.TolCon
Active Constraints:
2 3
x = 0.0262 0.0786
fval = 0.0021
exitflag = 1
output = iterations: 13 funcCount: 55
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 232
% izvorna funkcija cilja
% --------------------------
JedinCijenaMaterijala = 1 ;
JedinTrosakOdrzavanja = 1 ;
% minimalna tezina grede (min. materijala)
fun1 = x(1) * x(2) * JedinCijenaMaterijala ;
% minimalno oplošje grede (min. odrzavanje)
fun2= 2* (x(1)+ x(2))* JedinTrosakOdrzavanja;
% ogranicenja, putem kaznene funkcije (vanjske)
% -------------------------------------------
% ogran. ogr_g nejednakosti oblika ogr_g <= 0
% ogran. ogr_h jednakosti oblika ogr_h = 0
% ogran. nejednakosti 1: cvrstoca (nosivost)
% ogran. nejednakosti 2: omjer dimenzija
% pravokutnog presjeka h/b < 3
Wotp = x(1) * x(2)^2 /6 ;
Og_1 = - x(1) ;
Og_2 = Mmax - SigDop * Wotp ; % moze i drukcije
Og_3 = x(2) - 3 * x(1) ;
...
% normirana ogranicenja (eksperimentirati)
Og_1 = Og_1 ;
Og_2 = Og_2 * 10^(-4) ;
Og_3 = Og_3 ;
Kazna = 1 ; % kaznena konstanta
% vanjska kaznena funkcija
fOgr1 = (Og_1 + abs(Og_1))^2/2 ;
fOgr2 = (Og_2 + abs(Og_2))^2/2 ;
fOgr3 = (Og_3 + abs(Og_3))^2/2 ;
f_kazn = Kazna * (fOgr1 + fOgr2 + fOgr3) ;
disp([' TestFunkcijaKaznenaGreda1: x(1)=', ...
num2str(x(1)),'x(2)=',num2str(x(2)),'fun1=',…
num2str(fun1),' f_kazn=', num2str(f_kazn)]);
fprintf('Og_1,Og_2,Og_3= %5.3e %5.3e %5.3e ...
', Og_1, Og_2, Og_3 ) ;
fprintf('fOgr1,fOgr2,fOgr3= %5.3e %5.3e ...
%5.3e ', fOgr1, fOgr2, fOgr3 ) ;
disp(' ') ;
f = fun1 + f_kazn ;
ispis dijela izvršenja:
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 233
Primjeri za vježbu
1. Modelirati zadatak prema slici kao zadatak optimiranja (postaviti
varijable, cilj i ograničenja). Zadano je F, L, b. Uzeti u obzir nosivost
zavara, čvrstoću konzole, otpornost na izbočavanje, dopušteni progib,
tehnološki izvodive omjere dimenzija, itd.
>> TestFunkcijaKaznenaGreda1: x(1)=1 x(2)=1 fun1=1 f_kazn=0
Og_1,Og_2,Og_3= -1.000e+000 -2.000e+003 -2.000e+000
fOgr1,fOgr2,fOgr3= 0.000e+000 0.000e+000 0.000e+000
TestFunkcijaKaznenaGreda1: x(1)=6.0775e-009 x(2)=2.8282e-008
fun1=1.7188e-016 f_kazn=0.20995
Og_1,Og_2,Og_3= -6.077e-009 3.240e-001 1.005e-008
fOgr1,fOgr2,fOgr3= 0.000e+000 2.100e-001 2.020e-016
...
TestFunkcijaKaznenaGreda1: x(1)=0.025689 x(2)=0.079278
fun1=0.0020366 f_kazn=1.2149e-005
Og_1,Og_2,Og_3= -2.569e-002 1.090e-003 2.210e-003
fOgr1,fOgr2,fOgr3= 0.000e+000 2.378e-006 9.771e-006
Optimization terminated successfully:
TestFunkcijaKaznenaGreda1:
x(1)=0.025703 x(2)=0.079261
fun1=0.0020373 f_kazn=1.1437e-005
Og_1,Og_2,Og_3= -2.570e-002 1.045e-003 2.151e-003
fOgr1,fOgr2,fOgr3= 0.000e+000 2.183e-006 9.255e-006
x = 0.0257 0.0793
fval = 0.0020
exitflag = 1
output = iterations: 25 funcCount: 151
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 234
2. Odrediti vektor smjera pretraživanja iz točke (0) (10, 2)=x u
postupku najstrmijega spusta za zadatak:
Odrediti minimum
2 2
1 2( ) ( 2) ( 2)f x x= − + −x
uz ograničenja
1 1 2( ) 3 2 0h x x≡ − + − =x
2
1 1 1 2( ) 2 80 0g x x x≡ − − − ≤x
ako se primijene vanjske kaznene funkcije s kaznenim parametrom
10R = te samo aktivna ograničenja.
Dodatak: grafički prikaz pomoću MATLAB-a:
figure(1);
[x1, x2] = meshgrid(-12: 1: 12 , -2: 1: 20) ;
fun = (x1 - 2) .^2 + (x2 - 2) .^2 ;
Ogr1 = - 3 .* x1 + x2 - 2 ;
Ogr2 = x1 .^2 - 2 .* x1 - x2 - 80 ;
[ kr1, hand1 ] = contour(x1, x2, fun, 14) ;
clabel(kr1, hand1);
colorbar ; grid on ; hold on ;
[kr2,hand2]=contour(x1,x2,Ogr1,[0,0],'k-','LineWidth',2 );
clabel(kr2, hand2);
[kr3,hand3]=contour(x1,x2,Ogr2,[0,0],'k-','LineWidth',2 );
clabel(kr3, hand3);
figure(2); surfl(x1, x2, fun);
figure(3); surfl(x1, x2, Ogr2);
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 235
40
40 40
40
80
80
80
80
80
120
120
120120
160
160
160
160
160
200
200
200
200200
240
240
240
240
280
280
280
280
320
320
320
320
360360
40044
0480
0
0
0
00
0
00
0
-10 -5 0 5 10-2
0
2
4
6
8
10
12
14
16
18
20
50
100
150
200
250
300
350
400
450
500
3. Za prethodni zadatak optimiranja ponuđena su dva rješenja:
a) * ( 5, 0)= −x b) * (10, 20)=x
Odabrati povoljnije rješenje ako se odluka donosi primjenom
vanjskih kaznenih funkcija s parametrom 100R = .
4. Riješiti primjer 2 primjenom različitih numeričkih postupaka iz
poglavlja 4, napraviti nekoliko koraka pješke.
5. Formulirati primjere 5.1 i 5.3 za primjenu numeričkih postupaka iz
poglavlja 5.1 i 5.2 te skicirati prvi korak rješavanja.
6. Riješiti primjere 5.1 i 5.3. primjenom MATLAB funkcije fminunc() te
varirati algoritam i postavke rješavanja promjenom opcija te funkcije.
Usporediti rezultate i učinkovitost.
5. Opće nelinearno programiranje, n-dimenzionalni problemi sa ograničenjima
D. Vučina: Metode inženjerske numeričke optimizacije 236
7. Postaviti optimizacijske modele za pojednostavljene primjere na kraju
poglavlja 1.8 (modeliranje).
7.1. Formulirati problem putem kaznene funkcije te riješiti primjenom
MATLAB funkcije fminunc().Varirati opcije funkcije i usporediti.
7.2. Riješiti primjenom programa razvijenih u primjerima 4.1 i 4.3, te
varirati parametre postupaka
8. Postaviti optimizacijske modele za pojednostavljene primjere na kraju
poglavlja 1.8 (modeliranje) te riješiti direktnim postupcima primjenom
MATLAB funkcije fmincon(). Varirati opcije te funkcije i usporediti.
9. Dimenzionirati klipni i četverozglobni mehanizam tako da točka A
prolazi što bliže zadanom nizu točaka (xi, yi), i=1,n. Ugraditi ograničenja
mobilnosti mehanizma putem kaznene funkcije i direktnim postupcima.
10. Optimalno dimenzionirati štapove rešetkastog nosača prema slici
uzevši u obzir aksijalna naprezanja te izvijanje:
11. Optimalno dimenzionirati okvirni nosač prema slici uz poprečni
presjek i ograničenja kao u primjeru 5.5.
A
A
x x
y y (xi,yi) (xi,yi)
l
l l
l F
F l
q=F/(2a)
a
a a
a
a