Računalne simulacije - Numerički pogled na realni svijet

Osim ako ste već ljubitelj simulacijskih žanrova igara, vjerojatno vam pojam simulacija nije prečesto na horizontu. Pa ipak, radi se o zanimljivom području računalnih tehnologija, koje na razne suptilne načine utječe na naš svakodnevni život

Oton Ribić nedjelja, 7. lipnja 2020. u 07:00

Činjenica da se razne pojave i sustavi u svijetu oko nas matematički mogu opisati (a katkad i predvidjeti), naravno, daleko je starija od računala. Još su stari Egipćani, Babilonci i razni drugi drevni narodi uočili kako se ponašanje svega i svačega u okolini može opisati osnovnim matematičkim alatima koje su tada poznavali, što je itekako igralo ulogu u razvoju civilizacije.

Kako su stoljeća prolazila, matematička je teorija napredovala, ali na površinu je počeo dolaziti i fakt da su određeni sustavi koje želimo matematički opisati jednostavno prekompleksni da bi se analitički riješili, a bilo kakav numerički pokušaj tražio bi toliko ručnog računanja da bi do trenutka svojeg rješenja vjerojatno bio posve irelevantan, ako bi to uopće bilo prije kraja svemira.

No dolaskom elektroničkih računala pojavilo se idealno oruđe za hvatanje u koštac sa starim problemom: čovjek je na raspolaganju imao nešto upravo savršeno za obavljanje jednostavnih ali bezbrojnih računica nad ogromnom količinom podataka, brzo i pouzdano. Ili drugim riječima, počela je era računalnih simulacija.

Programeri tih prvih računala entuzijastično su navalili na tu problematiku, pokušavajući simulirati i predviđati meteorologiju, promet, tržište dionica na burzi, svjetsku politiku, lokalnu ekonomiju, i još bezbrojna druga područja. I to ne svugdje s podjednakim uspjehom, zbog mnogih ograničenja i kompromisa koje su odlučili ili morali prihvatiti. O čemu se tu zapravo radi? Sve će biti jasnije ako pogledamo kako se jedna računalna simulacija uopće provodi.

Sklapanje pozornice

Metode se, barem na načelnoj razini, od tih prvih pokušaja nisu naročito promijenile. Pod pretpostavkom da znamo što želimo, tj. kakav sustav želimo simulirati, prvi je korak izabrati ili smisliti pravila koja će se na njemu primjenjivati. Primjerice, ako simuliramo fizikalni sustav, to će vjerojatno biti pravila mehanike; ako se radi o simulaciji tržišta, to bi bile jednadžbe koje upravljaju ponudom, potražnjom, proizvodnjom, i sl.

Iako su neka pravila, kao što su spomenute jednadžbe mehanike, dobro, provjereno i egzaktno poznata, to nije uvijek slučaj. Gotovo svi sustavi koji u svojim pravilima ovise o ponašanju ljudi, naročito o nečem teško odredivom poput, recimo, sklonosti kupnji dionica, temelje se na proteklim opažanjima, a s nečim tako kompleksnim kao što je ljudsko razmišljanje ili stav, točna pravila morala bi u obzir uzeti toliko faktora da bi bila potpuno neprovediva. U takvim situacijama treba “stisnuti zube”, ravnati se prema empirijskim pravilima, i nadati se da će ona na kraju dati točne rezultate.

Ali ni to nije sve: imali mi u početku egzaktna pravila ponašanja simuliranog sustava ili ne, ona se rijetko u potpunosti mogu koristiti u računalnoj simulaciji, nego je potrebno odrediti koji se njihovi dijelovi mogu zanemariti u svrhu pojednostavljenja kalkulacija. Čak i naoko relativno jednostavna simulacija nekoliko tijela, primjerice, sudaranja biljarskih kugli, postaje poprilično teška ako u obzir uzmemo otpor zraka, aerodinamiku oko kugle, malu ali ipak postojeću deformabilnost kugli, otpor tkanine, koji ovisi o kutu između smjera njenog tkanja i kretanja kugle (da, efekt postoji, i vrhunski igrači snookera uzimaju ga u obzir!), i slično.

Tu je, dakle, potrebna zdravorazumska procjena koji se efekti za svrhu željene simulacije mogu zanemariti, a koji ipak moraju biti uzeti u obzir. Ovo je fina igra procjene, jer pogrešna odluka može donijeti, kako neupotrebljive rezultate, tako i nepotrebno opteretiti hardver i usporiti proces – a kao i u svakom drugom, tako je i u simulacijskom biznisu vrijeme novac.

