You are on page 1of 57

VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS

FUNDAMENTINIŲ MOKSLŲ FAKULTETAS


INFORMACINIŲ TECHNOLOGIJŲ KATEDRA

Ervin Miloš

INŽINERINIŲ UŽDAVINIŲ SPRENDIMAS NAUDOJANT GLOBALAUS


OPTIMIZAVIMO ALGORITMUS
SOLVING ENGINEERING PROBLEMS USING GLOBAL OPTIMIZATION
ALGORITHMS

Baigiamasis magistro darbas

Informacinių technologijų studijų programa, valstybinis kodas 6211BX016


Duomenų gavybos technologijos specializacija
Informatikos inžinerijos studijų kryptis

Vilnius, 2019
ANOTACIJA

Vilniaus Gedimino technikos universitetas ISBN ISSN


Fundamentinių mokslų fakultetas Egz. sk. ………..
Data ….-….-….
Informacinių technologijų katedra

Antrosios pakopos studijų Informacinių technologijų programos magistro baigiamasis darbas


Pavadinimas Inžinerinių uždavinių sprendimas naudojant globalaus optimizavimo
algoritmus
Autorius Ervin Miloš
Vadovas Dmitrij Šešok

Kalba: lietuvių

Anotacija
Magistro baigiamojo darbo tikslas – pasiūlyti realaus statybos inžinerijos uždavinio –
polių padėčių gręžtinio tipo pamatuose optimizavimo strategiją. Šiam tikslui pasiekti buvo
iškelti uždaviniai: atlikti mokslinę literatūros analizę: išnagrinėti populiariausius globalaus
optimizavimo algoritmus ir juos aprašyti; išnagrinėti sprendžiamą polių padėčių optimizavimo
uždavinį ir jį aprašyti; išanalizuoti ankstesnių mokslinių tyrimų rezultatus, išrinkti perspektyvų
globalaus optimizavimo algoritmą; sukurti programinę įrangą skaitiniams eksperimentams
atlikti; atlikti skaitinius eksperimentus naudojant įvairias euristikas; palyginti gautus rezultatus
su paskelbtais mokslinėje literatūroje.
Darbo tyrimo metodai: mokslinės literatūros analizė, skaitiniai sprendimo metodai.
Darbą sudaro 6 skyriai. Pirmajame skyriuje nagrinėjami ir aprašomi populiariausi
globalaus optimizavimo algoritmai. Antrasis skyrius yra skirtas polių padėčių gręžtiniuose
pamatuose uždavinio analizei. Aprašomas uždavinio matematinis modelis, gręžtinių pamatų
skaičiavimo programos funkcijos bei integravimas į optimizavimo programą. Trečiajame
skyriuje nagrinėjami ankstesni moksliniai tyrimai, palyginami rezultatai, išrenkamas
perspektyviausias optimizavimo algoritmas. Ketvirtajame skyriuje pristatoma sukurta
optimizavimo programinė įranga. Pristatomi realizuoti algoritmo metodai. Penktajame skyriuje
pristatomi skaitiniai eksperimentai, panaudojant įvairias optimizavimo metodų kombinacijas,
siekiant surasti optimalią strategiją. Šeštajame skyriuje lyginami rezultatai.
Bendra darbo apimtis: 53 puslapiai be priedų, 23 paveikslų, 14 lentelių, 48 literatūros
šaltiniai.
Papildomai pateikiami priedai.

Prasminiai žodžiai: globalus optimizavimas, gręžtinis pamatas, poliai.


ANNOTATION

Vilnius Gediminas Technical University ISBN ISSN


Faculty of Fundamental Sciences Copies No. ………
Department of Information Technologies Date ….-….-….

Master’s degree Studies Information Technologies study programme Master Graduation


Thesis
Title Solving engineering problems using global optimization algorithms
Author Ervin Miloš
Academic supervisor Dmitrij Šešok

Thesis language: Lithuanian

Annotation
The goal of this master’s final work is to offer global optimization strategy for solving
real civil engineering problems. To reach this goal, it was necessary to complete some tasks:
analyze scientific literature on the topic of the most popular global optimization algorithms;
examine and describe piles position in grillage optimization problem; analyze the results of
previous research, choose a prospective global optimization algorithm; create software with
chosen optimization algorithm. Perform numerical experiments and determine the optimal
optimization strategy. Compare found strategy with other researchers results.
Work research methods: analysis of scientific literature, numerical solution methods.
The structure of this work consists of six parts. In the first part of this work, popular
algorithms for solving global optimization algorithms are examined. In the second part, an
analysis of grillages problem is presented. Mathematical model, grillages computing program
functions and integration with optimization program is described. In the third part, previous
research results are analyzed and compared. Prospective global optimization algorithm is
chosen. In the fourth part, created software for optimization is presented. The software
architecture and created methods are described. The fifth part is dedicated for searching
optimal strategy using various combinations of optimization algorithms. Numerical
experiments are performed and compared. In the sixth part, result of experiments are compared
with other research results.
Total volume of paper: 53 pages without appendixes, 23 pictures, 14 tables, 48
references.
An extra material is presented in appendix.

Keywords: global optimization, grillages, piles


TURINYS
ĮVADAS .............................................................................................................................................. 8
1. POPULIARIAUSIŲ GLOBALAUS OPTIMIZAVIMO ALGORITMŲ LITERATŪROS
ANALIZĖ .......................................................................................................................................... 10
1.1. Globalaus optimizavimo algoritmų klasifikacija ................................................................ 11
1.2. Genetinis algoritmas ........................................................................................................... 13
1.3. Atkaitinimo modeliavimas .................................................................................................. 17
2. POLIŲ PADĖČIŲ GRĘŽTINIUOSE PAMATUOSE UŽDAVINIO FORMULAVIMAS...... 21
2.1. Gręžtinių pamatų uždavinio aprašymas .............................................................................. 21
2.2. Gręžtinių pamatų skaičiavimo programa ............................................................................ 22
3. PERSPEKTYVAUS ALGORITMO PAIEŠKA PANAUDOJANT ANKSTESNIUS
TYRIMUS ......................................................................................................................................... 25
3.1. Įvairių optimizavimo algoritmų palyginimas...................................................................... 25
3.2. Bajeso metodo pritaikymas ................................................................................................. 27
3.3. Genetinio algoritmo pritaikymas ........................................................................................ 28
3.4. Atkaitinimo modeliavimo pritaikymas ............................................................................... 29
4. OPTIMIZAVIMO PROGRAMA NAUDOJANT ATKAITINIMO MODELIAVIMO
ALGORITMĄ ................................................................................................................................... 31
4.1. Optimizavimo programos architektūra ............................................................................... 31
4.2. Pradinių parametrų nuskaitymas ......................................................................................... 33
4.3. Pradinio individo generavimas ........................................................................................... 33
4.4. Individo kandidato parinkimas ........................................................................................... 34
4.5. Kandidatų palyginimas ir stimuliavimas ............................................................................ 36
5. SKAITINIAI EKSPERIMENTAI IR OPTIMALIOS STRATEGIJOS PAIEŠKA .................. 38
5.1. Uždavinio sprendimas naudojant tik pradinį individo generatorių ..................................... 38
5.2. Uždavinio sprendimas naudojant bazinį kandidato selektorių............................................ 39
5.3. Uždavinio sprendimas naudojant atstumo kandidato selektorių ......................................... 39
5.4. Uždavinio sprendimas naudojant atstumo kandidato selektorių ir atstumo stimuliatorių .. 40
5.5. Uždavinio sprendimas keičiant stimuliatoriaus atstumo parametrą .................................... 41
5.6. Uždavinio sprendimas naudojant dinaminį kandidato selektorių ....................................... 42
5.7. Uždavinio sprendimas naudojant dinaminį stimuliatorių ................................................... 42
5.8. Uždavinio sprendimas modifikuojant kelis individo elementus ......................................... 43
5.9. Visų eksperimentų palyginimas ir optimalios strategijos parinkimas ................................ 44
5.10. Geriausios strategijos pritaikymas visiems globaliojo optimizavimo uždaviniams........ 45
6. REZULTATŲ PALYGINIMAI ................................................................................................. 46
4
6.1. Atkaitinimo modeliavimo ir genetinio algoritmo palyginimas ........................................... 46
6.2. Siūlomos optimizavimo strategijos rezultatų palyginimas su paskelbtais mokslinėje
literatūroje ...................................................................................................................................... 46
IŠVADOS .......................................................................................................................................... 49
LITERATŪRA .................................................................................................................................. 50
PRIEDAI ........................................................................................................................................... 54
A priedas. Optimizavimo programos polimorfizmo pritaikymas .................................................. 54
B priedas. Pagrindinių parametrų nuskaitymas ............................................................................. 55
C priedas. Praktinių uždavinių sprendimai .................................................................................... 56

5
Lentelių sąrašas
1 lentelė. Globaliojo optimizavimo algoritmų palyginimas .............................................................. 26
2 lentelė. GA ir SA palyginimas ....................................................................................................... 29
3 lentelė. Bazinis kandidato selektorius ............................................................................................ 35
4 lentelė. Atstumo kandidato selektorius .......................................................................................... 35
5 lentelė. Dinaminis kandidato selektorius ....................................................................................... 35
6 lentelė. Eksperimento rezultatai lyginant pradinio individo generatorius ..................................... 38
7 lentelė. Eksperimento rezultatai naudojant atstumo kandidato selektorių ..................................... 40
8 lentelė. Eksperimento rezultatai naudojant atstumo kandidato selektorių ir atstumo stimuliatorių
........................................................................................................................................................... 40
9 lentelė. Eksperimento rezultatai keičiant stimuliatoriaus atstumo parametrą ................................ 41
10 lentelė. Eksperimento rezultatai naudojant dinaminį kandidato selektorių ................................. 42
11 lentelė. Eksperimento rezultatai naudojant dinaminį stimuliatorių .............................................. 43
12 lentelė. Eksperimento rezultatai modifikuojant kelis individo elementus ................................... 43
13 lentelė. Geriausios strategijos rezultatų palyginimas su tiksliais uždavinių sprendimais ............ 45
14 lentelė. Siūlomos optimizavimo strategijos rezultatų palyginimas su kitų tyrėjų rezultatais ...... 47

6
Paveikslų sąrašas
1 pav. Optimizavimo procesas .......................................................................................................... 10
2 pav. Globalaus ir lokalaus minimumo funkcijos taškai ................................................................. 11
3 pav. Globaliojo optimizavimo algoritmų taksonomija.................................................................. 12
4 pav. Populiacijos sandara ............................................................................................................... 14
5 pav. Palikuonio individo sudarymas .............................................................................................. 15
6 pav. Dviejų taškų kryžminimas ...................................................................................................... 15
7 pav. Uniforminis kryžminimas....................................................................................................... 15
8 pav. Vieno parametro ir kelių parametrų mutacija......................................................................... 15
9 pav. Uniforminė mutacija............................................................................................................... 16
10 pav. Atkaitinimo modeliavimo proceso schema .......................................................................... 17
11 pav. Keliaujančio pardavėjo optimizavimo uždavinys ................................................................ 18
12 pav. Keliaujančio pardavėjo uždavinio globalus sprendimas ...................................................... 18
13 pav. Pamato schema ..................................................................................................................... 21
14 pav. Pamato transformacija į vienmatę tiesę ................................................................................ 22
15 pav. Integracija tarp optimizavimo programos ir gręžtinių pamatų skaičiavimo programos ...... 23
16 pav. Tyrimo rezultatai Bajeso metodu ......................................................................................... 27
17 pav. 2011 m. ir 2017 m. tyrimų rezultatų palyginimas ................................................................ 28
18 pav. SA rezultatai panaudojant paskirstytus skaičiavimus tinkle ................................................ 30
19 pav. SA veikimo proceso schema ............................................................................................... 31
20 pav. Programos nustatymai JSON formatu .................................................................................. 33
21 pav. Lokalių minimumų arba maksimumų padėtys ..................................................................... 36
22 pav. 3-jo ir 4-jo eksperimentų rezultatų palyginimas ................................................................... 41
23 pav. Visų aštuonių eksperimentų rezultatų palyginimas .............................................................. 44

Santrumpos
SA – atkaitinimo modeliavimas
GA – genetinis algoritmas

7
ĮVADAS
Temos aktualumas
Nuolat didėjantis inžinierių poreikis mažinti gamybos sąnaudas, siekiant palaikyti pasaulinę
konkurenciją, paskatino inžinierius ieškoti griežtų sprendimų priėmimo metodų (Dede, Kripka,
Togan, & Yepes, 2019), pavyzdžiui, optimizavimo metodai, ekonomiškai ir efektyviai
projektuojant, gaminant produktus ir sistemas. Optimizavimo metodai, kurie pasiekė aukštą laipsnį
pastaraisiais metais, naudojami įvairiose pramonės šakose, įskaitant aviacijos (Azadeh, Bierlaire, &
Maknoon, 2019), automobilių (Karagul, Sahin, Aydemir, & Oral, 2019), statybos ir gamybos
pramonę (Dey, Gupta, Pathak, Kela, & Datta, 2019). Sparčiai tobulėjančiose informacinėse
technologijose kompiuteriai tampa galingesni ir atitinkamai daugėja uždavinių, kuriuos galima
išspręsti naudojant optimizavimo algoritmus, dydis ir sudėtingumas (Singiresu, 2009). Šiame darbe
analizuojamas populiarus statybos srities uždavinys – polių padėčių gręžtinio tipo pamatuose
optimizavimas (Ramanauskas, Šešok, Belevičius, Kurilovas, & Valentinavičius, 2017). Sijynai,
kurie yra sudaryti iš polių ir jungiančiųjų sijų, yra vienos efektyviausių polinių pamatų inžinerinės
konstrukcijos. Jie naudojami tada, kai norima pastatyti konstrukciją ant silpno grunto. Svarbu
paskirstyti polius po pamatu taip, kad reakcijos jėgos, susidarančios poliuose, neviršytų
maksimalios polio apkrovos ir būtų vienodos.
Mokslinis naujumas
Polių padėčių optimizavimo uždavinys reikalauja didelių išteklių, todėl sprendžiant šią
problemą yra naudojami euristiniai algoritmai, skirti matematinės funkcijos maksimizavimui ar
minimizavimui. Tokie algoritmai negarantuoja globalaus sprendinio, tačiau gali pateikti racionalų
sprendinį per trumpą laiką. Euristiniai algoritmai yra praktiški, lengvai suprantami ir greitai
realizuojami. Svarbu parinkti tokią euristinio algoritmo strategiją, kad gauti optimizavimo rezultatai
būtų arčiausiai globalaus sprendinio.
Praktinė vertė
Polių padėčių optimizavimo rezultatai turi didelę reikšmę ekonominiu požiūriu, nes svarbu
gebėti greitai ir mažiausia kaina suprojektuoti patvarią konstrukciją. Apytikriai galima laikyti, kad
sijynai, kurie turi mažiausią įmanomą polių skaičių bei kurių jungiančiosios sijos yra mažiausio
skerspjūvio, yra pigiausi (Mačiūnas, 2013). Pritaikius euristinį algoritmą, paprastai randami keli
racionalūs sprendiniai, kurie yra arti optimalaus, tačiau atitinka skirtingas pamatų schemas. Tai
suteikia galimybę projektuotojui pasirinkti priimtinesnę pamato schemą.
Darbo tikslas – pasiūlyti realaus statybos inžinerijos uždavinio – polių padėčių gręžtinio tipo
pamatuose, optimizavimo strategiją.

