Ilmast

Millalgi maikuus kirjutasin oma veebiserverisse väikese skripti mis kogub informatisooni ilma kohta valitud linnades. See käivitub igal täistunnil ja salvestab informatsiooni nagu temperatuur, tuule suund, tuule kiirus ja ilma kirjeldus (pilves/päikeseline/jne). Juba mõned kuud on see vaikselt oma tööd teinud.

Eile õhtul vahetult enne magama minekut meenus see skript mulle ja otsustasin, et peaks kogutud andmetega midagi huvitavat tegema. Niisiis:

1. Esiteks, andmed laetakse alla lehelt wunderground.com, mis suudab muutlikku Briti ilma üpris hästi ennustada.

2. Iga linna leheküljel on link RSS streami juurde, millest saab üpris kenasti vajaliku informatsiooni eraldada. Kasutan PHP ja MagpieRSS, et fail sisse lugeda, ilma parameetrid leida ning need MySQL andmebaasi salvestada. Antud skript jookseb automaatselt igal täistunnil cron’i abil.

3. Kuna minu kaks põhilist asukohta on Tallinn ja Cambridge, siis oleks huvitav võrrelda andmeid nende linnadekohta. Kasutan JPGraph teeki et visualiseerida graafikud ning siin on tulemus:

4. Järsud kõikumised temperatuuris on tingitud muutustest öö ja päeva vahel. Niimoodi on hästi näga ekstreemumid kumbaski linnas, kuid parema ülevaate saamiseks leiame 24 tunni keskmise:

5. Kas seda informatsiooni kasutades saaks äkki ka tuleviku ilma ennustada? Siin on minu tagasihoidlik katsetus. Iga punkti graafikul saab esitada vektori kaudu, mis koosneb sellele eelnenud temperatuuridest. Näiteks kui meil on temperatuuride jada (10, 11, 14, 14, 13), siis võin otsustada, et punkti (13) iseloomustamiseks kasutan vektorit (10, 11, 14, 14).

Süsteemil pole aimugi, milline saab olema temperatuur 1 tunni pärast, kuid ta teab selle omadusvektorit, mis sisaldab juba läbitud punkte. Niisiis võrdlen seda vektorit kõigi olemasolevate punktide vektoritega ning kui leian väga sarnase punkti, siis on tõenäoline, et ka tulevase punkti temperatuur on tolle omaga sarnane.

Omadusvektorite koostamiseks kasutan 8 eelnevat punkti ja tulevikku kuuluva punkti ennustan 3 kõige sarnasema punkti keskmisena. Kuna antud vektorit saab võtta kui koordinaati kaheksas dimensioonis, siis saan kasutada Euclidean distance valemit, et leida sarnasus/kaugus.

Samas leidsin, et veidi muudetud versioon, kus lähemal asuvad punktid saavad rohkem kaalu, toimib paremini. Matemaatiliselt enam mitte aktsepteeritav kaugus, kuid ilmselt saab seda võtta kui ajas muutuvale väärtusele mõeldud modifikatsiooni.

Siin on tulemus Cambridge’i ja Tallinna jaoks:

6. Ja ongi kõik. Ülalolevad graafikud uuenevad igal täistunnil nii et edusamme saab näha peaaegu et reaalajas. Eks näis kas nii algne algoritm üldse midagi ennustada suudab ja kas ta aja jooksul ka paremaks muutub. Kindlasti on olemas palju paremaid lahendusi sellise probleemi jaoks. Antud hetkel on veebiserveri tõttu küll paar piirangut – algoritm peab olema realiseeritav PHP abil ja võtma aega maksimaalselt 30 sekundit. Kui kellelgi on hea idee, andke mulle teada.

Rubriigid: Research. Salvesta püsiviide oma järjehoidjasse.

10 kommentaari postitusele Ilmast

Lisa kommentaar