Genetikai algoritmus intelligens keresési intervallum szűkítéssel

Fejlesztek egy genetikai algoritmust, mely Monte Carlo szimulációval megtalált paraméterek hibáját konvergálja tovább nulla felé úgy, hogy adaptívan döntöm el, mely paraméterek keresési intervallumát szűkítsem, mikor, hogyan és mennyivel.

 

Mi adja a problémát? Hogy nem tudjuk, hogy a végtelen térnek mely részén keressünk. Nézzünk egy egyszerű példát:

Hatvány görbét akarok illeszteni az alábbi X-Y pontokhoz:

( 1, 1 )

( 4, 2 )

( 6, 10 )

Függvénye:

y = p1 x^p2 + p3

Keressük p1, p2 és p3 paraméterek értékét, melyekkel a görbe minél kisebb hibával tér el a pontoktól. A gyakorlatban sokkal több paramétert keresünk sokkal komplexebb összefüggés rendszerben.

Miért nem jók a robusztus és nem robusztus eljárások, mint például LOWESS és SPLINE? Egyrészt azért, mert csak 2 dimenziós illesztést tudnak végezni. Másrészt arra van szükségem, hogy a pontok által meghatározott tartományon kívül is tudjak prediktálni és számításokat végezni (inference). Léteznek egyéb görbe illesztési eljárások, de azok meg általában vagy kevés paramétert tudnak állítani szintén csak 2D-ben, vagy pedig szükség van a függvény deriváltjára, mely sok esetben nem elérhető a probléma komplexitása miatt.

Habár tetszőleges optimum kereső megoldások is léteznek, a saját motor a genetikai algo fejlesztéséhez kell. Kutatásom célja, hogy hogyan tudom a problémát egyszerre tovább egyszerűsíteni és hatékonyabbá tenni a lépések még adaptívabbá alakításával.

 

3 lépésre bontom a megoldást:

1) emberi döntéssel meghatározzuk a paraméterek „laza” kiindulási intervallumát, melyekből MC eljárással indulok

2) vizsgálom a legkisebb hibák mértékét adaptív határérték elemzéssel hogy megállapítsam, elkezdődött-e egy elégéses mértékű konvergálás

3) ha igen, akkor folyamatosan szűkítem mindegyik paraméter intervallumát új eredmény esetén az eddigi legjobb értékeik időfüggő szórása alapján

 

Kulcs értéke megoldásomnak, hogy a paraméterek keresési intervallumához használt szűkítési eljárásom sokkal intelligensebb módon adaptív az idő és az előző részeredmények függvényében.

 

https://www.geogebra.org/graphing/uwfat3wk

https://i.imgur.com/2Pjl7Wj.png

Hozzászólások

Nekem még az rémlik, hogy n pontra n-1-edfokú polinomot illesztünk, vagyis y = p1 x^2 + p2 x + p3. Jelen esetben y = 0.73333 x^2 - 3.33333 x + 3.6.

Van valami különleges oka a tört kitevőnek?

Debian - The "What?!" starts not!
http://nyizsa.blogspot.com