Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
UNIVERZA V MARIBORU
FAKULTETA ZA STROJNIŠTVO
Rok TUMPEJ
OPTIMIZACIJA RAVNINSKIH PALIČNIH KONSTRUKCIJ Z
UPORABO GENETSKIH ALGORITMOV
Diplomsko delo
univerzitetnega študijskega programa 1. stopnje
Strojništvo
Maribor, september 2017
OPTIMIZACIJA RAVNINSKIH PALIČNIH KONSTRUKCIJ Z
UPORABO GENETSKIH ALGORITMOV
Diplomsko delo
Študent: Rok TUMPEJ
Študijski program: univerzitetni študijski program 1. stopnje Strojništvo
Smer: Konstrukterstvo
Mentor: izr. prof. dr. Marko KEGL
Somentor: doc. dr. Boštjan HARL
Maribor, september 2017
II
I Z J A V A
Podpisani ____Rok Tumpej________, izjavljam, da:
• je diplomsko delo rezultat lastnega raziskovalnega dela,
• predloženo delo v celoti ali v delih ni bilo predloženo za pridobitev kakršnekoli izobrazbe
po študijskem programu druge fakultete ali univerze,
• so rezultati korektno navedeni,
• nisem kršil-a avtorskih pravic in intelektualne lastnine drugih,
• soglašam z javno dostopnostjo diplomskega dela v Knjižnici tehniških fakultet ter
Digitalni knjižnici Univerze v Mariboru, v skladu z Izjavo o istovetnosti tiskane in
elektronske verzije zaključnega dela.
Maribor,_____________________ Podpis: ________________________
III
ZAHVALA
Zahvaljujem se mentorju izr. prof. dr. Marku Keglu in
somentorju doc. dr. Boštjanu Harlu za pomoč in
vodenje pri opravljanju diplomskega dela.
Posebna zahvala velja staršem, ki so mi omogočili
študij.
IV
OPTIMIZACIJA RAVNINSKIH PALIČNIH KONSTRUKCIJ Z UPORABO GENETSKIH
ALGORITMOV
Ključne besede: metoda končnih elementov, palične konstrukcije, linijski nosilci, optimizacija
oblike, genetski algoritmi, optimizacija z rojem delcev, programiranje, Python
UDK: [519.6+004.89]:624.04(043.2)
POVZETEK
V diplomskem delu je predstavljen razvoj programa, ki omogoča preračun statično
obremenjenih ravninskih paličnih konstrukcij in konstrukcij sestavljenih iz linijskih nosilcev.
Predstavljena je metoda končnih elementov in uporaba le te v računalniškem programiranju.
Pravilnost delovanja razvitega programa je potrjena z analitičnimi izračuni in s primerjavo s
programskim orodjem Abaqus. Delo zajema tudi optimizacijo oblike paličnih konstrukcij z
uporabo genetskih algoritmov in optimizacije z rojem delcev. Rezultati optimizacije so
prikazani na različnih primerih.
V
PLANAR TRUSS OPTIMIZATION USING GENETIC ALGORITHMS
Key words: finite element method, trusses, frames, shape optimization, genetic algorithms,
particle swarm optimization, programming, Python
UDK: [519.6+004.89]:624.04(043.2)
ABSTRACT
This diploma work describes development of software application for finite element method
calculations of statically loaded planar trusses and frames. It explains finite element method
and its usage in computer programming. The results of application are verified by analytical
calculations and results provided by finite element software Abaqus. Developed application
has implementation of optimization module for shape optimization of planar trusses.
Optimization is done by using genetic algorithms or particle swarm optimization. Results of
optimizations are shown on different models.
VI
KAZALO VSEBINE
1 UVOD ....................................................................................................... 1
1.1 Opis splošnega področja dela ............................................................. 1
1.2 Opredelitev problema ........................................................................ 2
1.3 Kratek opis strukture celotnega dela .................................................. 2
2 METODA KONČNIH ELEMENTOV .............................................................. 3
2.1 Splošno o metodi končnih elementov ................................................. 3
2.2 Matematični model elastičnega telesa ............................................... 4
2.3 Palični končni element........................................................................ 7
2.4 Končni element nosilca ....................................................................... 8
3 OPTIMIZACIJA ........................................................................................ 10
3.1 Gradientne metode .......................................................................... 11
3.2 Optimizacija s surovo silo ................................................................. 12
3.3 Hevristične metode .......................................................................... 12
3.4 Metahevristične metode .................................................................. 13
3.5 Genetski algoritmi ............................................................................ 14
3.6 Optimizacija z rojem delcev .............................................................. 19
3.7 Tipi optimizacij ................................................................................. 21
4 RAZVOJ PROGRAMA ZA OPTIMIZACIJO .................................................. 24
4.1 Načrt razvoja programa .................................................................... 24
4.2 Priprava programskega okolja .......................................................... 24
4.3 Programiranje grafičnega vmesnika .................................................. 27
4.4 Programiranje metode končnih elementov ...................................... 33
4.5 Programiranje optimizacijskega modula ........................................... 38
5 PREGLED REZULTATOV ........................................................................... 46
5.1 Potrditev rezultatov ......................................................................... 46
5.2 Rezultati optimizacije ....................................................................... 50
5.3 Primerjava optimizacijskih algoritmov .............................................. 54
6 SKLEP ..................................................................................................... 55
7 LITERATURA ........................................................................................... 56
VII
KAZALO SLIK
Slika 2.1: Mreži končnih elementov z različno kvaliteto mreže ................................................. 3
Slika 2.2: Palični končni element ................................................................................................ 7
Slika 2.3: Končni element nosilca ............................................................................................... 8
Slika 2.4: Končni element nosilca z dodatnimi aksialnimi pomiki .............................................. 9
Slika 3.1: Prikaz lokalnih in globalnih maksimumov [13] ......................................................... 10
Slika 3.2: Rosenbrockova funkcija [14] ..................................................................................... 11
Slika 3.3: Eno-točkovno križanje [16] ....................................................................................... 17
Slika 3.4: Več-točkovno križanje [16] ........................................................................................ 17
Slika 3.5: Psevdokoda genetskih algoritmov ............................................................................ 18
Slika 3.6: Psevdokoda optimizacije z rojem delcev .................................................................. 20
Slika 3.7: Dimenzijska optimizacija palične konstrukcije [15] .................................................. 21
Slika 3.8: Odprava koncentracije napetosti z optimizacijo oblike [18] .................................... 22
Slika 3.9: Optimizacija oblike paličnih konstrukcij [7] .............................................................. 22
Slika 3.10: Optimizacija topologije volumskega modela .......................................................... 23
Slika 3.11: Optimizacija topologije paličja [17] ......................................................................... 23
Slika 4.1: Integrirano razvojno okolje PyCharm ....................................................................... 26
Slika 4.2: Orodje za urejanje grafičnega vmesnika WxFormBuilder......................................... 26
Slika 4.3: Glavno okno našega programa ................................................................................. 28
Slika 4.4: Grafično okno za prikaz konstrukcije ........................................................................ 29
Slika 4.5: Temeljna koda aplikacije, ki skrbi za zagon okna ...................................................... 29
Slika 4.6: Vnosna polja grafičnega vmesnika za vstavljanje vozlišč .......................................... 30
Slika 4.7: Vnosna polja za vnos elementa ................................................................................. 31
Slika 4.8: Modeliranje konzolno vpetega nosilca z 1 elementom ............................................ 32
Slika 4.9: Modeliranje konzolno vpetega nosilca z 20 elementi .............................................. 32
Slika 4.10: Diagram poteka za temeljni del metode končnih elementov ................................. 33
VIII
Slika 4.11: Sestavljanje globalne togostne matrike za dva palična elementa .......................... 35
Slika 4.12: Redukcija globalne togostne matrike ..................................................................... 36
Slika 4.13: Koda, ki reši sistem enačb in vrne pomike .............................................................. 36
Slika 4.14: Diagram poteka za funkcijo uspešnosti .................................................................. 40
Slika 4.15: Grafični vmesnik za optimizacijski modul genetskih algoritmov ............................ 41
Slika 4.16: Podatkovna struktura osebkov in generacij v kodi ................................................. 42
Slika 4.17: Funkcija, ki nam vrne naključno število glede na Gaussovo distribucijo ................ 42
Slika 4.18 Pravilo, ki smo ga definirali za izbiro osebka ............................................................ 43
Slika 4.19: Verjetnost reproduciranja osebka v odvisnosti od uspešnosti ............................... 43
Slika 4.20: Vpliv variiranja parametra »selekcija«, na verjetnost reproduciranja osebkov ..... 43
Slika 4.21: Grafični vmesnik za optimizacijo z rojem delcev .................................................... 45
Slika 5.1: Največja napetost, ki jo izračuna program ................................................................ 47
Slika 5.2: Največji pomik, ki ga izračuna program .................................................................... 47
Slika 5.3: Palična konstrukcija, ki smo jo uporabili za verifikacijski test ................................... 48
Slika 5.4: Pomik v skrajni točki žerjava izračunan z našim programom ................................... 48
Slika 5.5: Pomik v skrajni točki žerjava izračunan z Abaqusom ................................................ 48
Slika 5.6: Napetosti izračunane z našim programom ............................................................... 49
Slika 5.7: Izračunane napetosti izračunane z Abaqusom ......................................................... 49
Slika 5.8: Izvirna konstrukcija, ki je bila uporabljena za optimizacijo ....................................... 50
Slika 5.9: Napetosti v konstrukcija po optimizaciji presekov ................................................... 51
Slika 5.10: Konstrukcija po optimizaciji oblike ......................................................................... 51
Slika 5.11: Izvirna konstrukcija uporabljena za optimizacijo .................................................... 52
Slika 5.12: Oblika mostu po prvi optimizaciji............................................................................ 52
Slika 5.13: Koraki, ki smo jih izvedli pri tej optimizaciji ............................................................ 53
Slika 5.14: Končni rezultat optimizacije .................................................................................... 53
Slika 5.15: Rezultati primerjave optimizacijskih metod ........................................................... 54
IX
UPORABLJENI SIMBOLI
𝛔 napetostni tenzor
𝜎𝑖𝑗 komponenta napetostnega tenzorja
𝛆 tenzor deformacij
𝜀𝑖𝑗 komponenta tenzorja deformacij
𝑓𝑖 volumska sila
𝒖 vektor pomikov
𝑭 vektor obremenitev
𝐊 globalna togostna matrika
𝐊𝐞̅̅̅̅ togostna matrika elementa v lokalnem koordinatnem sistemu
𝐊𝐞 togostna matrika elementa v globalnem koordinatnem sistemu
𝐸 modul elastičnosti
𝐴 površina preseka končnega elementa
𝐿 dolžina elementa končnega elementa
𝐼 vztrajnostni moment končnega elementa
𝜑 kot zasuka elementa
𝑢1̅̅ ̅ pomik vozlišča v x smeri lokalnega koordinatnega sistema elementa
𝑢1 pomik vozlišča v x smeri globalnega koordinatnega sistema
𝑣1̅̅ ̅ pomik vozlišča v y smeri lokalnega koordinatnega sistema elementa
𝑣1 pomik vozlišča v y smeri globalnega koordinatnega sistema
𝜃2̅̅ ̅ zasuk elementa v vozlišču v lokalnem koordinatnem sistemu
𝜃2 zasuk elementa v vozlišču v globalnem koordinatnem sistemu
𝐹�̅� sila v x smeri lokalnega koordinatnega sistema elementa
𝐹𝑥 sila v x smeri globalnega koordinatnega sistema
𝐹�̅� sila v x smeri lokalnega koordinatnega sistema elementa
𝐹𝑦 sila v x smeri globalnega koordinatnega sistema
𝑀1̅̅ ̅̅ moment v z smeri lokalnega koordinatnega sistema elementa
𝑀1 moment v z smeri globalnega koordinatnega sistema
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
1
1 UVOD
1.1 Opis splošnega področja dela
Metoda končnih elementov je najpopularnejša metoda za numerične simulacije v današnjem
času. Razvoju te metode lahko sledimo v 40. leta prejšnjega stoletja, ko sta A. Hrennikoff in R.
Courant idejno predstavila to metodo v svojih delih. Metoda se je od tistega časa
izpopolnjevala, k čemur je svoj delež prispeval hiter razvoj računalnikov, ki je potekal
vzporedno.
Metoda se lahko relativno preprosto implementira za palične konstrukcije. Razlog zato tiči v
sami naravi paličnih konstrukcij, ki so sestavljene iz preprostih elementov – palic, ki so
preprosto matematično opisljive. Metoda je v primeru paličnih konstrukcij računsko in
pomnilniško precej manj zahtevna, kot če so uporabljeni zahtevnejši končni elementi.
To so tudi glavni razlogi, zakaj se je optimizacija konstrukcij pred desetletji začela ravno pri
paličnih konstrukcijah. V primeru paličnih konstrukcij se nam ponuja tudi preprosta možnost
določitve optimizacijskih spremenljivk. Izberemo lahko neposredne lastnosti konstrukcije, kot
so površina presekov palic in koordinate vozlišč. V začetnih letih razvoja optimizacije so bile
optimizacijske spremenljivke predvsem lastnosti prerezov konstrukcij. Sledila je optimizacija
oblike, pri kateri so spremenljivke koordinate vozlišč. V današnjem času pa se razvija tudi
relativno nov tip optimizacije – optimizacije topologije.
V diplomski nalogi se bomo optimizacije lotili s sodobnimi optimizacijskimi metodami.
Uporabili bomo genetske algoritme, ki so univerzalen optimizacijski algoritem. Ponašajo se z
robustnostjo, ki je neodvisna od obravnavanega problema. Primerni so za različne probleme,
od kombinatoričnih, zveznih problemov do problemov strojnega učenja. Dodatno bomo
uporabili tudi optimizacijo z rojem delcev, ki prav tako velja za enega izmed robustnejših
optimizacijskih algoritmov in je v sodobnem času doživel precej izboljšav in različic.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
2
1.2 Opredelitev problema
Cilj diplomske naloge je razviti uporabniku prijazen program, s katerim bo mogoče s pomočjo
metode končnih elementov izračunati poljubna ravninska paličja in konstrukcije, sestavljene
iz linijskih nosilcev. Dodatno je cilj, da se razvije optimizacijski modul, s katerim bo mogoče
optimizirati poljubna ravninska paličja z uporabo genetskih algoritmov in optimizacije z rojem
delcev.
Delo bo zajemalo precej obsežno programiranje v programskem jeziku Python. Uporabljene
bodo različne knjižnice, ki bodo omogočale razvoj grafičnega vmesnika in skrajšale tako
razvojni čas, kot računski čas kritičnih operacij.
1.3 Kratek opis strukture celotnega dela
V začetnih poglavjih je predstavljeno teoretično ozadje metode končnih elementov. Sledi
teoretično ozadje optimizacije, kjer so na splošno predstavljene različne skupine metod.
Natančneje sta predstavljeni metodi, ki sta implementirani v program: optimizacija z uporabo
genetskih algoritmov in optimizacija z rojem delcev. Predstavljeni so tudi glavni tipi
optimizacij, ki se uporabljajo za strojne konstrukcije.
V nadaljevanju je predstavljen razvoj programa. Prvotno je na kratko predstavljeno
programsko okolje, v katerem je bil razvit program. Prikazane so ideje za oblikovanje
grafičnega vmesnika programa, nato pa sledi razlaga temeljnih postopkov pri programiranju
metode končnih elementov, kar predstavlja jedro programa.
V zadnjem sklopu diplomskega dela je pregled rezultatov, pridobljenih z razvitim programom.
Rezultati so verificirani z analitičnim preračunom in s primerjavo s programskim orodjem
Abaqus. Sledi prikaz rezultatov optimizacije in primerjava uporabljenih optimizacijskih metod.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
3
2 METODA KONČNIH ELEMENTOV
2.1 Splošno o metodi končnih elementov
Metoda končnih elementov (v nadaljevanju MKE) je aproksimativna numerična metoda s
katero lahko zvezne probleme pretvorimo v diskretne in s tem omogočimo, da problem
postane obvladljiv. Zvezno območje razdelimo na manjše diskretne enote osnovnih oblik, ki
jih imenujemo končni elementi. Razdeljeno območje, ki ga sestavljajo končni elementi,
imenujemo mreža končnih elementov. Od te mreže končnih elementov je odvisna tudi
natančnost metode. Gostejša, kot je mreža, natančnejši so rezultati. Vendar z večanjem števila
končnih elementov hitro narašča tudi računski čas simulacije. V kolikor uporabljamo za MKE
analizo mrežo elementov dovolj visoke kakovosti (gostote) so rezultati dovolj dobri za namene
inženirskega dela.
Poznamo več tipov končnih elementov: linijske (palični končni element, končni element
nosilca), ploskovne končne elemente (lupinske) in volumske končne elemente (tetraedri in
heksaedri).
Čeprav se MKE uporablja za analiziranje različnih fizikalnih pojavov, kot so elektro-
magnetizem, vremenski pojavi, prenos toplote … se bomo v tem diplomskem delu omejili le
na probleme trdnosti statično obremenjenih konstrukcij.
Slika 2.1: Mreži končnih elementov z različno kvaliteto mreže
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
4
2.2 Matematični model elastičnega telesa
Predpostavke za naš obravnavani sistem:
• Material je homogen
• Material je izotropen
• Material je obremenjen le do meje plastičnosti (velja Hookov zakon)
• Relativno majhne deformacije
Deformacijsko in napetostno stanje v vsaki točki telesa je popolnoma opisano, če poznamo
vektor pomikov u (3 neznanke), tenzor deformacij ε (6 neznank) in tenzor napetosti σ (6
neznank).
Fizikalno ozadje povezujejo tri skupine enačb [1]:
Ravnotežne enačbe (3 enačbe):
Te enačbe izpolnjujejo 1. Newtonov zakon.
𝜕𝜎𝑥𝑥
𝜕𝑥+
𝜕𝜎𝑦𝑥
𝜕𝑦+
𝜕𝜎𝑧𝑥
𝜕𝑧+ 𝑓𝑥 = 0 (2.1)
𝜕𝜎𝑥𝑦
𝜕𝑥+
𝜕𝜎𝑦𝑦
𝜕𝑦+
𝜕𝜎𝑧𝑦
𝜕𝑧+ 𝑓𝑦 = 0 (2.2)
𝜕𝜎𝑥𝑧
𝜕𝑥+
𝜕𝜎𝑦𝑧
𝜕𝑦+
𝜕𝜎𝑧𝑧
𝜕𝑧+ 𝑓𝑧 = 0 (2.3)
Kinematične enačbe (6 enačb):
Te vrste enačb povezujejo deformacije s pomiki.
𝜀𝑥𝑥 =𝜕𝑢𝑥
𝜕𝑥 , 𝜀𝑥𝑦 =
1
2(𝜕𝑢𝑥
𝜕𝑦+
𝜕𝑢𝑦
𝜕𝑥) (2.4)
𝜀𝑦𝑦 =𝜕𝑢𝑦
𝜕𝑦 , 𝜀𝑥𝑧 =
1
2(𝜕𝑢𝑥
𝜕𝑧+
𝜕𝑢𝑧
𝜕𝑥) (2.5)
𝜀𝑥𝑥 =𝜕𝑢𝑧
𝜕𝑧 , 𝜀𝑦𝑧 =
1
2(𝜕𝑢𝑦
𝜕𝑧+
𝜕𝑢𝑧
𝜕𝑦) (2.6)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
5
Konstitutivne enačbe (6 enačb):
Te vrste enačb povezujejo napetosti z deformacijami.
𝜎𝑥𝑥 = (𝜆 + 2𝜇)𝜀𝑥𝑥 + 𝜆(𝜀𝑦𝑦 + 𝜀𝑧𝑧), 𝜎𝑥𝑦 = 2𝜇𝜀𝑥𝑦 (2.7)
𝜎𝑦𝑦 = (𝜆 + 2𝜇)𝜀𝑦𝑦 + 𝜆(𝜀𝑥𝑥 + 𝜀𝑧𝑧), 𝜎𝑥𝑧 = 2𝜇𝜀𝑥𝑧 (2.8)
𝜎𝑧𝑧 = (𝜆 + 2𝜇)𝜀𝑧𝑧 + 𝜆(𝜀𝑥𝑥 + 𝜀𝑦𝑦), 𝜎𝑦𝑧 = 2𝜇𝜀𝑦𝑧 (2.9)
𝜆 =𝜈𝐸
(1 + 𝜈)(1 − 2𝜈), 𝜇 =
𝐸
2(1 + 𝜈) (2.10)
Kjer je:
𝜈 – Poisonov koeficient
𝐸 – Elastični modul
Torej vse skupaj imamo 15 neznank in 15 enačb, kar pomeni, da moramo rešiti sistem 15
parcialnih diferencialnih enačb.
Ker sedaj obravnavamo diskretni model, nas zanimajo le sile v vozliščih. Ravnovesne enačbe
lahko napišemo za vsako obremenitev v smereh prostostnih stopenj vozlišča:
𝐹𝑖 − 𝑅𝑖 = 0 (2.11)
Zunanja sila 𝑅 je konstanta, notranja sila 𝐹 pa se izračuna na osnovi notranjih napetosti.
Napetosti pa so linearno odvisne od pomikov. Zato lahko zapišemo Hookov zakon v matrični
obliki za celoten obravnavan sistem:
𝐊 ∙ 𝒖 = 𝑭 (2.12)
𝐊 je togostna matrika modela, ki je sestavljena iz togostnih matrik posameznih elementov. Če
želimo zapisati ravnovesne enačbe moramo torej sestaviti togostno matriko modela. Ko
imamo znano togostno matriko in zunanje sile na vozlišča 𝑭 (znano iz robnih pogojev), nam
ostanejo edine neznanke pomiki 𝒖, ki jih lahko sedaj preprosto izračunamo, saj imamo
nastavljen sistem n - linearnih enačb z n neznankami (kjer je n število prostostnih stopenj
modela).
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
6
Ko rešimo sistem in imamo znane pomike modela lahko s kinematičnimi enačbami izračunamo
deformacije.
𝛆 = 𝑓(𝒖) (2.13)
Ko so znane deformacije pa lahko s konstitutivnimi enačbami izračunamo še napetosti.
𝛔 = 𝑓(𝛆) (2.14)
Globalna togostna matrika
Eden izmed temeljnih operacij pri metodi končnih elementov je sestavljanje globalne togostne
matrike.
Sistem linearnih enačb 𝐊 ∙ 𝒖 = 𝑭 lahko razširjeno zapišemo kot:
[ 𝐾11 𝐾12 𝐾13
𝐾21 𝐾22 𝐾23
𝐾31 𝐾32 𝐾33
⋯𝐾1𝑛
𝐾2𝑛
𝐾3𝑛
⋮ ⋱ ⋮𝐾𝑛1 𝐾𝑛2 𝐾𝑛3 ⋯ 𝐾𝑛𝑛]
∙
[ 𝑞1
𝑞2
𝑞3
⋮𝑞𝑛]
=
[ 𝐹1
𝐹2
𝐹3
⋮𝐹𝑛]
(2.15)
Kjer je:
𝐾𝑖𝑗 – člen togostne matrike
𝑞𝑖 – posplošen pomik prostostne stopnje (pomik ali zasuk)
𝐹𝑖 – posplošena obremenitev v smeri prostostne stopnje (sila ali moment)
𝑛 – število prostostnih stopenj sistema
Globalna togostna matrika sistema je sestavljena iz togostnih matrik posameznih elementov.
Za vsak element posebej se izračuna togostna matrika elementa, ki je odvisna od njegovih
lastnosti. Način, kako sestavimo globalno togostno matriko je opisan v poglavju 4.4, kjer
opisujemo programiranje metode končnih elementov.
Globalna togostna matrika je simetrična in ima večino izven diagonalnih členov enakih 0. Te
značilnosti naredijo metodo končnih elementov zelo primerno za programiranje in za
varčevanje računalniškega spomina pri večjih modelih.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
7
2.3 Palični končni element
Palica je element, ki lahko prenaša le aksialno obremenitev. Parametri, ki nam definirajo
togost tega končnega elementa so elastični modul, površina preseka palice in dolžina palice.
Zanimajo nas le pomiki v aksialni smeri. Ko povežemo več palic skupaj v konstrukcijo to
konstrukcijo imenujemo paličje. Mesta na katerih se spajajo palice (vozlišča) matematično
idealiziramo, kot popolni točkovni tečaj, ki ne prenaša momenta.
Slika 2.2: Palični končni element
Togostna matrika za lokalni koordinatni sistem (enodimenzionalni):
𝐸𝐴
𝐿[
1 −1−1 1
] [𝑢1̅̅ ̅𝑢2̅̅ ̅
] = [𝐹1̅
𝐹2̅̅̅
] (2.16)
Preden pretvorimo matriko v globalni koordinatni sistem jo razširimo v dvodimenzionalni
koordinatni sistem.
𝐸𝐴
𝐿[
1 00 0
−1 00 0
−1 00 0
1 00 0
] [
𝑢1̅̅ ̅𝑣1̅̅ ̅𝑢2̅̅ ̅𝑣2̅̅ ̅
] = [
𝐹𝑥1̅̅ ̅̅
0𝐹𝑥2̅̅ ̅̅
0
] (2.17)
Nato jo transformiramo v globalni koordinatni sistem z enačbo:
𝐊𝐞 = 𝐓𝑇𝐊𝐞̅̅̅̅ 𝐓 (2.18)
Kjer je transformacijska matrika:
𝐓 = [
𝑐𝑜𝑠𝜑 𝑠𝑖𝑛𝜑 0 0
−𝑠𝑖𝑛𝜑0
𝑐𝑜𝑠𝜑 00 𝑐𝑜𝑠𝜑
0𝑠𝑖𝑛𝜑
0 0 −𝑠𝑖𝑛𝜑 𝑐𝑜𝑠𝜑
] (2.19)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
8
Končna togostna matrika paličnega elementa je:
𝐊𝐞 =
[
𝑐𝑜𝑠2𝜑 𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑
𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑 𝑠𝑖𝑛2𝜑
−𝑐𝑜𝑠2𝜑 −𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑
−𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑 −𝑠𝑖𝑛2𝜑
−𝑐𝑜𝑠2𝜑 −𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑
−𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑 −𝑠𝑖𝑛2𝜑
𝑐𝑜𝑠2𝜑 𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑
𝑐𝑜𝑠𝜑𝑠𝑖𝑛𝜑 𝑠𝑖𝑛2𝜑 ]
(2.20)
2.4 Končni element nosilca
Končni element nosilca pa lahko v nasprotju s paličnim elementom prenaša tudi momente v
vozliščih. V primeru nosilca nas zanimata dve prostostni stopnji v vsakem vozlišču – pomik
prečno na nosilec in zasuk v vozlišču (slika 2.3). Parametri, ki nam definirajo togost tega
elementa so elastični modul, dolžina elementa in vztrajnostni moment. S pomočjo končnih
elementov nosilcev lahko izračunamo upogibne momente in strižne sile.
Slika 2.3: Končni element nosilca
Togostna matrika za nosilec v lokalnem koordinatnem sistemu [3]:
𝐸𝐼
𝐿3[
12 6𝐿6𝐿 4𝐿2
−12 6𝐿−6𝐿 2𝐿2
−12 −6𝐿6𝐿 2𝐿2
12 −6𝐿−6𝐿 4𝐿2
]
[ 𝑣1̅̅ ̅
𝜃1̅̅ ̅
𝑣2̅̅ ̅
𝜃2̅̅ ̅]
=
[ 𝐹1̅
𝑀1̅̅ ̅̅
𝐹2̅̅̅
𝑀2̅̅ ̅̅ ]
(2.21)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
9
Končni element nosilca z aksialno obremenitvijo
Ko združimo togostno matriko elementa nosilca in togostno matriko palice, dobimo element,
ki lahko prenaša tudi aksialno obremenitev. Element ima šest prostostnih stopenj - dva pomika
in en zasuk za vsako vozlišče.
Slika 2.4: Končni element nosilca z dodatnimi aksialnimi pomiki
Togostna matrika elementa nosilca, ki prenaša tudi aksialno obremenitev [3]:
[
𝑎1 0 00 12𝑎2 6𝐿𝑎2
0 6𝐿𝑎2 4𝐿2𝑎2
−𝑎1 0 00 −12𝑎2 6𝐿𝑎2
0 −6𝐿𝑎2 4𝐿2𝑎2
−𝑎1 0 00 −12𝑎2 −6𝐿𝑎2
0 6𝐿𝑎2 4𝐿2𝑎2
𝑎1 0 00 12𝑎2 −6𝐿𝑎2
0 −6𝐿𝑎2 4𝐿2𝑎2 ]
∙
[ 𝑢1̅̅ ̅𝑣1̅̅ ̅
𝜃1̅̅ ̅
𝑢2̅̅ ̅𝑣2̅̅ ̅
𝜃2̅̅ ̅]
=
[ 𝐹𝑥1̅̅ ̅̅
𝐹𝑦1̅̅ ̅̅
𝑀𝑧1̅̅ ̅̅ ̅
𝐹𝑥2̅̅ ̅̅
𝐹𝑦2̅̅ ̅̅
𝑀𝑧2̅̅ ̅̅ ̅]
(2.22)
𝑎1 =𝐸𝐴
𝐿, 𝑎2 =
𝐸𝐼
𝐿3 (2.23)
Končno togostno matriko elementa dobimo s transformacijo matrike v globalni koordinatni
sistem, za kar uporabimo naslednjo:
𝐊𝐞 = 𝐓𝑇𝐊𝐞̅̅̅̅ 𝐓 (2.24)
Kjer je transformacijska matrika:
𝐓 =
[ 𝑐𝑜𝑠𝜑 𝑠𝑖𝑛𝜑 0−𝑠𝑖𝑛𝜑 𝑐𝑜𝑠𝜑 0
0 0 1
0 0 00 0 00 0 0
0 0 00 0 00 0 0
𝑐𝑜𝑠𝜑 𝑠𝑖𝑛𝜑 0−𝑠𝑖𝑛𝜑 𝑐𝑜𝑠𝜑 0
0 0 1]
(2.25)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
10
3 OPTIMIZACIJA
Optimizacija je proces s katerim želimo naš obravnavani sistem izboljšati, pri tem pa želimo,
da sistem ostane znotraj okvirnih vrednosti. Pri optimizaciji našemu modelu spreminjamo
optimizacijske spremenljivke pri tem pa želimo zvišati ali znižati našo optimizacijsko ciljno
vrednost. Torej je za vse metode skupno, da moramo za naš model definirati naslednje
veličine:
• Optimizacijske spremenljivke
• Namensko funkcijo optimizacije
• Omejitveni pogoji optimizacije
Ko imamo naš model matematično opisan, lahko naš sistem obravnavamo kot matematično
funkcijo. Ta matematična funkcija nam vrne veličino, ki jo želimo izboljšati (npr. maso ali ceno),
zato jo imenujemo namenska funkcija optimizacije. Optimizacija je torej iskanje minimumov
ali maksimumov namenske funkcije.
Slika 3.1: Prikaz lokalnih in globalnih maksimumov [13]
Na splošno lahko optimizacijske algoritme delimo na deterministične in stohastične.
Deterministične so eksaktne metode in nam zmeraj vrnejo enako vrednost, v kolikor izvedemo
algoritem z istimi vhodnimi podatki. Nasprotno pa nam stohastične metode lahko vrnejo
nekoliko različne rezultate ob istih vhodnih podatkih, ker vključujejo naključne spremenljivke.
Deterministične metode so različne gradientne metode. V skupino stohastičnih metod pa
vključujemo različne hevristične in metahevristične metode.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
11
3.1 Gradientne metode
V kolikor je naša namenska funkcija odvedljiva, se lahko optimizacije lotimo z gradientnimi
metodami. Gradient oziroma odvod funkcije nam pove, v kateri smeri se nahaja minimum
oziroma maksimum. Iterativno se pomikamo v smeri gradienta, dokler ne dosežemo
konvergenčnega kriterija.
Prednosti gradientnih metod
• Gradientne metode so najhitrejše izmed optimizacijskih metod, saj se usmerjeno
približujejo minimumu. Zato so primerne za časovno zahtevne probleme.
• So eksaktne metode. Če optimizacijo poženemo z enakimi podatki in istimi pogoji,
pridemo do identičnega rezultata.
• Primerne so za zvezne probleme.
Težave gradientnih metod
• Gradientne metode gredo v smeri prvega »vidnega« minimuma, kar pomeni, da je
velika možnost, da je to lokalni minimum. Boljša rešitev oziroma globalni minimum pa
je lahko izven vidnega dosega algoritma.
• Zahtevajo odvedljivost funkcije, kar pa je v mnogo primerih nemogoče oziroma težko
dosegljivo.
• V primeru, da funkcija nima izrazitega minimuma oziroma je ta v obliki »doline« se čas
konvergence poveča, saj gre algoritem »cik-cak« v smeri proti minimumu. Primer je
Rosenbrockova funkcija, ki je v obliki dolge zavite doline, zato se jo uporablja kot
funkcijo za testiranje optimizacijskih algoritmov (Slika 3.2).
Slika 3.2: Rosenbrockova funkcija [14]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
12
3.2 Optimizacija s surovo silo
Optimizacija s surovo silo1 (ang. brute force) je najpreprostejši optimizacijski algoritem.
Preprosto preizkusi vse različne kombinacije optimizacijskih spremenljivk, ki so na voljo.
Mogoča je le za diskretne probleme in vrednosti optimizacijskih spremenljivk morajo pripadati
končni množici.
Seveda, se ta optimizacijska metoda v praksi le izjemoma uporablja, saj v realnih primerih
število preizkusov, ki bi jih moral izvesti algoritem, naraste v ogromna števila, ki niso
izračunljiva v realnem času.
Edina prednost te metode je, da nam algoritem zagotavlja, da je najdena rešitev najboljša,
torej je to globalni minimum (maksimum).
Primer: V strojništvu lahko za vzgled vzamemo preprosto konstrukcijo sestavljeno iz nekaj
različnih profilov. Optimizacijske spremenljivke so preseki posameznih profilov. Množica
optimizacijskih spremenljivk pa so vsi standardni profili. Preizkusimo vse možne kombinacije
profilov in zagotovo bomo našli globalni optimum problema.
3.3 Hevristične metode
Hevristični pristop [11] optimizacije temelji na principu iskanja približne optimalne vrednosti.
Algoritem ne preverja vseh mogočih kombinacij kot algoritem surove sile, temveč izbira le
potencialno optimalne primere. Optimizacija deluje iterativno in v vsaki iteraciji algoritem
predlaga naslednji nabor optimizacijskih spremenljivk. Zaradi tega, ker algoritem ne preverja
celotne množice nam ne zagotavlja, da je dobljena rešitev globalni optimum, vendar se ji lahko
dovolj približa, da je za nas praktično uporabna.
1 V splošnem metode s surovo silo ne obravnavamo, kot optimizacijske metode, vendar je tukaj predstavljena zaradi lažje definicije hevrističnih in metahevrističnih metod.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
13
3.4 Metahevristične metode
Metahevristične metode so nadgradnja hevrističnih metod. So višje nivojske metode, ki so
neodvisne od problema optimizacije, zato lahko naš problem obravnavamo kot »črno
skrinjico«. Večina metahevrističnih metod je idejno osnovanih na principih iz narave. [10]
V splošnem jih lahko delimo na populacijsko osnovane metode in trajektorne metode. [11]
Trajektorne metode začnejo proces optimizacije iz ene točke v optimizacijskem prostoru. Iz
te točke se »osebek«2 nato iterativno pomika k optimumu. Prednosti teh algoritmov so
majhno število izvajanj, vendar se pogosto ujamejo v lokalnih minimumih.
Nekaj primerov trajektorno osnovanih algoritmov so:
• Simulirano ohlajanje (ang. simulate annealing)
• Lokalno iskanje (ang. local searches)
• Plezanje po hribu (ang. hill climbing)
Populacijsko osnovane metode začnejo proces optimizacije z več primeri (osebki), ki so
naključno razpršeni po optimizacijskem prostoru. V vsaki iteraciji algoritem izvede namensko
funkcijo za vse primere. Skupno vsem metodam je, da med osebki poteka nekakšno
izmenjevanje informacij.
• Prednost teh algoritmov in izmenjevanja informacij je dobra odpornost proti prehitri
konvergenci zaradi ujetja v lokalni minimum, kar je ena izmed glavnih težav vseh
ostalih optimizacijskih algoritmov.
• Slabost populacijsko osnovanih algoritmov je, da je za dosego rezultatov zahtevano
relativno veliko število izračunov namenske funkcije, kar podaljša čas optimizacije.
S temi metodami lahko optimiziramo tako kombinatorične, diskretne, kot tudi zvezne
probleme.
2 Izraz »osebek«, se uporablja pri metahevrističnih metodah za eno »rešitev« optimizacije. Pri trajektornih metodah se iterativno izboljšuje ena sama rešitev. Pri populacijsko osnovanih metodah pa se vzporedno izboljšuje več rešitev – več osebkov.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
14
Nekaj primerov populacijsko osnovanih algoritmov:
• Genetski algoritmi (ang. genetic algorithms)
• Inteligenca roja delcev (ang. particle swarm optimization)
• Optimizacija s pomočjo kolonije mravelj (ang. ant colony optimization)
• Umetne kolonije čebel (ang. artificial bee colonies)
Vsi metahevristični algoritmi imajo dve fazi optimizacije, raziskovanje optimizacijskega
prostora (ang. exploration – globalno iskanje) in osredotočanje na tisti del optimizacijskega
prostora, ki daje najboljše rezultate (ang. exploitation – lokalno iskanje).
3.5 Genetski algoritmi
Genetski algoritmi spadajo v skupino evolucijskega računanja. So najpopularnejša metoda
izmed metahevrističnih metod. Algoritem temelji na inspiraciji iz narave – evoluciji. Dejansko
je algoritem simuliranje evolucije, zato tudi pri opisovanju metode uporabljamo celo paleto
izrazov iz biologije. Vključuje vse principe, ki so v naravi zaslužni za delovanje evolucije.
• Upošteva naravno selekcijo, saj v naravi preživijo le najmočnejši osebki, ti osebki imajo
tudi največ potomcev, kar je upoštevano v algoritmu.
• Upošteva križanje genskega materiala med dvema osebkoma.
• Upošteva mutacije, ki spremenijo genski material.
Osebki
En osebek v algoritmu predstavlja en nabor optimizacijskih spremenljivk. Ena optimizacijska
spremenljivka predstavlja en gen. Ta nabor spremenljivk lahko obravnavamo kot genski
material osebka. V literaturi zasledimo različne izrazoslovje, ki cilja na isto stvar (DNK,
kromosom, genotip). Temu osebku se izračuna namenska funkcija, ki jo v primeru genetskih
algoritmov imenujemo »ocena uspešnosti« (ang. fitness, fenotype), ki določa možnosti, da se
genski material osebka prenese v naslednjo generacijo.
Osebki so lahko v programu izraženi z različnimi podatkovnimi strukturami. Predstavimo nekaj
najbolj uveljavljenih struktur.[5]
Bitna Struktura, ki genski material zapiše, kot zaporedje bitov. Število bitov je odvisno
od števila parametrov, ki jih želimo zakodirati. Primer osebka: 011010010101101.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
15
Vektorska Struktura, ki genski material zapiše v vektorski obliki. Vsak parameter predstavlja
eno komponento vektorja. Primer osebka: [0.12, 3.65, 4.68, 1.45, 7.84].
Nizovna Struktura, ki genski material zapiše, kot zaporedje znakov. Primerna je za zapis
različnih navodil za stroje. Primer osebka: [12214212422113312], kjer so na
primer zakodirani pomiki: 1 – levo, 2 – desno, 3 – naprej, 4 – nazaj.
Permutacije Struktura, ki genski material zapiše kot zaporedje števil. Primerna je za različne
kombinatorične probleme. Primer osebka: [5,3,4,2,9,6,7,1,8].
Inicializacija
V inicializaciji ustvarimo osebke prve generacije. Vsem osebkom dodelimo nabor
optimizacijskih spremenljivk z naključnimi vrednostmi, za katere pa je priporočeno, da so
približno v rangu predvidenih končnih vrednosti.
Operatorji
Delovanje algoritma zagotavljajo trije glavni operatorji. To so: selekcija, križanje in mutacija.
Selekcija
Ključno pri genetskih algoritmih je, da osebki z boljšo funkcijo uspešnosti z večjo verjetnostjo
posredujejo svoje gene v naslednjo generacijo. Zato moramo napisati algoritem, ki bo
zagotavljal, da so boljši osebki večkrat izbrani za razmnoževanje. Predstavimo nekaj različnih
modelov za izbiranje boljših osebkov za razmnoževanje.
Proporcionalna izbira
Pri tem tipu selekcije ima vsak osebek možnost razmnoževanja, ki je proporcionalna njegovi
uspešnosti.
Verjetnost vsakega osebka za reprodukcijo lahko zapišemo kot:
𝑝𝑖 =𝑓𝑖
∑ 𝑓𝑗𝑛𝑗=1
(3.1)
Kjer je:
𝑝 – verjetnost posameznega osebka, da bo izbran
𝑓 – ocena uspešnosti
𝑛 – število vseh osebkov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
16
Slabost proporcionalne izbire je, da ni robustna. V kolikor bo kateri izmed osebkov imel precej
višjo oceno uspešnosti kot ostali osebki, bodo njegovi geni preplavili populacijo in zmanjšali
nabor alelov v populaciji, kar posledično vodi k prezgodnji konvergenci. Prav tako se slabost
tega tipa selekcije pokaže, ko imajo vsi osebki relativno podobno oceno uspešnosti, kar
pomeni, da bodo vsi osebki imeli podobne možnosti za predajo genov v naslednjo generacijo.
Izbira glede na rang osebka
Pri tem tipu selekcije osebke razvrstimo v vrsto in jih razvrstimo od najslabšega do najboljšega.
Vsak osebek ima možnost, da posreduje svoje gene v naslednjo generacijo, ki je
proporcionalna njegovemu rangu. Torej bo najslabši osebek imel rang 1 in najboljši osebek,
bo imel rang n (kjer je n število vseh osebkov).
Verjetnost vsakega osebka za reprodukcijo lahko zapišemo kot:
𝑝𝑖 =𝑟𝑖
∑ 𝑟𝑗𝑛𝑗=1
(3.2)
Kjer je:
𝑝 – verjetnost posameznega osebka, da bo izbran
𝑟 – rang osebka
𝑛 – število vseh osebkov
Ta tip selekcije se je pokazal za precej bolj robustnega, kot navadna proporcionalna izbira, saj
uspešno deluje tudi, ko imajo vsi osebki podobno oceno uspešnosti.
Turnirska izbira
Osebke lahko izbiramo tudi na podlagi turnirjev. Izvedemo virtualne »turnirje«, kjer se osebki
primerjajo po ocenah uspešnosti in zmagovalci so izbrani za reprodukcijo.
Najprej določimo število osebkov t, ki bo sodelovalo v turnirju. Določimo še verjetnost izbire
p. Najboljši izmed tekmovalcev dobi verjetnost izbire p, drugi najboljši ima verjetnost izbire
p(1-p), tretji najboljši ime verjetnost p(1-p)2, …
Če izberemo p = 1, potem zmeraj izberemo le najboljšega na turnirju. V kolikor pa je t = 1,
potem imamo naključno vzorčenje.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
17
Stohastično univerzalno vzorčenje
Stohastično univerzalno vzorčenje je podobno proporcionalnemu vzorčenju, le da v eni
iteraciji selekcije izberemo N naslednikov, kar poveča možnost, da bodo boljši osebki izbrani
vsaj enkrat. [5]
Elitizem
Elitizem lahko izvedemo pred selekcijo osebkov, in sicer majhen delež najboljših osebkov takoj
prenesemo v naslednjo generacijo brez sprememb genskega materiala ali križanja. S tem
zagotovimo, da bo vsaka naslednja generacija zagotovo imela vsaj enako dober osebek ali
boljši. Delež elite mora ostati ustrezno majhen, sicer lahko algoritem trpi zaradi prehitre
konvergence, če elita prevlada v populaciji.
Križanje
Križanje je proces, ko iz genskega materiala dveh osebkov kreiramo nova osebka za naslednjo
generacijo. DNK osebkov (staršev) prerežemo na istem mestu in sestavimo nov DNK.
Slika 3.3: Eno-točkovno križanje [16]
Poznamo eno-točkovno križanje ali več-točkovno križanje, vsa temeljijo na istem principu, ki
je prikazan na sliki 3.3 in sliki 3.4.
Slika 3.4: Več-točkovno križanje [16]
V kolikor želimo izboljšati uspešnost genetskega algoritma, moramo pri sestavljanju DNK-ja
paziti, da gene, za katere predvidevamo, da imajo medsebojno odvisnost, postavimo blizu
skupaj v genskem zapisu. S tem zagotovimo, da točka rezanja DNK-ja ne bo ločila medsebojno
odvisnih genov, saj verjetno ugodno vplivajo drug na drugega.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
18
Mutacija
Mutacija je nujen element pri genetskih algoritmih, saj zagotavlja, da se v populaciji pojavljajo
nove različice genov – novi aleli. V kolikor bi imeli algoritem brez mutacije, bi lahko bil najboljši
osebek sestavljen le iz genov, ki so bili v prvi generaciji.
Mutacija je postopek, ko en ali več genov naključno spremenimo. V kolikor imamo DNK,
zapisan z bitno reprezentacijo lahko preprosto eno 0 spremenimo v 1 ali obratno (primer:
0110100 → 0110110).
V kolikor pa imamo zapis v vektorski obliki pa lahko en gen preprosto mutiramo z naslednjim
nastavkom:
𝑔𝑝𝑜 = 𝑔𝑝𝑟𝑒𝑑 ∙ (1 + 𝑚) (3.3)
𝑚 ∈ [−𝑗, 𝑗]
Kjer je:
𝑔𝑝𝑟𝑒𝑑 – gen pred mutacijo
𝑔𝑝𝑜 – gen po mutaciji
𝑚 – mutacija
𝑗 – intenzivnost mutacije
Intenzivnost mutacije se lahko skozi optimizacijo spreminja.
Slika 3.5: Psevdokoda genetskih algoritmov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
19
3.6 Optimizacija z rojem delcev
Optimizacija z rojem delcev (ang. Particle Swarm Optimization – PSO) temelji na inspiraciji iz
narave, kot je gibanje jate ptic ali jate rib. Ta roj delcev skupaj išče optimalno točko v prostoru
in si med seboj sporoča uspešnost iskanja. Vsak delec se do neke mere giblje lokalno, vendar
ves roj skupaj se giblje v najobetavnejšo smer. Metoda je v prvi vrsti namenjena za optimizacijo
zveznih problemov.
Vsak delec predstavljata dva vektorja:
• Lokacijski vektor x = (x1, x2, …) predstavlja trenutno lokacijo osebka, komponente tega
vektorja, so optimizacijske spremenljivke našega obravnavanega sistema.
• Vektor hitrosti v = (v1, v2, …) predstavlja hitrost in smer potovanja delca v časovnem
koraku.
Na začetku vsak delec postavimo v prostor z naključnimi koordinatami v lokacijskemu vektorju.
Začetna hitrost delca je lahko enaka nič ali pa se delec pomika v naključni smeri z neko
relativno majhno hitrostjo. Zato, da roj ni le vsota posameznih obnašanj, je potrebna
izmenjava informacij o lokacijah potencialnih optimumov. Delec si ne izmenjuje informacij z
vsemi delci v roju, temveč le z nekaj posamezniki (sosednjimi delci ali naključno izbranimi delci)
ter z najboljšim delcem v roju.
V ta namen se hitrost (smer delca) izračuna na podlagi treh vektorjev:
• Vektor svoje najboljše lokacije xL
• Vektor najboljše lokacije svojih informatorjev xi
• Vektor najboljše lokacije celotnega roja xB
Delcu lahko določimo tudi neko vztrajnost gibanja, tako da delec obdrži neki delež svoje
prejšnje hitrosti.
Vsaka iteracija pri PSO algoritmu predstavlja en časovni korak. V vsakem časovnem koraku se
izračuna:
• Uspešnost delca – namenska funkcija (V kolikor je nova uspešnost delca njegova
najboljša, ga zapišemo v xL, če je pa nova uspešnost najboljša do sedaj za celotni roj,
ga zapišemo v xB
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
20
• Spremenimo vektor hitrosti z upoštevanjem: prejšnje hitrosti, xL, xi, xB in nekaj
naključnega šuma
• Izračunamo novo lokacijo delca v smeri vektorja hitrosti
Kot vidimo je bistvo te metode izračunavanje vektorja hitrosti (smeri delca). Ta vektor je vsota
različnih komponent, ki jim lahko nastavimo različne uteži. Te uteži nam služijo za uravnavanje
algoritma in prilagajanje našemu problemu. Zapišemo jih kot:
• α – delež ohranitve dosedanjega vektorja hitrosti. Vztrajnost delca.
• β – delež najboljše lastne lokacije xL (daje prednost lokalnemu iskanju).
• γ – delež najboljše lokacije informatorjev (vmesna stopnja med lokalnim in globalnim
iskanjem).
• δ – delež najboljše lokacije roja (daje prednost globalnemu iskanju).
• ε – hitrost premikanja delcev (določa velikost skokov delcev).
Slika 3.6: Psevdokoda optimizacije z rojem delcev
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
21
3.7 Tipi optimizacij
Tukaj bomo predstavili glavne tipe optimizacij, ki jih uporabljamo v strojništvu za strojne
konstrukcije in različne strojne elemente.
Dimenzijska optimizacija (ang. size optimization)
Pri tem tipu optimizacije so optimizacijske spremenljivke različne dimenzije strojne
konstrukcije. Primeri optimizacijskih spremenljivk so: premer debeline palice, debelina
škatlastega profila, radij zaokrožitve, površina preseka profila …
Večinoma je namen optimizacije zmanjšanje mase in boljši izkoristek materiala. Material je
ustrezno izkoriščen, v kolikor se v večini obremenjenih delov pojavlja napetost istega
velikostnega razreda. Izogibamo se predimenzioniranim delom in povečamo varnost kritičnim
delom konstrukcije.
Slika 3.7: Dimenzijska optimizacija palične konstrukcije [15]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
22
Optimizacija oblike (ang. shape optimization)
Pri tem tipu optimizacije so optimizacijske spremenljivke parametri oblike strojne konstrukcije
ali strojnega dela.
Praviloma spreminjamo koordinate vozlišč mreže končnih elementov. Optimizacijske
spremenljivke so lahko neposredno koordinate vozlišč. V primeru, da imamo opravka z večjim
številom spremenljivk pa se je izkazalo, da je vpeljevanje novih parametrov izboljšalo rezultate
optimizacije. V tem primeru so optimizacijske spremenljivke ti parametri ali kontrolne točke.
Koordinate vozlišč pa se premikajo v odvisnosti od teh parametrov ali kontrolnih točk.
V primeru volumskih elementov se ta tip optimizacije uporablja predvsem v končni fazi razvoja
za odpravo koncentracij napetosti.
Slika 3.8: Odprava koncentracije napetosti z optimizacijo oblike [18]
Slika 3.9: Optimizacija oblike paličnih konstrukcij [7]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
23
Optimizacija topologije (ang. topology optimization)
Optimizacija topologije prav tako spreminja obliko strojne konstrukcije/strojnega dela kot
optimizacije oblike. Vendar se z optimizacijo oblike razlikuje v tem, da za vhodne podatke
potrebuje le okvirno obliko konstrukcije, medtem ko pri optimizaciji oblike potrebujemo za
vhodne podatke relativno končno definicijo konstrukcije/dela. Pri optimizaciji topologije
konkretno posegamo v samo obliko strojne konstrukcije/strojnega dela, zato je še posebej
primerna za zgodnje faze razvoja.
Za palične konstrukcije to pomeni, da optimizacija oblike spreminja le koordinate vozlišč
konstrukcije. Pri optimizaciji topologije pa optimizacija spreminja sam način, kako so palice
povezane med seboj (slika 3.11).
Slika 3.10: Optimizacija topologije volumskega modela
Slika 3.11: Optimizacija topologije paličja [17]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
24
4 RAZVOJ PROGRAMA ZA OPTIMIZACIJO
4.1 Načrt razvoja programa
Pred samim razvojem programa smo si zadali cilje, ki jih želimo doseči. Cilji oziroma želje so se
med samim razvojem programa spreminjali, saj so se pojavljale nove ideje.
Osnovne zahteve, ki jih mora izpolnjevati program:
• Vstavljanje podatkov potrebnih za popolno definicijo ravninske palične konstrukcije s
pomočjo grafičnega vmesnika
• Jedro programa, ki izračuna željene veličine (pomike, napetosti) po metodi končnih
elementov (za palične končne elemente)
• Prikaz palične konstrukcije in rezultatov v grafičnem vmesniku
Dodatne zahteve, ki smo si jih postavili med razvojem programa:
• Jedro programa, ki podpira tudi končne elemente nosilca
• Optimizacija palične konstrukcije z uporabo genetskih algoritmov (optimizacijske
spremenljivke – koordinate vozlišč, namen optimizacije – minimalna masa, omejitve –
napetosti)
• Optimizacija palične konstrukcije z uporabo metode roja delcev (enak tip optimizacije
kot pri genetskih algoritmih)
• Možnost shranjevanja delovne seje na disk
4.2 Priprava programskega okolja
Razvoja programa smo se lotili v programskem jeziku Python. Glavni razlog za to odločitev je
bilo določeno predznanje. Kasneje se je izkazalo, da je bila odločitev ugodna.
Prednosti programskega jezika Python:
• Prosto dostopna odprtokodna rešitev
• Dobra tehnična podpora zaradi razširjenosti in priljubljenosti pri uporabnikih
• Preprosta sintaksa, ki omogoča hitrejše programiranje v primerjavi z drugimi jeziki
• Podpora za različne platforme
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
25
Slabosti:
• Počasnost – ni primeren za časovno kritične operacije (je interpretiran programski
jezik, ki se med samim izvajanjem prevaja v strojno kodo)
• Paralelno izvajanje – programski jezik sicer podpira paralelno procesiranje vendar v
primerjavi z drugimi programskimi jeziki precej zaostaja na tem področju
Zaradi svojih značilnosti (preprostosti) se Python najpogosteje uporablja, kot skriptni jezik.
Zelo primeren je tudi za kakšne »prototipne« aplikacije. Žal pa zaradi same arhitekture
(interpretiran programski jezik) čisti Python ni primeren za časovno kritične procese, saj po
hitrosti ni primerljiv s prevedenimi programskimi jeziki, kot so C, C++, Fortran, ...
Mnoga znana podjetja (Google, Yahoo, Dropbox, Dassault Systèmes, AVL, …), ki uporabljajo
Python, se zato odločijo za kompromis med interpretiranimi programskimi jeziki in
prevedenimi. Za časovno kritične operacije se uporablja visoko optimizirana koda napisana v
enem izmed »prevedenih« programskih jezikov. Za povezovalni programski jezik (časovno
manj pomembne operacije) pa se uporablja Python (ali kateri izmed drugih manj zahtevnih
programskih jezikov). Tako se doseže kompromis med hitrostjo razvoja aplikacije (ceni) in med
učinkovitostjo aplikacije.
Za namene diplomske naloge smo celoten program napisali v Pythonu, vendar smo uporabili
različne knjižnice, ki pohitrijo delovanje in razvoj programa.
Tabela 4.1: Tehnične značilnosti programa
Tehnične značilnosti
Programski jezik: Python 2.7 [19]
Glavne uporabljene knjižnice:
Grafični vmesnik: WxPython [20]
Numerične operacije: NumPy [21]
Grafični vmesnik za prikaz grafov: Matplotlib [22]
Uporabljena programska okolja:
Integrirano razvojno okolje: PyCharm [23]
Orodje za urejanje grafičnega vmesnika: WxFormBuilder [24]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
26
Slika 4.1: Integrirano razvojno okolje PyCharm
Slika 4.2: Orodje za urejanje grafičnega vmesnika WxFormBuilder
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
27
4.3 Programiranje grafičnega vmesnika
Grafični vmesnik smo oblikovali s ciljem, da bi bil čim bolj prijazen uporabniku. Zato je
pomembno, da je delovanje programa jasno že ob samem pogledu nanj.
Cilj našega programa je tudi, da je program samozadosten. Torej, da za samo uporabo in zagon
simulacije ne potrebujemo nobenega drugega programa. Da bi program ustrezal našim
zahtevam mora program ponujati naslednje funkcije:
• Sestavljanje konstrukcije
o Vstaviti vozlišča (koordinate, obremenitve vozlišča, morebitne podpore)
o Vstaviti elemente (kateri sta vozlišči elementa, lastnosti elementa (elastični
modul, površina preseka, vztrajnostni moment))
o Sprotno prikazovanje konstrukcije za boljšo uporabniško izkušnjo
• Post-procesiranje
o Prikaz magnitud napetosti (obarvani elementi: rdeča – tlak, zelena – nateg,
intenzivnost barve sorazmerna napetosti v elementu)
o Izpis pomikov v tabeli za vsa vozlišča
o Izpis napetosti v tabeli za vse elemente
• Optimizacija
o Izbira optimizacijskega algoritma
o Nastavljanje parametrov optimizacije
o Nastavljanje optimizacijskih spremenljivk (katera vozlišča in prostostne stopnje
bomo uporabili, kot optimizacijske spremenljivke)
o Nastavljanje največje dovoljene napetosti konstrukcije
Izdelave grafičnega vmesnika smo se lotili s programom WxFormBuilder. Ta program
omogoča, da na preprost način sestavimo okno grafičnega vmesnika in dodajamo gradnike
(besedilne oznake, vnosna polja, gumbe in ostale elemente). Te gradnike ustrezno
poimenujemo ter gumbom in ostalim aktivnim gradnikom definiramo funkcijo, ki se izvede ob
posameznem dogodku (npr. klik na gumb).
Program nam celotno izvorno kodo grafičnega vmesnika zapiše v datoteko »gui.py«. Ta
datoteka ni namenjena za urejanje, temveč jo vključimo v kodo programa, kot modul. Za
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
28
delovanje tega grafičnega vmesnika mora biti na računalniku nameščena tudi knjižnica
WxPython.
Slika 4.3: Glavno okno našega programa
Zraven glavnega okna našega programa pa si lahko po želji odpremo tudi grafično okno, ki
skrbi za prikaz konstrukcije. Konstrukcija se samodejno osvežuje, ko dodajamo nova vozlišča
in elemente, kar nam olajša delo in zagotavlja, da imamo nadzor nad sestavljanjem modela.
Grafično okno je namenjeno tako pred-procesiranju, kot post-procesiranju. Pri pred-
procesiranju, ko sestavljamo konstrukcijo, so elementi obarvani z modro barvo. Prikazane so
tudi obremenitve in podpore vozlišč. Pri post-procesiranju se elementi obarvajo v odvisnosti
od napetosti. Elementi, obremenjeni na tlak, se obarvajo rdeče, elementi, obremenjeni na
nateg pa se obarvajo zeleno. Prikazano je deformirano stanje konstrukcije, po želji lahko vse
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
29
pomike pomnožimo s skalirnim faktorjem. V ozadju pa se s svetlo sivo barvo izriše stanje
neobremenjene konstrukcije.
Slika 4.4: Grafično okno za prikaz konstrukcije
Slika 4.5: Temeljna koda aplikacije, ki skrbi za zagon okna
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
30
Vstavljanje vozlišč
Ena izmed pomembnejših funkcij glavnega pogovornega okna je sestavljanje našega modela
konstrukcije. Da je konstrukcija polno definirana, moramo vnesti podatke za vozlišča in
podatke za elemente.
Slika 4.6: Vnosna polja grafičnega vmesnika za vstavljanje vozlišč
Koordinate vozlišč vstavimo v vnosno polje v metrih (Slika 4.6). Koordinati vozlišča pa morata
biti ločeni z vejico. Prvo število je koordinata v x-smeri, drugo število je koordinata v y-smeri.
Decimalno ločilo za vse vnose v grafični vmesnik je pika. Primer vnosa koordinat: »2.3, -1.0«.
Obremenitve na vozliščih vnesemo v drugo vnosno polje, pri čemer je enota za silo N in enota
za moment Nm. Obremenitve morajo med seboj biti ločene z vejico. Te si sledijo po vrsti: sila
v x-smeri, sila v y-smeri in moment v z-smeri. V primeru, da polje pustimo prazno so privzeto
vse obremenitve enake nič. Primer vnosa: »0, -1000, 5«.
V kolikor želimo, da je vozlišče podprto (pomik ali zasuk v tej prostostni stopnji je enak nič),
potem preprosto obkljukamo ustrezno okence.
Podatkovna struktura za vozlišče, s katero operira program, je shranjena s Pythonovo
strukturo »list«, ki lahko vsebuje različne podatkovne tipe. Primer enega vozlišča:
Vozlišče = [x, y, Fx, Fy, Mz, podx, pody, podMz, u1, u2, u3]
Pri čemer je:
x – koordinata v x smeri [mm] (realno število s plavajočo vejico)
y – koordinata v y smeri [mm] (realno število s plavajočo vejico)
Fx – Sila v x smeri [N] (realno število s plavajočo vejico)
Fy – Sila v y smeri [N] (realno število s plavajočo vejico)
Mz – Moment v z meri [Nmm] (realno število s plavajočo vejico)
podx – podpora v x smeri (Boolov operator)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
31
pody – podpora v y smeri (Boolov operator)
podMz – podpora v z smeri (Boolov operator)
u1 – pomik v x smeri [mm] (realno število s plavajočo vejico)
u2 – pomik v y smeri [mm] (realno število s plavajočo vejico)
u3 – zasuk v z smeri [rad] (realno število s plavajočo vejico)
Vstavljanje elementov
Potem ko imamo vnesena vozlišča, lahko začnemo vstavljati elemente. Program podpira le
palične elemente in elemente nosilca, zato ima element v obeh primerih le dve vozlišči. Ti dve
vozlišči lahko preprosto izberemo s spustnima seznamoma, na katerih so na izbiro vsa
vstavljena vozlišča.
Slika 4.7: Vnosna polja za vnos elementa
S spustnim seznamom izberemo tudi tip elementa. V kolikor je to palica moramo definirati le
elastični modul in površino preseka. V kolikor pa je to nosilec pa moramo definirati še
vztrajnostni moment nosilca.
Za elemente nosilcev se nam ponudi še dodatna možnost, da lahko med izbranima vozliščema
vstavimo večje število elementov z enakimi lastnostmi. V tem primeru program samodejno
izračuna koordinate dodatnih vozlišč in jih vstavi v bazo vozlišč. Ta funkcija nam omogoča, da
lahko bolj detajlno analiziramo pomike in napetosti nosilca.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
32
Slika 4.8: Modeliranje konzolno vpetega nosilca z 1 elementom
Slika 4.9: Modeliranje konzolno vpetega nosilca z 20 elementi
Ko vstavimo element, se mu samodejno izračuna tudi dolžina in kot elementa. Ta dva podatka
kasneje potrebujemo za izračun togostne matrike elementa.
𝐿 = √(𝑥2 − 𝑥1)2 + (𝑦2 − 𝑦1)2 (4.1)
𝜑 = arctan (𝑦2 − 𝑦1
𝑥2 − 𝑥1) (4.2)
Elementi so prav tako kot vozlišča shranjeni s Pythonovo podatkovno strukturo »list«.
Vsak element je shranjen z devetimi podatki:
Element = [tip, v1, v2, kot, L, E, A, I, Sigma]
Kjer je:
Tip – Tip elementa; 0 – Palica, 1 – Nosilec (Celo število)
v1 – Zaporedna števila vozlišča 1 (Celo število)
v2 – Zaporedna števila vozlišča 2 (Celo število)
kot – kot nosilca glede na x os [rad] (realno število s plavajočo vejico)
L – Dolžina elementa [mm] (realno število s plavajočo vejico)
E – Elastični modul elementa [MPa] (realno število s plavajočo vejico)
A – Površina preseka elementa [mm2] (realno število s plavajočo vejico)
I – Vztrajnostni moment elementa [mm4] (realno število s plavajočo vejico)
Sigma – Napetost [MPa] (realno število s plavajočo vejico)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
33
4.4 Programiranje metode končnih elementov
Jedro programa predstavlja numerični del, ki rešuje probleme mehanike po metodi končnih
elementov. Bistvo programiranja metode končnih elementov je, da nastavimo linearni sistem
enačb in ga rešimo. Časovno zahtevno ni le reševanje tega sistema, temveč tudi nastavljanje
sistema oziroma sestavljanje togostne matrike. Splošni postopek od vhodnih podatkov do
pridobljenih pomikov je prikazan na diagramu poteka na sliki Slika 4.10.
Slika 4.10: Diagram poteka za temeljni del metode končnih elementov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
34
Število neznank sistema je odvisno od števila vozlišč in števila prostostnih stopenj, ki jih ima
vsako vozlišče. V našem primeru ima vsako vozlišče 3 prostostne stopnje (DoF, ang. Degree of
Freedom) pomik v x smeri, pomik v y smeri in zasuk. Torej je število neznank sistema enako
številu vozlišč pomnoženo s številom prostostnih stopenj.
Število neznank linearnega sistema enačb:
𝑛 = 𝐷𝑜𝐹 ∙ 𝑛𝑣 (4.3)
Kjer je:
𝑛 – število neznank sistema
𝐷𝑜𝐹 – število prostostnih stopenj posameznega vozlišča
𝑛𝑣 – število vozlišč modela
Sistem linearnih enačb lahko splošno zapišemo, kot:
𝐊 ∙ 𝒖 = 𝑭 (4.4)
Kjer je:
𝐊 – Togostna matrika (velikosti 𝑛 x 𝑛)
𝒖 – vektor pomikov (velikosti 𝑛)
𝑭 – vektor obremenitev (velikosti 𝑛)
V enačbi sta znana togostna matrika in vektor obremenitev. Neznanke so pomiki, torej ko
rešimo naš sistem linearnih enačb (npr. z metodo Gaussove eliminacije) imamo znane vse
pomike in je naš problem rešen. Drugače je pri podporah, saj so tam znani pomiki in so
neznanke sile. Rešitev tega problema je razložena na naslednjih straneh.
Sestavljanje globalne togostne matrike
Pred sestavljanjem si pripravimo prazno globalno togostno matriko velikost 𝑛 x 𝑛. Indeksi
matrike po stolpcih in vrsticah si sledijo po naslednjem vrstnem redu: u1, v1, θ1, u2, v2, θ2, …
unv, vnv, θnv. Torej za vsako prostostno stopnjo posameznega vozlišča je ena vrstica in en
stolpec.
Ko imamo pripravljeno prazno globalno togostno matriko sledi prištevanje togostnih matrik
posameznih elementov. Prvotno se izračuna togostna matrika v lokalnem koordinatnem
sistemu elementa. Nato pa se togostna matrika elementa transformira v globalni koordinatni
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
35
sistem. Členi transformirane matrike so tako pripravljeni za seštevanje k globalni togostni
matriki.
Elemente togostne matrike posameznega elementa sedaj prištejemo k elementom globalne
togostne matrike. Vrstica in stolpec posameznega člena matrike ustreza posameznemu
stolpcu in vrstici v globalni matriki. Členi, ki sovpadajo istemu vozlišču in prostostni stopnji se
seštejejo, kot je prikazano na sliki Slika 4.11. Slika zaradi poenostavitve prikazuje primer dveh
paličnih elementov, ki imata togostno matriko velikosti 4x4. Ta postopek lahko neposredno
prenesemo na togostne matrike elementov, ki imajo več prostostnih stopenj.
Togostna matrika elementa, ki je bila uporabljena pri programiranju našega programa, je
predstavljena v poglavju 2.4.
Slika 4.11: Sestavljanje globalne togostne matrike za dva palična elementa
Sedaj imamo pripravljeno globalno togostno matriko ter globalna vektorja pomikov in sil.
Načeloma je sistem pripravljen za reševanje. Vendar pa ugotovimo, da v vektorju pomikov
niso le neznanke in v vektorju sil niso znane vse sile. Izjema so prostostne stopnje vozlišč, ki so
podprta ali imajo predpostavljen pomik. Da pa je sistem rešljiv s pomočjo programske knjižnice
(NumPy) moramo v vektorju pomikov imeti le neznanke. To dosežemo s preprosto redukcijo
sistema, kot je prikazana na sliki Slika 4.12. Izbrišemo vrstice in stolpce tistih prostostnih
stopenj, ki imajo znan pomik.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
36
Slika 4.12: Redukcija globalne togostne matrike
Reševanje sistema enačb
Sledi reševanje sistema enačb. V našem primeru smo uporabili knjižnico NumPy, saj je uporaba
te knjižnice precej hitrejša kot pisanje lastne kode za reševanje sistemov enačb. Jedro knjižnice
je napisano v programskem jeziku C, kar je tudi neprimerljivo hitrejše, kot če bi bila ista zadeva
napisana v Pythonu.
Slika 4.13: Koda, ki reši sistem enačb in vrne pomike
Izračun napetosti
Funkcija nam vrne izračunan globalni vektor pomikov. Te pomike lahko sedaj vstavimo v bazo
naših vozlišč, kjer smo predhodno vsakemu vozlišču rezervirali mesto za njegove pomike.
Pred uporabo enačb za izračun napetosti moramo pomike iz globalnega koordinatnega
sistema transformirati nazaj v lokalni koordinatni sistem elementa.
Transformacijske enačbe:
𝑢1̅̅ ̅ = 𝑐𝑜𝑠𝜑 ∙ 𝑢1 + 𝑠𝑖𝑛𝜑 ∙ 𝑣1 (4.5)
𝑣1̅̅ ̅ = 𝑐𝑜𝑠𝜑 ∙ 𝑣1 − 𝑠𝑖𝑛𝜑 ∙ 𝑢1 (4.6)
𝜃1̅̅ ̅ = 𝜃1 (4.7)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
37
𝑢2̅̅ ̅ = 𝑐𝑜𝑠𝜑 ∙ 𝑢2 + 𝑠𝑖𝑛𝜑 ∙ 𝑣2 (4.8)
𝑣2̅̅ ̅ = 𝑐𝑜𝑠𝜑 ∙ 𝑣2 − 𝑠𝑖𝑛𝜑 ∙ 𝑢2 (4.9)
𝜃2̅̅ ̅ = 𝜃2 (4.10)
Nato lahko izračunamo natezno / tlačno napetost in upogibno napetost. Strig bomo v našem
primeru zanemarili.
Nateg/tlak:
𝜎𝑁𝑇 = 𝐸𝜀 = 𝐸 ∙𝑢2̅̅ ̅ − 𝑢1̅̅ ̅
𝐿 (4.11)
Upogibni moment [3]:
𝑀(𝑠) = 𝐸𝐼
𝐿2∙ [−6 + 12𝑠 𝐿(−4 + 6𝑠) 6 − 12𝑠 𝐿(−2 + 6𝑠)] ∙
[ 𝑣1̅̅ ̅
𝜃1̅̅ ̅
𝑣2̅̅ ̅
𝜃2̅̅ ̅]
(4.12)
𝑠 ∈ [0,1]
Ko v enačbo za moment vstavimo 0 dobimo moment na prvem vozlišču, ko pa vstavimo 1 pa
nam funkcija vrne moment za drugo vozlišče. Program preveri momenta za obe vozlišči ter
izračuna upogibno napetost za večji moment.
Upogibna napetost:
𝜎𝑈 =𝑀𝑚𝑎𝑥 ∙ 𝑦
𝐼 (4.13)
Ker sta obe napetosti normalni ju lahko preprosto seštejemo. Upogibna napetost se v nosilcu
pojavi v tlačni in v natezni obliki, zato prištejemo napetosti po naslednjem pravilu, ki nam
zagotavlja, da bo izpisana napetost dejansko največja napetost nosilca.
Če je 𝜎𝑁𝑇 > 0:
𝜎 = 𝜎𝑁𝑇+𝜎𝑈 (4.14)
Če je 𝜎𝑁𝑇 < 0:
𝜎 = 𝜎𝑁𝑇−𝜎𝑈 (4.15)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
38
4.5 Programiranje optimizacijskega modula
V tem poglavju je na kratko predstavljeno, kako smo se lotili programiranja optimizacijskega
modula našega programa. Teoretične osnove optimizacije in uporabljenih metod so opisane v
3. poglavju, tukaj pa bomo predstavili implementacijo teh metod za naš specifični primer
optimizacije.
Namen naše optimizacije je zmanjšanje mase konstrukcije, pri čemer pa napetosti ne smejo
preseči določene meje. V našem primeru smo se osredotočili le na optimizacijo konstrukcij,
sestavljeno iz paličnih elementov. V kolikor je konstrukcija mešana, torej, da je sestavljena iz
paličnih elementov in elementov nosilcev, bodo pri optimizaciji upoštevani le palični elementi.
Za ta namen smo implementirali dva tipa optimizacije: optimizacijo presekov, ki spreminja le
površino presekov palic, ter optimizacijo oblike, ki spreminja površino presekov palic ter
koordinate vozlišč.
Optimizacija presekov
Z optimizacijo presekov zagotovimo, da je celotna konstrukcija enakomerno obremenjena in
je material dobro izkoriščen. Ta tip optimizacije je preprosto implementirati, saj spreminjamo
le površino presekov palic.
Prvotno izvedemo normalno simulacijo, da dobimo znane napetosti v elementih. Nato
vsakemu elementu priredimo nov presek na naslednji način:
Izračunamo silo v palici, glede na napetost in sedanjo površino preseka:
𝐹 = 𝜎𝑝 ∙ 𝐴𝑝 (4.16)
Izračunano silo delimo z dopustno napetostjo in dobimo novo površino preseka elementa.
𝐴𝑛 =𝐹
𝜎𝑑 (4.17)
Kjer je:
𝐹 – Sila v palici
𝜎𝑝 – prejšnja napetost, 𝜎𝑑 – željena napetost
𝐴𝑝 – prejšnja površina preseka, 𝐴𝑛 – nova površina preseka
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
39
V kolikor imamo statično določeno konstrukcijo je optimizacija zaključena, saj so sile v palicah
v tem primeru neodvisne od posameznih togosti palic.
V kolikor pa imamo statično nedoločeno konstrukcijo pa so sile v palicah odvisne tudi od
posameznih togosti palic. S tem ko pa smo spremenili preseke palic, smo spremenili tudi
togostno matriko konstrukcije, zato moramo simulacijo ponoviti, da pridemo do pravilnih
rezultatov.
Po ponovni simulaciji ugotovimo, da lahko napetosti v palicah odstopajo od dopustne
napetosti. To se je zgodilo zato, ker smo površino presekov palic prilagajali na prejšnjo togost
konstrukcije. Sama sprememba presekov pa spremeni togost. Če še enkrat ponovimo
optimizacijo in spremenimo preseke glede na novo togost, ugotovimo, da smo se precej
približali dopustni napetosti, saj tokrat sprememba togosti konstrukcije ni bila tako izrazita.
Optimizacija oblike
Namen optimizacije pri tem tipu je prav tako minimaliziranje mase. Za optimizacijske
spremenljivke tokrat izberemo koordinate vozlišč. Optimizacijska omejitev pa je zgornja meja
napetosti.
S tem ko spreminjamo koordinate vozlišč, spreminjamo obliko konstrukcije. Želimo dobiti
ugodnejšo obliko konstrukcije, ki bo zagotavljala boljši potek sil. V kolikor se bodo sile v palicah
zmanjšale, lahko zmanjšamo presek palic in posledično bo konstrukcija lažja.
Za našo optimizacijo oblike bomo uporabili dve metahevristični metodi za kateri je skupno, da
potrebujeta funkcijo, ki vrne oceno uspešnosti za določen nabor optimizacijskih spremenljivk.
Ocena uspešnosti je v našem primeru masa konstrukcije – manjša, kot je masa uspešnejša je
konstrukcija. Uporabljeni metodi obravnavata naš model kot »črno skrinjico«, zato je naša
glavna naloga, da kar se da učinkovito sestavimo to funkcijo uspešnosti.
Definiranje funkcije uspešnosti
Našo funkcijo mase, ki jo optimiziramo lahko zapišemo, kot:
𝑚 = 𝑓(𝑥1, 𝑦1, 𝑥2, 𝑦2, … , 𝑥𝑛, 𝑦𝑛) (4.18)
Kjer je:
𝑚 – masa konstrukcije, ocena uspešnosti našega modela
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
40
(𝑥1, 𝑦1, 𝑥2, 𝑦2, … , 𝑥𝑛, 𝑦𝑛) – koordinate vozlišč, DNK pri genetskih algoritmih, pozicija pri
optimizaciji z rojem delcev
Masa konstrukcije je vsota posameznih mas elementov.
𝑚 = 𝜌 ∑𝐴𝑖 ∙ 𝐿𝑖
𝑒
𝑖=1
(4.19)
Kot vidimo, je skupna masa odvisna od posameznih dolžin in površin presekov elementov.
Nove dolžine elementov bi lahko izračunali takoj po spremembi koordinat vozlišč. Vendar pa
je naš namen, da se masa konstrukcije spreminja tudi v odvisnosti od sil v palicah, saj bomo le
v tem primeru dosegli uspešnejši potek silnic v konstrukciji. Zato je potrebno, da po
spremembi koordinat poženemo simulacijo in na podlagi izračunanih sil izračunamo
optimalno površino presekov palic. Torej v vsaki iteraciji izvedemo optimizacijo presekov.
Odvisnost mase lahko zapišemo kot: m = f(Ai(Fi), Li). S tem, ko smo spremenili površino
presekov smo spremenili togost, zato bi bilo korektno, da ponovno poženemo simulacijo.
Vendar se izkaže, da za optimizacijo to ni nujno potrebno, saj v vmesnih korakih optimizacije
ne potrebujemo točnih rešitev.
Slika 4.14: Diagram poteka za funkcijo uspešnosti
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
41
Izbira optimizacijskih spremenljivk
Do zdaj smo govorili, da za optimizacijske spremenljivke preprosto vzamemo koordinate
vozlišč. Vendar pa ni vseeno katera vozlišča premikamo, če želimo ohraniti namembnost
konstrukcije. Določena vozlišča moramo ohraniti na prvotnem mestu. To so praviloma
vozlišča, ki so podprta ali vozlišča z zunanjimi obremenitvami.
Privzeto bo program izbral x in y koordinato vseh vozlišč, ki nimajo določenih zunanjih
obremenitev, niso podprta in niso vozlišča elementa nosilca.
V mnogo primerih pa je priročna dodatna funkcija, ki nam omogoča, da sami določimo, katere
koordinate izbranih vozlišč bodo služile kot optimizacijske spremenljivke. Vnosno polje je
prikazano na sliki Slika 4.15. V kolikor želimo spreminjati le določeno koordinato vozlišča,
vnesemo v izbrano polje »označba vozlišča, koordinata« npr. »A,x«. V kolikor vnesemo le
označbo vozlišča brez koordinate, bo program kot optimizacijski spremenljivki vzel obe
koordinati vozlišča. Vsak nov vnos mora biti v novi vrstici.
Slika 4.15: Grafični vmesnik za optimizacijski modul genetskih algoritmov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
42
Implementacija genetskih algoritmov
Programiranje genetskih algoritmov smo začeli neodvisno, ter preizkusili delovanje na
preprosti matematični funkciji. Tako smo dobili zagotovilo, da je naša koda algoritma pravilna
in resnično deluje. Teoretično ozadje in psevdokodo našega algoritma smo predstavili v
poglavju 3.5.
Sledilo je prilagajanje algoritma našemu specifičnemu primeru. Optimizacijske spremenljivke
(DNK osebkov) in funkcijo uspešnosti smo že predstavili. Podatkovna struktura osebkov in
generacij je prikazana na sliki, kjer smo za poenostavitev prikazali 5 generacij s 4 osebki.
Slika 4.16: Podatkovna struktura osebkov in generacij v kodi
Inicializacija
Na začetku algoritem ustvari prvo generacijo. V tej generaciji je toliko osebkov, kot smo vnesli
v vnosno polje okna. Za naše primere se je za ustrezno izkazalo okoli 100 osebkov. Ko
generiramo osebke prve generacije, se vsaki koordinati (genu) prišteje naključno število.
Privzeto je to število v intervalu [-100, 100] mm. Amplituda naključnega števila se mora
ustrezno povečati oziroma zmanjšati glede na velikost naše konstrukcije. Ko imamo ustvarjene
genske zapise vseh osebkov, izračunamo oceno uspešnosti (maso) za vsak osebek.
Selekcija
V našem primeru smo za tip selekcije izbrali prirejeno izbiro glede na rang osebka. Algoritem
razvrsti osebke v generaciji po uspešnosti, kjer si sledijo od najboljšega proti najslabšemu.
Nato upoštevamo Gaussovo distribucijo za naključno izbiro najboljšega osebka.
Slika 4.17: Funkcija, ki nam vrne naključno število glede na Gaussovo distribucijo
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
43
Slika 4.18 Pravilo, ki smo ga definirali za izbiro osebka
Slika 4.19 prikazuje verjetnost reproduciranja glede na uspešnost osebka. Na absciso
razporedimo osebke od najboljšega proti najslabšemu. Njihova verjetnost reproduciranja se
spreminja z Gaussovo krivuljo. Spremenljivka »selekcija« nam omogoča kasnejše nastavljanje
optimizacije, da lahko algoritem priredimo našim zahtevam. Nižja, kot je vrednost parametra
»selekcija« višji bo selektivni pritisk na reproduciranje. Variiranje tega parametra je prikazano
na sliki Slika 4.20.
Slika 4.19: Verjetnost reproduciranja osebka v odvisnosti od uspešnosti
Slika 4.20: Vpliv variiranja parametra »selekcija«, na verjetnost reproduciranja osebkov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
44
Mutacija in križanje
Za reprodukcijo novega osebka smo uvedli eno točkovno križanje. Nato pa sledi mutacija
genskega materiala, ki je določena s tremi parametri:
• Začetna intenzivnost mutacije
• Končna intenzivnost mutacije
• Pogostost mutacije [%]
Za doseganje boljših rezultatov smo uvedli mutacijo, kateri se intenzivnost spreminja v
odvisnosti od zapovrstjo generacije. Intenzivnost mutacije linearno pada od začetne
intenzivnosti, ki je v prvi generaciji, do končne intenzivnosti, ki je v zadnji generaciji. S tem
dosežemo, da je na začetku optimizacije bolj osredotočeno na globalno iskanje minimuma,
kasneje pa k približevanju najdenemu minimumu.
Intenzivnost funkcije lahko zapišemo z enačbo:
𝑖𝑛𝑡𝑒𝑛𝑧 = 𝑖𝑛𝑡𝑒𝑛𝑧𝑧 − (𝑖𝑛𝑡𝑒𝑛𝑧𝑧 − 𝑖𝑛𝑡𝑒𝑛𝑧𝑘) ∙𝑔𝑒𝑛𝑒𝑟𝑎𝑐𝑖𝑗𝑎
š𝑡. 𝑣𝑠𝑒ℎ 𝑔𝑒𝑛𝑒𝑟𝑎𝑐𝑖𝑗 (4.20)
Kjer je:
𝑖𝑛𝑡𝑒𝑛𝑧 – intenzivnost mutacije v dani generaciji
𝑖𝑛𝑡𝑒𝑛𝑧𝑧 – intenzivnost mutacije v prvi generaciji
𝑖𝑛𝑡𝑒𝑛𝑧𝑘 – intenzivnost mutacije v zadnji generaciji
𝑔𝑒𝑛𝑒𝑟𝑎𝑐𝑖𝑗𝑎 – zaporedna številka generacije
Vsak mutiran gen se mutira po naslednjem pravilu:
𝑔𝑝𝑜 = 𝑔𝑝𝑟𝑒𝑑 + 𝑚 (4.21)
𝑚 ∈ [−𝑖𝑛𝑡𝑒𝑛𝑧, 𝑖𝑛𝑡𝑒𝑛𝑧]
Kjer je:
𝑔𝑝𝑟𝑒𝑑 - gen pred mutacijo
𝑔𝑝𝑜 - gen po mutaciji
𝑚 – mutacija
V našem primeru ne smemo množiti mutacije z genom (kot je to opisano v poglavju 3.5), saj
bi to pomenilo, da so vozlišča, ki so bolj oddaljena od koordinatnega izhodišča bolj mutirana.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
45
Zadnji parameter, ki določa mutacijo, je »pogostost mutacije«. Pove nam kolikšen delež genov
v genskem zapisu bo podvržen mutacijam, pri vsakem tvorjenju novega osebka.
Implementacija optimizacije z rojem delcev
Vključitev algoritma za optimizacijo z rojem delcev je potekalo relativno hitro, saj si precejšen
del kode deli z genetskimi algoritmi. Namen in tip optimizacije je ostal enak kot pri genetskih
algoritmih, zato smo uporabili enako funkcijo uspešnosti kot pri genetskih algoritmih. Prav
tako smo uporabili enako izbiro optimizacijskih spremenljivk.
Teorija tega algoritma je predstavljena v poglavju 3.6. Prav tako naša koda v Pythonu v grobem
sledi psevdokodi, ki je predstavljena v tem poglavju. Inicializacija delcev v prvem časovnem je
identična kot pri inicializaciji osebkov prve generacije pri genetskih algoritmih. Dodatno se v
tem primeru vsem delcem določi vektor hitrosti z naključnimi vrednostmi.
V našem primeru smo uporabili faktorje, ki sta jih definirala Kennedy in Clerc [12]. S pomočjo
teh faktorjev lahko lažje določimo uteži α, β, γ, in δ, ki določajo vpliv posameznih komponent
vektorja hitrosti. Ti faktorji prispevajo k stabilnosti algoritma, da ne »podivja«.
Parametri optimizacije:
• Število iteracij število časovnih korakov algoritma
• Število delcev število delcev
• Phi 1 faktor, ki daje prednost lokalnemu iskanju
• Phi 2 faktor, ki daje prednost globalnemu iskanju
• Kappa omejitveni faktor (ang. constriction factor)
Slika 4.21: Grafični vmesnik za optimizacijo z rojem delcev
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
46
5 PREGLED REZULTATOV
5.1 Potrditev rezultatov
Eden izmed glavnih korakov v razvoju programa je tudi preverjanje rezultatov, ki jih dobimo iz
programa. V kolikor nam program vrača popolnoma nesmiselne rezultate takoj ugotovimo, da
je v programski kodi hrošč, ki ga je treba odpraviti. Te vrste napak v programu odpravljamo
sproti med programiranjem. Včasih pa se zgodi, da program vrača dokaj smiselne rezultate,
zato napake ne odkrijemo takoj. Zaradi tovrstnih napak moramo občasno ali pa vsaj ob koncu
razvoja programa rezultate detajlno preveriti. To lahko storimo s primerjanjem rezultatov z
analitičnimi ročnimi izračuni ali s primerjanjem rezultatov z isto namenskimi programskimi
orodji.
Potrditev rezultatov z analitičnim preračunom
Prvotno bomo preverili rezultate na preprostem jeklenem nosilcu, ki je konzolno vpet na eni
strani. Dolžina nosilca naj bo 1 m. Presek naj bo kvadraten, dimenzij 10 x 10 mm. Elastični
modul za jeklo je 210 000 MPa. Konec nosilca pa naj bo navzdol obremenjen s silo 50 N.
Podatki so:
𝐸 = 210 000 𝑀𝑃𝑎
𝐿 = 1000 𝑚𝑚
𝐹 = 50 𝑁
𝑦 = 𝑎
2=
10 𝑚𝑚
2= 5 𝑚𝑚
𝐼 =𝑎4
12=
(10 𝑚𝑚)4
12= 833,3 𝑚𝑚4
𝑀 = 𝐹 ∙ 𝐿 = 50 𝑁 ∙ 1000 𝑚𝑚 = 50 000 𝑁𝑚𝑚
Najprej izračunamo upogibno napetost [6]:
𝜎𝑢 =𝑀 ∙ 𝑦
𝐼=
50 000 𝑁𝑚𝑚 ∙ 5 𝑚𝑚
833,3 𝑚𝑚4 = 300,012
𝑁
𝑚𝑚2 (5.1)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
47
Slika 5.1: Največja napetost, ki jo izračuna program
Nato pa izračunamo še pomik [6]:
𝑢 =𝐹 ∙ 𝐿3
3𝐸𝐼=
50 ∙ 10003
3 ∙ 210000 ∙ 833,3= 95,242 𝑚𝑚 (5.2)
Slika 5.2: Največji pomik, ki ga izračuna program
Tako napetost kot pomik, ki ga izračuna program popolnoma sovpadata z našim analitičnim
izračunom. Naš program je v primeru preprostega nosilca uspešno prestal test.
Potrditev rezultatov s programskim orodjem Abaqus
Naslednja stopnja verifikacije je bolj kompleksen model. Izbrali bomo mešano konstrukcijo, ki
je sestavljena iz palic in nosilcev. Skupaj je 41 paličnih elementov in 20 elementov nosilcev.
Nosilec je na koncu roke »žerjava« in je modeliran z 20 končnimi elementi. Rezultate bomo
primerjali s programskim paketom Abaqus.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
48
Slika 5.3: Palična konstrukcija, ki smo jo uporabili za verifikacijski test
Primerjava pomikov
Primerjali smo pomike v skrajni točki žerjava, kjer se pojavi največji pomik. Tako lahko
predpostavljamo, da v kolikor se ta pomik popolnoma ujema z našim izračunom, se vsi pomiki
konstrukcije ujemajo.
Slika 5.4: Pomik v skrajni točki žerjava izračunan z našim programom
Slika 5.5: Pomik v skrajni točki žerjava izračunan z Abaqusom
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
49
Rezultati pomikov iz obeh programov se ujemajo. Pomik v y smeri v skrajnem vozlišču
konstrukcije je -300,19 mm.
Primerjava napetosti
Za popolno verifikacijo izračuna napetosti smo primerjali dve napetosti: največjo napetost v
palicah in največjo napetost v nosilcu.
Slika 5.6: Napetosti izračunane z našim programom
Slika 5.7: Izračunane napetosti izračunane z Abaqusom
Največja napetost v palicah se v obeh primerih pojavi v zgornji levi palici, kjer nastopi tlačna
napetost -247,49 MPa.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
50
V primeru največje napetosti v nosilcu ugotovimo, da pride do odstopanja. Razlog za
odstopanje napetosti tiči v različnem pristopu izpisa napetosti. Abaqus nam izpiše napetost,
ki je povprečna za celotni element (izbrane imamo linearne elemente). Naš program pa nam
izpiše maksimalno napetost v elementu (kot je opisano v poglavju 4.4).
Ta razlika ne vpliva na napetosti v palicah, saj je napetost v palici čez celotno dolžino enaka.
V kolikor želimo primerjati rezultate moramo izračunati povprečno napetost elementa še za
naš program. Povprečno vrednost elementa dobimo, če seštejemo napetosti sosednjih
elementov in delimo z 2.
Napetost v izbranem elementu (maksimalna): 𝜎 = 234,375 MPa
Napetost v sosednjem elementu (maksimalna): 𝜎 = 210,9375 MPa
𝜎 =234,375 + 210,9375
2= 222,656 𝑀𝑃𝑎 (5.3)
Izračunana povprečna vrednost se popolnoma ujema z vrednostjo iz Abaqusa. Razlika je sicer
v predznaku, vendar v kolikor se v nosilcu pojavi le upogibna napetost imata tlačni in natezni
napetosti v elementu enaki amplitudi. Program je tudi v primeru zahtevnejše konstrukcije
uspešno prestal verifikacijski test.
5.2 Rezultati optimizacije
Optimizacija preprostega mostu
Za optimizacijo smo si izbrali preprost model mostu. Vse palice v začetnem modelu mostu
imajo enako površino preseka, zaradi tega je material v mnogih primerih neizkoriščen.
Ustrezna prerazporeditev uporabljenega materiala bi zmanjšala maso in zmanjšala
maksimalne napetosti. Masa mostu je 155,92 kg. Maksimalna napetost je 180 N/mm2.
Slika 5.8: Izvirna konstrukcija, ki je bila uporabljena za optimizacijo
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
51
Nato izvedemo optimizacijo presekov, ki ustrezno prerazporedi material. Za maksimalno
napetost izberemo 100 N/mm2. Nova masa mostu je 84,39 kg, zmanjšali smo jo za 45,9 %.
Maksimalna napetost je 100 N/mm2.
Slika 5.9: Napetosti v konstrukcija po optimizaciji presekov
Naslednja stopnja optimizacije je optimizacija oblike. Uporabili smo genetske algoritme. Za
optimizacijske spremenljivke smo izbrali obe koordinati vseh vozlišč, ki nimajo predpisanih
zunanjih sil in niso podprta. Število generacij smo nastavili na 200 in število osebkov prav tako
na 200. Začetna intenzivnost mutacije je bila 300 mm, končna pa 0,1 mm. Masa tega mostu je
41,34 kg, glede na prejšnje stanje smo zmanjšali maso še za dodatnih 51 %. Glede na izvirno
stanje pa smo maso zmanjšali za 73,5 %. Maksimalna napetost je 100 N/mm2.
Slika 5.10: Konstrukcija po optimizaciji oblike
V primeru preprostega mostu se je naš program izvrstno izkazal. Sicer se je že pokazala
časovna zahtevnost našega algoritma, saj je za izvedbo 40 000 simulacij (200 generacij x 200
osebkov) program potreboval 3 minute in 25 sekund. Simulacija se je torej izvedla v 0,0051
sekunde, kar je neopazno za človeka, vendar pomembno v primerih optimizacij, kjer lahko
hitro dosežemo nekaj tisoč iteracij. Algoritem bi sicer lahko prišel do podobnih rezultatov z
10x manj iteracijami, vendar glede na to, da imamo preprost model, nam ni bilo treba
varčevati z računskim časom.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
52
Optimizacija »zahtevnejšega« mostu
V tem primeru smo izbrali primer mostu s štirimi podporami. Tokrat smo obremenili vsa
zgornja vozlišča z vertikalno silo navzdol, kot prikazuje slika Slika 5.11. Model ima v tem
primeru 65 elementov. Masa modela z že optimiziranimi preseki je 31,0 kg.
Slika 5.11: Izvirna konstrukcija uporabljena za optimizacijo
V tem primeru smo za optimizacijske spremenljivke izbrali le y koordinate vseh vozlišč brez
zunanjih obremenitev in podpor. Vključitev le ene koordinate, kot optimizacijske
spremenljivke, se je izkazalo ustrezno za takšne primere, kot so mostovi. S tem zmanjšamo
možnosti, da program zaide in ustvari nesmiselne rešitve. Manjše, kot je število optimizacijskih
spremenljivk (krajši DNK) manjše je tudi potrebno število osebkov za uspešno optimizacijo in
posledično skrajšamo tudi računski čas.
Tokrat smo izbrali 80 generacij in 100 osebkov, vse ostale nastavitve smo pustili privzete.
Slika 5.12: Oblika mostu po prvi optimizaciji
Rezultat, ki ga dobimo: Masa je 22,5 kg, glede na izvirni model smo maso zmanjšali za 28,1 %.
Delež mase, ki smo ga uspeli zmanjšat z optimizacijo je zadovoljiv. Vendar se pojavi dvom v
ustreznost oblike konstrukcije. Pričakovali smo lok zgoraj in ne spodaj. Vertikalne palice na
sredini mostu so zelo vitke in obremenjene na tlak. Te palice bi morali preveriti še na
sposobnost proti uklonu (saj program ne preverja uklona). Po vsej verjetnosti bi morali
povečati vztrajnostni moment in posledično bi se povečal presek in masa teh palic, nakar bi ta
optimizacija izgubila pomen.
Ugotovimo, da je dobljen rezultat neki lokalni minimum, ki ni primeren za realne konstrukcije.
Z nadaljevanjem optimizacije je relativno težko uiti temu lokalnemu minimumu, saj se
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
53
konstrukcija vedno vrne v to obliko. Težave lokalnih minimumov se lahko mnogokrat rešimo
tako, da povečamo intenzivnost in pogostost mutacije. Vendar se posledično pojavijo težave
s konvergenco in nesmiselnimi rezultati.
Da pridemo do boljše rešitve, moramo optimizacijo izvesti v več korakih. Najprej malo
spremenimo izvirno obliko konstrukcije (Slika 5.13). Nato pri ustrezni obliki ustavimo
optimizacijo. Za izbrane optimizacijske spremenljivke izberemo le y koordinate sredinskih treh
vozlišč. Mutacijo povečamo na 2500 mm, nastavimo pogostost mutacije na 100 % in število
osebkov nastavimo na 300. Nato poženemo optimizacijo in po nekaj generacijah bi se moral
pojaviti osebek, ki ima lok pravilno oblikovan. V tem primeru lahko ustavimo optimizacijo in
nadaljujemo z običajnimi parametri (optimizacijske spremenljivke so vsa vozlišča, mutacija je
okoli 300 mm). Po koncu optimizacije dobimo zadovoljiv rezultat.
Slika 5.13: Koraki, ki smo jih izvedli pri tej optimizaciji
V kolikor želimo še izboljšati rezultat lahko poženemo optimizacijo še enkrat tako da
omogočimo optimizacijo obeh koordinat, vendar tokrat nastavimo mutacijo na manjše
vrednosti, saj želimo le manjše natančnejše izboljšave.
Končna konstrukcija ima maso 16,9 kg, glede na izvirni model smo maso zmanjšali za 45,4 %.
Slika 5.14: Končni rezultat optimizacije
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
54
5.3 Primerjava optimizacijskih algoritmov
Metoda z genetskimi algoritmi in metoda optimizacije z rojem delcev imata precej različno
zasnovo. Kljub temu smo v večini primerov prišli do zelo podobnih rezultatov. Metodi sta v
našem primeru zahtevali tudi podobno število iteracij, da smo dobili primerljive rezultate.
Primerljivost metod lahko pokažemo na preprostem primeru mostu, ki je že bil predstavljen v
prejšnjem poglavju. Za obe metodi smo uporabili popolnoma enake pogoje. Obe metodi sta
imeli na razpolago skupno največ 5000 iteracij.
• Genetski algoritmi 50 generacij x 100 osebkov 5000 iteracij
• Optimizacija z rojem delcev: 125 čas. korakov x 40 delcev 5000 iteracij
Slika 5.15: Rezultati primerjave optimizacijskih metod
Z uporabo genetskih algoritmov smo zmanjšali maso konstrukcije za 38,4 % v primerjavi z
optimizacijo z rojem delcev, ko nam je uspelo zmanjšati maso za 37,2 %. Zadeva se ponovi, če
ponovimo test s 7500 iteracijami. Uporaba genetskih algoritmov je zmanjšala maso za -43,,1
% in optimizacija z rojem delcev je zmanjšala za -41,1 %. Zavedati se moramo tudi dejstva, da
sta obe metodi stohastični in nam zmeraj vrneta nekoliko drugačen rezultat.
En primer optimizacije ni dovolj, da bi lahko z zagotovostjo trdili, da je katera izmed teh dveh
metod, primernejša za ta tip optimizacije. V kolikor bi želeli favorizirati katero izmed metod,
bi morali opraviti vrsto preizkusov na različnih modelih in z različnimi parametri optimizacije,
kar pa presega namen tega diplomskega dela.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
55
6 SKLEP
Končni produkt diplomskega dela je presegel prvotna pričakovanja. Program, ki je bil napisan
za ta namen obsega več kot 1000 vrstic programske kode. Omogoča izračun poljubnih
ravninskih paličnih konstrukcij in konstrukcij, sestavljenih iz linijskih nosilcev.
Optimizacijski modul se je izkazal, kot učinkovit in robusten v primeru preprostejših
konstrukcij. V kolikor pa bi želeli optimizirati zahtevnejše konstrukcije z večjim številom vozlišč,
bi bilo treba uvesti nekakšno parametrizacijo oblike konstrukcije. S tem ko bi za optimizacijske
spremenljivke izbrali le te parametre, bi zmanjšali število dimenzij optimizacijskega prostora
in težavnost optimizacije bi se zmanjšala.
Program odpira možnosti za nadaljnji razvoj. Dodatno bi se lahko implementirala podpora za
prostorske konstrukcije in podpora za optimizacijo konstrukcij iz linijskih nosilcev. Uporabile
bi se lahko tudi druge optimizacijske metode.
Vloženo delo je zahtevalo znanja iz različnih področij: programiranja, mehanike, matematike
in optimizacije. Poglobilo je razumevanje metode končnih elementov in uporabljenih
optimizacijskih metod: genetskih algoritmov in optimizacije z rojem delcev.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
56
7 LITERATURA
[1] M. Kegl, B. Harl, Mehanika III. Maribor: Založništvo Fakultete za strojništvo Maribor,
2012.
[2] A. Alujevič, B. Harl, Mehanika I. Maribor: Založništvo Fakultete za strojništvo Maribor,
2009.
[3] R. Haftka, Finite element analysis of beams and frames, Dosegljivo:
http://web.mae.ufl.edu/nkim/eml5526/Lect05.pdf [Datum dostopa: 17. 5. 2017]
[4] what-when-how, FEM for Frames (Finite Element Method) Part 1, Dosegljivo:
http://what-when-how.com/the-finite-element-method/fem-for-frames-finite-
element-method-part-1/ [Datum dostopa: 17. 5. 2017]
[5] I. Kononenko, M. Robnik Šikonja, Inteligentni sistemi. Ljubljana: Založbe FE in FRI, 2010
[6] B. Kraut, Krautov strojniški priročnik, 15. izdaja. Ljubljana: Littera picta, 2011.
[7] B. Harl, M. Kegl, »Optimizacija oblike prostorske palične konstrukcije«, Strojniški
Vestnik-Journal of Mechanical Engineering, let. 51, št. 9, str. 570-588, september 2005.
[8] H. Kawamura, H. Ohmori, N. Kito, »Truss topology optimization by a modified genetic
algorithm«, Springer-Verlag, str. 467–472, 2002.
[9] R. Cazacu, L. Grama, »Steel truss optimization using genetic algorithms and FEA«,
Procedia Technology št.12, str. 339-346, oktober 2013.
[10] X. S. Yang, Nature-Inspired Metaheuristic Algorithms, 2. izdaja. Frome, Anglija: Luniver
Press, 2010.
[11] S. Desale, A. Rasool, S. Andhale, P. Rane, »Heuristic and Meta-Heuristic Algorithms and
Their Relevance to the Real World: A Survey«, International journal of computer
engineering in research trends, Vol. 2, str. 296-304, maj 2015.
[12] M. S. Innocente, J. Sienz, »Particle Swarm Optimization with Inertia Weight and
Constriction Factor«, v International conference on swarm intelligence. Cergy, Francija,
junij 2011.
[13] Color-coded contour lines with Mathematica, Dosegljivo:
http://mathgis.blogspot.si/2010/ [Datum dostopa: 27. 8. 2017]
[14] Rosenbrock function, Dosegljivo: https://en.wikipedia.org/wiki/Rosenbrock_function/
[Datum dostopa: 27. 8. 2017]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
57
[15] Unique Innovations, Dosegljivo: http://unitions.com/services/ [Datum dostopa: 27. 8.
2017]
[16] Genetic Algorithms – Crossover, Tutorials Point, Dosegljivo:
https://www.tutorialspoint.com/genetic_algorithms/genetic_algorithms_crossover.h
tm [Datum dostopa: 27. 8. 2017]
[17] A. Friedlander, F. A. M. Gomes, Solution of a truss topology bilevel programming
problem by means of an inexact restoration method, Dosegljivo:
http://www.scielo.br/scielo.php?script=sci_arttext&pid=S1807-03022011000100006
[Datum dostopa: 27. 8. 2017]
[18] D. Broekaart, What does it take to optimize your designs with the use of FEA. (30. 3.
2015) Dosegljivo: https://www.linkedin.com/pulse/what-does-take-optimize-your-
designs-use-fea-dolf-broekaart [Datum dostopa: 27. 8. 2017]
[19] Python website, Dosegljivo: https://www.python.org/ [Datum dostopa: 27. 8. 2017]
[20] wxPython website, Dosegljivo: https://wxpython.org/ [Datum dostopa: 27. 8. 2017]
[21] NumPy website, Dosegljivo: http://www.numpy.org/ [Datum dostopa: 27. 8. 2017]
[22] Matplotlib website, Dosegljivo: https://matplotlib.org/ [Datum dostopa: 27. 8. 2017]
[23] PyCharm website, Dosegljivo: https://www.jetbrains.com/pycharm/ [Datum dostopa:
27. 8. 2017]
[24] wxFormBuilder web, Dosegljivo: https://github.com/wxFormBuilder/wxFormBuilder
[Datum dostopa: 27. 8. 2017]