Postrojavanje podataka

Drugi ključan korak je priprema ulaznih podataka na kojima će se simulacija provoditi. Oni mogu biti realni, primjerice, podaci snimljeni meteorološkim senzorima i satelitima, ako se radi o prognozi vremena, ili umjetno generirani – kao što bi, recimo, bio slučaj ako želimo simulirati mehanička svojstva nekog hipotetskog predmeta koji zasad postoji samo kao koncept i crtež.

Priprema u pravilu traži svojevrsno pročešljavanje ulaznih podataka kako bi se osiguralo da nemaju nekakvu grešku ili šum, koji bi kasnije previše utjecali na točnost simulacije, ali i kako bi se eventualno “odrezali” ili pojednostavili podaci koji nisu nužni, i na njih ne bi trošilo procesorsko vrijeme kasnije.

Kao i kod utvrđivanja pravila, tako je i ovdje potrebna procjena od slučaja do slučaja, ovisno o tome što se simulacijom na kraju želi postići i saznati, koliki su nam hardverski kapaciteti, i do kada bi rezultati trebali biti gotovi. Stoga automatika vrlo malo pomaže u toj fazi.

Put od milijardu koraka

S podacima i pravilima koja se na njih primjenjuju spremnima, vrijeme je prijeći na sam računalni dio simulacije. Ovdje postoji doista čitav spektar raznih mogućih pristupa: korištenje specijaliziranog simulacijskog softvera, ili softvera za općenite matematičke projekte koji se konfigurira ili programira za zadani slučaj, ili pisanje cijelog simulacijskog enginea od nule u nekom (prema mogućnosti, brzom) programskom jeziku – ili, pak, neki hibrid svega spomenutog.

U najgrubljoj osnovi, većina simulacijskih enginea radi sličnu stvar: primjenjuje pravila s određenom logikom i računanjem na svaki element gigantskih matrica, te ponavlja cijeli taj proces zadani broj puta, tj. određen broj koraka. Simulacije se obično izvode u vremenu, tj. svaki korak simulacije predstavlja određeni period u simuliranom svijetu, a pravila računaju kako se simulirani “svijet” promijenio unutar tog koraka. Korak može trajati mikrosekundu, ako se simulacija bavi nečim izuzetno brzim, ali i dane, mjesece, ili čak godine, ako se radi o nečemu poput tektonike i sličnom.

Premda logika te “jezgre” simulacijskog softvera zvuči jednostavno, a uvijek se nastoji da to ona i bude, ipak je pisanje dobrog simulacijskog enginea težak i sofisticiran posao, jer mora koristiti razne trikove i značajke kako bi bio što brži. Učinkovito paralelno korištenje više jezgri, više procesora, više računala ili, pak, dediciranih kartica, samo je početak. Slijede razne optimizacije koje nastoje utvrditi kad je neki dio podataka neaktivan te se privremeno ignoriraju kalkulacije nad njim, kad se događaju periodična ponavljanja stanja koja se potom lako predviđaju, kad se neki manji podskup podataka može pojednostaviti analitički, itd.

Povrh svega toga, potrebno je imati i dobro teoretsko poznavanje računala, jer njihova ograničenja također igraju ulogu u ishodu simulacije. Već se bezbroj puta događalo da su se razne simulacije ponašale kaotično jer su neki ključni izračuni bili izgubljeni u zaokruživanjima brojeva s pomičnim zarezom (floating point operacijama).

Reciklirajmo!

S olakotne strane, često se kôd jednog simulacijskog softvera može, ne samo praktično prenamijeniti i iskoristiti za neki drugi, već se – suprotno početnoj intuiciji – simulacije jedne vrste sustava mogu provesti u softverima namijenjenima nekoj drugoj. Tipičan, i u praksi nerijetko korišten primjer, ekvivalencije su elektrike i akustike.

Naime, razni elementi koji se pojavljuju u akustici (primjerice, prigušenja, šupljine, membrane i slično) za zvuk se ponašaju slično onome kako se za električnu struju ponašaju standardne komponente korištene u elektrotehnici, te se u dovoljno jednostavnim slučajevima akustički sustav može simulirati električki. Drugim riječima, pomoću određenih formula moguće je akustički sustav preformulirati u ekvivalentan električki, potom ga simulirati u simulatoru električkih sklopova, te njegove rezultate vratiti u sferu akustike i tako interpretirati. Naravno, ovdje ima više posla uslijed ovakvog dvostranog prevođenja, ali to može ispasti daleko manje posla nego od nule pokretati i postavljati simulator akustike.

