310 likes | 455 Views
Softverska implementacija op š teg simulatora. Simulacije. Potreba za simulacijama i modeliranje m Prilikom ispitivanja nekog sistema samo su neke njegove karakteristike interesantne Ušteda prilikom kreiranja modela koji samo ima karaktersitike koje su namo od interesa Tipovi simulacija
E N D
Simulacije • Potreba za simulacijama i modeliranjem • Prilikom ispitivanja nekog sistema samo su neke njegove karakteristike interesantne • Ušteda prilikom kreiranja modela koji samo ima karaktersitike koje su namo od interesa • Tipovi simulacija • Fizičke • Interaktivne • Kompjuterske
Računarske simulacije • Funkcije • Ispitivanje karakteristika sistema koje nije moguće učiniti drugim putem • Razvoj novih hipoteza, modela i teorija • Zamena za klasičan eksperiment, kojim se postiže velika ušteda • Pedagoški alat • Podela • Stohastičke i determinističke • Ravnotežnog stanja i dinamičke • Neprekidne i diskretne • Lokalne i distribuirane
Provera tačnosti simulacije • Rezultati simulacije treba da se poklapaju sa ponašanjem sistema kog simuliramo • Uzroci greške • Programske • Numeričke • Ograničenost računarskog prostora • Zamena analitičkih izraza numeričkim • Modelarske
Ideja opšteg simulatora • Zajedničke osobine simulacija • Ulazni podaci • Izlazni podaci • Potreba za grafičkim korisničkim interfejsom za unos podatak • Potreba za grafičkim prikazom dobijenih rezultata • Potreba za vršenjem niza eksperimenata • Automatizacija pokretanja simulacija • Analiza rezultata niza eksperimenata • Potvrda zaključaka i olakšavanje ispravljanja greški Ideja kreiranja okruženja, odnosno programa koji će moći da izvršava ove funkcije za niz različitih simulacija.
Pojedinačne simulacije kao proširenja opšteg simulatora • Izolovanje opštih funkcija od konkretnih simulacija • Moduli koji implementiraju sve posebne karakteristike konkretne simulacije • izračunavanje • kreiranje i čuvanje rezultata • praćenje stanja izračunavanja • Omogućavanje komunikacije izmedju opšteg simulatora i zasebnih modula
Implementacija • Opšti simulator je pisan u C++ • Korišceno je razvojno okrženje Microsoft Visual Studio .Net 2003, 2005 • Grafički korisnički interfejs je pravljen MFC – om (Microsoft Fundamental Classes)
Parametri • Parametri mogu biti raznih tipova, tako da se njihova vrednost najlakše može predstaviti niskom znakova • Simulacije najčešće zavise od većeg broja parametara, pa je potrebna i pogodna klasa za manipulaciju njima • Pristup pojedinim paramerima • Listu svih parametara • Učitavanje i snimanje u datoteku
Klase koja obezbeđuje komunikaciju • Radi standardizacije komunikacije potrebno je izvući zajedničke osobine i potrebe simulacija • Prepoznati osnovne tipove parametara • Parametri simulacije • Parametri strukture • Parametri rezultata • Razdvojiti grafičko okruženje za pokretanje simulacije od same simulacije. Treba da postoji klasa koja je most za ovakvu komunikaciju
Parametar za pokretanje niza simulacija iz nekog intervala • Samo pokretanje svih simulacija iz intervala se vrši rekurzivnom metodom koja pripada klasi SimulatorMultiPlayer
Traženje simulacije sa određenim karakteristikama Traženje odgovarajuće simulacije je zapravo Ali je ovo težak problem pa se rešava lakši problem na projekci funkcije
Krajnji problem se rešava modifikovanom metodom polovljenja na odgovarajućem intervalu. Uspeh modifikovana metoda u velikoj meri zavisi korisnika aplikacije.
Problemi imenovanja, smeštanja i pregleda rezultata • Usled automatizacije dolazi do pojavljivanja velike količine podataka kojima treba omogućiti pristup • Postoje dva tipa podataka koje želimo da vidimo one koji su vezani za jedna eksperiment i za niz različitih eksperimenata • Usled postojanja većeg broja datoteka vezanih za svaki eksperiment svi oni se smeštaju u zaseban direktorijum • Rezultate je potrebno predstaviti • pogodno za korišćenje od strane čoveka i računara Ime Podatka Vrednost Podatka • Grafičke rezultate po standardima koji koriste programi za prikaz rezultata poput SigmaPlota, PsiPlot, OriginPro X Y Z VrednostPodatkaNaPoyicijiXYZ
Grafički prikaz rezultata • Prikazivanje vrednosti ulaznih i odgovarajućih izlaznih podataka • Postoje slučajevi kada postoji potreba za prikazom rezultata u obliku slike • Neki karakteristike rezultata se mogu videti samo korišćenjem pogodnih filtera. Ovakvi filteri su zapravo pogodna preslikavanja, nad skupom vrednosti.Opsti simulatorimplementira linearni, eksponencijalni i logaritamski filter.
Analiza zavisnosti između parametara • Ovo se najlakše radi pomoću raznih grafika, tabela i sl. • Opšti simulator ne pravi ovakve prikaze već kreira fajlove koji se gledaju iz specijalizovanih programa Elem1Vrednost1 Elem1Vrednost2 ... Elem1VrednostN Elem2Vrednost1 Elem2Vrednost2 ... Elem2VrednostN ... ElemMVrednost1 ElemMVrednost2 ... ElemMVrednostN • Za kreiranje ovakvih fajlova isto je zadužena klasa SimulatorMultiPlayer, koja prilikom ovakvih izračunavanje koristi pomoćnu klasu RGraphicMaker
Implementacija proširenja za opšti simulator • Sistem proširenja za opšti simulator su implementira putem plaginova odnosno napredne metode korišćenja dll-ova • Problemi prilikom kreiranja i korišćcenja ovakvogsistema proširenja: • Smeštanje samih proširenja • Manipulacija memorijom • Kreiranje samih proširenja je olakšano postojanjem korisničke biblioteke RCommon i šablon projekta za kreiranje proširenja
Kosi hitac kao primer proširenja Nasledjivanje odgovarajućih klasa class SimulatorKosiHitac : public SimulatorAbstract class PathGeneratorKosiHitac : public PathGeneratorAbstract Identifikacija void GetName (char *gName){strcpy_s (gName,1000, "KosiHitac");} mPathGenerator->SetRootString ("d:\\primeri\\KosiHitac\\"); Definisanje Parametara AddParam ( (double)0.795,"Ugao"); AddParam ( (double)2,"Brzina"); AddParamStruct ( (double)9.81, "Gravitacija"); AddParamStruct ( (int)256, "NXY"); AddParamStruct ( (double)100, "MaxGrafik");
Preuzimanje vrednosti parametara mParams.GetValueDouble ("Brzina",V); mParams.GetValueDouble ("Ugao",Alfa); mParamStruct.GetValueDouble ("Gravitacija",temp1); mParamStruct.GetValueDouble ("MaxGrafik", MaxGrafik); mParamStruct.GetValueDouble ("NXY", NXY); Proračuni vezani za simulaciju MaxVisina = (pow (V,2) * pow (sin (2*Alfa),2))/ (2 *G); MaxDaljina = (pow (V,2) * sin (2*Alfa))/G; Čuvanje rezultata fopen_s (&F, "Rezultat.txt","w"); fprintf (F,"MaxVisina\n"); fprintf (F,"%f\n", MaxVisina); fprintf (F,"MaxDaljina\n"); fprintf (F,"%f",MaxDaljina); fclose (F); mResult.LoadFromFile ("Rezultat.txt");
Simulacija traženja solitonskih rešenja u fotoničnim rešetkama • Solitoni su dinamičko i stuktralno stabilni talasi za razliku od običnih talasa koji se raspršuju.Oni nastaju usled ravnoteže disperzije ili difrakcije(širenja) i nelinearnih efekata(skupljanja) u optičkoj sredini • Fotorefraktivne sredine su one kod kojih postoje fotorefraktivni efekti odnosno svetlošću izazvane promene indeksa prelamanja • Fotonične rešetke su prostorno periodične strukture pomoću kojih moguće kontrolisati prostiranje svetlosti. Mogu se smatrati optičkim analogom poluprovodnika.
Simulacija propagacije solitonskih rešenja • Da bi se objasnilo ponašanje kontrapropagirajućih solitona korisćen je vremenski nezavisan model zasnovan na teoriji fotorefraktivnih efekata • Usled rotacione simetrije problema pretpostavlja se postojanja solitona oblika
Petviashvilijev za traženje solitonskih rešenja u fotoničnim rešetkama • Sada se dve jednačine propagacije mogu pretvoriti u jednu degenerisanu • Rešenja ove jednačine se dobijaju iteracionom formulom u Furijeovom inverznom prostoru • Pravolinijska ‘naivna’ iteracija ne daje rešenja.Već tek korišćenjem stabilizacionih faktora koje je dao Petviashvili je to moguće
Rešavanje problema simulacijom • Problem se rešava na na konačnom delu prostoru (-xmax,xmax)* (-ymax,ymax) • Simulacije su vršene za nekoliko tipova rešetki • Kao ulaz odnosno početnu vrednost (u) funkcije korišćeno je više interesantnih oblika
Softverska implemantacija • Interesuju nas efekti promene nekih ulaznih parametara • Definisanje šta sta će se smatrati konvergencijom • Uvođenje niza kriterijuma za rano preoznavanje divergencije • Stabilizuje računanja nakon odredjenog broja iteracija • Jako sporo konvergirajuće simulacije
Duži period nestabilnosti if (Sum1/Sum2 > MaxStabilnosti) then begin IndikatorDiv = IndikatorDiv +1 if (IndikatorDiv >MaxPeriodNestabilnosti) divergencija =true end else IndikatorDiv = 0 • Kriterijum ‘klackalice’, odnosno česte promene monotonosti funkcije tačnosti, odnosno udaljenosti vrednosti funkcije U izmedju iteracija u nekoj normi
Potreba za metodom za analizu rezultata • Često je osim samog izračunavanje simulacija potrebna i neka analiza tih rezultata • Primer je prepoznavanje oblika solitona. Definišimo neke karakteristike odnsno uslove koje ti solitoni treba da ispunavaju • Suma intenziteta svih tačaka solitona (u) je približno jednaka sumi tačaka solitona koje se poklapaju sa rešetkom • Najveći razmak između tačaka sa intenzitetom iznad neke minimalne vrednosti, koja je definisana u odnosu na maksimalnu vrednost funkcije (u), je veći od neke granice • Suma intenziteta svih tačaka solitona približno je jednaka sumi tačaka solitona koje se nalaze na prstenu oko 0., 2. ili 4. kruga
Sama metoda za svaki rezultati ispituje ispunjenost uslova i na osnovu toga vraća nađeni oblik ili da je neodredjen.
Zaključak • Prilikom upotrebe na konkretnim problemima opšti simulator je pokazao niz dobrih karakteristika • Jednostavna i efikasna vizuelizacija rezultata, kako u samom simulatoru tako i u pomoćnim programima, bez dodatnog programiranja. • Razvoj modula za simulaciju je ubrzan, jer se rezultati brzo analiziraju. • Lako se proširuje rezultat novim informacijama koje se automatski vizuelizuju. • Modul za simulaciju je izolovan od ostatka aplikacije tako da se u njemu mogu primenjivati razni trikovi za povećavanje performansi. • Neki procesi koji su ranije bili analizirani od strane čoveka su efikasno automatizovani, tako da je upotreba ljudskog vremena postala daleko efikasnija. • Greške koje su prouzrokovane automatizacijom su lako prepoznate i otklonjene promenom parametara ili promenom delova koda modula za simulaciju.