Modell-iskola
Na, van egy rakat példa, amikor mégsem ugyanaz lesz, a wikipédia cikk alapján:
- számpontosság, memóriaszûke, lapozófájl, pontosságvesztés máshogy és máshogy
- konkurencia, versenyhelyzet, deadlock (és timeout)
- optimalizálás (ha már 3 órája futok és még mindig csak 72 óránál járok, csökkentem a pontosságot, hogy befejezzem 6 óra múlva): ez függ teljesítményingadozástól, hardwer throttling (túlmelegedés elllen) stb. hogy mennyi idõ alatt hová jut
És nyilván akkor nemdetermenisztikus egy algoritmus, ha nem akarja a végeredményt
kiszámolni, csak egy jó közelítést. Ez pedig pont az elõrejelzések témaköre
Nyilván elméletileg ugyanannak kéne kijönnie, ha nincs véletlenszám-generálás az elõrejelzésben, és minden pont ugyanannyira pontos, minden komponens hibátlan, csakhogy ez sose igaz: de még egyszerûbb programoknál is rendszeres, hogy más futás más eredményt hoz. Sõt, szoftverfejlesztésnél ezek a legjobban utált problémák: tízbõl egyszer jön elõ típusú hiba. Nehéz levadászni, debugolni és megjavítani. Ilyen tuti van a modell-elõrejelzésekben, és valószínûleg a hibakezelõ algoritmus már akkora változást hoz, ami a kimenetelre is rányomja a bélyegét. Elfailel egy egyszerû fájl-írás, egy OS API hívás "Internal error"-t mond és még sorolhatnám: ki tudja, ezek mitõl függnek, de néha elõjönnek, néha nem És ha egy számítás eredménye dob hibát, a hibakezelés lehet eldobja az egészet és egy nagy 0-val helyettesíti az eredményt, ami máris eltorzítja az eredményt pl. egy bonyolult számításnál akár jelentõsen. Máskor meg nem jön elõ...
Minél nagyobb egy rendszer, annál több az ilyen hibalehetõség, és ezeket részben ugyan ki kell küszübülni, de teljesen nem lehet, egyszerûen fel kell készülni rá: hibakezelés.
Több év alatt emlékszem 1-2 esetre, amikor megakadt a GFS frissítés, illetõleg nem is voltak friss képek sehol (WZ, Meteociel). Persze ez lehet webszerver, feltöltés, network hiba is, nem csak az algoritmusban egy végzetes hiba.
- számpontosság, memóriaszûke, lapozófájl, pontosságvesztés máshogy és máshogy
- konkurencia, versenyhelyzet, deadlock (és timeout)
- optimalizálás (ha már 3 órája futok és még mindig csak 72 óránál járok, csökkentem a pontosságot, hogy befejezzem 6 óra múlva): ez függ teljesítményingadozástól, hardwer throttling (túlmelegedés elllen) stb. hogy mennyi idõ alatt hová jut
És nyilván akkor nemdetermenisztikus egy algoritmus, ha nem akarja a végeredményt
kiszámolni, csak egy jó közelítést. Ez pedig pont az elõrejelzések témaköre
Nyilván elméletileg ugyanannak kéne kijönnie, ha nincs véletlenszám-generálás az elõrejelzésben, és minden pont ugyanannyira pontos, minden komponens hibátlan, csakhogy ez sose igaz: de még egyszerûbb programoknál is rendszeres, hogy más futás más eredményt hoz. Sõt, szoftverfejlesztésnél ezek a legjobban utált problémák: tízbõl egyszer jön elõ típusú hiba. Nehéz levadászni, debugolni és megjavítani. Ilyen tuti van a modell-elõrejelzésekben, és valószínûleg a hibakezelõ algoritmus már akkora változást hoz, ami a kimenetelre is rányomja a bélyegét. Elfailel egy egyszerû fájl-írás, egy OS API hívás "Internal error"-t mond és még sorolhatnám: ki tudja, ezek mitõl függnek, de néha elõjönnek, néha nem És ha egy számítás eredménye dob hibát, a hibakezelés lehet eldobja az egészet és egy nagy 0-val helyettesíti az eredményt, ami máris eltorzítja az eredményt pl. egy bonyolult számításnál akár jelentõsen. Máskor meg nem jön elõ...
Minél nagyobb egy rendszer, annál több az ilyen hibalehetõség, és ezeket részben ugyan ki kell küszübülni, de teljesen nem lehet, egyszerûen fel kell készülni rá: hibakezelés.
Több év alatt emlékszem 1-2 esetre, amikor megakadt a GFS frissítés, illetõleg nem is voltak friss képek sehol (WZ, Meteociel). Persze ez lehet webszerver, feltöltés, network hiba is, nem csak az algoritmusban egy végzetes hiba.
Igen, az már nem egy konkrét adatból kiszámolt elõrejelzés, hanem egy véletlennel kombinált valószínûségi elõrejelzés.
A kérdés itt arra vonatkozott, hogy ha lefuttatok 1 konkrét adatsorból egy elõrejelzést, akkor az eredmény függ-e attól a géptõl, amelyiken lefuttattam (függhet, ha más a számpontosság mondjuk a kevesebb memória vagy más számábrázolás miatt), illetve ha ugyanazzal a bemenõadatokkal többször lefuttatjuk ugyanazon a gépen, akkor lehet-e más az eredmény (ha nem tartalmaz az elõrejelzés véletlengenerátort, akkor ugyanaz lesz az eredmény)
A kérdés itt arra vonatkozott, hogy ha lefuttatok 1 konkrét adatsorból egy elõrejelzést, akkor az eredmény függ-e attól a géptõl, amelyiken lefuttattam (függhet, ha más a számpontosság mondjuk a kevesebb memória vagy más számábrázolás miatt), illetve ha ugyanazzal a bemenõadatokkal többször lefuttatjuk ugyanazon a gépen, akkor lehet-e más az eredmény (ha nem tartalmaz az elõrejelzés véletlengenerátort, akkor ugyanaz lesz az eredmény)
Egy számítógép mûködése nyilván 100%-ig determinisztikus. Akárhány billiószor próbáljuk vele kiszámolni, mennyi 6x6, egyszer sem fogja rá azt mondani, hogy 35,9. Szántszándékkal viszont lehet olyan algoritmust írni (lásd: véletlenszám-generátor), ami többször lefuttatva más-más eredményt ad, és az idõjárási modellekben is lehetnek ilyenek.
Nondeterministic algorithm (Wikipedia): Link
Nondeterministic algorithm (Wikipedia): Link
Ezt nem értem, az egyenletek megoldása nem hiszem, hogy függene ezektõl.
Elvileg két futás között ugyanazon a gépen olyasmi miatt lehet probléma, hogy változik a hõmérséklet függvényében a vezetõk ellenállása, más sebességgel történik az adat írása a memóriába, HDD-re, proci másképp melegszik. Lehet, hogy apró eltérések, de mégse adják ugyanazt az eredményt.
Én is így gondolnám, ha nem nálam hozzáértõbb mondta volna. Ráadásul magam is futottam bele programozás során, hogy determinisztikus algó is adott más és más eredményeket. Meg is találtam: Link Nem ma volt szofttech vizsgám így a beszélgetés se tegnap történt
Szerintem pedig ugyanazokkal az adatokkal ugyanazzal a géppel ugyanaz az eredmény fog születni, pontosan az azonos kerekítések miatt...
Errõl annó volt egy vitánk (vagy itt, vagy a hosszútávúban) és talán Antibulvár mondta, hogy de, lehetséges, hogy újrafuttatva más lesz az eredmény, mert bizonyos diffegyenleteket sorba fejtéssel és közelítéssel oldanak meg, amikben soklehet a véges pontosság miatti eltérés, ezek végül összehalmozódva más eredményhez vezethetnek.