8
Darbo uždaviniai:
1. Atlikti mokslinę literatūros analizę: išnagrinėti populiariausius globalaus optimizavimo
algoritmus ir juos aprašyti.
2. Išnagrinėti sprendžiamą polių padėčių optimizavimo uždavinį ir jį aprašyti.
3. Išanalizuoti ankstesnių mokslinių tyrimų rezultatus, išrinkti perspektyvų globalaus
optimizavimo algoritmą.
4. Sukurti programinę įrangą skaitiniams eksperimentams atlikti.
5. Atlikti skaitinius eksperimentus naudojant įvairias euristikas.
6. Palyginti gautus rezultatus su paskelbtais mokslinėje literatūroje.
Tyrimo metodai:
1. Teoriniai: įvairios literatūros nagrinėjama tema analizė.
2. Skaitiniai sprendimo metodai.
Darbo struktūrą sudaro: įvadas, 6 skyriai, kurie suskirstyti į poskyrius ir skyrelius, darbo
rezultatai ir išvados, literatūros sąrašas, priedai.
Pirmajame baigiamojo darbo skyriuje nagrinėjami populiariausi optimizavimo algoritmai, kurie
gali būti tinkami spręsti polių padėčių gręžtiniuose pamatuose uždavinius. Antrasis skyrius yra
skirtas polių padėčių gręžtiniuose pamatuose uždavinio formulavimui. Pateikiamas uždavinio
aprašas, matematinis modelis ir gręžtinių pamatų skaičiavimo programos integravimas į
programavimo aplinką. Trečiajame skyriuje aprašomi kitų mokslininkų tyrimai, taikomi algoritmai
ir pasiekti rezultatai. Išrenkamas perspektyvus algoritmas, kuris bus tiriamas šiame darbe.
Ketvirtajame skyriuje pateikiama realizuota programa su išrinktu optimizavimo algoritmu,
pristatoma programos architektūra ir sukurti metodai. Penktasis skyrius skirtas optimalios
strategijos paieškai. Aprašomi atlikti aštuoni eksperimentai ieškant optimalios strategijos, pritaikant
įvairius algoritmo metodus ir jų kombinacijas. Šeštajame skyriuje pateikiami rezultatų palyginimai
su kitų mokslininkų tyrimų rezultatais.
Aprobacija
Dalis darbo rezultatų paskelbta straipsnyje:
Miloš, Ervin; Šešok, Dmitrij. Globaliojo optimizavimo uždavinių sprendimas naudojant
genetinius algoritmus = Genetic algorithms for solving global optimization problems // Jaunųjų
mokslininkų darbai = Journal of young scientists. Šiauliai: Šiaulių universiteto leidykla. ISSN 1648-
8776. eISSN 2424-3345. 2017, Nr. 47(1), p. 80-86. DOI: 10.21277/jmd.v47i1.134. [CEEOL –
Central and Eastern European Online Library; IndexCopernicus] [M.kr.:T007].
Galutinius darbo rezultatus planuojama pristatyti konferencijoje DAMSS 2019; kuri vyks
Druskininkuose 2019.11.28 – 2019.11.30.

9
1. POPULIARIAUSIŲ GLOBALAUS OPTIMIZAVIMO ALGORITMŲ
LITERATŪROS ANALIZĖ
Optimizavimas – apibrėžtos aibės elemento arba elementų, kurių tam tikro kriterijaus
(vadinamo tikslo funkcija) reikšmė būtų minimali arba maksimali priklausomai nuo uždavinio
tikslo, paieška (Weise, 2009). Optimizavimo procesui yra būdingi tris pagrindiniai komponentai:
optimizavimo algoritmas, matematinis modelis ir tikslo funkcija (žr. 1 pav.).

1 pav. Optimizavimo procesas


Šaltinis: Sudaryta autoriaus pagal Structuralist (2006).

Optimizavimas gali būti struktūrinis ir parametrinis. Struktūrinio optimizavimo procese


optimizuojama objektų struktūra, o parametrinio proceso metu optimizuojami struktūrą sudarančių
elementų parametrai. Priklausomai nuo kriterijų skaičiaus, pagal kurį optimizuojamas objektas,
optimizavimas gali būti:
• Vienakriterinis – uždavinys turi tik vieną tikslo funkciją, pavyzdžiui, jeigu
optimizavimo uždavinio tikslas yra surasti mažiausią laiką per kurį taksi vairuotojas gali
nuvežti keleivį iš taško A į tašką B, tai kriterijus yra laikas.
• Daugiakriterinis – optimizavime yra daugiau nei viena tikslo funkcija, kurią norima
minimizuoti arba maksimizuoti, pavyzdžiui, perkant dovaną atsižvelgiama į tris
kriterijus: mažiausia kaina, mažiausiai laiko skirta dovanos paieškai ir aukščiausia
kokybė.
Atsižvelgiant į tikslo funkciją ir parametrus, optimizavimas gali būti su apribojimais ir be
apribojimų, pavyzdžiui, perkant dovaną nustatomas apribojimas, kad kaina turi būti nemažesne nei
10 eurų.
Matematiškai optimizavimo uždavinys formuluojamas taip: reikia rasti tokį 𝑥 ∗ , priklausantį
galimų sprendinių sričiai 𝑋 ⊆ 𝑅𝑛 , kad funkcija šiame taške įgytų mažiausią reikšmę:
𝑓(𝑥 ∗ ) = min 𝑓 (𝑥 ), 𝑥∈𝑋 (1)

10
Analogiškai apibrėžiamas maksimizavimo uždavinys:
𝑓(𝑥 ∗ ) = max 𝑓 (𝑥 ), 𝑥∈𝑋 (2)
Taškas 𝑥 ∗ ∈ 𝑋 vadinamas funkcijos 𝑓 (𝑥 ) globalaus minimumo tašku visoje leistinoje srityje 𝑋,
jei:
𝑓 (𝑥 ∗ ) ≤ 𝑓 (𝑥 ), ∀𝑥 ∈ 𝑋 (3)

Taškas 𝑥 ∗ ∈ 𝑋, vadinamas funkcijos 𝑓 (𝑥 ) lokalaus minimumo tašku, jeigu jis yra mažiausias
tarp visų taškų savo srityje, tačiau didesnis nei taškai esantys kitose srityse (Grigutis, 2018).
Antrame paveiksle yra pateikiamas skirtumas tarp lokalaus ir globalaus minimumo taškų.

2 pav. Globalaus ir lokalaus minimumo funkcijos taškai


Šaltinis: Sudaryta autoriaus pagal Thakur (2016).

Suformuluotas optimizavimo uždavinys gali turėti daug galimų sprendinių, kurių kiekvieną
galima įvertinti, todėl sprendžiant uždavinį globaliai, ieškomas sprendinys, turintis tam tikrą
optimalią vertę.
Priklausomai nuo uždavinio sudėtingumo, tikslo funkcija gali būti išreikšta keliais būdais.
Paprastiems uždaviniams tai gali būti analitinė išraiška, kurioje pateikiamos kelios matematinės
formulės. Sudėtingesniems uždaviniams sukuriamos kompiuterinės programos, skirtos atlikti
didelius skaičiavimus. Tokiu atveju šios programos paverčiamos juodosiomis dėžėmis ir
integruojamos į įvairias optimizavimo programas. Juodosios dėžės paskirtis yra izoliuoti sudėtingus
matematinius skaičiavimus. Norint optimizuoti uždavinį juodajai dėžei užtenka paduoti
projektuojamų kintamųjų aibę ir gauti rezultatą.

1.1. Globalaus optimizavimo algoritmų klasifikacija


Globaliojo optimizavimo algoritmai paprastai yra suskirstomi į dvi kategorijas (žr. 3 pav.):
• Deterministiniai;
• Tikimybiniai:
o Monte-Carlo algoritmai;
o Euristiniai arba metaeuristiniai.

11
3 pav. Globaliojo optimizavimo algoritmų taksonomija
Šaltinis: Sudaryta autoriaus pagal Weise (2009).

Deterministiniai algoritmai yra suprojektuoti tokiu būdu, kad optimalus sprendimas visada bus
rastas per nustatytą ribotą laiką su garantuotu tikslumu. Šiuos algoritmus galima taikyti tokiais
atvejais, kai paieškos sritis yra nedidelė ir gali būti efektyviai ištirta, o sprendžiamas uždavinys
neturi apribojimų. Čia remiamasi ribotomis prielaidomis apie tikslo funkciją. Tačiau, jeigu negalima
nustatyti sąryšio tarp kandidato sprendinio ir jo tikslo funkcijos, kaimyniniai sprendiniai labai
skiriasi naudingumu arba paieškos sritis yra sudaryta iš daug dimensijų, tokiu atveju, taikomi
tikimybiniai metodai. Vienu iš populiariausių deterministinių algoritmų laikoma būsenų erdvės
grafe paieška.
Tikimybiniai algoritmai optimizuoja uždavinius, kiekvienoje iteracijoje bandydami tobulinti
kandidatą sprendinį, atsižvelgiant į tam tikrą kokybės matą. Tokie algoritmai nenustato didelių
prielaidų dėl uždavinio optimizavimo ir gali ieškoti kandidatų sprendinių didelėje paieškos srityje.
Tačiau tikimybiniai algoritmai nesuteikia garantijos, kad bus surastas optimalus sprendimas. Norint
gauti geresnį sprendinį reikia daugiau investuoti į laiką ir skaičiavimo išteklius. Tėviniu tikimybiniu
metodu laikomas Monte Carlo algoritmas (Nyarko, Cupec, & Filko, 2014).
Euristiniai algoritmai padeda tikimybiniams algoritmams nuspręsti, koks kandidatas sprendinys
turi būti ištirtas arba, kaip galima sugeneruoti naują kandidatą sprendinį. Deterministiniai algoritmai
paprastai naudoja euristiką, kad nustatyti kandidatų sprendinių apdorojimo tvarką. Tikimybiniai
apdoroja tik tuos kandidatus, kuriuos parenka euristika.
Metaeuristiniai metodai dažniausiai naudoja tokią euristinę funkciją, kurios pagrindas yra
natūralaus gamtos reiškinys arba fizinis proceso modelis. Pavyzdžiui, atkaitinimo modeliavimo
algoritmas nusprendžia, kokį kandidatą sprendinį apdoroti pagal Bolcmano tikimybinį koeficientą,

12
atomų konfigūracijų stingdančiuose metalų lydaluose (Weise, 2009). Evoliuciniai algoritmai
imituoja natūralios evoliucijos elgesį ir laiko sprendimus kaip individus, kurie konkuruoja
tarpusavyje virtualioje aplinkoje.

1.2. Genetinis algoritmas


Genetinis algoritmas – tai adaptyvus euristinis paieškos algoritmas, pagrįstas evoliuciniais
mechanizmais, tokiais kaip natūrali atranka ir genetika. Šis algoritmas reprezentuoja pažangesnę
atsitiktinės paieškos naudojimą, sprendžiant globaliojo optimizavimo uždavinius. Genetiniai
algoritmai naudoja nuolat kaupiamą istorinę informaciją, siekiant nukreipti paiešką kuo arčiau prie
optimalaus sprendimo. Pagrindinis šio algoritmo principas yra simuliuoti gamtinį procesą,
vadinamą „stipriausių išlikimas“. Nuolat vykdoma konkurencija tarp individų, kur dominuoja tie
individai, turintys geriausius įverčius (Mangano, 1995). Globaliojo optimizavimo uždaviniuose šis
įvertis yra tikslo funkcijos reikšmė.
Genetinio algoritmo procesas. Genetinio algoritmo procesas prasideda nuo pradinės
populiacijos generavimo. Šią populiaciją sudaro individai, kurie tarpusavyje konkuruoja. Tada
išrenkami stipriausi individai, kurie sukuria palikuonius. Šie palikuonys paveldi tėvinių individų
savybes ir patenka į naują populiaciją. Jeigu tėviniai individai turi geresnį tinkamumą, tai jų
palikuonys bus geresni už tėvinius individus ir turės daugiau galimybių patekti į naują populiaciją.
Šis procesas kartojamas iki tol, kol bus surasti tinkamiausi individai (Mallawaarachchi, 2017).
Algoritmas tinka uždavinių sprendimų paieškai. Turint sprendimų rinkinį, ieškomas
tinkamiausias.
Genetinį algoritmą sudaro penki procesai:
1. Pradinės populiacijos generavimas.
2. Tikslo funkcijos apskaičiavimas (individo tinkamumas).
3. Selekcija.
4. Kryžminimas.
5. Mutacija.
Pradinė populiacija. Pradinę populiaciją sudaro individų rinkinys. Kiekvienas individas
(chromosoma) - tai galimas optimizavimo uždavinio sprendimas. Individą sudaro parametrų (genų)
rinkinys (žr. 4 pav.). Kokias reikšmes ir kokį tipą turės parametrai priklauso tik nuo optimizavimo
uždavinio specifikos.

13
4 pav. Populiacijos sandara
Šaltinis: Sudaryta autoriaus pagal Mallawaarachchi (2017).

Tikslo funkcija. Tikslo funkcija nustato individo tinkamumą ir jo pranašumą prieš kitus
konkuruojančius individus. Jeigu sprendžiamas minimizavimo uždavinys, tai kuo mažesnę tikslo
funkcijos reikšmę turi individas, tuo jis yra tinkamesnis ir su didesne tikimybe pateks į naują
populiaciją. Taigi, kiekvienam individui yra paskaičiuojama tikslo funkcija ir nustatomas
tinkamumo įvertis.
Selekcija. Pagrindinė selekcijos idėja yra išrinkti geriausius individus, kurie pateks į naują
populiaciją. Išrinkimas atliekamas pagal tinkamumo įvertį apskaičiuotą tikslo funkcijoje.
Literatūroje yra siūlomi įvairūs selekcijos metodai:
• Ruletės selekcija (Shukla, Pandey, & Mehrotra, 2015) – individai yra atrenkami pagal
tikslo funkcijos tinkamumo įvertį. Kuo geresnis individas, tuo didesnių šansų jis turi
būti išrinktam.
• Rangų selekcija (Shukla et. al., 2015) – patobulina ruletės selekciją normalizuojant visų
individų tikslo funkcijos įverčius. Normalizavimas padidina šansus būti išrinktiems
individams, turintiems labai silpną tikslo funkcijos įvertį. Kiekvienam individui yra
suteikiamas rangas nuo 1 iki populiacijos dydžio, pradedant nuo blogiausio iki
geriausio.
• Turnyro selekcija (Shukla et. al., 2015) – atsitiktinai paimamas nustatytas individų
kiekis. Individai palyginami ir imamas su tinkamiausiu įverčiu.
Nustatant selekcijos metodą reikia atsižvelgti į metodo nustatytas taisykles. Jeigu selekcija yra
griežta (visada imami tik geriausi individai), galima užstrigti lokaliajame minimume. Kitu atveju
pernelyg švelnios taisykles gali sulėtinti optimalaus uždavinio sprendimo radimą (Jebari, 2013).
Kryžminimas. Kai tėviniai individai yra išrinkti, kiekviena pora yra sukryžminama siekiant
pagaminti individo palikuonį. Tam yra atsitiktinai parenkamas kryžminimo taškas. Individo
palikuonis yra sukuriamas apkeičiant tarpusavyje tėvinių individų parametrus, kad palikuonis gautų
vieną dalį parametrų iš pirmo tėvinio individo ir likusią dalį iš antro tėvinio individo (žr. 5 pav.).

14
5 pav. Palikuonio individo sudarymas
Šaltinis: Sudaryta autoriaus pagal Mallawaarachchi (2017).
Literatūroje yra populiarūs tokie kryžminimo metodai kaip:
• Dviejų taškų kryžminimas (Varun Kumar & Panneerselvam, 2017) – apkeičiami genai,
kurie yra tarp kryžminimo taškų (žr. 6 pav.);

6 pav. Dviejų taškų kryžminimas


Šaltinis: Sudaryta autoriaus pagal Mallawaarachchi (2017).
• Uniforminis kryžminimas (Lim, Sultan, Sulaiman, Mustapha, & Leong, 2017) –
pritaikoma tikimybė, kuri pasako, ar genas bus sukryžmintas. Jeigu tikimybė yra lygi
0.5, tai reiškia, kad palikuonys gaus maždaug 50 % genų nuo pirmojo ir antrojo tėvinio
individo (žr. 7 pav.).

7 pav. Uniforminis kryžminimas


Šaltinis: Sudaryta autoriaus pagal Mallawaarachchi (2017).
Mutacija. Mutacijos paskirtis yra modifikuoti naujus sugeneruotus individus, pakeičiant kelis
elementus skirtingomis reikšmėmis. Tai suteikia galimybę palaikyti populiacijoje įvairovę ir
išvengti ankstyvosios konvergencijos. Literatūroje yra siūlomi įvairūs mutacijos metodai:
• Vieno parametro ir kelių parametrų mutacija (žr. 8 pav.).
• Uniforminė mutacija – modifikuojami genai pagal procentinį kiekį (Lim et al., 2017).

8 pav. Vieno parametro ir kelių parametrų mutacija


