SIMULACIJE U LOGISTICI PREDAVANJE 3 B 2010/2011 Generisanje slučajnih brojeva U toku formulisanja stohastičkih modela, za promenljive koje opisuju promenu vremena, ulaza i stanja, definišu se statističke raspodele koje ih opisuju sa najmanjom greškom u odnosu na realni sistem. Pri simulaciji tako definisanih modela javlja se potreba za računarskim algoritmima koji će generisati slučajne promenljive za opisivanje promena vremena i stanja u modelu sa nekom zadatom raspodelom. U statističkoj teoriji slučajnu promenljivu sa zadatom raspodelom moguće generisati na osnovu jedne ili više nezavisnih slučajnih promenljivih sa uniformnom raspodelom. Na taj način se problem svodi na generisanje slučajne promenljive sa uniformnom raspodelom. Slučajnu promenljivu sa uniformnom raspodelom moguće je dobiti jednom od sledećih metoda: manuelne metode, tabele slučajnih brojeva, metode za rad sa analognim računarima i metode za rad sa digitalnim računarima. 1.1 Manuelne metode Manuelne metode su malog opsega i zbog toga su neprimenljive u simulaciji. Eventualno se mogu koristiti za obučavanje kadrova. U ove metode spadaju: izvačenje brojeva iz kutije, bacanje kockica itd. 1.2 Tabele slučajnih brojeva Tabele slučajnih brojeva su serije slučajnih brojeva (SB) zapisane na pogodan način, generisane nekim fizičkim izvorom ili nekom od metoda izvlačenja brojeva. Najveća do sada publikovana tabela slučajnih brojeva, sadrži 1.000.000 cifara (A million random digitis, Rand Cogpogation, The Fgee Press, 1955). Brojevi su dobijeni na sledeći način. Bio je konstruisan specijalan rulet koji se pokretao i zaustavljao uz pomoć elektronike. Pokretni disk se naglo zaustavljao i birala se cifra koju je pokazivala strelica. Ovako dobijene cifre se skupljaju u četvorocifrene ili petocifrene brojeve i unose u tabelu slučajnih brojeva. Iako ovakav postupak poseduje sva svojstva slučajnosti, ipak su se posle dužeg vremena počele dadobijaju cifre koje, prema proveri statističkim testom, nisu imale ravnomernu raspodelu. 1.3 Metode za generisanje SB na analognom računaru Ove se metode baziraju na korišćenju slučajnih fizičkih procesa koji se odvijaju u analognom računaru
i daju "prave slučajne brojeve". Nepodesne su za rad, jer u slučaju ponovljene simulacije sa istim redosledom slučajnih brojeva, fizički proces daje nove slučajne brojeve. 1.4 Metode za generisnje SB na digitalnom računaru Metode za generisanje slučajnih brojeva baziraju se na sledećim postupcima: 1. Korišćenje fizičkih izvora + A/D konverzija, 2. Korišćenje tabela slučajnih brojeva na diskovima računara, 3. Korišćenje algoritama za dobijanje pseudoslučajnih brojeva. Korišćenje fizičkih izvora (beli šum, radioktivni raspad) i konverzija fizičkih veličina u digitalne je skup i nepristupačan postupak za svakodnevnu primenu. Tabele slučajnih brojeva na masovnim memorijama računara su dobar ali spor način za dobijanje slučajnih brojeva pri simulacijama sasvim prosečnih sistema koji u toku simulacije traže nekoliko miliona slučajnih brojeva. Algoritmi za generisanje pseudoslučajnih brojeva su brz način za generisanje slučajnih brojeva. Međutim kvalitet takvih generatora zavisi od algoritma i računara na kome se implementira. Dužina sekvence brojeva bez ponavljanja je ograničena a uniformnost i rezolucija može da bude promenljiva. Zbog toga je potrebno pre upotrebe ovakvih generatora ispitati njihovu rezoluciju, uniformnost i 2 dužinu sekvence slučajnih brojeva bez ponavljanja standardnim statističkim metodama (npr. χ test) i utvrditi da li dobijene karakteristike odgovaraju zahtevima modela. Međutim, bez obzira na navedene nedostatke algoritamskih generatora slučajnih brojeva (GSB), danas su pretežno u upotrebi ovakvi generatori. Od izbora algoritma zavisi i kvalitet generatora. Postoje mnogi algoritmi za generisanje slučajnih brojeva, ali se uglavnom koriste kongruentni generatori. Njih karakteriše jednostavnost i brzina. 1.5 Linearni kongruentni GSB Da bismo objasnili mehanizam rada kongruentnih generatora slučajnih brojeva potrebno je najpre definisati šta su to kongruentni brojevi: Kongruentni brojevi su takvi brojevi koji su međusobno deljivi bez ostatka. Koristeći osobine kongruentnih brojeva, možemo definisati sledeće vrste linearnih kongruentnih generatora pseudoslučajnih brojeva sa uniformnom raspodelom: 1. Multiplikativni Zi =(Z i-l a)mod m 2. Mešoviti Zi = (Z i-1 a+c)mod m Z. Aditivni Zi =(Z i-1 a +Z i-k b)mod m gde su: Zi - pseudo slučajni broj, Zo -početna vrednost ili seme generatora, a -multiplikator, Ь -konstanta, S -konstanta, M -modulus. Od navedenih generatora, najviše je u upotrebi linearni multiplikativni kongruentni generator pseudoslučajnih brojeva, pa će njemu biti posvećena posebna pažnja.
Linearni mltiplikativni kongruentni generator slučajnih brojeva generiše slučajne brojeve po sledećoj formuli: gde su: Z i = (a Z i-1 +b) mod m, m=2 b-1 Zi -pseudoslučajni broj, Zo -početna vrednost (seme) sekvence pseudo slučajnih brojeva, a -multiplikator,. b -broj bitova celobrojne promenljive u računaru. Dokazuje se da je maksimalna moguća dužina niza generisanih brojeva, bez ponavljanja N max = m - 1. Da bi se postiglo maksimalno moguće Nmax, a i Zo treba da ispunjavaju sledeće uslove a=8 j ± 3 j =1,2,3,... Zo = 1,3,5,7,... tada je m/4 N max m-1. Kvalitet generatora slučajnih brojeva prvenstveno zavisi od broja bitova celobrojne promenljive. Pogodno izabranim multiplikatorom, za isti broj bitova celobrojne promenjive moguće je poboljšati kvalitet generatora za 75%. Radi jasnijeg shvatanja dat je primer implementacije linearnog multiplikativnog generatora sa štampanjem prvih 10 slučajnih brojeva. U ovoj implementaciji za generisanje slučajnih brojeva koristi se celobrojna promenljiva dužine 32 bita (b = 32). Multiplikator je 16383. Za seme generatora uzet je broj 1. Implementacija je testirana na TURVO PASCAL-u. PROGRAM RndTest; TURE Rand = RECORD Seed : LongInt; {Seme -cetvorobajtna prom.} Mult : LongInt; {Multiplikator} Val : Real; {Slucajan broj u intervalu 0-1} END; VAR i : INTEGER; Rnd Rand; PROCEDURE Randu (VAR Rnd : Rand); BEGIN Rnd.Seed := Rnd.Seed * Rnd.Mult; IF Rnd.Seed < O THEN Rnd.Seed := Rnd.Seed + MaxLongInt + 1; Rnd.Val.-Rnd.Seed / MaxLongInt END; BEGIN {Glavni program} Rnd. Seed : = 1; {Definisanje semena gener.} Rnd.Mult := 16383; {Definisanje multiplikatora} FOR i = 1 TO 10 DO {Izvlacenje 10 slucajnih broj. } BEGIN Randu (Rnd) ; {Generisanje sluc. broja} WRITELN(Rnd.Val) {Stampanje} END END. Po izvršenju programa biće odštampano 10 pseudoslučajnih brojeva u intervalu (0,1). Ukoliko korisnik želi da generiše veći broj nezavisnih tokova pseudo-slučajnih brojeva, potrebno je da u segmentu inicijalizacije programa, definiše odgovarajući broj različitih početnih vrednosti semena generatora, pri čemu vrednost multiplikatora može da ostane nepromenjena za sve tokove. 2.0 Testovi za proveru GSB Pseudoslučajni brojevi dobijeni iz generatora slučajnih brojeva treba da zadovolje osobine koje se odnose na uniformnost; raspodele unutar intervala (0,1) i nezavisnost pojavljvivanja. Naime, iako
je generisanje brojeva linearnim kongruentnim generatorima strogo deterministički algoritam, generisani brojevi moraju da zadovolje određene statističke testove i tada se cmatraju slučajnim. 2.1 k-test Ovaj test služi za ispitivanje da li neki skup generisanih slučajnih brojeva ima pretpostavljeni raspored. Neki skup od n elemenata (slučajnih brojeva) može se grupisati prema nekoj osobini u r grupa. Neka se u i-toj grupi nađe fi elemenata tako da je f1 + f2 +... + fr =n Verovatnoća da će se elemenat h naći u grupi fi je pi. Poznato je da broj elemenata koji prema teorijskoj raspodeli treba da se nađu u i-tom intervalu iznosi npi. Da bi pretpostavka (No) da dati skup podleže određenoj raspodeli bila u važnosti, treba da se nađe vrednost izraza: 2 (fi n pi), i da se ona uporedi sa vrednošću k koja se nalazi u tablicama za r-1 stepene slobode i za verovatnoću koja odgovara zadatom nivou značajnosti. Ako je k< k o smatra se da skup podleže pretpostavljenoj raspodeli, tj usvaja se hipoteza No; U suprotnom se hipoteza odbacuje. 2.2 Kolmogorov-Smirnov test Ovaj test omogućava porećenje da li ispitivani skup slučajnih brojeva podleže pretpostavljenoj raspodeli. Neka je generisano n slučajnih brojeva. Treba prvo obaviti njihovo srećivanje po veličini, tj. x 1 < x 2 <.< x n. Kod uniformne raspodele, verovatnoća pojavljivanja svakog od njih iznosi 1/n. Kumulativna funkcija raspodele može se konstruisati na taj način što će kod svakog h doći do porasta funkcije za 1/n. Pošto je kumulativna funkcija uniformne raspodele Fn (h) poznata, to se može izračunati izrazom D n = mah F(z )-F e (z). -oo<z<oo Ukoliko je Dn(h) manje od kritične vrednosti d 0, za prag značajnosti α nulta hipoteza (hipoteza da se radi o uniformnoj raspodeli) biće prihvaćena. Prednost ovog testa nad k-testom je u tome što se mogu testirati i mali skupovi brojeva. Međutim, potreba da se brojevi srede po redosledu zahteva dosta memorijskog prostora, jer je broj generisanih brojeva obično vrlo veliki. Postoji i čitav niz drugih testova za proveru kvaliteta generatora slučajnih brojeva kao što su (ali se oni ređe koriste): poker test, test serije istih cifara, intervalni test i testovi korelacije, 3.0 Generisanje slučajne promenljive sa zadatom raspodelom Slučajne promenljive čije vrednosti generišemo u modelu podležu nekoj raspodeli, koja može biti teorijska ili empirijska, a po prirodi kontinualna ili diskretna. Postoji nekoliko metoda za generisanje vrednosti slučajnih promenljivih na digitalnim računarima, kao
što su: metoda inverzne transformacije metoda odbacivanja, metoda pravougaone aproksimacije i metoda sumiranja. Zajednički zadatak za ove metode je da generišu slučajnu promenljivu sa nekom drugom raspodelom, ako raspolažemo generatorom slučajnih brojeva sa uniformnom raspodelom. Pretpostavlja se da je generator normiran. 3.1 Metoda inverzne transformacije Uvodi se smena H= h(r) takva da slučajnoj promenljivoj H odgovara željena funkcija raspodele F(X). F(X) = R(H < H)=P{r < r) = P(r< h -1 (H))= U(h -1 (H))= h -1 (H) h(r)=f -1 (r) Primena ove metode ograničena je na funkcije raspodele koje imaju inverznu funkciju i monotone su. Uglavnom se primenjuje za generisanje slučajnih promenljivih sa eksponencijalnom raspodelom. Slika P.7 Grafički prikaz metode inverzne transformacije 3.2 Metoda odbacivanja Uslov za primenu ove metode je ograničen opseg definisanosti funkcije gustine raspodele. f(x) 0 za H [a,b] Ako se na površini (b-a)*s generiše niz tačaka sa uniformnom raspodelom i ako se odbace sve tačke koje padaju iznad krive f(h) preostale tačke imaće funkciju gustine raspodele f(h). Algoritam: REPEAT generiši r 1 i r 2 ; H 1 := (b -a)*r 1 + a ; UNTIL r 2 *s f(x 1 ) H:=H 1 s obzirom na to da se prilikom svakog promašaja nanovo generišu slučajni brojevi sa uniformnom raspodelom, kao i na to se troši izvesno računarsko vreme, za primenu ove metode pogodnije su raspodele koje imaju veću površinu ograničenu apscisom i krivom funkcije raspodele.
Slika P.8 Grafički prikaz metode odbacivanja 3.3 Metoda pravougaone aproksimacije Metoda pravougaone aproksimacije koristi se za generisanje empirijskih raspodela, kada je funkcija raspodele monotona i zadata parovima tačaka. Kod mnogih realnih problema, verovatnoća da će se desiti događaj izražava se u vidu empirijskih podataka. Ti podaci se mogu grupisati u proizvoljan broj frekvencijskih klasa (m) koje sačinjavaju histogram. Svaka klasa je predstavljena pravougaonikom čija se donja i gornja granica mogu označiti sa X j-1, H j, j=1,2,...,m. Ukupan broj realizacija slučajne promenljive u okviru jedne klase se naziva apsolutna frekvencija i označava se sa n j, j=1,2,...,m. Relativna frekvencija svake klase, fj = 1/n j predstavlja verovatnoću da će realizacija slučajne promenljive X uzeti vrednost iz klasej (slika P.9), tj: Xj-1 X Xj Slika P.9 Histogram raspodele relativnih frekvencija Zbir relativnih frekvencija je jednak jedinici, odnosno:
Na osnovu dobijenog histograma može se lako konstruisati funkcija raspodele, pri čemu je potrebno izračunati kumulativnu sumu prethodnih frekvencija (slika P.10), t.j. Kumulativna suma prethodnih frekvencija, Yj predstavlja verovatnoću da slučajna vrednost H ne prelazi vrednost Hj. Da bi omogućili primenu metode inverzne transformacije, potrebno je aproksimativno odrediti funkciju raspodele, tako što se kroz kumulativni histogram provlači kontinualna kriva. To se najlakše može uraditi povlačenjem segmenata pravih linija, kao što je prikazano na slici P.10. Slika p. 10 Kumulamivna suma relamivnih frekvencija Za dobijanje odgovarajuće vrednosti H potrebno je generisati uniformno raspodeljen slučajni broj r E [0,1) i koristiti jednačinu za linearnu interpolaciju, t.j. što je ilustrovano na slici P.11.
Slika p. 11 Linearna aproksimacija funkcije raspodele Jedini preostali problem jeste određivanje klase koja odgovara slučajnoj veličini r. To se može rešiti odgovarajućim pretraživanjem, startujući od krajnje leve klase (t.j. j=1) i sukcesivnim poređenjem vrednosti r sa vrednostima Y j. Tražena klasa je prva klasa za koju je r U j. Pri implementaciji ove metode na računaru moraju biti poznate sledeće vrednosti: donja i gornja granica apcise funkcije raspodele (a=h 0, b=h m ), kao i vrednosti kumulativnih frekvencija Y j (slika P.10). Za slučaj kada su klase jednakih širina, njihove granice se računaju na sledeći način: Ukoliko klase histograma nisu jednake širine, potrebno je pored pomenutih vrednosti učitati i granice svih klasa H j, j=0,1,...,m. Gornje jednačine se mogu modifikovati u sledećim slučajevima: 1. Ukoliko je funkcija raspodele zadata analitički, a potrebno je "pripremiti" istu kao ulaz u neki od simulacionih programa, tada je moguće izvršiti podelu vrednocti funkcije raspodele na jednake intervale, za koje je potrebno izračunati vrednosti 2. Ako je poželjno izjednačiti vrednosti frekvencija klasa u histogramu, tada je potrebno formirati klase različitih širina. U tom slučaju su vrednosti funkcije raspodele, koje odgovaraju granicama klasa, na jednakim rastojanjima. 3. Kada se zahteva efikasniji algoritam za pretraživanje, pri čemu greška aproksimacije nije kritična, moguće je izvršiti podelu vrednosti funkcije raspodele (u) na jednake intervale, za koje je potrebno izračunati vrednosti H. U navedenim slučajevima, moguće je koristiti sledeći algoritam, koji je efikasniji u računskom smislu: ; 3.4 Metoda sumiranja Ova metoda se koristi za generisanje Normalne (Gauss-ove) raspodele. Zasniva se na primeni centralne granične teoreme. Centralna granična teorema se može formulisati na sledeći način: Neka je H 1,H 2,,H n niz nezavisnih slučajnih promenljivih sa jednakim verovatnoćama, svaka sa srednjom vrednošću μ h i konačnom varijansom σ X 2. Njihova srednja vrednost data je sledećim izrazom: Tada promenljiva konvergira ka standardnoj normalnoj raspodeli sa srednjom vrednošću μ i standardnom devijacijom
σ/ tj. za dovoljno veliko n razlika između promenljive U i standardizovane normalne promenljive može se zanemariti iz praktičnih razloga. Prema tome, da bi generisali uzorak iz standardne normalne raspodele, možemo uzeti n nezavisnih uniformno raspodeljenih slučajnih brojeva r i E [0,1) sa srednjom vrednošću E(r i )=1/2 i varijansom E(r i - μ) = 1/12. Slučajna promenljiva: ima normalnu raspodelu sa srednjom vrednošću nula i varijansom jedan (E(Z)=0, E(Z μ) 2 =1), kada n 00. Dobri rezultati aproksimacije dobijaju se za n=12 u kom slučaju gornja jednačina postaje: 12 Z = Σ r i - 6 i=1 Ukoliko je potrebno generisati uzorke iz nestandardizovane normalne raspodele, potrebno je koristiti sledeći izraz: 3.5 Box-Muller-ov metod X=μ+σ Z Box-Muller-ov metod je egzaktan metod koji koristi dve nezavisne pseudo-slučajne promenljive r 1 i r 2 koje se koriste za generisanje standardizovanih normalno raspodeljenih slučajnih promenljivih korišćenjem oba ili jednog od sledećih izraza: Ukoliko je potrebno generisati uzorke iz nestandardizovane normalne raspodele, potrebno je koristiti sledeći izraz: X=μ+σ Z Kod metode sumiranja potrebno je za svako Z imati na raspolaganju 12 različitih vrednosti r i, dok su kod Box-Muller-ove metode potrebne samo dve takve vrednosti. Međutim, ovaj metod zahteva izračunavanje kvadratnog korena, logaritma, kosinusne ili sinusne funkcije, što zahteva više računarskog vremena nego što je potrebno za određivanje jednostavne sume. Takođe, tačnost rezultata zavisi i od ugrađenih funkcija (bibliotečkih podprograma) za izračunavanje kvadratnog korena, logaritma, kao i sinusne i kosinusne funkcije.