Uglavnom, čak ni sam početak izvođenja tih milijuna, milijardi operacija ili nekog drugog eksponenta, ne znači da je vrijeme rezidentnom timu otići na kavu. Ono se može zaustaviti, neki podaci promijeniti ako se pokaže da smetaju ili donose zbunjujuće rezultate, pokrenuti iznova s drugim pretpostavkama, itd. Kako je u industrijskom sektoru za neke simulacije normalno da se danima računaju na hardveru vrijednom milijune dolara, svaka je nepotrebno izgubljena minuta skupa.

Rentabilno ili ne?

Sva ta pozornost usmjerena na modeliranje, pripremu podataka, računanje i – na kraju – interpretaciju i eventualnu vizualizaciju rezultata, nije jamstvo da će simulacija zapravo biti korisna. Razni kompromisi koje smo na početku spomenuli, a koje nije lako (ili niti jeftino) mijenjati, kasnije mogu igrati ulogu u tome, a može se pokazati i da je sustav previše ovisan o faktorima koje nije moguće učinkovito izmjeriti, izračunati ili za to jednostavno nema dovoljno novca, vremena, hardvera ili ljudi. Ovo je to vjerojatnije što je simulacija bazirana na kompleksnijim pravilima i početnim podacima.

Nakon svega ovog, potpuno bi razumljivo bilo zapitati se: s toliko posla i znanja potrebnog za provođenje simulacija, a s rezultatima za koje uglavnom nema jamstva da će se poklapati sa stvarnošću, zašto se itko upušta u njih s tolikim financijama i kadrom?

Primarni je razlog to što je, unatoč svojoj cijeni i trudu, simuliranje mnogih sustava još uvijek jeftinije nego potencijalni gubitak ako se one ne provedu. Proizvođaču automobila simulacija možda neće naći najbolji mogući ovjes nove šasije koju razvija, ali barem će mu suziti izbor na njih tri-četiri najbolja, koje će potom izraditi u stvarnosti i testirati daleko opsežnije. Isto tako, banci koja razmišlja o gigantskim investicijama ili masovnim novim uslugama, jeftinije je prvo barem dobiti vrlo općenit raspon brojki s kojima može računati, nego se samo oslanjati na osjećaj i ankete te možda napraviti poslovno samoubojstvo.

Štoviše, za gotovo svaki moderan predmet koji koristite, a treba izdržati kakvu-takvu silu, možete biti sigurni da je prošao kroz nekoliko iteracija simulacija prije nego što je napravljen prvi prototip. Čak i sa svim modernim tehnologijama rapidnog prototipiranja, simulacije su brže i jeftinije, a u krajnjoj liniji, imamo i dobro poznat primjer iz svakodnevnog života: meteorološke prognoze možda nisu uvijek beskrajno točne, ali većini su ljudi dovoljne za kratkoročno planiranje, a poljoprivrednicima još i daleko važnije.

Svijetla budućnost

S obzirom na to da simulacije tako igraju ulogu u raznim granama ljudske djelatnosti, one su se razvile u prilično sofisticiran biznis. Veće tvrtke i organizacije (posebno vojske, transportne tvrtke, nafta) često ustrojavaju vlastite, dedicirane simulacijske odjele za vlastite potrebe, druge tvrtke bave se izvođenjem raznih simulacija prema narudžbi, a treće, pak, razvijaju softver koji omogućuje kupcima da ih provode sami. Sve tri grane dobro su razvijene, i u njima danas ima podosta novca.

Kako se god famozni Mooreov zakon u budućnosti ponašao, nastavak rasta procesorskih kapaciteta u budućnosti može samo rasti, čime će i područja koja su sada možda rubno isplativa, vremenom postati dostupna smrtnicima, ili barem tvrtkama koje nemaju deseteroznamenkaste prihode, a kvaliteta postojećih simulacija moći će rasti.

Prema tome, eksperti s ovog, ne naročito javno istaknutog, ali interesantnog i bitnog područja računalnih znanosti, neće u dogledno vrijeme trebati brinuti oko stabilnosti svojih radnih mjesta. Naprotiv: vjerojatnije je da će im glavna briga u budućnosti biti nedostatak kadra potrebnog da zadovolji potražnju. Pozitivna strana je to što se tim područjem često bave i institucije raznih država, koje gotovo sav svoj rad objavljuju javno, tako da – tko želi zaroniti u njega – specijalizirane literature i resursa o ovoj tematici ne nedostaje.

Bug 339 veljača 2021.