Šaltinis: Sudaryta autoriaus pagal Mallawaarachchi (2017).
9 paveiksle pateiktas uniforminės mutacijos pavyzdys, kai procentinis genų mutacijos kiekis yra
lygus 40 % (keičiami 2 atsitiktiniai elementai).
15
9 pav. Uniforminė mutacija
Šaltinis: Sudaryta autoriaus pagal Mallawaarachchi (2017).
Genetinio algoritmo efektyvumas priklauso nuo įvairių parametrų, reikalingų įvykdyti euristinę
funkciją: mutacijos tikimybė, selekcijos parametrai, kryžminimo tikimybė ir kt.. Svarbu nustatyti
tikslingą populiacijos dydį, nes kuo mažesnė populiacija, tuo didesnė tikimybė patekti į lokalius
sprendinius ir kuo populiacija yra didesnė, tuo ilgiau užtruks optimizavimo procesas (Lančinskas,
2013).
Genetinio algoritmo pritaikymas. Genetinis algoritmas taikomas spręsti įvairaus pobūdžio
uždavinius. Mokslinėje literatūroje yra pateikiama daugybė pavyzdžių, kur genetinis algoritmas
taikomas pramonės (Bharathi, Rekha, & Vijayakumar, 2017), informatikos (Ahuja, Sujata, & Batra,
2018), archeologijos (Sizikova & Funkhouser, 2018) ir kitose srityse.
Mokslininkai M. Elhoseny ir kiti (2017) genetiniu algoritmu Bezjė kreive pasiūlė optimizuoti
pagristą maršruto planavimą dinaminiame kelyje. Šio tyrimo tikslas buvo optimizuoti autonominius
robotus ieškant optimalaus ir trumpiausio kelio iki galutinio taško. Modifikuotas genetinis
algoritmas ieško tinkamiausius taškus, kad nubraižyti Bezjė kreivės kontrolės taškus. Panaudojus
kontrolės taškus, pasirenkamas optimalus glotnus kelias, kuris minimizuoja bendrą atstumą tarp
pradinio ir galutinio taško.
Mokslininkai H. Ahuja ir kiti (2018) pasiūlė pritaikyti genetinį algoritmą programinės įrangos
reikalavimų prioretizavimui, siekiant sumažinti sprendimo priėmimo laiką. Toks optimizavimas
leistų nustatyti, kurias dalis yra svarbiau specifikuoti anksčiau. Tai pagreitina programinės įrangos
parengimą, kurį atitiktų visų suinteresuotų šalių poreikius.
Mokslininkai YC. Weng ir CB. Cheng (2019) pasiūlė pritaikyti genetinį algoritmą, siekiant
minimizuoti atstumą iki populiarių išteklių saugojimo vietos ir padidinti tikimybę, kad ateityje
gretimi ištekliai sandėlyje bus paimti kartu, taip sumažinant transportavimo laiką.
Mokslininkai C. Bharathi ir kiti (2017) pasiūlė genetiniu algoritmu sumažinti elektros
suvartojimą piko valandomis, efektyviai paskirstant turimą energiją ne piko valandomis. Viena iš
pagrindinių paslaugų sričių problemų yra elektros suvartojimas įvairiais darbo laiko intervalais.
Pramonėje yra mažiau energijos panaudojančių prietaisų nei kitose srityse, tačiau energijos kiekis
yra didelis. Jeigu optimizuoti suvartojamą energiją paskirstant ją pagal darbo valandas, likusią dalį
energijos galima panaudoti kitose paslaugų srityse.

16
Genetinis algoritmas yra pritaikomas ir archeologijos srityje. Mokslininkai E. Sizikova ir
T. Funkhouseris (2018) pasiūlė šiuo algoritmu iš turimų fragmentų rekonstruoti nutapytas sienas su
freskos technika. Pagrindinis tikslas buvo surasti kiekvieno fragmento globalią poziciją ir rotaciją
siekiant, kad visi fragmentai kartu rekonstruotų originalų paviršių.

1.3. Atkaitinimo modeliavimas


Atkaitinimo modeliavimo terminas yra kilęs iš metalurgijos. Natūraliame procese medžiaga yra
šildoma ir lėtai atkaitinama kontroliuojamomis sąlygomis, siekiant padidinti medžiagos kristalų
dydį ir sumažinti jų defektus. Tai pagerina medžiagos stiprumą ir patvarumą. Šiluma padidina
atomų energiją, leidžiant jiems laisvai judėti, o lėtas atkaitinimas suteikia galimybę atrasti naują
medžiagos konfigūraciją, kurį panaudoja mažiau energijos (Brownlee, 2015).
Iš tokio proceso buvo sukurtas algoritmas, skirtas spręsti optimizavimo uždavinius. Čia šildoma
medžiaga yra galimas uždavinio sprendimas. Pradedant atkaitinimą surandamas vis geresnis
sprendinys, o parametrai yra keičiami vis rečiau ir procesas baigiamas tada, kai atkaitinimo
pabaigos kriterijus yra pasiektas arba globalus uždavinio sprendimas yra surastas. Pagrindinis
algoritmo parametras yra temperatūra. Iš pradžių jai suteikiama didelė reikšmė ir kiekvienoje
iteracijoje ji palaipsniui yra mažinama.
Procesas. Atkaitinimo modeliavimo algoritmo procesas yra pavaizduotas 10 paveiksle.

`
10 pav. Atkaitinimo modeliavimo proceso schema
Pradinio sprendinio generavimas ir temperatūros nustatymas. Pradinis sprendinys sudaromas
iš atsitiktinai sugeneruojamų parametrų. Šiam sprendiniui apskaičiuojama ir išsaugoma tikslo
funkcijos reikšmė. Algoritmui yra nustatoma pradinė temperatūra. Geresniam optimizavimui
17
temperatūros parametras turi būti toks, kuris leis algoritmui atlikti bet kokius pakeitimus esamam
sprendiniui. Tai suteikia algoritmui galimybę ištirti visą paieškos sritį ir nukreipti kelią prie
artimesnio sprendinio (Jacobson, 2013).
Naujo sprendinio generavimas modifikuojant esamą sprendinį. Naujas sprendinys, kuris yra
laikomas kandidatu pakeisti esamą sprendinį, sugeneruojamas atlikus esamam sprendiniui
modifikacijas pagal nustatytas taisykles. Pavyzdžiui, sprendžiant vieną iš populiariausių
optimizavimo uždavinių su keliaujančiu pardavėju, siekiama surasti trumpiausią maršrutą, kur
pardavėjas aplankytų kiekvieną miestą tik vieną kartą ir grįžtų prie pradinio taško. Tokiu atveju,
naujas kandidatas sprendinys gali būti sugeneruotas apkeičiant gretimų miestų poras (žr. 11 pav.).

11 pav. Keliaujančio pardavėjo optimizavimo uždavinys


Šaltinis: Sudaryta autoriaus pagal Walker (2018).
Ieškant optimalaus sprendimo, modifikacijos esamajame sprendinyje pradinėse iteracijose gali
būti didelės ir kiekvienoje kitoje iteracijoje jos turi mažėti, nes algoritmas, optimizuodamas
uždavinį, turi keisti tik tas dalis, kurios daro įtaką galutiniam sprendiniui ir išlaikyti jau surastas
optimalias dalis. Šiam atvejui sprendinio dalys yra taškų sujungimai. Algoritmas yra sustabdomas,
kai sugeneruotas kandidatas pasiekia globalųjį sprendimą (žr. 12 pav.).

12 pav. Keliaujančio pardavėjo uždavinio globalus sprendimas


Šaltinis: Sudaryta autoriaus pagal Walker (2018).
Naujo sprendinio įvertinimas. Sugeneravus nauja kandidatą sprendinį, jam apskaičiuojamas
tikslo funkcijos įvertis. Tada abu sprendiniai yra palyginami. Jeigu kandidato įvertinamas yra
geresnis nei esamo, tada jis pakeičiamas nauju, kitu atveju jis pakeičiamas nauju su tam tikra

18
apskaičiuota tikimybe. Tai yra padaroma todėl, nes algoritmo sugeneruotas naujas sprendinys nuo
tam tikros iteracijos gali niekada netapti geresniu nei esamas sprendinys, tačiau tai nereiškia, kad
geresnių sprendinių daugiau nėra. Šiuo atveju yra surandamas lokalus uždavinio sprendimas, kurio
algoritmui reikia išvengti (Karyotis & Khouzani, 2016). Todėl atkaitinimo modeliavimo algoritme
yra pritaikomas palankumo kriterijus.
Palankumo kriterijus. Lyginant naują sprendinį ir esamą sprendinį, palankumo kriterijus pagal
nustatytas taisykles gali pasirinkti blogesnį sprendinį. Šias taisykles nustato palankumo tikimybės
funkcija:
𝛿𝐸
𝑃 (𝛿𝐸) = exp(− 𝑘𝑡 ) (4)

• 𝛿𝐸 − tikslo funkcijos įverčio skirtumas tarp esamo sprendinio ir naujo sugeneruoto


sprendinio;
• 𝑘 − Bolcmano konstanta;
• 𝑡 − temperatūros parametras.
Ši lygtis yra tiesiogiai naudojama atkaitinimo modeliavime, tačiau dažniausiai Bolcmano
konstanta nėra įtraukiama į lygtį, nes ji buvo priderinta tik prie skirtingų medžiagų atkaitinimui
(Kendall, 2018).
Todėl, sprendžiant optimizavimo uždavinius naudojama tokia palankumo tikimybės funkcija:
𝑐𝑛𝑒𝑤 − 𝑐𝑜𝑙𝑑
𝑃 = 𝑒𝑥𝑝 ( ) (5)
𝑇
kur, 𝑐𝑛𝑒𝑤 − 𝑐𝑜𝑙𝑑 yra skirtumas tarp naujo ir esamo kandidato įverčių, 𝑇 − temperatūra, o
exp = 2.71828.
Iš šios lygties sudaromos tokios taisyklės:
• Tikimybė 𝑃 yra visada = 1, kai naujas sprendinys yra geresnis nei esamas.
• Tikimybė 𝑃 mažėja, nes naujas sprendinys po truputį blogėja.
• Tikimybė 𝑃 mažėja, nes temperatūros parametras mažėja.
Taigi, algoritmas iš pradžių leidžia atlikti didelius pokyčius, kol temperatūra yra ganėtinai
aukšta ir palaipsniui šiuos pokyčius mažina (Geltman, 2014).
Atkaitinimo algoritmo pabaigos kriterijus. Kai naujas sprendinys yra išrinktas, vykdomas
patikrinimas, arba temperatūra sumažėjo iki nustatyto slenksčio, arba globalus sprendimas yra
rastas. Jeigu nei viena sąlyga netenkinama, temperatūra yra sumažinama ir procesas kartojamas
pradedant nuo naujo sprendinio generavimo. Taigi, atkaitinimo modeliavimo algoritmas yra
efektyvus sprendžiant globaliojo optimizavimo uždavinius, kadangi nereikalauja daug kodo
realizavimo, yra paprastas ir padeda išvengti ankstyvosios konvergencijos.

19
Atkaitinimo algoritmo pritaikymas. Atkaitinimo modeliavimo algoritmas naudojamas spręsti
realias visuomenės problemas, taip pat uždavinius transporto (Yu et al., 2018), informatikos
(Hopkins, Mitzenmacher, & Caren, 2018), urbanizacijos (Amer et al., 2019) ir kitose srityse.
Mokslininkai M. Ameris ir kiti (2019) atkaitinimo modeliavimo algoritmu pasiūlė spręsti
transporto eismo spūsčių problemą. Spūstys yra didele problema ypač dideliuose miestuose, kai
nuolat didėjantis transporto priemonių kiekis naudojasi riboto talpumo keliais. Mokslininkai pasiūlė
pritaikyti dinamišką ir centralizuotą atkaitinimo modeliavimo metodiką, siekiant surasti transporto
priemonėms optimalius maršrutus. Tikslo funkcijos atributai – transporto priemonių tankis, kelio
plotis, kelių eismo signalai, kelio ilgis ir vidutinis eismo greitis. Mokslininkų gauti tyrimo rezultatai
pagerino eismo efektyvumą spūstyse 24,05 %, 48,88 % ir 36,89 % pagal kelionės laiko, degalų
sąnaudų ir CO2 emisijos rodiklius.
Mokslininkai F. Yu ir kiti (2018) pritaikė atkaitinimo modeliavimo algoritmą G-SARP (angl.
General share-a-ride problem) realizacijai. Ši sistema suteikia galimybę taksi vairuotojams vežti
keleivius ir pristatinėti užsakytus siuntinius vienu metu. Tačiau mokslininkų siūloma sistema
papildomai suteikia galimybę tuo pačiu metu vežti daugiau nei vieną keleivį ir neturėti apribojimų
dėl maksimalaus keleivio vežimo laiko. Papildomai siuntų kiekis, kurį galima įterpti tarp keleivio
paėmimo ir išlaipinimo taškų, ribojamas tik transporto priemonės talpumu. Rezultatai parodė, kad
G-SARP sprendimai yra geresni nei standartiniai SARP sistemos.
Mokslininkai Y. Liang ir kiti (2018) pasiūlė optimizuoti autobusų sistemą panaikinant
nereikalingas stoteles ir išlaikant bendrą autobusų sistemos efektyvumą. Viešojo transporto
sistemos, ypač autobusų sistemos, atlieka svarbų vaidmenį urbanizacijos procese. Daugiau autobusų
stotelių leidžia žmonėms greičiau pasiekti autobusą, tačiau padidėja pačių autobusų važiavimo
laikas. Siekiant surasti optimalų balansą, mokslininkai pritaikė SIC modelį (angl. Spatial interaction
model), kuris nustato sąryšį tarp autobuso stotelės ir jos aplankymo dažnumo. Tada, panaudojant
atkaitinimo modeliavimo algoritmą, buvo ieškomas optimalus autobusų stotelių derinys. Rezultatai
parodė kad, autobusų sistemos efektyvumas padidėjo 7,28 %.
Mokslininkai M. Cheraitia ir S. Haddadi (2016) panaudojo atkaitinimo modeliavimo algoritmą,
siekiant optimizuoti egzaminų tolygų paskirstymą per nustatytą laiko tarpą.
Mokslininkai M. Hopkinsas ir kiti (2018) pritaikė algoritmą JPEG vaizdo formato
optimizavimui. Straipsnyje siūlomas pagerintas JPEG vaizdo suspaudimas surandant patobulintas
kvantavimo matricas. Kvantavimo procesas suspaudžia tam tikrą vaizdo reikšmių diapazoną į vieną
kvantinę reikšmę. Rezultatai parodė, kad su atkaitinimo modeliavimo algoritmu buvo aptiktos
matricos, kurios geriau apdoroja vaizdą kokybės ir suspausto dydžio atžvilgiu.

20
2. POLIŲ PADĖČIŲ GRĘŽTINIUOSE PAMATUOSE UŽDAVINIO
FORMULAVIMAS
Skyriuje yra pateikiamas polių padėčių optimizavimo uždavinio aprašas. Matematiškai
paaiškinamas šio uždavinio veikimo principas ir tikslas. Pateikiamas trumpas aprašas apie gręžtinių
pamatų skaičiavimo programą.

2.1. Gręžtinių pamatų uždavinio aprašymas


Gręžtinio tipo pamatai yra vieni iš efektyviausių pamatų schemų ir labiausiai tinka tada, kai
gruntas yra silpnas (Belevičius, Ivanikovas, Šešok, Valentinavičius, & Žiliniskas, 2011). Tokiam
gruntui yra pritaikomas specialus pamatas, kuris dedamas ant polių, įsuktų į gruntą. Šios struktūros
pagrindinis tikslas yra optimaliai paskirstyti pastato apkrovas į gruntą. Optimali pamato schema yra
tada, kai turint pamato planą, apkrovas ir polių charakteristikas, polių skaičius, ant kurių
formuojamas pamatas, yra minimalus, o reakcijos jėgos, susidarančios poliuose, neviršija
maksimalios polio apkrovos ir yra vienodos (žr. 13 pav.).

13 pav. Pamato schema


Reikalingas polių kiekis apskaičiuojamas padalinus bendrą pamato apkrovą iš leistinos polio
apkrovos. Taigi, pagrindinis uždavinys yra paskirstyti polius po pamatu taip, kad bet kokia reakcijos
jėga poliuose neviršytų leistinos apkrovos.
Uždavinio matematinė formuluotė
Optimizavimo uždavinys formuluojamas taip:
𝑓 ∗ = min 𝑓(𝑥 ), 𝑥 ∈ 𝐷 (6)
kur, 𝑓 (𝑥 ) tai netiesinė tikslo funkcija, 𝑥 projektavimo kintamasis, kuris nustato polio poziciją.
Tikslo funkcija apibrėžia maksimalią vertikalią spaudžiamą ant polio reakcijos jėgą (Šešok,
Belevičius, Kačeniauskas, & Mockus, 2010).

21 (7)
𝑓(𝑥) = max 𝑅𝑖 (𝑥)
𝑖=1,…,𝑁𝑎

kur, 𝑁𝑎 žymi polių kiekį, o 𝑅𝑖 (𝑥) nurodo reakcijos jėgą spaudžiamą ant 𝑖-tojo polio.
Optimizavimo proceso metu poliai gali būti skirstomi tik po gręžtinio pamato sijomis. Prieš
optimizavimo procesą dvimatis gręžtinis pamatas yra matematiškai transformuojamas į vienmatę
tiesę, išilgai kurios atramoms leidžiama laisvai judėti. Tada kiekvienas projektavimo parametras
nurodo vieną polio koordinatę vienmatėje struktūroje. Po polių padėčių optimizavimo vienmatė
tiesė yra atgal transformuojama į pradinį dvimatį gręžtinį pamatą. Apribojimus projektavimo
parametrams galima užrašyti taip:
0 ≤ 𝑥𝑖 ≤ 𝐿, 𝑖 = 1, . . . , 𝑁𝑎 (8)
kur, 𝑥𝑖 žymi 𝑖-tojo polio koordinatė vienmatėje struktūroje, 𝐿 – bendras gręžtinio pamato ilgis
(Belevičius, Mačiūnas, & Šešok, 2011).
Tokia formuluote turi akivaizdų trūkumą – smulkus vieno projektavimo parametro pokytis gali
perkelti polį iš vienos sijos į kitą, kuri fiziškai gali būti labai nutolusi (žr. 14 pav.). Paveikslėlyje
parodoma, kaip du poliai, esantys taškuose A ir B, yra netoli vienas kito, tačiau transformavus
pamatą į vienmatę tiesę, taškas B, esantis 7-e sijoje, labai nutolo nuo taško A.

14 pav. Pamato transformacija į vienmatę tiesę


Sijų seka vienmatės tiesės struktūroje priklauso nuo sijų numeracijos gręžtiniame pamate.
Reakcijos jėgos yra apskaičiuojamos naudojant baigtinių elementų metodą, kuris sprendžia
pagrindinį statikos lygtį:
[𝐾 ]𝑎 {𝑢}𝑎 = {𝐹 }𝑎 (9)
Čia indeksas 𝑎 žymi baigtinių elementų ansamblį, {𝑢} yra mazgų poslinkiai, o {𝐹 } – aktyviosios
jėgos. Polių reakcijos jėgos apskaičiuojamos, radus mazgų poslinkius taip (Mačiūnas & Belevičius,
2012):

𝑅𝑖 = ∑[𝐾𝑖𝑗 ] 𝑢𝑗 (10)
𝑗

2.2. Gręžtinių pamatų skaičiavimo programa


Optimizavimo programa yra realizuota su FORTRAN programavimo kalba. Ši programa yra
naudojama pagal juodos dėžės principą: pagrindinė optimizavimo programa įvykdo algoritmą, kuris

22
paruošia polių pozicijų sąrašą ir nusiunčia jį į juodąją dėžę, kurioje apskaičiuojama maksimali
reakcijos jėga. Po skaičiavimų optimizavimo programa gauna vieną skaičių – tikslo funkcijos
reikšmę. Kuo mažesnė yra reikšmė, tuo geresnis yra sprendimas.
Integracija tarp juodos dėžės ir optimizavimo programos pavaizduota 15 paveiksle.

15 pav. Integracija tarp optimizavimo programos ir gręžtinių pamatų skaičiavimo programos


Gręžtinių pamatų skaičiavimo programą sudaro dvi pagrindinės funkcijos:
• ANALYSIS – nuskaito iš failo uždavinio duomenis: bendrą viso gręžtinio pamato ilgį,
polių kiekį ir leidžiama reakcijos jėgą.
• OBJECTIVE_FUNCTION – apskaičiuoja tikslo funkcijos reikšmę priklausomai nuo
polių koordinačių. Šiai funkcijai paduodami tokie parametrai: polių padėčių koordinačių
masyvas, bendras gręžtinio pamato ilgis ir tikslo funkcijos reikšmė.

23
Failo pavadinimai yra bendri visiems uždaviniams: „aa_in.dat“ – uždavinio duomenys,
„aa_out.dat“ – uždavinio rezultatai, „aa_mes.dat“ – klaidų pranešimai.
Norint pasinaudoti gręžtinių pamatų skaičiavimo programa, užtenka importuoti tris failus į
optimizavimo programą: GRILLAGE.dll, GRILLAGE.exp bei GRILLAGE.lib.

24
3. PERSPEKTYVAUS ALGORITMO PAIEŠKA PANAUDOJANT ANKSTESNIUS
TYRIMUS
Globalaus optimumo paieška optimizavime yra viena iš sudėtingų ir daug laiko reikalaujančių
uždavinių. Įvairiuose tyrimuose pateikiami kelių optimizavimo algoritmų palyginimai, siekiant
apibendrinti rezultatus kitiems optimizavimo uždaviniams. Tačiau kiekvienas paieškos algoritmas
turi savo savybes, kurios gali tikti vienai sprendžiamai problemai, bet netikti kitai. Mokslininkai
P. Erikssonas ir J. S. Arora (2002) pristatė globaliojo optimizavimo algoritmų palyginimą
optimizuojant važiavimo komforto uždavinį. Tyrime buvo nustatyta, kad šiam konkrečiam
uždaviniui genetinis algoritmas yra efektyvesnis nei atkaitinimo modeliavimas. Mokslininkai
Arostegui ir kiti (2006) lygino genetinį, atkaitinimo modeliavimą ir tabu paieškos algoritmus
optimizuojant įvairių objektų lokacijų uždavinį, siekiant sumažinti transportavimo išlaidas.
Rezultatai parodė, kad tabu paieškos algoritmas veikia efektyviausiai.

3.1. Įvairių optimizavimo algoritmų palyginimas


Šiame darbe tiriamą polių padėčių gręžtiniuose pamatuose uždavinį jau buvo bandoma
optimizuoti ankstesniuose tyrimuose. Mokslininkai R. Belevičius ir kiti (2011) lygino įvairias
optimizavimo strategijas, pradedant nuo paprastos atsitiktinės ir euristinės paieškos, vėliau
pereinant prie metaeuristikų (SA ir GA) ir lokalių optimizavimų kartu su euristine atsitiktine
paieška. Kiekvienas algoritmas buvo išbandytas 28 kartus ir tikslo funkcijos iškvietimas neturėjo
viršyti 5000 kartų.
Iš pradžių buvo išbandyta atsitiktinė (toliau RS) ir modifikuota atsitiktinė paieška (toliau MRS).
RS algoritme individo inicializavimui buvo sugeneruojami elementai naudojant tolygų paskirstymą.
MRS algoritme buvo sudaryta papildoma sąlyga, kad atstumas tarp dviejų elementų turi būti
didesnis arba lygus nei 𝑆, kuris apskaičiuojamas padalinus pusę ilgio pamato iš polių skaičiaus:
𝐿
|𝑥𝑖 − 𝑥𝑗 | ≥ 𝑆, 𝑖 ≠ 𝑗, 𝑆 = (11)
2𝑁𝑝

Taip sukuriami 𝑁 nepriklausomi individai ir geriausiu išrenkamas tas, kurio maksimali


reakcijos jėga ant polio mažiausia.
Antras išbandytas algoritmas buvo atkaitinimo modeliavimas. Iš pradžių buvo sugeneruojama
200 individų pagal tolygų paskirstymą pritaikant 11-ą formulę ir išrenkamas geriausias. Tada buvo
kuriamas naujas individas kandidatas modifikuojant esamo kandidato elementus pagal [−𝑦; 𝑦]
reikšmių intervalą. Šis intervalas pagal nustatytas taisykles buvo mažinamas: nuo 201 iteracijos iki
2𝑁/5 𝑦 reikšmė buvo lygi 0.5, kitose 2𝑁/5 lygi 0.1 ir paskutinėse iteracijose lygi 0.1. Du individai
buvo palyginami ir, jeigu kandidato individo tikslo funkcijos reikšmė yra mažesnė nei esamo
individo, tada jis tampa nauju individu su tikimybe lygia 1-ui, kitu atveju su tikimybe:

25
∆ℎ
(12)
𝑒 𝑡1 /ln(1+𝑡2∗𝑗)
kur, ∆ℎ apibrėžia tikslo funkcijos reikšmės skirtumą tarp dviejų kandidatų, 𝑡1 – pradinė
temperatūra, 𝑡2 – atšildymo greitis ir 𝑗 identifikuoja iteracijos skaičių.
Trečiu optimizavimo algoritmu tyrimui buvo išrinktas genetinis algoritmas. Pradinė populiacija
buvo sugeneruojama naudojant RS arba MRS algoritmą. Selekcijos operacijos metu puse
populiacijos individų buvo išrenkami į naują populiaciją panaudojant ruletės metodą. Kuo geresnė
individo tikslo funkcijos reikšmė, tuo didesnė tikimybė individui būti išrinktam. Tikimybė buvo
apskaičiuojama pagal tokią formulę:
1
𝑃𝑗 = (13)
1
𝑓𝑗 ∑𝑖 𝑓
𝑖

kur, sumos operatorius apima visą populiaciją. Tada individai buvo sukryžminami su nustatyta
tikimybe, o kryžminimo taškas atsitiktinai paimamas iš intervalo [1, 𝑁𝑎 − 1], kur, 𝑁𝑎 yra individo
elementų kiekis. Galiausiai kiekvienam elementui buvo apskaičiuojama mutacijos tikimybė ir, jeigu
tikimybė tenkino, tada elementas buvo modifikuojamas pagal reikšmės intervalą [−𝑦; 𝑦]. Šis
intervalas analogiškai mažėjo kaip ir SA algoritme.
Kiti algoritmai pritaikyti palyginimui: netiesinės daugiamatės funkcijos optimizavimo metodas,
vadinamas Simplex (SM); Kvazi-Niutono metodas (VM), skirtas surasti tikslo funkcijos tašką, kur
gradientas yra 0; NEWUOA metodas – iteracinis algoritmas netiesiniam optimizavimui.
Mokslininkų pasiekti rezultatai yra pateikti 1 lentelėje.
1 lentelė. Globaliojo optimizavimo algoritmų palyginimas

Nr. TS MRS SA GA SM VM NEWUOA %


1 307,47 430,67 339,30 360,73 436,68 429,34 370,79 10,4
2 104,12 119,16 106,36 106,52 125,83 123,18 107,18 2,2
3 101,85 138,37 107,25 115,04 138,58 135,54 109,00 5,3
4 101,24 131,15 106,80 112,10 132,10 133,65 108,16 5,5
5 97,51 116,88 102,00 104,58 120,42 120,74 101,05 3,6
6 97,53 148,24 117,26 119,65 151,95 146,01 125,37 20,2
7 287,53 351,71 298,11 310,24 355,82 358,73 306,31 3,7
8 236,28 440,42 357,67 363,15 426,74 430,11 346,94 46,8
9 244,71 318,38 253,00 274,55 339,68 313,40 270,68 3,4
10 349,05 670,72 463,34 519,07 698,15 648,84 486,46 32,7
Šaltinis: Sudaryta autoriaus pagal Belevičius et al. (2011).

26
Algoritmų palyginimams mokslininkai išbandė visus ištirtus algoritmus 10 praktiniams
uždaviniams (Belevičius et al., 2011).
TS žymi tikslųjį sprendimą, o paskutinis stulpelis žymi procentinį skirtumą tarp geriausio
surasto sprendimo ir tikslaus sprendimo. Iš 1 lentelėje pateiktų rezultatų matyti, kad geriausius
rezultatus pasiekė mokslininkų realizuotas atkaitinimo modeliavimo algoritmas, kur aštuoni
uždaviniai pasiekė mažiausias tikslo funkcijos reikšmes ir NEWUOA metodas, su kuriuo du
uždaviniai pateikė sprendinius, arčiausius prie optimaliojo.

3.2. Bajeso metodo pritaikymas


Mokslininkai J. Mockus, R. Belevičius, D. Šešok, J. Kaunas ir D. Mačiūnas (2012) sprendžiant
polių padėčių gręžtiniuose pamatuose uždavinį, pasiūlė panaudoti Bajeso optimizavimo metodą. Šis
metodas naudoja vienakriterinių algoritmų seką, pradedant nuo ankstesnio vienakriterinio
optimizavimo proceso metų gautų geriausių taškų. Tokio tipo paieška yra kontroliuojama naudojant
tik vieną parametrą. Tyrime mokslininkai pasiūlė paieškos taškus apibrėžti tiksliomis formulėmis, o
taikant kitus panašius metodus tai atlikti skaitiniais metodais, kurie minimizuoja tikslo funkcijas.

16 pav. Tyrimo rezultatai Bajeso metodu


Šaltinis: Sudaryta autoriaus pagal J. Mockus et al. (2012).
Siekiant išlaikyti vieningą palyginimą, mokslininkai J. Mockus ir kiti (2012) išbandė Bajeso
algoritmą panaudojant analogiškas taisykles: kiekvienam praktinis uždavinys sprendžiamas 28
kartų, o tikslo funkcijos iškvietimas algoritme neviršija 5000 kartų. Gauti uždavinių sprendimai
naudojant Bajeso metodą pateikti 16 paveiksle.
27
Šio tyrimo rezultatai parodė, kad lyginant su mokslininkų R. Belevičiaus ir kitų (2011) atliktu
tyrimu, Bajeso metodas yra efektyvesnis už Simplex, Kvazi-Niutono, RS ir MRS algoritmus, tačiau
mažiau efektyvus nei SA, GA ir NEWUOA algoritmai.

3.3. Genetinio algoritmo pritaikymas


Mokslininkai M. Ramanauskas, D. Šešok, R. Belevičius, R. Kurilovas ir S. Valentinavičius
(2017) optimizuojant polių padėtis gręžtiniuose pamatuose pasiūlė pritaikyti modifikuotą genetinį
algoritmą. Pagrindiniai siūlomi genetinio algoritmo pakeitimai:
• Į naują populiaciją patenka ne tik sukryžminti individai, tačiau ir geriausi individai iš
praeitų dviejų iteracijų.
• Trečdalis geriausių individų dalyvauja kryžminimo operacijoje ir kiekvienas individas
yra dvigubai sukryžminamas su iš anksto nustatytais individais.
• Naudojama mažiau atsitiktinių parametrų. Algoritme naudojami tik kryžminimo taško ir
mutacijos tikimybės parametrai.
Tyrimo rezultatai buvo palyginti su mokslininkų R. Belevičiaus ir kitų (2011) tyrimo rezultatais
(žr. 17 pav.).

17 pav. 2011 m. ir 2017 m. tyrimų rezultatų palyginimas


Šaltinis: Sudaryta autoriaus pagal Belevičius et al. (2011), Ramanauskas et al. (2017).
Šio tyrimo dėka buvo pagerinti trys praktiniai uždaviniai, tačiau dauguma kitų uždavinių turi
geresnį sprendinį naudojant SA algoritmą arba NEWUOA metodą.
Mokslininkai E. Miloš ir D. Šešok (2017) pritaikė genetinį algoritmą, siekiant surasti globalųjį
uždavinio sprendimą vienam praktiniam uždaviniui. Šio genetinio algoritmo naujovė buvo
papildoma operacija, vadinama mutacijos keitikliu. Keitiklio paskirtis – ištrukti iš lokalaus
minimumo. Esant ankstyvajai konvergencijai keitiklis pakeisdavo tam tikrus individus didelėmis
atsitiktinėmis reikšmėmis.
Buvo tiriamas antrasis praktinis uždavinys, kurio tikslus sprendimas yra lygus 104.12 (žr. 17
pav.). Pasiūlytas algoritmas šiam uždaviniui yra efektyvesnis nei MRS, Simplex ir Kvazi-Niutono

28
metodas, tačiau mažiau efektyvesnis nei NEWUOA, SA ir GA metodai, pasiūlyti mokslininkų
R. Belevičiaus ir kitų (2011).

3.4. Atkaitinimo modeliavimo pritaikymas


Mokslininkai D. Šešok, J. Mockus, R. Belevičius ir A. Kačeniauskas (2010) savo tyrime
palygino SA algoritmą su GA algoritmu, pasiūlytų mokslininkų R. Belevičiaus ir D. Šešok (2008).
Abu algoritmai buvo palyginti optimizuojant polių padėčių gręžtiniuose pamatuose uždavinį, kur
polių kiekis buvo 10 -15.
Tiriant SA algoritmą buvo panaudota tokia realizacija: sugeneruojami pradinių individų 𝑁_𝑖𝑛𝑖𝑡
suteikiant jiems atsitiktines reikšmes. Kiekvienam individui paskaičiuojama tikslo funkcija ir
išrenkamas geriausias individas. Tada esamam individui atliekamos modifikacijos pakeičiant vieną
elementą atsitiktine reikšme pagal intervalą [−𝑎; 𝑎]. Šis intervalas pagal nustatytas taisykles
mažėjo. Jeigu modifikuoto individo sprendinys yra geresnis nei esamo, tada jis tampa nauju
sprendiniu, kitu atveju jis tampa nauju sprendiniu su tikimybe:
∆𝑓 𝑙𝑛(1+𝑗𝑥2 ) (14)
𝑃𝑗 = 𝑒 𝑥1

kur 𝑥1 – pradinė temperatūra, 𝑥2 – atkaitinimo greitis, 𝑗 – iteracijos numeris ir ∆𝑓 – skirtumas


tarp modifikuoto ir esamo individo.
Tyrimo rezultatai yra pateikti 2 lentelėje.
2 lentelė. GA ir SA palyginimas
Polių kiekis Iteracijos GA SA Tikslus sprendimas
10 4000 192.4 184.89 183.8
15 9000 157.7 145.46 143.0
Šaltinis: Sudaryta autoriaus pagal D. Šešok et. al. (2010).
Tyrimo rezultatai parodė, kad SA algoritmas yra efektyvesnis nei GA, o uždavinio sprendimai
yra arti optimalaus.
Mokslininkai D. Šešok, R. Belevičius, A. Kačeniauskas ir J. Mockus (2010) pasiūlė
skaičiavimams tinkle pritaikyti SA algoritmą, siekiant padidinti skaitinių eksperimentų kiekį
nepadidinant skaičiavimo laiko. SA ir kituose optimizavimo algoritmuose skaitiniai eksperimentai
yra visiškai nepriklausomi vienas nuo kito. Tai suteikia galimybė paskirstyti skaičiavimus
kiekvienam eksperimento bandymui. Tyrimui buvo pritaikytas R. Belevičiaus ir kitų (2011)
pasiūlytas SA algoritmas (žr. 18 pav.).

29
18 pav. SA rezultatai panaudojant paskirstytus skaičiavimus tinkle
Šaltinis: Sudaryta autoriaus pagal D. Šešok et. al. (2010).
Tyrimo rezultatai parodė, kad po 1000 bandymų buvo pagerinti 9 praktiniai uždaviniai.
Apibendrinant visus išnagrinėtus ankstesnius tyrimus, galima teigti, kad SA algoritmas yra
perspektyviausias optimizuojant polių padėčių gręžtiniuose pamatuose uždavinį. Su šiuo algoritmu
buvo gauti sprendimai arčiausiai prie optimaliojo.
Šiame darbe toliau bus nagrinėjamas atkaitinimo modeliavimo algoritmas siekiant optimizuoti
inžinerinius uždavinius.

30
4. OPTIMIZAVIMO PROGRAMA NAUDOJANT ATKAITINIMO MODELIAVIMO
ALGORITMĄ
Skyriuje pateikiama optimizavimo programos realizacija panaudojant atkaitinimo modeliavimo
algoritmą. Pateikiama programos architektūra. Aptariama metodų klasifikacija ir papildomi
algoritmo modifikavimai.

4.1. Optimizavimo programos architektūra


Optimizavimo uždaviniams spręsti taikomi įvairūs modifikuoti SA metodai. Visiems atvejams
taikoma yra bendra SA algoritmo veikimo proceso schema (žr. 19 pav.):

19 pav. SA veikimo proceso schema

31
Atkaitinimo modeliavimo algoritmas yra papildomas jau realizuotoje šio darbo autoriaus
optimizavimo programoje, kuri parašyta su C++ programavimo kalba ir skirta optimizuoti
uždavinius su genetiniais algoritmais (Miloš, 2017).
Optimizavimo programa yra realizuota pagal loginę architektūrą, kuri suteikia galimybę
paprastai pasirinkti metodų kombinaciją arba papildomai pildyti algoritmą nemodifikuojant
pagrindinio kodo, kuriame įvykdomas procesas. Visi proceso etapai nėra tiesiogiai priklausomi
vienas nuo kito, o tarpininkauja modifikuojant vieną bendrą parametrą – individą, kuris žymi polių
pozicijų masyvą (Miloš, 2017).
Programos lankstumas leidžia atlikti pakeitimus bet kokiame iš proceso etapų – pradinio
individo generavimo, kandidato parinkimo ar stimuliavimo, nedarant įtakos esminei programos
veikimo logikai.
Optimizavimo programos tikslas yra surasti kiekvieno uždavinio mažiausią tikslo funkcijos
reikšmę. Šiai reikšmei pasiekti gali būti taikomi įvairūs metodai ir algoritmo realizacijos,
priklausomai nuo to, kaip efektyviai programa suranda optimalią tikslo funkcijos reikšmę per
nustatytą iteracijų skaičių. Siekiant išnagrinėti įvairius sprendimus, programoje yra taikomas
polimorfizmas, kur yra sukurtos pradinio individo generavimo, kandidato parinkimo ir stimuliavimo
bazinės klasės, turinčios savyje virtualius metodus. Virtualūs metodai suteikia galimybę perrašyti
paveldinčioje klasėje jų funkcionalumą. Tada kiekvienas metodas gali būti vykdomas skirtingai,
priklausomai nuo konkrečios klasės realizacijos. Kiekvienas objektas turintis virtualių metodų, turi
nuorodą į savo klasę. Virtualūs metodai siejami su objekto duomenų struktūra (Miloš, 2017).
Pradinėje klasėje main kvietėjas inicializuoja paveldėtas atkaitinimo modeliavimo proceso
klases – pradinį individo generavimą, kandidato parinkimą ir stimuliavimą, ir paduoda jas kaip
argumentus į pagrindinę programos klasės SimulatedAnnealingEngine metodą, kurioje vykdomas
viso atkaitinimo modeliavimo procesas. Šis metodas priima paveldėtas klases kaip bazinių klasių
parametrus, turinčius savyje jau realizuotus virtualius metodus. Tai leidžia metodui iškviesti bendrą
virtualų metodą, kuris atliks funkcionalumą tos klasės, į kurią yra priskirta nuoroda. Polimorfizmo
realizacija pateikiama A priede.
Tokio pobūdžio klasių hierarchija suteikia galimybę realizuoti naujus atkaitinimo modeliavimo
algoritmo proceso metodus visiškai nekeičiant esminio kodo, o paprastai perrašant tuos pačius
virtualius metodus.
Šiame darbe optimizavimo programoje pasiūloma naujovė – atkaitinimo modeliavimo
algoritmo procesams yra išbandomi metodai, kurie suteikia algoritmui dinamiškumą. Papildomai
algoritmas supaprastinamas pašalinant temperatūros ir atkaitinimo greičio parametrus. Vietoj
temperatūros, naudojamas iteracijų skaičius, o vietoj atkaitinimo greičio išbandomas pokyčio
žingsnio parametras.
32
4.2. Pradinių parametrų nuskaitymas
Prieš pradedant SA algoritmo procesą, įvykdomas tokių pradinių parametrų nuskaitymas:
pradinių individų generavimo kiekis, iteracijų skaičius, polio pozicijos reikšmės intervalo pradžia ir
pabaiga, modifikuojamų elementų kiekis, stimuliavimo tikimybės reikšmė ir kt.. Turint
kompleksinę programą svarbu, kad pradiniai parametrai būtų laikomi vienoje vietoje, kadangi juos
lengviau po to perpanaudoti ir esant parametro pakeitimams, nereikia atlikti pilną paiešką po
programos kodą, kad pakeisti parametrą visose vietose, kur jis yra taikomas. Praktikoje saugomus
parametrus patogu laikyti atskirame faile, iš kurio vėliau galima nuskaityti norimas reikšmes
(Handbook, 2018).
Vienas iš dažniausiai taikomų failų formatų yra JSON. Tai paprastas atviro standarto failų
formatas, kurį lengvai yra skaityti ir įrašinėti. Šis formatas yra nepriklausomas ir tinka bet kokiai
programavimo kalbai. Vienas iš jo pagrindinių privalumų yra tas, kad kompiuteriams jį apdoroti yra
žymiai greičiau ir lengviau nei kitus formatus, pavyzdžiui XML. JSON formato struktūra sudaro
atributo ir reikšmės poras skaitomame tekste (žr. 19 pav.).

20 pav. Programos nustatymai JSON formatu


C++ programavimo aplinkoje parametrai iš failo formatu JSON yra nuskaitomi naudojant atviro
kodo biblioteką nlohmann/json. Biblioteka yra importuojama į programos failą, kurioje bus
taikomas nuskaitymo metodas. Tada kviečiamas šios bibliotekos metodas parse, kuriam
paduodamas vienintelis parametras – failo pavadinimas. Nuskaityti duomenys saugomi
kintamajame settings. Kad ištraukti norimą parametrą, užtenka skliaustuose įrašyti jo pavadinimą,
pavyzdžiui, settings [„elAmount“]. Svarbu, kad tipas, esantis nustatymų faile, atitiktų tipui
programavimo aplinkoje, prie kurio jis yra priskiriamas. Pagrindinių nustatymų nuskaitymo
pavyzdys pateiktas B priede.

4.3. Pradinio individo generavimas


Atkaitinimo modeliavimo algoritmas prasideda nuo pradinio individo generavimo, kurio
pagalba vėliau vykdomas visas algoritmo procesas.

33
Tyrimui yra sukurti du pradinės populiacijos generavimo metodai – bazinis generatorius (angl.
SA Basic generator) ir atstumo generatorius (angl. SA Distance generator).
Bazinis generatorius. Šio metodo tikslas – sugeneruoti kiekvienam poliui atsitiktinę poziciją.
Šios pozicijos reikšmės gavimui taikomas bazinis C++ programavimo kalbos atsitiktinio skaičiaus
generatorius rand(). Koks yra polių skaičius, tiek bus sugeneruota atsitiktinių skaičių. Kiekvieną
atsitiktinį skaičių vadiname individo elementu. Tam, kad sužinoti, koks yra polių kiekis ir bendras
pamato ilgis, taikoma gręžtinių pamatų programos funkcija ANALYSIS. Panaudojant gautus
parametrus užtikrinama, kad sugeneruotas atsitiktinis skaičius neviršys bendrą pamato ilgį ir nebus
sugeneruota per daug elementų. Po šio etapo susikuria elementų masyvas vadinamas individu.
Atstumo generatorius. Bazinis atsitiktinių skaičių generatorius turi trukumą, nes gaunant
atsitiktines elementų reikšmes, yra nemaža tikimybė, kad šios reikšmės bus arti viena kitos arba
dauguma iš jų bus labai mažos, arba per didelės, kas reikš, kad poliai bus išdėstyti vienoje vietoje.
Tai pasunkina ir pailgina optimizavimo algoritmą ieškant optimalias polių pozicijas. Atstumo
generatorius yra pažangesnis, o metodo realizacija bei algoritmas yra žymiai platesnės struktūros,
nes reikalaujama daugiau matematinių skaičiavimų, kurių tikslas pritaikyti diskretų elementų
išdėstymą po visą individą, kur atstumas tarp polių būtų kuo panašesnis.
Naudojant atstumo generatorių yra taikoma tokia matematinė formulė:
𝐺𝑉𝐶 1 𝐺𝑉𝐶 (15)
𝐺 = 𝑟𝑎𝑛𝑑() % 1000 ∗ ∗ 1000 + ∗ 𝑖 , kur
𝐺𝐿 𝐺𝐿

• G – elemento reikšmė.
• GVC – bendras pamato ilgis.
• GL – elementų kiekis (polių kiekis).
• i – iteracijos skaičius.
Sugeneravus visų elementų reikšmes, individas visada rūšiuojamas didėjančiai. Kiekvienas
gautas individas yra vertinimas pagal tikslo funkciją ir, kadangi uždavinys yra minimizuojamas, kuo
reikšmė yra mažesnė, tuo geresnis individas ir jo elementai, kitaip sakant, polių pozicijos po
įvertinimo yra arčiau optimalaus sprendimo.

4.4. Individo kandidato parinkimas


Turint pradinį individą pereinama prie kito proceso etapo, kur sugeneruojamas šio individo
kaimynas, kuris laikomas kandidatu pakeisti esamą individą.
Šio proceso tikslas – sukurti pradinio individo kopiją ir atlikti jame smulkias modifikacijas
pakeičiant tam tikrą kiekį individo elementų reikšmes pagal nurodytas sąlygas.
Tyrimo metu yra realizuoti tris individo kandidato parinkimo metodai:
• Bazinis kandidato selektorius (angl. SA Basic candidate selector).
• Atstumo kandidato selektorius (angl. SA Delta candidate selector).
34
• Dinaminis kandidato selektorius (angl. SA Multiple candidate selector).
Bazinis kandidato selektorius. Šio metodo tikslas – sukurti pradinio individo kopiją ir šioje
kopijoje atsitiktinai pakeisti vieno elemento reikšmę (žr. 3 lentelę).
3 lentelė. Bazinis kandidato selektorius
Pradinis individas 0,5 2,4 23,5 32,1 42,6 48,1 50,8
Individas kandidatas 0,5 2,4 23,5 32,1 42,6 11,5 50,8

Šiam metodui įvykdyti užtenka trijų parametrų: polių kiekis, pamato bendras ilgis ir pradinis
individas. Iš pradžių yra atsitiktinai parenkama individo elemento pozicija. Tada šiai pozicijai
sugeneruojama atsitiktinė reikšmė, kuri turi būti nemažesne už 0 ir ne didesnė nei bendras pamato
ilgis.
Atstumo kandidato selektorius. Šio metodo pagrindinė paskirtis yra pakeisti individo vieno
elemento reikšmę pagal nustatyta intervalą. Palyginus su bazinio kandidato selektoriaus metodu,
esminė logika nesikeičia, tačiau prisideda papildomas atstumo parametras. Iš šio parametro yra
sudaromas intervalas, pagal kurį bus keičiama vieno elemento reikšmė, pavyzdžiui, jeigu atstumo
reikšmė yra lygi 1-ui, tai keičiamo elemento nauja reikšmė bus lygi sumai esamos reikšmės ir
sugeneruotos reikšmės intervale [-1; 1]. (žr. 4 lentelę).
4 lentelė. Atstumo kandidato selektorius

Pradinis individas 0,7 3,5 5,2 15,6 38,3 40,6 49,1


Individas kandidatas 0,7 3,5 5,8 15,6 38,3 40,6 49,1

Prieš pakeičiant elementą patikrinama, ar gauta nauja reikšmė neviršija bendro pamato ilgio
arba nėra mažesnė nei 0. Jeigu sąlyga netenkinama, tai metodo procesas yra kartojamas.
Dinaminis kandidato selektorius. Šis metodas praplečia atstumo kandidato selektoriaus
metodą, pridedant du naujus parametrus – keičiamų elementų kiekį ir pokyčio žingsnį. Keičiamų
elementų kiekis suteikia galimybę pakeisti individo kelias elementų reikšmes (žr. 5 lentelę).
5 lentelė. Dinaminis kandidato selektorius

Pradinis individas 1,3 4,2 7,1 14,3 23,5 38,2 49,1


Individas kandidatas 0,8 4,2 7,1 14,8 23,5 38,9 49,1

Pokyčio žingsnio parametras dinamiškai mažina atstumo parametrą, o tai reiškia, kad
kiekvienoje naujoje iteracijoje elemento reikšmės pokyčio intervalas mažės iki nustatytos ribos.
Pokyčio žingsnio parametras yra apskaičiuojamas pagal tokią formulę:
(𝑒𝑛𝑟 − 𝑠𝑡𝑟)
𝑚= (16)
𝑖𝑡_𝑎𝑚𝑜𝑢𝑛𝑡
• 𝑚 – pokyčio žingsnio reikšmė;
• 𝑒𝑛𝑟 – intervalo pradžios reikšmė;
35
• 𝑠𝑡𝑟 – intervalo pabaigos reikšmė;
• 𝑖𝑡_𝑎𝑚𝑜𝑢𝑛𝑡 – iteracijų skaičius.
Jeigu po apskaičiavimų pokyčio intervalas lygus 0,008, o elemento pokyčio reikšmės intervalas
yra lygus [-1; 1], tai antroje iteracijoje intervalas bus lygus [-0.092; 0.092].

4.5. Kandidatų palyginimas ir stimuliavimas


Parinkus individą kandidatą, jam yra apskaičiuojama tikslo funkcijos reikšmė. Tolimesnis
procesas yra palyginti du individus ir parinkti iš jų geriausią, šiuo atveju, turintį mažesnę tikslo
funkcijos reikšmę. Šiuo žingsniu ir pasibaigia pirmoji iteracija, o kitose iteracijose, procesas
kartojamas iš pradžių parenkant naują individą kandidatą ir, galiausiai, pasiekiant galutinį iteracijų
skaičių. Tačiau, jeigu palyginimo metu rinktis visada geriausią individą, yra didelė tikimybė
pasiekti ankstyvąją konvergenciją.
Ankstyvoji konvergencija – tai tokia situacija, kai optimizavimo algoritmas patenka į vieną iš
lokaliųjų minimumų arba maksimumų ir iš jo negali ištrūkti (žr. 21 pav.).

21 pav. Lokalių minimumų arba maksimumų padėtys


Šaltinis: sudaryta darbo autoriaus remiantis: Borici (2012).
Šis terminas yra kilęs iš evoliucinių algoritmų ir dažniausiai atsiranda genetiniuose
algoritmuose, kur visi populiacijos individai tampa vienodi ir neduoda gero sprendimo (Pandey,
Chaudhary, & Mehrotra, 2014). Analogiškai gali įvykti ir su atkaitinimo modeliavimo algoritmu.
Kai pasiekiamas didelis iteracijų skaičius, individo tikslo funkcijos reikšmė gali nebesikeisti, nes
koks individo elemento pokytis gali duoti blogesnį sprendinį.
Tam, kad galima būtų išvengti šios problemos, atkaitinimo modeliavimo algoritme yra
naudojamas individo kandidato parinkimo stimuliavimas. Stimuliavimo proceso tikslas – pagal
nurodytas sąlygas su tam tikra tikimybe pasirinkti blogesnį individą. Tokiu atveju kitose iteracijose
keičiamas bus blogesnis individas, kuris su didele tikimybe pakeis kelią ir judės prie globalaus
sprendimo.
Tyrimui iš viso yra realizuoti du stimuliavimo metodai:
• Atstumo stimuliatorius (angl. Delta stimulator).
36
• Dinaminis stimuliatorius (angl. Dynamic stimulator).
Atstumo stimuliatorius. Šis metodas priima tris parametrus: esamo individo ir kandidato
individo tikslo funkcijų reikšmes bei stimuliatoriaus atstumo parametrą. Tada apskaičiuojamas
skirtumas tarp dviejų tikslo funkcijos reikšmių pagal tokią formulę:
𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒 = |𝑒𝑛𝑒𝑟𝑔𝑦 − 𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝐸𝑛𝑒𝑟𝑔𝑦| (3)
(17)
Iš gauto skirtumo ištraukiamas modulis. Tada skirtumas yra palyginimas su pasirinktu
stimuliatoriaus atstumu ir, jeigu skirtumas yra mažesnis, nauju individu tampa blogesnis, kitu atveju
– grąžinamas geresnis. Stimuliatoriaus atstumo parametras yra nekintantis ir nuskaitomas iš
pradinių parametrų failo.
Dinaminis stimuliatorius. Šis metodas papildo atstumo stimuliatorių pridedant papildomą
parametrą – pokyčio žingsnį. Pokyčio žingsnis veikia analogišku principu kaip ir dinaminio
kandidato selektoriaus metodas. Pokyčio žingsnio reikšmė yra apskaičiuojama pagal 17-ąją
formulę, įstatant tokius parametrus:
• 𝑒𝑛𝑟 – pradinis stimuliatoriaus atstumas;
• 𝑠𝑡𝑟 – galutinis stimuliatoriaus atstumas;
• 𝑖𝑡_𝑎𝑚𝑜𝑢𝑛𝑡 – iteracijų skaičius.
Apskaičiavus pokyčio žingsnio reikšmę, kiekvienoje iteracijoje ji yra sumuojama, esant
esamam stimuliatoriaus atstumui.

37
5. SKAITINIAI EKSPERIMENTAI IR OPTIMALIOS STRATEGIJOS PAIEŠKA
Šiame skyriuje yra pateikiami skaitiniai eksperimentai, siekiant surasti optimalią strategiją,
duodančią geriausią uždavinio sprendinį. Pateikiamas kiekvieno eksperimento aprašas – pradiniai
parametrai ir metodų kombinacijos. Tarpusavyje palyginami eksperimentų rezultatai.
Geriausios optimizavimo strategijos paieškos tikslu parinkti trys tyrimo etapai atkaitinimo
modeliavimo algoritmui:
• pradinio individo generavimas;
• kandidato individo pakeitimų reikšmių intervalas ir kiekis;
• esamo ir kandidato individų palyginimo ir stimuliavimo sąlygos.
Iš viso išbandomos aštuonios strategijos, siekiant surasti tokią parametrų reikšmių, intervalų ir
metodų kombinaciją, su kuria polių padėčių gręžtinio tipo pamatuose uždavinio sprendimas bus
arčiausiai optimaliojo.
Kiekviena strategija yra patikrinama 28 kartų, nes realizuotas atkaitinimo modeliavimo
algoritmas dirba su atsitiktiniais skaičiais, todėl vienu metu gali duoti geresnį sprendinį, kitu atveju
blogesnį. Šis skaičius taip pat parinktas, siekiant atlikti vieningą palyginimą su kitų mokslininkų
ankščiau gautais tyrimų rezultatais. Kiekviename bandyme nustatoma sąlyga, kad algoritmas
vykdomas iki tol, kol tikslo funkcijos apskaičiavimo metodas bus panaudotas 5000 kartų arba bus
pasiektas globalus sprendimas.
Skaitinių eksperimentų tyrimams taikomas gręžtinių pamatų antras uždavinys, kurio optimalus
sprendimas yra lygus 104,12. Radus geriausią strategiją, ji bus išbandyta su visais dešimt gręžtinio
tipo pamatų praktiniais uždaviniais.

5.1. Uždavinio sprendimas naudojant tik pradinį individo generatorių


Šio skaitinio eksperimento tikslas yra palyginti du realizuotus pradinio individo generatorius –
bazinį ir atstumo. Pradinio individo generatoriaus efektyvumas yra svarbus, nes, kuo mažesnę tikslo
funkcijos reikšmę turi pradinis individas, tuo greičiau jis artės prie geresnio sprendinio. Abiejuose
metoduose generatorius yra iškviečiamas 5000 kartų. Kiekvienoje iteracijoje yra apskaičiuojama
sugeneruota individo tikslo funkcijos reikšmė ir geriausia yra išsaugoma.
Po 28 bandymų pirmojo eksperimento rezultatai yra pateiktai 6 lentelėje.
6 lentelė. Eksperimento rezultatai lyginant pradinio individo generatorius

Minimumas Vidurkis Maksimumas


Bazinis generatorius 131,831 154,310 172,034
Atstumo 120,648 125,568 129,862
generatorius

38
6 lentelėje yra pateikiama abiejų generatorių pasiekta mažiausia ir didžiausia tikslo funkcijos
reikšmė bei vidurkis. Galima teigti, kad atstumo generatorius yra žymiai efektyvesnis nei bazinis.
Atstumo generatoriaus minimumas skiriasi nuo maksimumo tik 7,09 %, o bazinio generatoriaus
minimumas skiriasi nuo maksimumo net 23,3 %. Atstumo vidurkiai pasako, kad atstumo
generatorius dažniausiai sugeneruos individą, kuris bus arčiausiai prie minimumo.
Kitose eksperimentuose, kur bus generuojamas pradinis individas, visada bus taikomas atstumo
generatorius su tokiais parametrais:
• pradinių generacijų skaičius – 500;
• algoritmo iteracijų skaičius – 4500.
Tokie parametrai parinkti, kadangi su jais buvo pasiektas geriausias šio darbo autoriaus
rezultatas optimizuojant uždavinius su genetiniais algoritmais (Miloš & Šešok, 2017).

5.2. Uždavinio sprendimas naudojant bazinį kandidato selektorių


Antro eksperimento tikslas yra pridėti antrą atkaitinimo modeliavimo algoritmo proceso etapą –
bazinį individo kandidato selektorių. Šis selektorius modifikuoja esamą individą pakeičiant vieną
elementą atsitiktine reikšme. Ši reikšmė neturi būti mažesne negu 0 ir nedidesne, nei bendras
pamato ilgis. Šiame eksperimente atkaitinimo modeliavimo algoritmas neturi stimuliatoriaus
proceso, nes tikslas yra atskirai patikrinti šio selektoriaus įtaką uždavinio sprendimui.
Po 28 eksperimento bandymų gauti tokie tikslo funkcijos reikšmės rezultatai:
• minimumas – 114,371;
• vidurkis – 121,3;
• maksimumas – 138,68.
Eksperimento rezultatai parodo, kad bazinis kandidato selektorius 5,2 % pagerina tikslo
funkcijos reikšmę, tačiau iki globalaus sprendimo dar yra toli.

5.3. Uždavinio sprendimas naudojant atstumo kandidato selektorių


Šio skaitinio eksperimento tikslas yra patikrinti atstumo kandidato selektoriaus efektyvumą
pritaikant įvairius vieno elemento pakeitimo reikšmės intervalus. Kviečiant šį metodą, atliekami
trys tyrimai, kur vieno elemento reikšmė atsitiktinai pakeičiama naudojant tokius intervalus:
• [-1,0; 1;0];
• [-0,75; 0,75];
• [-0,5; 0,5].
Šiame eksperimente taip pat nėra taikomas stimuliatorius, nes poreikis yra patikrinti atstumo
kandidato selektoriaus kokybę atskirai. Šiuo atveju, lyginant esamą ir kandidato individus, visada
imamas geriausias.
Trečiojo skaitinio eksperimento rezultatai pateikiami 7 lentelėje.
39
7 lentelė. Eksperimento rezultatai naudojant atstumo kandidato selektorių
Minimumas Vidurkis Maksimumas
[-1,0; 1,0] 112,079 118,762 128,263
[-0,75; 0,75] 110,473 120,02 138,1
112,03 120,138 130,515
[-0,5; 0,5]

Iš pateiktų 7 lentelėje rezultatų analizės galima daryti išvadą, kad atstumo kandidato selektorius
duoda geriausią rezultatą naudojant intervalą [-0,75; 0,75] ir šio eksperimento mažiausia tikslo
funkcijos reikšmė yra lygi 110,473. Tačiau, lyginant visų išbandytų intervalų gautus vidurkius,
kiekvienas tyrimas duoda panašų rezultatą. Ar atstumo kandidato selektorius priklauso nuo
reikšmės pakeitimo intervalo, bus patikrinta trečiame eksperimente.

5.4. Uždavinio sprendimas naudojant atstumo kandidato selektorių ir atstumo


stimuliatorių
Šis eksperimentas turi du pagrindinius tikslus:
• Patikrinti individo kandidato atstumo selektoriuje reikšmės pakeitimo intervalo
priklausomybę nuo tikslo funkcijos reikšmės.
• Ištirti atstumo stimuliatoriaus pritaikymo efektyvumą.
Analogiškai, kaip ir antrame eksperimente, išbandomas atstumo kandidato selektorius su tokiais
intervalais:
• [-1,0; 1;0];
• [-0,75; 0,75];
• [-0,5; 0,5].
Lyginant esamą ir kandidato individus yra taikomas stimuliatorius, kurio logika bus identiška
tiriant visus paminėtus intervalus.
Apskaičiuojamas skirtumas tarp individų tikslo funkcijos reikšmių ir, jeigu ši reikšmė yra
mažesnė negu stimuliatoriaus atstumo parametras, kuris lygus 1-ui, tada esamas individas
pakeičiamas blogesniu individu, kitu atveju grąžinamas geresnis.
Ketvirtojo eksperimento rezultatai parodomi 8 lentelėje.
8 lentelė. Eksperimento rezultatai naudojant atstumo kandidato selektorių ir atstumo stimuliatorių

Minimumas Vidurkis Maksimumas


[-1,0; 1,0] 108,432 111,114 113,443
[-0,75; 0,75] 108,688 110,667 115,033

[-0,5; 0,5] 108,396 111,378 115,289

40
Iš pateiktų 8 lentelėje rezultatų analizės matyti, kad geriausias eksperimento pasiektas rezultatas
yra lygus 108,396 naudojant intervalą [-0,5; 0,5]. Tikslo funkcijos reikšmių minimumas, vidurkis ir
maksimumas beveik vienas nuo kito nesiskiria, todėl galima daryti pirmąją išvadą, kad tikslo
funkcijos kokybė nepriklauso nuo pasirinkto reikšmės pakeitimo intervalo naudojant atstumo
kandidato selektorių.
Grafiškas rezultatų palyginimas tarp 3-ojo ir 4-ojo eksperimento pavaizduotas 22 paveiksle.
138,1
140
Tikslo funkcijos reikšmė

120,02 115,289
120 108,396 110,473 111,378
100
80
60
40
20
0
Minimumas Vidurkis Maksimumas
Be stimuliatoriaus Su stimuliatoriumi

22 pav. 3-jo ir 4-jo eksperimentų rezultatų palyginimas


3-jo ir 4-jo eksperimentų rezultatų palyginimas atskleidė, kad pridėjus stimuliatorių prie
algoritmo, visi bendri rezultatai pagerėja. Maksimali tikslo funkcijos reikšmė pagerėjo 16,51 %,
vidurkis – 7,2 % ir minimumas – 1,88 %.

5.5. Uždavinio sprendimas keičiant stimuliatoriaus atstumo parametrą


Šio eksperimento tikslas yra ištirti, ar tikslo funkcijos kokybė priklauso nuo stimuliatoriaus
atstumo parametro reikšmės. Tyrimui yra patikrinamos trys parametro reikšmės: 0,75; 0,5 ir 0,25.
Algoritme yra taikomas atstumo kandidato selektorius, kaip ir ankstesniuose eksperimentuose.
Kadangi reikšmės pakeitimo intervalas nedaro didelės įtakos tikslo funkcijos reikšmei, šiam
eksperimentui paimamas intervalo vidurkis [-0,75; 0,75].
Penktojo eksperimento rezultatai yra pateikti 9 lentelėje.
9 lentelė. Eksperimento rezultatai keičiant stimuliatoriaus atstumo parametrą
Minimumas Vidurkis Maksimumas
1 108,688 110,667 115,033
0,75 107,755 110,406 113,588
0,5 107,653 109,393 113,495
106,439 110,218 114,484
0,25

9 lentelės eksperimento rezultatų analizė parodė, kad kuo mažesnis yra stimuliatoriaus atstumo
parametras, tuo uždavinio sprendimas gerėja ir tai liečia minimumą, vidurkį ir maksimumą.

41
Geriausias rezultatas, kurio tikslo funkcijos reikšmė lygi 106,439, gautas naudojant atstumo
parametrą, lygų 0,25. Šis eksperimentas pagerina iki šiol geriausią pasiektą sprendimą 1,8 %.

5.6. Uždavinio sprendimas naudojant dinaminį kandidato selektorių


Šio eksperimento tikslas yra ištirti dinaminį atstumo selektorių, kuriam vykdomas reikšmės
pakeitimo intervalo iteracinis mažėjimas. Šiame eksperimente keičiamas tik vienas individo
elementas. Čia pridedamas papildomas pokyčio žingsnio parametras, kuris apskaičiuojamas pagal
16-ją formulę. Tyrimams yra patikrinami trys dinaminiai intervalai:
• nuo [-1; 1] iki [-0,5; 0,5], pokyčio žingsnis – -0,0001;
• nuo [-1; 1] iki [-0,25; 0,25], pokyčio žingsnis – -0,00016;
• nuo [-1; 1] iki [-0,1; 0,1], pokyčio žingsnis – -0,002.
Kartu su dinaminiu atstumo selektoriumi taikomas atstumo stimuliatorius, kuriam buvo
parinkta geriausia reikšmė iš penkto eksperimento, lygi 0,25.
Šeštojo eksperimento rezultatai pateikiami 10 lentelėje.
10 lentelė. Eksperimento rezultatai naudojant dinaminį kandidato selektorių
Minimumas Vidurkis Maksimumas
Nuo [-1; 1] iki [-0,5; 0,5] 106,07 108,737 114,709
Nuo [-1; 1] iki [-0,25; 0,25] 106,359 109,043 116,73
105,674 108,404 112,39
Nuo [-1; 1] iki [-0,1; 0,1]

10 lentelės eksperimento rezultatų analizė atskleidė, kad naudojant dinaminiame kandidato


selektoriuje dinaminį intervalo sumažėjimą, uždavinio sprendinys pagerėja. Mažiausią tikslo
funkcijos reikšmė, kuri lygi 105,674, buvo pasiekta naudojant intervalą nuo [-1; 1] iki [-0,1; 0,1].
Tai 0,71 % pagerina penkto eksperimento geriausią pasiektą rezultatą, kuris buvo lygus 106,439.

5.7. Uždavinio sprendimas naudojant dinaminį stimuliatorių


Septinto eksperimento tikslas yra pritaikyti dinaminį stimuliatorių ir patikrinti jo efektyvumą
algoritmui. Dinaminis stimuliatorius kiekvienoje iteracijoje mažina stimuliatoriaus atstumo
parametrą sumuojant jį su pokyčio žingsnio parametru, kuris yra apskaičiuojamas pagal 16-ją
formulę.
Tyrimams yra patikrinami 3 atstumo stimuliatoriaus parametro intervalai:
• nuo 0,5 iki 0,1;
• nuo 0,35 iki 0,05;
• nuo 0,25 iki 0,05.

42
Šiame eksperimente taip pat yra taikomas dinaminis kandidato selektorius, kuriame reikšmės
pokyčio intervalas mažėja nuo [-1; 1] iki [-0,1; 0,1]. Su tokiu intervalu buvo pasiektas geriausias
rezultatas šeštame eksperimente.
Septintojo eksperimento rezultatai yra parodyti 11 lentelėje.
11 lentelė. Eksperimento rezultatai naudojant dinaminį stimuliatorių
Minimumas Vidurkis Maksimumas
Nuo 0,5 iki 0,1 105,826 108,739 113,518
Nuo 0,35 iki 0,05 104,951 108,173 113,02
106,003 108,993 120,355
Nuo 0,25 iki 0,05

11 lentelės eksperimento rezultatų analizė parodė, kad dinaminis stimuliatorius patobulino


atkaitinimo modeliavimo algoritmą. Geriausias uždavinio sprendimas, kurio tikslo funkcijos
reikšmė yra lygi 104,951, buvo pasiektas naudojant stimuliatoriaus atstumo mažėjimo intervalą nuo
0,35 iki 0,05. Šis rezultatas 0,94 % pagerina šeštos strategijos geriausią pasiektą tikslo funkcijos
reikšmę, kuri buvo lygi 105,674.

5.8. Uždavinio sprendimas modifikuojant kelis individo elementus


Šio eksperimento tikslas yra patikrinti, kaip keičiasi optimizavimo uždavinių sprendimai,
modifikuojant dinaminiame kandidato selektoriuje daugiau nei vieną individo elementą.
Eksperimente yra taikoma geriausia strategija, pasiekta septintame eksperimente, kurio parametrai
yra tokie:
• elemento reikšmės pokyčio intervalas: nuo [-1; 1] iki [-0,1; 0,1];
• stimuliatorius atstumo parametro intervalas: nuo 0,35 iki 0,05.
Tyrimams atliekami trys bandymai, kur individe keičiami 2, 3 ir 4 elementai.
Aštuntojo eksperimento rezultatai yra pateikti 12 lentelėje.
12 lentelė. Eksperimento rezultatai modifikuojant kelis individo elementus
Minimumas Vidurkis Maksimumas
Keičiami 2 elementai 105,511 109,726 118,96
Keičiami 3 elementai 105,59 107,927 111,642
105,617 108,975 115,697
Keičiami 4 elementai

Šio eksperimento rezultatai parodė, kad geriausias uždavinio sprendinys buvo gautas keičiant
du elementus individo kandidato generavimo metu. Šio sprendinio tikslo funkcijos reikšmė yra lygi
105,511, kuri pablogino esamą geriausią rezultatą, pasiektą septintoje strategijoje 0,53 %. Galima
daryti išvadą, kad algoritmas veikia efektyviau, kai individo kandidato generavime yra
modifikuojamas tik vienas elementas.
43
5.9. Visų eksperimentų palyginimas ir optimalios strategijos parinkimas
Šiame darbe buvo tiriamas globaliojo optimizavimo antrasis uždavinys, kurio optimalus
sprendimas yra lygus 104,12. Kad pasiekti šį sprendimą, buvo išbandyti įvairūs atkaitinimo
modeliavimo metodai ir tų metodų parametrai. Buvo ištirtos įvairios metodų kombinacijos, taip pat
atskirai patikrintas kiekvieno metodo efektyvumas.
Visų aštuonių eksperimentų rezultatų palyginimas yra pateiktas 23 paveiksle.
130

125

120

115

110

105

100

95

90
1 eksp 2 eksp 3 eksp 4 eksp 5 eksp 6 eksp 7 eksp 8 eksp
Minimumas 120,648 114,371 110,473 108,396 106,439 105,674 104,951 105,511
Vidurkis 125,568 121,3 120,02 111,378 110,218 108,404 108,173 109,726

Minimumas Vidurkis

23 pav. Visų aštuonių eksperimentų rezultatų palyginimas


Palyginus visų aštuonių eksperimentų rezultatus galima daryti išvadą, kad geriausias uždavinio
sprendimas buvo pasiektas naudojant strategiją, išbandytą septintame eksperimente. Šios strategijos
mažiausia tikslo funkcijos reikšmė yra lygi 104,951. Iki globalaus antro uždavinio sprendimo
pritruko tik 0,79 %.
Optimalios strategijos parametrai:
• individo generacijų skaičius – 500;
• iteracijų skaičius – 4500;
• elemento pokyčio reikšmės intervalo pradžia – -1;
• elemento pokyčio reikšmės intervalo pabaiga – 1;
• stimuliatoriaus atstumo pradinė reikšmė – 0,35;
• stimuliatoriaus atstumo galutinė reikšmė – 0,05.
Optimalios strategijos taikomi metodai:
• Atstumo generatorius – kiekvieno elemento reikšmė yra apskaičiuojama pagal 15-tą
formulę. Tai leidžia diskrečiai išdėstyti individe visus elementus, kur atstumas tarp

44
elementų būtų kuo panašesnis. Pagal tokią logiką yra sugeneruojami 500 individų ir iš jų
išrenkamas geriausias, turintis mažiausią tikslo funkcijos reikšmę.
• Dinaminis kandidato selektorius – sugeneruojamas individo kandidatas, modifikuojant
esamo individo vieną elemento reikšmę. Ši reikšmė modifikuojama pagal nustatytą
dinaminį mažėjanti intervalą nuo [-1; 1] iki [-0,1; 0,1]. Intervalas kiekvienoje iteracijoje
mažėja sumuojant jos pradžią ir pabaigą su atstumo pokyčio parametru. Atstumo
pokyčio parametras yra apskaičiuojamas pagal 16-tą formulę.
• Dinaminis stimuliatorius – po individo kandidato generavimo abu individai yra
palyginami ir, jeigu individas kandidatas yra geresnis, jis tampamas nauju individu, kitu
atveju, taikomas dinaminis stimuliatorius, kuris pagal nustatytą stimuliatoriaus atstumo
parametrą pasirenka blogesnį kandidatą. Stimuliatoriaus atstumo parametras kiekvienoje
iteracijoje dinamiškai mažėja nuo 0,35 iki 0,05. Mažėjimas įvyksta sumuojant šį
atstumo parametrą su pokyčio žingsniu, kuris apskaičiuojamas pagal 16-tą formulę.

5.10. Geriausios strategijos pritaikymas visiems globaliojo optimizavimo uždaviniams


Pasirinkus geriausią optimizavimo algoritmą, ji buvo pritaikyta likusiems praktiniams
uždaviniams. Optimizavimo uždavinių sprendimai yra pateikiami 13 lentelėje.
13 lentelė. Geriausios strategijos rezultatų palyginimas su tiksliais uždavinių sprendimais
Uždavinio Atkaitinimo Tikslus sprendimas Skirtumas %
Nr. modeliavimo algoritmas
1 354,18 307,47 15,19 %
2 104,95 104,12 0,54 %
3 107,11 101,85 5,16 %
4 105,57 101,24 4,28 %
5 99,92 97,51 2,47 %
6 110,66 97,53 13,46 %
7 296,91 287,35 3,33 %
8 404,68 236,28 71,27 %
9 257,25 244,71 5,12 %
10 562,11 349,05 61,04 %
Geriausios strategijos palyginimas su tiksliais uždavinių sprendimais parodė, kad naudojant
parinktą geriausią optimizavimo strategiją arčiausiai prie optimalaus sprendimo buvo: 2 uždavinys
(0,54 %), 5 uždavinys (2,47 %), 7 uždavinys (3,33 %), 9 uždavinys (5,12 %), 4 uždavinys (4,28 %)
ir 3 uždavinys (5,16 %). Parinktas algoritmas geriausiai tinka spręsti šiuos uždavinius ir šį algoritmą
galima tobulinti, kad pasiekti optimalų sprendimą. 1, 6, 8 ir 10 uždavinių sprendimai nepasiekė gerų
rezultatų, todėl šitas algoritmas šiems uždaviniams spręsti netiktų. Praktinių uždavinių sprendimai
pateikti C priede.
45
6. REZULTATŲ PALYGINIMAI
Šiame skyriuje realizuotas atkaitinimo modeliavimo algoritmas yra palyginamas su šio darbo
autoriaus realizuotu genetiniu algoritmu (Miloš, 2017). Palyginamas vienos iteracijos laikas
dviejuose algoritmuose. Pateikiamas geriausios optimizavimo strategijos rezultatų palyginimas su
kitų mokslininkų tirtų algoritmų rezultatais.

6.1. Atkaitinimo modeliavimo ir genetinio algoritmo palyginimas


Atkaitinimo modeliavimo ir genetiniai algoritmai pagal principą turi daug panašumų. Abu
algoritmai yra skirti spręsti globaliojo optimizavimo uždavinius, gali naudoti tikslo funkcijas ir
turėti mutacijos operatorius. Tačiau, atkaitinimo modeliavimo algoritmą yra žymiai paprasčiau
realizuoti. Realizuotas šio darbo autoriaus genetinis algoritmas (Miloš & Šešok, 2017) reikalavo
keturių operatorių: populiacijos generavimo, individų selekcijos, elementų rekombinacijos bei
mutacijos. Papildomai, kad būtų išvengta ankstyvosios konvergencijos, buvo pridėtas mutacijos
keitiklis. Atkaitinimo modeliavimo algoritmui užtenka trijų paprasčiausių operacijų: vieno individo
generavimo, kandidato individo parinkimo ir stimuliatoriaus. Kai genetinio algoritmo operatoriai
reikalauja daug logikos, atkaitinimo modeliavimo algoritmas – paprastas žaidimas su atsitiktiniais
skaičiais.
Geriausias pasiektas sprendimas su GA algoritmu antram praktiniam uždaviniui buvo lygus
111,37. Šiame darbe gautas antro praktinio uždavinio sprendinys su SA algoritmu pagerintas 5,7 %.
Palyginus dviejų algoritmų geriausių optimizavimo strategijų vykdymo laikus, genetinis
algoritmas vidutiniškai išspręsdavo uždavinį per 69,3 sekundes, o atkaitinimo modeliavimo
algoritmo vykdymo laikas yra 73,7 sekundes. Laikai yra panašūs dėl to, kad didžiausia skaičiavimo
dalį užima tikslo funkcijos apskaičiavimas (Miloš & Šešok, 2017).

6.2. Siūlomos optimizavimo strategijos rezultatų palyginimas su paskelbtais mokslinėje


literatūroje
Geriausia parinkta strategija atkaitinimo modeliavimo algoritmui yra palyginta su mokslininkų
M. Ramanausko ir kitų (2017) tyrimais, kur buvo realizuotas ir pritaikytas modifikuotas genetinis
algoritmas, su mokslininkų J. Mockaus ir kitų (2012) tyrimais, kur buvo taikomas Bajeso metodas,
ir su mokslininkų R. Belevičiaus ir kitų (2011) tyrimų rezultatais, kuriuose buvo lyginami įvairūs
algoritmai, skirti spręsti globaliojo optimizavimo uždavinius.
Visų algoritmų tyrimo rezultatai yra pateikti 14 lentelėje.

46
14 lentelė. Siūlomos optimizavimo strategijos rezultatų palyginimas su kitų tyrėjų rezultatais
Nr. SA Bajeso GA SA Tikslus Bendras
(Belevičius, metodas (Ramanauskas, (šis sprendimas patobulinimas
2011) (Mockus, 2017) darbas) %
2012)
1 339,3 381,39 337,15 354,18 307,47 -5,05
2 106,36 113,47 105,34 104,95 104,12 0,37
3 107,25 117,31 115,02 107,11 101,85 0,13
4 106,8 117,16 113,29 105,57 101,24 1,15
5 102 110,91 100 99,92 97,51 0,08
6 117,26 115,45 120,28 110,66 97,53 5,63
7 298,11 333,77 301,48 296,91 287,35 0,40
8 357,67 286,22 404,29 404,68 236,28 -41,38
9 253 278,86 263,12 257,25 244,71 -1,68
10 463,34 493,53 556,11 562,11 349,05 -21,32

Siūlomos optimizavimo strategijos palyginimas su kitų tyrėjų darbuose paskelbtais rezultatais


atskleidė, kad naudojant šio darbo autoriaus siūlomą atkaitinimo modeliavimo algoritmą buvo
pagerinti šešių uždavinių sprendimo rezultatai, palyginti su 2011 m., devynių – palyginti su 2012
m., septynių uždavinių – palyginti su 2017 m. tyrimu rezultatais. Palyginus visus keturių tyrimų
rezultatus nustatyta, kad šio darbo autoriaus siūloma optimizavimo strategija užtikrina šešių
uždavinių sprendimo rezultatų pagerėjimą: antrą 0,37 %, trečią 0,13 %, ketvirtą 1,15 %, penktą 0,08
%, šeštą 5,63 % ir septintą 0,40 %.

47
DARBO REZULTATAI
1. Išanalizuota mokslinė literatūra populiarių globalaus optimizavimo algoritmų tema, pateikti
aprašymai ir pritaikymai įvairiuose tyrimuose.
2. Išnagrinėta gręžtinių pamatų skaičiavimo programa (programos autorius prof. R. Belevičius).
Aprašytas matematinis modelis, pateikta integracija su optimizavimo programa.
3. Išanalizuoti ankstesni mokslininkų tyrimai optimizuojant polių padėčių gręžtiniuose pamatuose
uždavinį. Išrinktas perspektyviausias optimizavimo algoritmas.
4. Optimizavimo algoritmas realizuotas su C++ programavimo kalba naudojant tikslo funkciją
kaip „juodą dėžę“ iš gręžtinių pamatų skaičiavimo programos.
5. Atlikti skaitiniai eksperimentai ir nustatyta optimali algoritmo optimizavimo strategija
pasirinkto tipo uždaviniams spręsti.
6. Inžineriniai uždaviniai išspręsti, rezultatai palyginti su kitų tyrėjų gautais rezultatais.

48
IŠVADOS
1. Literatūros analizė atskleidė, kad populiariausi globalaus optimizavimo algoritmai yra genetinis
ir atkaitinimo modeliavimo algoritmas.
2. Integravus FORTRAN biblioteką į C++ optimizavimo programą bendras našumas nesumažėjo.
3. Išnagrinėti ankstesni mokslininkų tyrimai parodė, kad perspektyvus algoritmas polių padėčių
gręžtiniuose pamatuose uždavinio optimizavimui yra atkaitinimo modeliavimas.
4. Atkaitinimo modeliavimo algoritmas yra paprasčiau realizuojamas nei genetinis algoritmas.
Genetinio algoritmo realizacijai reikia trijų operatorių, o atkaitinimo modeliavimui užtenka
dviejų. Atkaitinimo modeliavimas apdoroja tik vieną individą, o genetinis algoritmas visą
individų populiaciją.
5. Parinkta optimali atkaitinimo modeliavimo algoritmo strategija, kurios metodai ir parametrai
yra tokie:
Optimalios strategijos parametrai:
• individo generacijų skaičius – 500;
• iteracijų skaičius – 4500;
• elemento pokyčio reikšmės intervalo pradžia – -1;
• intervalo pabaiga – 1;
• stimuliatoriaus atstumo pradinė reikšmė – 0,35;
• stimuliatoriaus atstumo galutinė reikšmė – 0,05.
Optimalios strategijos taikomi metodai:
• atstumo generatorius;
• dinaminis kandidato selektorius;
• dinaminis stimuliatorius.
6. Siūlomos optimizavimo strategijos rezultatai, palyginus su kitų mokslininkų tyrimų
rezultatais, gautais 2011 m., 2012 m. ir 2017 m., pagerino šešių uždavinių sprendimus: antrą
0,37 %, trečią 0,13 %, ketvirtą 1,15 %, penktą 0,08 %, šeštą 5,63 % ir septintą 0,40 %.

49
LITERATŪRA
Ahuja, H., Sujata, & Batra, U. (2018). Performance Enhancement in Requirement Prioritization by
Using Least-Squares-Based Random Genetic Algorithm. Innovations in Computational
Intelligence. Studies in Computational Intelligence, 713. https://doi.org/10.1007/978-981-
10-4555-4_17
Amer, M. H., Al-Kashoash, H., Hawer, M., Chaqfeh, M., Kemp, A., & Mihaylowa, L. (2019).
Centralized simulated annealing for alleviating vehicular congestion in smart cities.
Technological Forecasting and Social Change, 142, 235-248.
https://doi.org/10.1016/j.techfore.2018.09.013
Arostegui Jr, M. A., Kadipasaoglu, S. N., & Khumawala, B. M. (2006). An empirical comparison of
Tabu Search, Simulated Annealing, and Genetic Algorithms for facilities location problems.
International Journal of Production Economics, 103(2), 742-754.
https://doi.org/10.1016/j.ijpe.2005.08.010
Azadeh, S. S., Bierlaire, M., & Maknoon, M. Y. (2019). A two-stage route optimization algorithm
for light aircraft transport systems. Transportation Research Part C: Emerging
Technologies, 100, 259-273. https://doi.org/10.1016/j.trc.2019.01.028
Belevičius, R., Ivanikovas, S., Šešok, D., Valentinavičius, S., & Žiliniskas, J. (2011). Optimal
placement of piles in real grillages: experimental comparison of optimization algorithms.
Information Technology And Control(Nr. 40(2)), 123-132.
https://doi.org/10.5755/j01.itc.40.2.427
Belevičius, R., Mačiūnas, D., & Šešok, D. (2011). Momentų ir reakcijų minimizavimas
rostverkiniuose pamatų sijynuose genetiniu algoritmu. Engineering structures and
technologies, 3 (2), 56-63. https://doi.org/10.3846/skt.2011.07
Bharathi, C., Rekha, D., & Vijayakumar, V. (2017). Genetic Algorithm Based Demand Side
Management for Smart Grid. Wireless Personal Communications, 93(2), 481-502.
https://doi.org/10.1007/s11277-017-3959-z
Borici, A. (2012 m. rugsėjo 4 d.). Introduction of genetic algorithms. Prieiga per internetą:
https://www.slideshare.net/arberborix/introduction-to-genetic-algorithms
Brownlee, J. (2015). Clever Algorithms: Nature-Inspired Programming Recipes. Prieiga per
internetą: http://www.cleveralgorithms.com/nature-
inspired/physical/simulated_annealing.html
Cheraitia, M., & Salim, H. (2016). Simulated Annealing for the Uncapacitated Exam Scheduling
Problem. International Journal of Metaheuristics, 5(2), 156-170.
https://doi.org/10.1504/IJMHEUR.2016.10001113

50
Dede, T., Kripka, M., Togan, V., & Yepes, V. (2019). Usage of Optimization Techniques in Civil
Engineering During the Last Two Decades. Current Trends in Civil & Structural
Engineering, 2(1), 1-17.
Dey, S., Gupta, N., Pathak, S., Kela, D., & Datta, S. (2019). Data-Driven Design Optimization for
Industrial Products. In Optimization in Industry (253-267). Cham: Springer.
Elhoseny, M., Tharwat, A., & Hassanien, A. E. (2017). Bezier Curve Based Path Planning in a
Dynamic Field using Modified Genetic Algorithm. Journal of Computational Science, 25,
339-350. https://doi.org/10.1016/j.jocs.2017.08.004
Eriksson, P., & Arora, J. S. (2002). A comparison of global optimization algorithms applied to a
ride comfort optimization problem. Structural and Multidisciplinary Optimization, 24(2),
157-167. https://doi.org/10.1007/s00158-002-0225-z
Geltman, K. E. (2014). The Simulated Annealing Algorithm. Prieiga per internetą:
http://katrinaeg.com/simulated-annealing.html
Grigutis, R. (2018). Optimizavimo metodai.
Handbook, O. D. (2018). Failų formatai.
Hopkins, M., Mitzenmacher, M., & Caren, S. W. (2018). Simulated Annealing for JPEG
Quantization. In Proceedings of Data Compression Conference (DCC).
Yu, V. F., Purwaint, S. S., Redi, P., Lu, C.-C., Suprayogi, S., & Jewpanya, P. (2018). Simulated
annealing heuristic for the general share-a-ride problem. Engineering Optimization, 50(7),
1178-1197.
Jacobson, L. (2013). Simulated Annealing for beginners. Prieiga per internetą:
http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6
Jebari, K. (2013). Selection Methods for Genetic Algorithms. International Journal of Emerging
Sciences, 3(4), 333-344.
Karagul, K., Sahin, Y., Aydemir, E., & Oral, A. (2019). Simulated Annealing Algorithm Based
Solution Method for a Green Vehicle Routing Problem with Fuel Consumption. In Lean and
Green Supply Chain Management (161-187). Cham: Springer.
Karyotis, V., & Khouzani, M. (2016). Malware-propagative Markov random fields. Malware
Diffusion Models for Wireless Complex Networks.
Kendall, G. (2018). Simulated Annealing. Prieiga per internetą:
www.cs.nott.ac.uk/~pszgxk/aim/notes/simulatedannealing.doc
Lančinskas, A. (2013). Atsitiktinės paieškos globaliojo optimizavimo algoritmų lygiagretinimas.
Prieiga per internetą: https://epublications.vu.lt/object/elaba:2190195/
Liang, Y., Song, G., Wu, T., Wang, S., & Wu, Y. (2018). Optimizing Bus Stop Spacing Using the
Simulated Annealing Algorithm with Spatial Interaction Coverage Model. Proceedings of
51
the 11th ACM SIGSPATIAL International Workshop on Computational Transportation
Science (53-59). ACM. https://doi.org/10.1145/3283207.3283212
Lim, M. S., Sultan, B. A., Sulaiman, N., Mustapha, A., & Leong, Y. K. (2017). Crossover and
Mutation Operators of Genetic Algorithms. International Journal of Machine Learning and
Computing, 7(1). 9-12. https://doi.org/10.18178/ijmlc.2017.7.1.611
Mačiūnas, D. (2013). Multi-objective global optimization of grillages using genetic algorithms.
Doctoral dissertation. Vilnius: Technika.
Mačiūnas, D., & Belevičius, R. (2012). Multi-Objective optimization of grillages using adaptive
genetic algorithm. International Review of Mechanical Engineering, 6 (3).
Mallawaarachchi, V. (2017 m. liepos 7 d.). Introduction to Genetic Algorithms — Including Example
Code. Prieiga per intenertą: https://towardsdatascience.com/introduction-to-genetic-
algorithms-including-example-code-e396e98d8bf3
Mangano, S. R. (1995). A Genetic Algorithm White Paper. Prieiga per internetą:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.55.1751&rep=rep1&type=pdf
Miloš, E. (2017). Globaliojo optimizavimo uždavinių sprendimas naudojant genetinius algoritmus.
Esantis Bakalaurinis darbas (24-25).
Miloš, E., & Šešok, D. (2017). Globaliojo optimizavimo uždavinių sprendimas naudojant genetinius
algoritmus. Jaunųjų mokslininkų darbai, Nr. 47(1), 80-86.
Mockus, J., Belevičius, R., Šešok, D., Kaunas, J., & Mačiūnas, D. (2012). On Bayesian Approach to
Grillage Optimization. Information Technology and Control, 41(4). 332-339.
https://dx.doi.org/10.5755/j01.itc.41.4.1670
Nyarko, E. K., Cupec, R., & Filko, D. (2014). A Comparison of Several Heuristic Algorithms for
Solving High Dimensional Optimization Problems. International journal of electrical and
computer engineering systems, 5(1.), 1-8.
Pandey, H. M., Chaudhary, A., & Mehrotra, D. (2014). A comparative review of approaches to
prevent premature convergence in GA. Appl. Soft Comput., 24, 1047-1077.
https://doi.org/10.1016/j.asoc.2014.08.025
Ramanauskas, M., Šešok, D., Belevičius, R., Kurilovas, R., & Valentinavičius, S. (2017). Genetic
Algorithm with Modified Crossover for Grillage Optimization. International Journal of
Computers, Communications & Control, 12(3), 393-402.
https://doi.org/10.15837/ijccc.2017.3.2813
Shukla, A., Pandey, H. M., & Mehrotra, D. (2015). Comparative review of selection techniques in
genetic algorithm. International Conference on Futuristic Trends on Computational
Analysis and Knowledge Management (ABLAZE), (p. 515-519). Noida.

52
Singiresu, R. S. (2009). Engineering Optimization. Theory and Practise. Fourth Edition. New
Jersey: John Wiley & Sons, Inc., Hoboken.
Sizikova, E., & Funkhouser, T. (2018). Wall Painting Reconstruction Using a Genetic Algorithm.
Journal on Computing and Cultural Heritage (JOCCH), 11(1), 3.
Structuralist. (2006). Optimizacija. Prieiga per internetą:
http://www.structuralist.narod.ru/dictionary/opt.htm
Šešok, D., Belevičius, R., Kačeniauskas, A., & Mockus, J. (2010). Application of GRID computing
for optimization of grillages. Mechanika, Nr. 2 (82).
Šešok, D., Mockus, J., Belevičius, R., & Kačeniauskas, A. (2010). Global optimization of grillages
using simulated annealing and high performance computing. Journal of Civil Engineering
and Management, 16(1), 95-101. https://doi.org/10.3846/jcem.2010.09
Thakur, R. (2016 m. lapkričio 6 d.). What is the difference between local minima & maxima and
absolute minima & maxima? Priega per internetą: https://www.quora.com/What-is-the-
difference-between-local-minima-maxima-and-absolute-minima-maxima
Varun Kumar, S., & Panneerselvam, R. (2017). A study of crossover operators for genetic
algorithms to solve VRP and its variants and new sinusoidal motion crossover operator. Int.
J. Comput. Intell. Res, 13(7), 1717-1733.
Walker, J. (2018). Simulated Annealing. The Travelling Salesman Problem. Prieiga per internetą:
https://www.fourmilab.ch/documents/travelling/anneal/
Weise, T. (2009). Global Optimization Algorithms. Theory and Application.
Weng, Y., & Cheng, C. (2019). Warehouse Storage Assignment by Genetic Algorithm with Multi-
objectives. International Conference on Intelligent Human Systems Integration (pp. 300-
305). Springer, Cham. https://doi.org/10.1007/978-3-030-11051-2_46

53
PRIEDAI
A priedas. Optimizavimo programos polimorfizmo pritaikymas
Tėvinė klasė:
class SASelector
{
public:
virtual std::vector<double> generateCandidate(std::vector<double> poles) = 0;
virtual ~SASelector() {};
};

Paveldinčios klasės
class SABasicCandidateSelector : public SASelector
{
private:
int polesAmount;
double polesValueCapacity;
public:
SABasicCandidateSelector(int polesAmount, double polesValueCapacity);
std::vector<double> generateCandidate(std::vector<double> poles) override;
};

class SAMultipleCandidateSelector : public SASelector


{
private:
int polesAmount;
double polesValueCapacity;
std::shared_ptr<double> rangeValue;
std::shared_ptr<unsigned int> elAmount;
double changeStep;
double elAmountChangeStep;
public:
SAMultipleCandidateSelector(
int polesAmount,
double polesValueCapacity,
std::shared_ptr<double> rangeValue,
double changeStep,
std::shared_ptr<unsigned int> elAmount,
double elAmountChangeStep
);
std::vector<double> generateCandidate(std::vector<double> poles) override;
};

Pagrindinė programos funkcija main


SAMultipleCandidateSelector SAselector(genomeLength, geneValueCap, startRangeValue, changeStep, elAmount,
elAmountChangeStep);
SimulatedAnnealingEngine engine(&SAgenerator);

Pagrindinė algoritmo klasė


SimulatedAnnealingEngine::SimulatedAnnealingEngine(SASelector* selector)

std::vector<double> candidate = selector->generateCandidate(poles); Kviečiamas


SAMultipleCandidateSelector klasės metodas.

54
B priedas. Pagrindinių parametrų nuskaitymas
SASettings.json failas

std::ifstream t("SAsettings.json");
json settings = json::parse(t);
auto startRangeValue = std::make_shared<double>(settings["startRangeValue"]);
auto elAmount = std::make_shared<unsigned int>(settings["elAmount"]);
auto stimulatorStartDistance = std::make_shared<double>(settings["stimulatorStartDistance"]);
unsigned int polesGenerationAmount = settings["polesGenerationAmount"];
int iterationAmount = settings["iterationAmount"];
double endRangeValue = settings["endRangeValue"];
double stimulatorEndDistance = settings["stimulatorEndDistance"];
double endElAmount = settings["endElAmount"];
double changeStep = (endRangeValue - *startRangeValue) / iterationAmount;
double stChangeStep = (stimulatorEndDistance - *stimulatorStartDistance) / iterationAmount;
double elAmountChangeStep = (endElAmount - *elAmount) / iterationAmount;

55
C priedas. Praktinių uždavinių sprendimai
Uždavinys Nr. 2

0.682259 2.7181 5.7224 7.9928 12.7756 14.8163 17.9338 21.8102 22.4782 26.3967 30.4819
33.6821 37.4086 39.1966 42.0381 45.0549 48.7214 50.4813

Uždavinys Nr. 3

2.91365 7.0444 7.6831 8.3069 13.1704 13.9211 17.4590 21.2401 25.5848 28.0656 32.0986
32.9941 35.9325 36.8468 38.1549 41.4218 46.4523 47.4519 51.7123 54.0376 56.1996 56.9151
62.6155 65.5711 67.2615 68.6983 71.0766 76.0103 78.1536 79.9613 83.0145

Uždavinys Nr. 4

1.48832 4.2185 6.3490 11.9046 12.6022 14.4608 16.9779 17.5873 21.4872 24.0538 27.5890
30.4110 34.5958 36.8551 40.3039 41.1015 45.3352 46.4362 49.0967 54.9641 56.2846 61.4283
62.2166 64.1708 66.1297 71.7537 72.5137 73.1204 78.7716 78.9289 83.2878

56
Uždavinys Nr. 5

0.334751 2.4007 5.4422 7.6293 8.4039 9.0607 12.7621 15.9966 17.1992 19.0894 21.5907
24.4979 25.7043 27.7614 29.7785 32.8622 35.0409 35.9226 39.7753 42.4456 43.5728 46.2031
46.8454 50.1759 52.6961 54.1015 55.7336 57.7513 60.4713 63.1794

Uždavinys Nr. 7

0.611107 7.4601 10.5332 16.4030 24.9794 32.0756 33.4934 41.2999 49.6752 53.3114 59.4779
63.3222 71.0132 76.0338 81.9432 88.0364 94.0607 97.7258 103.7059 105.5778 115.4764
119.5899 125.5861

Uždavinys Nr. 9

2.62431 8.8752 13.3199 21.7337 24.8768 31.4664 37.4924 44.1193 49.3434 55.8884 64.3008
68.3198 69.9593 80.8984 82.1456 89.2018 94.1411

57

You might also like