16
UNIVERZITET U NIŠU MAŠINSKI FAKULTET Prof.dr Miomir Jovanović 2007/2008 Studijski profil Saobraćajno mašinstvo Transport i logistika Predmet: Programski paketi Тема: Osnovni principi simulacija događaja sa primerima Literatura: Discrete-Event Sysrem Simulation, 2005 3 Osnovni principi Simulacija se bavi modeliranjem složenih sistema u kojima se dešavaju diskretni događaji. U suštini simulacijom se razvijaju algoritmi modeliranja diskretnih događaja: procesi, atributi, delatnosti i događaji. U simulaciji diskretnih događaja, osnovna komponenta je vreme ili vremenski interval. Simulacijom se definiše suština procesa. Iz suštine proističe sadržaj procesa: sredstva sistema delatnosti i događaji. Događaju uzrukuju menjanje stanja sistema. Simulacija se karakteriše programskim jezicima simulacije i simulacionim paketima. Šta se modelira: U mašinstvu to su mašine, konvejeri i sredstva koja su modelirana u okviru nekih od softverskih paketa da bi olakšala modeliranje u proizvodnji, rukovanju materijalima i ostalim područjima rada. Simuliranje proizvodnje i sisteme za rukovanje materijalima. U elektronici: simulacija kompijuterskih sistema i simulacija sistema za komunikaciju. 3.1 KONCEPTI U SIMULACIJI DISKRETNIH DOGAĐAJA U tehnici simulacija je potrebna za modeliranje dinamičkih, stohastičkih sistema koji se diskretno menjaju. Sistem je skup različitih entiteta (ljudi i mašina) koji u toku vremena utuču uzajamno jedni na druge da bi ostvarili jedan ili više ciljeva. Model je apstraktno predstavljanje sistema. Odlikuje se strukturnom, logičkom i matematičkom povezanošću. Model opisuje sistem kroz vreme, njegove entitete i atribute, podešavanje procesa, događaja i odlaganja. Stanje sistema: Informacije koje u svakom trenutku opisuju sistem. Objekat: Komponenta u sistemu koja se predstavlja u modelu (server, kupac, mašina). Osobine: Svojstva date suštine (prioritet kupca koji čeka, određivanje transportnih puteva u radnom prostoru). Lista: Spisak trajnih ili privremenih kategorija u logičnom redosledu (lista čekanja kupaca koji se opslužuju po režimu “ko prvi dođe, prvi bude opsužen”, ili po prioritetu.) Događaj: Trenutni događaj koji menja stanje u sistemu (pojava zahteva klijenta, proces pakovanja proizvoda ). Evidentiranje događaja Evidentiranje događaja podrazumeva zapisivanje vrste i vremena događaja. Lista događaja Lista evidentiranih događaja namenjena događajima u budućnosti, određena vremenom događaja; tkz. lista budućih događaja, FEL (future event list). Aktivnost Specifičan proces definisan vremenom početka i završetka (opsluživanje). Kašnjenje Vremenski interval neodređenog trajanja.

Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

UNIVERZITET U NIŠU MAŠINSKI FAKULTET

Prof.dr Miomir Jovanović

2007/2008

Studijski profil

Saobraćajno mašinstvo Transport i logistika

Predmet: Programski paketi Тема:

Osnovni principi simulacija događaja sa primerima Literatura: Discrete-Event Sysrem Simulation, 2005

3 Osnovni principi

Simulacija se bavi modeliranjem složenih sistema u kojima se dešavaju diskretni događaji. U suštini simulacijom se razvijaju algoritmi modeliranja diskretnih događaja: procesi, atributi, delatnosti i događaji. U simulaciji diskretnih događaja, osnovna komponenta je vreme ili vremenski interval. Simulacijom se definiše suština procesa. Iz suštine proističe sadržaj procesa: sredstva sistema delatnosti i događaji. Događaju uzrukuju menjanje stanja sistema. Simulacija se karakteriše programskim jezicima simulacije i simulacionim paketima. Šta se modelira: U mašinstvu to su mašine, konvejeri i sredstva koja su modelirana u okviru nekih od softverskih paketa da bi olakšala modeliranje u proizvodnji, rukovanju materijalima i ostalim područjima rada. Simuliranje proizvodnje i sisteme za rukovanje materijalima. U elektronici: simulacija kompijuterskih sistema i simulacija sistema za komunikaciju.

3.1 KONCEPTI U SIMULACIJI DISKRETNIH DOGAĐAJA U tehnici simulacija je potrebna za modeliranje dinamičkih, stohastičkih sistema koji se diskretno menjaju. Sistem je skup različitih entiteta (ljudi i mašina) koji u toku vremena utuču uzajamno jedni na druge da bi ostvarili jedan ili više ciljeva. Model je apstraktno predstavljanje sistema. Odlikuje se strukturnom, logičkom i matematičkom povezanošću. Model opisuje sistem kroz vreme, njegove entitete i atribute, podešavanje procesa, događaja i odlaganja. Stanje sistema: Informacije koje u svakom trenutku opisuju sistem. Objekat: Komponenta u sistemu koja se predstavlja u modelu (server, kupac, mašina). Osobine: Svojstva date suštine (prioritet kupca koji čeka, određivanje transportnih puteva u radnom prostoru). Lista: Spisak trajnih ili privremenih kategorija u logičnom redosledu (lista čekanja kupaca koji se opslužuju po režimu “ko prvi dođe, prvi bude opsužen”, ili po prioritetu.) Događaj: Trenutni događaj koji menja stanje u sistemu (pojava zahteva klijenta, proces pakovanja proizvoda ). Evidentiranje događaja Evidentiranje događaja podrazumeva zapisivanje vrste i vremena događaja. Lista događaja Lista evidentiranih događaja namenjena događajima u budućnosti, određena vremenom događaja; tkz. lista budućih događaja, FEL (future event list). Aktivnost Specifičan proces definisan vremenom početka i završetka (opsluživanje). Kašnjenje Vremenski interval neodređenog trajanja.

Page 2: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Vreme određena aktivnost procesa opsluživanja, može imati trajanje definisano od strane tvorca modela:

1. Determinističko – npr., tačno 2 minuta ciklus semafora;

2. Statističko – npr., dolaženje – pristizanje automobila na semafor sa istom verovatnoćom;

3. Funkcijsko zavisno od promenjivih u sistemu. Npr., vreme utovara rude u brod zavisi od nosivosti broda i kapaciteta utovara transportne mašine (t/h).

Da bi održali praćenje aktivnosti i vreme njenog očekivanog završetka u trenutku simuliranja u kome počinje trajanje određene aktivnosti, lista događaja se kreira tako da je vreme događaja jednako krajnjem vremenu aktivnosti. Na primer, ako je trenutno vreme simuliranja ČASOVNIK = 100 minuta i vreme kontrole koje upravo počinje da teče je tačno 5 minuta, tada se kreiraju zapažanja o događaju. Vreme događaja je 100 + 5 = 105 minuta.

U suprotnosti sa nekom aktivnošću, trajanje kašnjenja (odlaganja) nije određeno unapred modeliranjem, već je češće određeno stanjem u sistemu. Vrlo često vreme kašnjenja se traži i jedno je od željenih izlaza modela (simulacije). Uobičajeno je da se kašnjenje završava kada određena podešavanja logičkih stanja postanu realna ili se jedan i više događaja odigraju. Na primer, vreme koje kupac provede u redu ispred kase može zavisiti od broja kupaca u redu ispred njega i vremena za koje se oni opsluže, kao i od broja respoloživog osoblja i opreme.

Kašnjenje se ponekad naziva i uslovno čekanje. Završetak neke aktivnosti je događaj, često zvan primarni događaj, koji se određuje postavljanjem liste događaja na FEL. U suprotnom, kašnjenja se određuju postavljanjem sličnog entiteta na sledeću listu. Time se uvodi red čekanja, sve do onog trenutka kada uslovi u sistemu dozvole obradu entiteta. Završetak kašnjenja se ponekad naziva uslovni ili sekundarni događaj, ali takvi događaji nisu predstavljeni listom događaja, niti se pojavljuju u FEL-u.

Proizvodnja i saobraćaj su dinamički procesi, promennjivi u toku vremana. Dakle, stanje sistema, osobine entiteta i broj aktivnih entiteta, sadržaj setova, aktivnost, i kašnjenja koja se odigravaju su sve funkcije zavisne od vremena i menjaju se u toku vremena.

Primer 3.1: Centar za pozive,__________________________________________________________ Razmotrimo sistem centra za pozive Able-Baker. Model diskretnih događaja ima sledeće komponente:

Stanje sistema

)(tLQ , broj pozivaoca koji čekaju da budu usluženi u vremenu t;

)(tLA , 0 ili 1 ukazuje da je Able slobodan ili zauzet u vremenu t;

)(tLB , 0 ili 1 ukazuje da je Baker slobodan ili zauzet u vremenu t.

Entiteti Niti pozivaoci (kupci) niti osoblje ne moraju biti izričito određeni, osim u posebnom slučaju. Događaji Vrema dolaska Usluga koju je izvršio Able; Usluga koju je izvršio Baker; Aktivnosti Vreme među dolazaka, dato u tabeli A. Vreme za koje je Able izvršio uslugu, dato u tabeli B. Vreme za koje je Baker izvršio uslugu, dato u tabeli C. Kašnjenje Pozivaoc čeka red dok Able ili Baker ne postanu slobodni.

Zapazimo: Simulacija diskretnih događaja je modeliranje sistema u toku vremena čije promena stanja se menja u diskretnim tačkama a to su tačke u kojima se određeni događaj pojavi. Simulacija diskretnih događaja (od sada zvana simulacija) se obavlja tako što proizvodi (daje) sekvence - snimke sistema koje predstavljaju realizaciju procesa u toku vremena. Određeni snimak ne uključuje samo stanje u sistemu u vremenu t, već i FEL svih trenutnih aktivnosti. To odredjuje status svih entiteta u sistemu plus trenutna stanja, kumulativne statističke vrednosti i stanje brojača.

3.1.1 Planiranje događaja / unapred određeni algoritam Mehanizam budućeg vremena simuliranja koji garantuje da se svi događaji dešavaju po tačno određenom hronološkom redosledu je određen listom budućih događaja (FEL). Ova lista sadrži evidenciju svih događaja za slučajeve koji su predviđeni da će se dogoditi u narednom periodu. Planiranje budućih događaja znači da se u

Page 3: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

trenutku kada određena aktivnost počinje, njeno vreme računa ili upusuje kao statistička raspodela, i vreme kada se aktivnost završava zajedno sa proteklim vremenom događaja, postavlja se na listu budućih događaja. U stvarnosti, većina budućih događaja nije planirana ali se takvi događaji ipak često dešavaju, kao što su slučajni kvarovi ili slučajni dolasci repromaterijala. U modelu simulacije, takvi slučajni događaji su predstavljeni krajem dešavanja određene aktivnosti i imaju statičku raspodelu. U bilo kom datom trenutku t, FEL sadrži sve prethodno planirane događaje i njihova predviđena vremena trajanja (nazvana t1, t2, … tabela 3.1). FEL je određena vremenom događaja, što znači da su događaji poređani hronološki.

nttttt ≤⋅⋅⋅≤≤≤< 321

Vreme t je vrednost ČASOVNIKA, tj. trenutna vrednost vremena simulacije. Događaj blizak vremenu t1 naziva se bliski događaj, odnosno to je sledeći događaj koji će se desiti. Posle snimanja sistema u trenutku simuliranja ČASOVNIK=t, vreme je ažurirano i tada ČASOVNIK prelazi u vreme simuliranja ČASOVNIK=t1, bliski događaj je sklonjen sa FEL-a i operacija (događaj) je izvršena. Izvršenje bliskog događaja znači da je kreiran nov snimak sistema u trenutku t1, koje je bazirano na starom snimku sistema i prirodi bliskog događaja. U trenutku t1, neki novi budući događaji se mogu a i ne moraju pojaviti, pa čak i ako se pojave planirani su i raspoređeni na listu događaja i postavljeni na odgovarajuće mesto u FEL-u. Posle ponovnog snimanja sistema, vreme t1 je ažurirano, sat je pomeren unapred na vreme novog bliskog događaja i tek tada je prethodni događaj izvršen. Ovaj proces se ponavlja sve dok se simulacija ne završi. Sekvence u toku rada koje simulator mora proizvesti da bi pomerio sat unapred i da bi napravio novi snimak sistema se nazivaju Planiranje događaja / unapred određeni algoritam. Stari snimak sistema u trenutku t

Tabela 3.1 Planiranje događaja / unapred određeni algoritam

Korak 1. Ukloniti zapažanje o događaju za bliski događaj sa FEL-a (događaj 3, trenutak t1 )

Korak 2. Pomeriti ČASOVNIK na vreme bliskog događaja ( pomeriti ČASOVNIK sa t na t1 )

Korak 3. Završetak bliskog događaja: ažurirati stanje u sistemu, promeniti osobine entiteta i

Korak 4. Generisati buduće događaje i postaviti zapažanja o njima na FEL, postavljajući ih po vremenu događaja (Primer: događaj 4 se pojavio u trenutku t*, gde je t2 < t* < t3)

Korak 5. Ažurirati kumulativnu statistiku i brojače

Novi snimak sistema u trenutku t1

Tabela 3.2 Naredno vreme i ažuriranje stanja u sistemu

ČASOVNIK Stanje u sistemu Lista budićih događaja …

t

(5,1,6) (3, t1)-Tip 3 događaj će se pojaviti u trenutku t1 (3, t1)-Tip 1 događaj će se pojaviti u trenutku t1 (3, t1)-Tip 1 događaj će se pojaviti u trenutku t1

. . . . . .

(2, tn)-Tip 2 događaj će se pojaviti u trenutku tn

ČASOVNIK Stanje u sistemu

t

(5,1,6) (3, t1)-Tip 3 događaj će se pojaviti u trenutku t1 (3, t1)-Tip 1 događaj će se pojaviti u trenutku t1

. . . (2, tn)-Tip 2 događaj će se pojaviti u trenutku tn

ČASOVNIK Stanje u sistemu

Lista budićih događaja

t (5,1,5)

(1, t2) - Tip 1 događaj će se pojaviti u trenutku t2

(4, t*) - Tip 4 događaj će se pojaviti u trenutku t* (1, t3) - Tip 1 događaj će se pojaviti u trenutku t3

. . . (2, tn) - Tip 2 događaj će se pojaviti u trenutku tn

Page 4: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Upravljanje listom događaja: Dužina i sadržaj na FEL-u se stalno menja u toku simuliranja, pa je primena kompjutera delotvornija za računarski podržano predstavljanje modela. Upravljanje listom se naziva obrada liste. Većina operacija koje se obrađuje na FEL-u može se preneti na bliski događaj, dodati na novi događaj koji je na listi a ponekad i ukloniti određeni događaj sa liste (otkazivanje određenog događaja). Kako je bliski događaj uvek na početku liste njegovo uklanjanje je delotvorno, ukoliko je to moguće. Efikasnost ovakve pretrage zavisi od logičke organizacije liste a ne od načina vođenja pretrage. Uklanjanje i dodavanje događaja sa FEL-a prikazano je na tabeli 3.2. Događaj 3 sa svojim vremenom dešavanja t1 predstavlja recimo, vreme završetka usluge na mestu broj 3. Pošto je on blizak događaj u trenutku t, pomeren je sa FEL-a u prvom koraku sa Planiranje događaja / unapred-određeni algoritam (tabela 3.2). Kada je događaj 4 (recimo u trenutku dolaska) sa svojim vremenom dešavanja t* generisan u korak br. 4, jedini mogući način za određivanje njegove tačne pozicije na FEL-u je izvršiti upoređivanje od početka prema kraju liste:

ako je t*< t2, postaviti događaj 4 na početak FEL-a. ako je t2 ≤ t* < t3, postaviti događaj 4 kao drugi na listi. ako je t3 ≤ t* < t4, postaviti događaj 4 kao treći na listi.

. ako je tn < t*, postaviti događaj 4 kao zadnji na listi. U tabeli 3.2, t* je bilo prividno između t2 i t3. Drugi način upravljanja listom FEL je izvršiti upoređivanje od kraja prema početku. Poslednji odgovarajući način za vođenje FEL-a je, ostaviti je kao neorganizovanu listu (postavljanje je proizvoljno, na početak ili kraj), koja će zahtevati u prvom koraku iz tabele 3.2 kompletnu pretragu liste za bliski događaj pre pomeranja sata unapred. (Bliski događaj je događaj na FEL-u sa najkraćim vremenom dešavanja.) Snimanje sistema u trenutku 0 određeno je početnim stanjem - grupom unutrašnjih događaja. Početna stanja određuju stanja u sistemu u trenutku 0. Na primer, na slici 3.2, ako je t=0, onda stanje (5, 1, 6) može predstavljati početni broj kupaca u tri različite tačke u sistemu. Tada se unutrašnji događaj dešava “van sistema” koji deluje na sistem. Važan primer pristiže u red za čekanje. U trenutku 0, prvi pristigli događaj se obrađuje i prosleđuje na FEL (što znači da je i njegova evidencija o događaju na FEL-u). Vreme dolaska je primer određene aktivnosti. Kada se vreme poveća na vreme prvog događaja, drugi pristigli događaj se obrađuje. Prvo, vreme dolaska se obrađuje, a*; koje je dodato na tekuće vreme, ČASOVNIK=t; rezultujuće (buduće) vreme događaja, t+a*=t*, je upotrebljeno za pozicioniranje novog vremena dolaska na FEL. Ovaj metod obrade spoljnjih dolazaka naziva se Bootstrapping; on prikazuje kako se obrađuju budući događaji u koraku br. 4. Bootstrapping je prikazan na slici 3.3. Prva tri obrađena vremena dolazaka su 3.7, 0.4, i 3.3 jedinica vremena. Kraj intervala dolazaka je primer osnovnog (primarnog) događaja. Drugi primer o generisanju budućih događaja (korak 4 iz tabele 3.2) predstavljen je završetkom pružanja usluge u simulaciji redova za čekanje. Kada se jednom kupcu završi pružanje usluge, trenutno vreme je ČASOVNIK=t, ako je prisutan sledeći kupac novo vreme pružanja usluge, s*, biće generisano za narednog kupca. Sledeći završetak pružaja usluge planiran je da se dogodi u narednom periodu (vremenu) t*=t+s*, tako što se na FEL postavljaju podatci o novom događaju i o vrsti završetka usluge, sa vremenom t*. Kraj pružanja usluge biće generisan i predviđen kada trenutak novog dolaska to omogući, uprkos novom dolasku neko od osoblja mora biti uvek slobodno. Vreme izvršenja određene usluge je primer određene aktivnosti. Početak usluge je uslovni događaj, zato što je njegov događaj zavistan od slučaja da kupac bude prisutan u redu i da je osoblje slobodno. Završetak usluge je primer primarnog događaja. Značajno je da je uslovni događaj pokrenut od strane primarnog događaja i određenih preovlađujih uslova u sistemu. Samo se primarni događaji pojavljuju na FEL.

Slika 3.3 Grupa tokova spoljnjih događaja u bootstrappingu

Vreme 0 3.7 4.1 7.4

n n+1 ... Dolazak

t* ... Vreme

U trenutku simuliraja t, predpostavljen je početak n-tog dolaska, stvara se vremenski interval a*, izračunava se t*=t+a* i respoređuje sledeći dolazak na FEL-u koji će se dogoditi u narednom trenutku t*

...

... Dolazak 1 2 3

Časovnik=t a*

Između uzastopnih dolazaka mogu se pojaviti i drugi tipovi događaja prouzrukujući menjanje stanja u sistemu

Page 5: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Treći važan pojam je alternativna grupa radnih vremena i DOWTIMES u slučaju kvarova (pada sistema). U trenutku 0, prvo radno vreme će biti generisano i kraj trajanja radnog vremena će biti predvidljiv. Kad god se pojavi kraj radnog vremena, DOWNTIME će biti generisano a kraj trajanja DOWNTIMEa će biti predviđeno i prosleđeno na FEL. Kada vreme ČASOVNIKA počne da napreduje do vremena ovog end-of-downtime event, generiše se radno vreme. Na ovaj način, radna vremena i DOWNTIMES neprekidno se menjaju do kraja simulacije. Radno vreme i DOWNTIME su primeri aktivnosti, a kraj radnog vremena i kraj DOWNTIMEa su primarni događaji. Svaka simulacija mora imati zaustavni događaj, ovde nazvan E, koji određuje koliko će simulacija trajati. Obično postoje dva načina za zaustavljanje simulacije:

1. U trenutku 0, planira se događaj koji će stopirati simulaciju u tačno određenom trenutku TE. Prema tome, pre simuliranja, je poznato da će simulacija trajati više od vremenskog intervala [0, TE]. Na primer: Simulate a job shop for TE = 40 hours.

2. Trajanje TE je određeno samom simulacijom. U opšteno, trenutak TE je slučaj nekog specifičnog događaja E. Primeri: TE je vreme 100-tog izvršenja usluge u mestu za opsluživanje. TE je trenutak poremećaja (kvara) složenog sistema. TE je trenutak razdvajanja ili totalnog upropašćivanja (ma koji se pojavi prvi) u radnoj simulaciji. TE je trenutak u kome distributivni centar šalje poslednju dnevnu isporuku. U drugom slučaju, TE nije unapred poznato, pa to može biti osnovni cilj prikazan simulacijom.

3.1.2 NAUČNA GLEDIŠTA Kada se upotrebljava simulacioni paket ili čak kada se izvodi ručna simulacija, tvorac modela koristi naučna gledišta za razvijanje svog modela. Preovlađujuća naučna mišljenja odnose se na planiranje događaja, interakciju procesa i snimanje aktivnosti. Čak i ako određeni simulacioni paket nije saglasan sa naučnim principima, razumevanje problematike i drugačiji pristup problemu mogu dovesti do alternativnih rešenja. Kada se koristi paket koji koristi pristup interakcije procesa, simulacioni analitičar definiše simulacioni model u terminima entiteta ili objekta i njihovog životnog ciklusa dok se oni kreću kroz sistem, zahtevajući resurse i čekajući u red za resurse. Preciznije, proces je životni vek jednog entiteta. Ovaj životni ciklus sastoji se od različitih događaja i aktivnosti. Neke aktivnosti mogu da zahtevaju jednu ili više resursa čiji kapaciteti su ograničeni. Ovo i druga ograničenja uzrokuju da procesi utiču jedni na druge. Najjednostavniji primer je kada je entitet primoran da čeka red zato što je resurs koji mu treba zauzet od strane drugog entiteta. Pristup interakcije procesa je popularan zato što ima intuitivan zahtev i zato što simulacioni paketi koji ga implementiraju dozvoljavaju analitičaru da opiše tok procesa u smislu blokova visikog nivoa ili mrežnih sistema dok se interakcija između procesa obavlja. Još preciznije, proces je vremenski podeljena lista događaja, aktivnosti i kašnjenja, ukljičujući zahteve za resursima koji definišu životni ciklus entiteta dok se kreću kroz sistem. Primer “usluživanje kupca” prikazan je na slici 3.4. Na ovoj slici vidimo interakciju između dva usluživanja kupca, kad kupac n+1 čeka sve dok se dešava “poslednji događaj” prethodnog kupca. Obično se više procesa dešava istovremeno u modelu pa interakcija između modela može biti veoma složena. Pristup interakcije procesa u simulacionom paketu je obično skriven od strane modelerovog pogleda, događaji se prosleđuju na listu budućih događaja i entiteti se postavljaju na liste kad god se suoče sa kašnjenjem, uzrokujući da se jedan proces privremeno obustavi dok se drugi procesi odigravaju. Važno je da tvorac modela ima osnovno shvatanje koncepta i za simulacioni paket koji se upotrebljava, delimično shvatanje integrisanih ali skrivenih pravila simulacija. Oba pristupa, predviđanje događaja i interakcija procesa su promenljive u vremenu, odnosno kada se promene svih događaja i stanja u sistemu dogode u istom trenutku simulacionog vremena, ono se pomera do sledećeg biskog događaja na listi. Pristup kontrole aktivnosti, nasuprot tome, koristi uvećanje fiksnog vremena i pristup baziran na pravilima da bi bila doneta odluka da li bilo koja aktivnost može da počne u d trenutku simulacionog vremena.

Page 6: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Slika 3.4 Dva procesa usluživanja kupca koji utiču jeda na drugi u redu za čekanje

Kod pristupa kontrole aktivnosti, tvorac modela se usredsređuje na aktivnosti modela i na proste ili kompleksne uslove koje omogućavaju aktivnosti da počne. Za svako napredovanje sata, stanja za svaku aktivnost se proveravaju i ukoliko su uslovi pozitivni, onda odgovarajuća aktivnost počinje. Pristalice tvrde da je pristup kontrole aktivnosti jednostavan u osnovi i vodi ka modularnim modelima koji se lakše održavaju, shvataju i menjaju od strane drugih analitičara. Oni, međutim priznaju da ponovljena kontrola, da bi utvrdili da li aktivnost može da počne, razultuje usporenim radom kompijutera. Prema tome, čist pristup kontrole aktivnosti je modifikovan (i konceptualno učinjen nešto kompleksinijim) tzv. trofaznim pristupom, koji kombinuje neke od oblika predviđanja događaja sa kontrolom događaja da bi dopustio promenljivo vreme napredovanja i izbegavanja kontrole kada nije potrebna ali zadržava glavne prednosti pristupa kontrole aktivnosti. U trofaznom pristupu događaji se smatraju aktivnostima u trajanju od nula vremenskih jedinica. Ovom definicijim aktivnosti su podeljene u dve kategorije nazvane B i C.

B aktivnosti aktivnosti koje su određene da se dogode i svi primarni događaji i bezuslovne aktivnosti.

C aktivnosti aktivnosti ili događaji koji su uslovljeni određenim uslovima koji treba da budu tačni.

Aktivnosti i događaji B tipa mogu biti zakazani pre vremena, kao kod pristupa kontrole događaja. Ovo dozvoljava promenljivo napredovanje vremena. FEL sadrži samo događaje B tipa. Kontrola se izvodi da bi se utvrdilo da li ima aktivnosti B tipa i može li da počnu događaji C tipa koji se događaju samo na kraju vremena, pošto se svi događaji B tipa završe. Ukratko, sa trofaznim pristupom simulacije ponavljaju se tri faze do kraja :

Faza A - skloniti bliski događaj sa FEL-a a pomeriti sat unapred do njegovog vremena dešavanja. Skloniti sa FELa sve ostale događaje koji imaju isto vreme događaja. Faza B – izvršiti sve događaje B tipa koji su sklonjeni sa FEL-a. (Ovo može aktivirati određeni broj resursa ili promeniti stanje u sistemu.) Faza C – izvršiti kontrolu uslova koji pokreću aktivnosi C – tipa i oktivirati ona stanja koja su MET.

_______________________________________________________________________ Primer 3.2: Centar za pozive : Događaji i aktivnosti su identifikovani u primeru 3.1. U trofaznom pristupu, uslovi za početak svake aktivnosti u fazi C se odnose na: Aktivnost Uslov Vreme usluživanja Ablea Pozivaoc je u redu, a Able je slobodan Vreme usluživanja Bakera Pozivaoc je u redu, Baker je slobodan a Able zauzet

U SAD je najpopularniji pristup uzajamnog delovanja i izdvojen je od simulacionih paketa. U UK i EU je popularniji pristup kontrole aktivnosti. Neki od paketa dozvoljavaju samo delovima modela da budu bazirani na planiranju događaja, ako je ta orijentacija pogodno spojena sa pristupom uzajamnog delovanja. Konačno, neki od paketa su bazirani na flow-chart blok dijagramu ili mrežnoj strukturi, koji pri bližem ispitivanju biva implementiran od strane koncepta uzajamnog delovanja.

Interakcija Početak Kraj

Dolazak Kašnjenje usluživanja Aktivnost usluživanja Vreme Vreme Kupac n+1

Početak Kraj Dolazak Kašnjenje usluživanja Aktivnost usluživanja

Vreme Vreme

Kupac n

Page 7: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

3.1.3 Ručna simulacija upotrebom planiranja događaja

U upravljanju planom događaja simulacije, upotrebljava se simulaciona tabela u koju će se beležiti uspešni snimci stanja u sistemu u toku vremena.

PRIMER 3.3: Jednokanalni red za čekanje Razmatrajući prodavnicu koja ima jednu kasu. Sistem se sastoji od kupaca u redu i još jednog kupca, ako postoji, koji upravo odlazi. Predviđeno vreme za ovaj primer je 60 minuta. Model sadrži sledeće komponente:

Stanje sistema: (LQ(t), LS(t)), gde je LQ(t) broj kupaca u redu, i LS(t) je broj usluženih kupaca (0,1) u vremenu t. Događaji dolazak (A), odlazak (D), događaji zaustavljnja (E) predviđeni da se dogode posle t=60.

Zapažanja o događaju (A,t) predstavlja dolazak koji će se dogoditi u vremenu t (D,t) predstavlja odlazak u vremenu t (E,t) predstavlja stopiranje simulacije posle vremena 60.

Aktivnosti vreme međudolazaka definisano u tabeli A i vreme opsluživanja definisano u tabeli B.

Kašnjenje – vreme koje je kupac potrošio čekajući u redu.

Zapažanja o događaju zapisana su kao tip događaja, (trenutak događaja). U ovom modelu FEL će uvek sadržati najmanje dva ili tri zapažanja o događaju. Uticaji dolaznih i odlaznih događaja su prikazani na slikama 3.5 i 3.6. Simulaciona tabela za odjavni brojač data je u tabeli 3.1. Čitač treba da pokrije sve snimke tabela osim jednog. Počinjuči od prvog i pokušavajući da izvede sledeći snimak sistema iz prethodnog, sl. 3.5 i 3.6. vreme međudolazaka i vreme usluživanja će biti identično sa onim u tabeli 2.10:

Vreme međudolazaka 1 1 6 3 7 5 2 4 1 ... Vreme opsluživanja 4 2 5 4 1 5 4 1 4 ...

Početni uslovi su da prvi kupac stiže na vreme t=0 i započne uslugu. Ovo se odražava na tabelu 3.1 na snimanje sistema u trenutku nula (ČASOVNIK=0), sa LQ(0)=0, LS(0)=1 i događaji dolaska i odlaska su na FEL. Takođe, predviđa se kraj simulacije u t=60. Samo dve karakteristike će biti zabeležene, opsluživanje i maksimalna dužina reda. Opsluživanje je izraženo kao ukupno radno vreme (B) podeljeno sa ukupnim vremenom (TE)- ukupno radno vreme, B, i maksimalna dužina reda, MQ, će biti prikupljena kako simulacija napreduje. Kolona nazvana „komentari“ je uključena da pomogne čitaocu, (a* i S* su generisana međuvremena i vremena opsluživanja). Čim se završi snimanje sistema u trenutku ČASOVNIK=0, simulacija počinje. U trenutku nula bliski događaj je (A,1) ČASOVNIK se pomera na vreme 1, i (A,1) se uklanja sa FEL-a. Pošto LS(t)=1 za t≤≤ 10 (npr. Službenik je bio zauzet jedan minut), kumulativno radno vreme se povećava sa B=0 na B=1. Po logičkom događaju na slici 3.6 LS(1)=1 (službenik postaje zauzet). Na FEL ostaju tri buduća događaja, (A,2), (D,4), (E,60). ČASOVNIK se pomera na vreme =2, i dolazni događaj se izvršava. Simulacija u tabeli 3.1 pokriva vremenski interval (0,23). U simulacionom trenutku 23, sistem se prazni ali sledeći

događaj se isto dešava u trenutkuj 23. Službenik je bio zauzet 21 od 23 vremenskih jedinica koje su simulirane i maksimalna dužina reda je bila 2. Ova simulacija je naravno previše kratka da bi dovela do pouzdanih zaključaka. Vežba 1, zahteva da čitaoc nastavi simulaciju i uporedi rezultate sa onim u primeru 2.1. Primetićemo da simulaciona tabela daje stanje sistema za sve trenutke a ne samo za trenutke u listi. Npr., od trenutka 11 do trenutka 15 postoji jedan kupac koji se opslužuje i jedan koji čeka.

Kada je algoritam predviđenih događaja kompijuterizovan, samo jedan snimak sistema (trenutni ili delimično ažuriran) se čuva u memoriji kompijutera. Uz ideju o implementiranju zakazivanja događaja pomoću JAVE ili nekog drugog programskog jezika opšte upotrebe, treba poštovati sledeća pravila. Novi snimak sistema može biti izveden samo sa prethodnog snimka, nove generisane slučajno promenljive, slike 3.5 i 3.6. Prethodni snimci neće biti uzeti u obzir prilikom napredovanja sata. Trenutni snimak mora sadržati sve neophodne informacije za nastavak simulacija.

Page 8: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Slika 3.5 Proces simulacije izvršavanja dolazaka

Slika 3.6 Proces simulacije izvršenja odlaska

korak 4

da li je LQ(t)>0 ?

Smanjiti LQ(t) za 1

Podesiti LS(t)=0

Odlazni događaj dešava se u ČASOVNIK=t

Generisati vreme opsluživanja s*; predvideti novi odlazak u t+s*

Prikupiti statističke podatke

Vratiti kontrolu na unapred podešeno stanje za nastavak simulacije

da ne korak 3 korak 3

korak 5

korak 3

korak 4

da li je LS(t)=1

?

Podesiti LS(t)=1

Dolazni događaj, dešava se u čas.=t

Generisati vrene opsluživanja S; predvideti novi odlazak u t+S*

Prikupiti statističke podatke

Generisati vreme međudolaska a* ; Predvideti sledeći događaj u trenutku t+a*

da ne

korak 3

korak 5

Vratiti kontrolu na unapred podešeno stanje za nastavak

simulacije

korak 4

povećava LQ(t) za 1

Page 9: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

stanje sistema Lista budućih događaja Kumulativna statistika ČASOVNIK LQ(t) LS(t) FEL komentar B MQ

0

0

1

(A,1) (D,4) (E,60)

Prvi se dešava A (a*=1) predviđa sledeće A (s*=4) predviđa prvo D

0

0

1

1

1

(A,2) (D,4) (E,60)

Drugi se dešava: (A,1) (a*=1) predviđa sledeće A (kupac čeka)

1

1

2

2

1

(D,4) (A,8) E(60)

Treći se dešava: (A,2) (a*=6) predviđa sledeće A (dva kupca čekaju)

2

2

4

4

1

(D,6) (A,8) (E,60)

Prvi se dešava: (D,4) (s*=2) predviđa sledeće D (kupac čeka)

4

2

6

0

1

(A,8) (D,11) (E,60)

Drugi se se dešava: (D,6) (s*=5) predviđa sledeće D

6

2

8

1

1

(D,11) (A,11) (E,60)

Prvo se dešava: (A,8) (a*=3) predviđa sledeće A (kupac čeka)

8

2

11

1

1

(D,15) (A,18) (E,60)

Prvo se dešava: (A,11) (a*=7) predviđa sledeće A Treće se dešava: (D,11) (s*=4) predviđa sledeće D (kupac čeka)

11

2

15

0

1

(D,16) (A,18) (E,60)

Četvrto se dešava: (D,15) (s*=1) predviđa sledeće D

15

2

16 0 0 (A,18) (E,60) Peto se dešava: (D,16) 16 2

18

0

1

(D,23) (A,23) (E,60)

Šesto se dešava A (a*=5) predviđa sledeće A (s*=5) predviđa sledeće D

16

2

23

0

1

(D,27 (A,25)) (E,60)

Sedmo se dešava: (A,23) (a*=2) predviđa sledeći dolazak Često se dešava D: D,23)

21

2

Primer 3.5 Kiper-problem Šest kipera se upotrebljavaju za prevoz uglja od ulaza malog rudnika do železnice. Grafik 3.7. je šema kretanja ovih kamiona. Svaki kamion se puni jednim od raspoloživa dva bagera za punjenje. Najpre, kada se kamion napuni prvo ide na vagu za merenje - to je prva operacija. I kod bagera i kod vage važi pravilo opsluživanja: Ko prvi dođe prvi je opslužen.

Šema 3.7. Kiper-problem

Tabela simulacije 3.2 Tabela za primer 3.4 Sistem Stanje Budući dogadjaj kumulativna statistika

vreme LQ(t) LS(t) CHECKOUT LINE List S ND F

Page 10: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

0 0 1 (Cl,0) (A,1,C2) (D,4, CD (E,60) 0 0 0 1 1 1 (Cl,0)(C2,l) (A.2.C3) (D,4,C1) (E,60) 0 0 02 2 1 (Cl,0) (C2,l)(C3,2) (D,4,C1) (A,8,C4) (E,60) 0 0 04 1 1 (C2,l) (C3,2) (D,6,C2) (A,8,C4) (E. 60) 4 1 06 0 1 (C3,2) (A,8,C4) (D,11,C3) (E,60) 9 2 18 1 1 (C3,2) (C4,8) (D,11,C3) (A,11,C5) (E,60) 9 2 111 1 1 (C4.8) (C5,ll) (D,15,C4) (A,18,C6) (E,60) 18 3 215 0 1 (C5.ll) (D,16,C5) (A,18,C6) (E,60) 25 4 316 0 0 (A,18,C6) (E,60) 30 5 418 0 1 (C6,18) (D,23,C6) (A,23,C7) (E,60) 30 5 423 0 1 (C7,23) (A,25,C8) (D,27,C7) (E.60) 35 6 5

Vreme od bagera do vage je nepoznato. Posle merenja kamionu se meri vreme za koje on izvrši istovar i vrati se u red za punjenje. Vremena za punjenje, merenje i vreme putovanja su data u tabelama 3.3, 3.4 i 3.5. a posebno su u tabeli A1 dati slučajni brojevi koji se koriste da bi se izračunala ova vremena. Svrha ove simulacije je da se proračuna korišćenje vage i bagera (procenat vremena korišćenja). Ovaj model ima sledeće komponente:

Stanje sistema LQ(t), L(t), WQ(t), W(t), Obaveštenja o događaju:

LQ(t)- broj kipera u redu čekanja za utovar (ALQ, t, DTi), kiper I stiže u red čekanja za punjenje (ALQ) za vreme t L(t) - broj kipera (0,1 ili 2) koji se pune (EL, t, DTi), kiper I završi utovar (EL) za vreme t WQ(t)-broj kipera u redu čekanja za meranje (EW, t, DTi) kiper I završava merenje za vreme t W(t)- broj kipera (0ili1) koji se mere

Tabela 3.3 Vreme utovara verovatnoca Akumulativna verovatnoca Dodati slučajni brojevi

5 10 15

0.30 0.50

0.30 0.80 1.00

1-3 4-8 9-0

Tabela 3.3. Raspodela vremena punjenja kipera

Tabela 3.4. Distribucija vremena merenja kipera

vreme putovanja verovatnoca akumulativna Dodati slucajni brojevi 40 0.40 0.40 1-4 60 0.30 0.70 5-7 80 0.20 0.90 8-9 100 0.10 1.00 0

Tabela 3.5. Distribucija vremena putovanja kipera Grupa podataka šest kipera ( DT1........DT6) Red čekanja za punjenje, svi kamioni koji čekaju da se pune poređani su. Ko prvi uđe biće prvi opslužen. Red merenja, svi kamioni koji čekaju da se izmere poređani su. Ko prvi uđe biće prvi opslužen. Aktivnost: vreme punjenja, vreme merenja i vreme putovanja. Zadržavanja: u redu za punjenje i merenje Tabela simulacije je pokazana u tabeli 3.6. Pretpostavljeno je da su 5 kipera kod bagera a 1 kod vage za vreme 0. Aktivno vreme je uzeto iz sledeće liste po potrebi :

Vreme punjenja punjenja 10 5 5 10 15 10 10 Vreme merenja 12 12 12 16 12 16 Vreme putovanja 60 100 40 40 80

Page 11: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

liste Vreme t Stanje sistema Loader

Queue Weigh Queue Lista buducih dogadjaja

akumulativna statistika

LQ{t) L(t) WQ(t) W(t) BL 0 3 2 0 l DT4

DT5 DT6

(EL, 5, DT3) (EL, 10, DT2) (EW, 12, DTI) 0 0

5 2 2 1 l DT5 DT6

DT3 (EL, 10, DT2) (EL, 5 + 5, DT4) (EW, 12, DTI) 10 5

10 1 2 2 i DT6 DT3 DT2

(EL, 10, DT4) (EW, 12, DTI) (EL, 10 + 10, DT5) 20 10

10 0 2 3 l DT3DT2 DT4

(EW, 12, DTI) (EL, 20, DT5) (EL, 10 + 15, DT6) 20 10

12 0 2 2 l DT2 DT4

(EL, 20, DT5) (EW, 12+12, DT3) (EL, 25, DT6) (ALQ, 12 + 60, DTI) 24 12

20 0 1 3 l DT2 DT4 DT5

(EW, 24, DT3) (EL, 25, DT6) (ALQ, 72, DTI) 40 20

24 0 1 2 l DT4 DT5

(EL, 25, DT6) (EW, 24 + 12, DT2) (ALQ, 72, DTI) (ALQ, 24 + 100, DT3) 44 24

25 0 0 3 l DT4 DT5 DT6

(EW, 36, DT2) (ALQ, 72, DTI) (ALQ, 124, DT3) 45 25

36 0 0 2 l DT5 DT6

(EW, 36 + 16, DT4) (ALQ, 72, DTI) (ALQ, 36 + 40, DT2) (ALQ, 124, DT3) 45 36

52 0 0 1 l DT6 (EW, 52 + 12, DT5) (ALQ, 72, DTI) (ALQ, 76, DT2) (ALQ, 52 + 40, DT4) (ALQ, 124, DT3)

45 52

64 0 0 0 l (ALQ, 72, DTI) (ALQ, 76, DT2) (EW, 64 + 16, DT6) (ALQ, 92, DT4) (ALQ, 124, DT3) (ALQ, 64 + 80, DT5)

45 64

72 0 1 0 l (ALQ, 76, DT2) (EW, 80, DT6) (EL, 72 + 10, DTI) (ALQ, 92, DT4) (ALQ, 124, DT3) (ALQ, 144, DT5)

45 72

76 0 2 0 l (EW, 80, DT6) (EL, 82, DTI) (EL, 76 + 10, DT2) (ALQ, 92, DT4) (ALQ, 124, DT3) (ALQ, 144, DT5)

49 76

Tabela 3.6. Tabela simulacije za kiper (primer 3.5.)

Kada se završi utovar (EL), kažemo za kiper j u vremenu t, moguće je da se drugi događaji aktiviraju. Ako je vaga slobodna (w(t)-0) kiper j počinje da se meri ; kraj merenja priprema se za (LBD). Ako je vaga zauzeta onda se kamion priključi u redu za čekanje (inače kamion čeka u red). Ako za ovo vreme, ima drugi kamion koji čeka za punjenje on će biti sklonjen iz reda i počeće da se puni kada se završi utovar prethodnog na (FEL). Prema ovoj logici događaja, znači kada se završi utovar i ona druga dva događaja trebalo bi da se predstave dijagramom događaja, kao u dijagramu 3.5, 3.6. u primeru 3.3. Kao pomoć čitaocu u tabeli 3.6. kad god je novi događaj planiran, vreme događaja je upisano kao ‘ ?+(vreme aktivnosti) ‘. Na primer za vreme 0 najbliži sledeći događaj je (EL) za vreme 5. Ako je vreme t=5, kamion uđe u red za merenje (zbog toga što je vaga zauzeta) i kamion 4 počne da se puni. Prema tome događaj EL je planiran za kamion 4 u buduće vreme 10, proračunato kao (sadašnje vreme)+(vreme utovara)=5+5=10. Da bi proračunao upotrebu bagera i vage dve akumulativne statistike su održane :

Bi= ukupno korišćeno vreme oba bagera za vreme 0 do vremena t Bs=ukupno korišćeno vreme vage za vreme 0 do vremena t

Kada su oba bagera zauzeta u vremenu od 0 do 20, tada je Bi=40 pri vremenu t=20 ali od vremena 20 do 24 samo jedan bager je zauzet, tako da se Bi povećava samo za 4 min. Za vremenski interval (20,24). Slično ovom, u intervalu 25 do 36 oba bagera su u stanju mirovanja (L(25)=0) tako da se Bl ne menja. Za relativno kratku simulaciju u tabeli 3.6. korišćeni su :

Page 12: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Prosečno korišćenje bagera =76

2/49 = 0.32

Prosečno korišćenje vage = 7676

= 1.00

Ove procene se ne mogu shvatiti kao tačno, dugoročno ‘stalno stanje’ bagera i vage. Znatno duža simulacija bi bila potrebna da smanji efekat pretpostavljenih uslova za vreme 0 (5 od 6 kipera je kod bagera) da bi se realizovale tačne procene. S druge strane, ako bi analitičar bio zainteresovan za tzv. prelazno ponašanje sistema preko kratkog vremenskog perioda (jedan ili dva sata), kad bi koristili ponovo ove prethodne uslove, onda rezultati u tabeli 3.6. mogli bi se predstaviti kao prolazno ponašanje. Da bi dobio što više proba mora da se uradi i veći broj simulacija, ali svaka simulacija bi imala iste početne uslove jedino bi se menjali slučajni brojevi da bi se saznala aktivna vremena. Tabela 3.6. simulacija kipera, mogla je biti uprošćena kada kiperi ne bi bili eksplicitni kao podaci-obaveštenja o događajima bi mogli da se pišu kao (El,t) i tako dalje i stanje varijabila bi se koristilo da meri koliko kipera ima u svakom delu sistema a ne koji je kamion bio u pitanju. Ovom prezentacijom mogli bi smo dobiti istu statistiku korišćenja. S druge strane, kada bi procenjivali, ako bi prosečno vreme reakcije ‘sistema’ ili proporcija vremena kamiona koji provedu više od 30 min u sistemu, gde se sistem odnosi na red čekanja kod bagera a drugi na red čekanja kod vage. Grupa podataka koji su vezani za kiper u zapisu (DTi) zajedno sa atributom vremena stizanja kod bagera su neophodni. Kada bi kamion napustio vagu vreme reakcije tog kamiona bi se proračunalo kao sadašnje vreme simulacije (t) minus atribut vremena stizanja. Ovo novo vreme reakcije bi se koristilo da se ažuriraju akumulativne statistike :

S= ukupno vreme reakcije kamiona koji su bili u sistemu F= broj kamiona kod kojih je vremenska reakcija bila veća od 30 min

Ovaj primer pokazuje da, donekle, kompleksnost modela zavisi od cilja - sadržaja procene. Porimer 3.6. Događaji i aktivnosti su predstavljeni u primeru 3.5. Uslovi za početak su : Aktivnost : uslov : Vreme punjenja kiper je prvi u redu čekanja kod bagera i makar jedan bager je slobodan Vreme merenja kamion je na početku reda za merenje i vaga je slobodna vreme putovanja kamion je završio sa merenjem Korišćeni model interakcije posmatramo kao model jednog kamiona i njegov ‘radni ciklus’. Razmatrati da radni ciklus počinje u redu čekanja kod bagera. Proces možemo videti u dijagramu 3.8.

3.2 OBRADA LISTE Obrada listi bavi se metodama manipulacija listama podataka i listom budućih događaja. Simulacijom paketi obezbeđuju, i jasno i sveobuhvatno za upotrebu analitičarima i za simulacione mehanizme koji stoje iza jezike, sredstva za analitičara ili sam model za korišćenje listi i izvođenje osnovih operacija na listama. Odeljak 3.2.1 opisuje osnovne karakteristike i operacije izvedene na listama. Odeljak 3.2.2 razmatra upotrebu nizova za obradu listi a upotreba niza ima za svrhu stvaranje povezanih listi, stim što su nizovi jednostavniji mehanizam za opis jednostavnijih operacija nego opštije dinamički dodeljene povezane liste razmatrane u odeljku 3.2.3. Na kraju, odeljak 3.2.4 u kratkim crtama uvodi neke od savremenijih tehnika za razumevanje listi. Svrha ovog razmtranja obrade listi nije da se čitalac pripremi da primeni liste i njihovu obradu u nekom jeziku opšte svrhe kao što je FORTRAN, C++, ili Java, već radije da poveća razumevanje listi kod čitaoca i koncepata koje iza njih stoje.

Slika 3.8 Obrada kipera

Page 13: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

3.2.1 Liste: osnovne karakteristike i operacija Kao što je predhodno već razmotreno, liste predstavljaju komplet poređanih dosijea po važnosti. Kod stimulacije, svaki dosije predstavlja jednu grupu podataka ili jedan uočeni događaj. Liste su rangirane, tako da imaju vrh ili glavu ( prvu poziciju na listi); neki način za pregled liste ( da bi se našle druge , treće itd. pozicije na listi); i dno ili rep ( poslednju poziciju na listi). Pokazivač glave je promenljiva koja pokazuje na ili označava dosije na vrhu liste. Neke primene listi takođe imaju pokazivač repa koji pokazuje na poslednju poziciju 7 na listi. U cilju daljeg razmatranja, grupa podataka, zajedno sa svojim dodacima ili obaveštenjem o događaju, biće u daljem tekstu nazivana dosije. Deo za prepoznavanje grupe podataka i njenih dodataka su polja u dosijeu; tip događaja, vreme događaja i svi drugi podaci koji se odnose na događaj predstavljaju polja u dosijeu za prepoznavanje događaja. Svaki dosije na listi takođe će imati polje koje sadrži sledeći pokazivač, koji pokazuje na sladeći dosije na listi, obezbeđujući način za pregled liste. Neke liste takođe zahtevaju“ predhodni pokazivač“ , kako bi omogućile pregled liste sa dna do vrha. Za bilo koji novi tip liste, glavne aktivnosti u obradi liste su dodavanje dosijea listi i uklanjanje dosijea sa liste. Konkretnije, glavne operacije na listi su sledeće:

1. Uklanjanje dosijea sa vrha liste; 2. Uklanjanje dosijea sa bilo kojeg mesta na listi; 3. Dodavanje grupe podataka vrhu ili dnu liste; 4. Dodavanje dosijea proizvoljnom položaju na listi, i to onom koji je konkretno označen pravilom o redosledu.

Prva i treća operacija, uklanjanje ili dodavanje dosijea vrhu ili dnu liste, moze da se sprovede u minimalnom vremenskom roku podešavanjem dva pokazivača dosijea i pokazivačem glave ili repa, dok preostale dve operacije zahtevaju u najmanju ruku delimičnu pretragu liste. Pravljenje ove dve operacije efikasnim predstavlja cilj tehnika za obradu liste. Kod pristupa pravljenja dinamike događaja, kada je vreme poodmaklo, i neizbežni događaj treba da se izvrši, operacija ukalanjanja događa se prva – naime događaj na vrhu FEL skida se sa FEL. Ako se proizvoljni događaj poništava ili se grupa podataka uklanja sa liste na osnovu nekih njenih atributa ( recimo, na primer, njenog prioriteta i datuma događaja) da bi se počela aktivnost, tada se izvodi druga operacija uklanjanja. Kada se grupa podataka pridruži zadnjem delu reda dobijenog po principu prvi ulaz prvi izlaz primenjenom kao lista, tada se izvodi treća operacija, koja dodaje grupu podataka na dnu liste. Na kraju, ako red ima pravilo rangiranja po principu najraniji mogući datum prvi, tada, po dolasku u red, grupa podataka mora da se doda listi ni na vrhu ni na dnu, već na mestu određenom po pravilu rangiranja prema odgovarajućim datumima. Za simulaciju na kompjuteru, bilo preko jezika opšte namene ( kao što su FORTRAN, C++ ili Java) ili preko simulacionog paketa, svaki dosije sa grupom podataka i beleška o događaju memoriše se na fizičkoj lokacioji u memeoriji kompjutera. Postoje dve osnovne mogućnosti: (a svi dosijei memorišu se u nizovima. Nizovi sadrže sukcesivne dosijee u dodirnim lokacijama u memoriji kompjutera. Oni stoga mogu da se dobiju pomoću indeksa niza koji može da se osmisli kao broj reda u matrici, (b sve grupe podataka i beleške o događajima predstavljene su strukturama (kao u C) ili klasa ( kao kod Java), dodeljenim po potrebi iz RAM memorije, i pronađenim preko pokazivača dosijea ili strukture. Većina simulacionih paketa koriste dinamički dodeljene dosijee i pokazivače za praćenje listi za praćenje podataka, pošto su nizovi koncepcijski jednostavniji, pa je koncept povezanih listi prvo objašnjen kroz nizove i pokazivače indeksa u odeljku 3.2.2 a zatim primenjen na dinamički dodeljene dosijee i pokazivače u odeljku 3.2.3.

3.2.2. Korišćenje nizova za obradu listi Metod niza za memorisanje listi tipičan je za FORTRAN, ali može da se koristi i kod drugih proceduralnih jezika. Većina verzija FORTRAN-a nema stvarne strukture podataka tipa dosijea, ali dosije može da se primeni kao red u dvodimanzionalnom nizu ili kao broj paralelnih nizova. Radi lakše upotrebe, koristimo oznaku R (z ) da bi se odnosli na ;- I dosije u nizu, međutim može da se memoriše i u jeziku koji se koristi. Većina modernih simulacionih paketa ne koriste nizove za simulaciju LISTE VEĆ RADIJE UPOTREBLJAVAJU DINAMIČKI DODELJENE DOSIJEE- tj, dosijee koji se stvaraju nakon prvog koji je potreban i uništavaju kada više nisu potrebni. Nizovi imaju tu prednost što bilo koji konktretan dosije, recimo * - I, može da se brzo izvuče bez pretraživanja, jednostavno navođenjem oznake R (z). Nizovi predstavljaju nedostatak kada se podaci dodaju sredini liste ili kada lista mora da se preuredi. Pored toga nizovi tipično imaju fiksnu veličinu, utvrđenu u vreme prikupljanja ili nakon početnog dodavanja, kada program po prvi put počinje da radi. Kod simulacije, maksimalan broj dosijea za bilo koju listu moglo bi da bude teško ( nemoguće) predvideti, a trenutni broj njih na listi može u širokoj meri da varira u odnosu na tok izvedene simulacije. Što je još gore, većina simulacija zahteva više od jedne liste; ako se one čuvaju u odvojenim nizovima, svaki bi morao da se dimenzionše do najveće moguće liste, potencijalno koristeći dodatne količine memorije kompjutera.

Page 14: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Kod upotrebe nizova za memorijske liste, postoje dva osnovna metoda za praćenje rangiranja dosijea na listi. Jedan metod je da se momoriše prvi dosije u R (1), drugi R (2) itd., a poslednji u R (tailptr), gde se tailptr koristi da za poslednji podatak na listi. Mada jednostavan po konceptu i lak za razumevanje, ovaj metod će biti izuzetno neefikasan za sve osim najkraćih listi, onih sa manje od pet ili slično dosijea, za dodavanje podatka, npr., u položaju 41 sa listi od 100 pozicija zahtevaće da se poslednjih 60 dosijea fizički pomeri na dole za po jedan položaj u nizu da bi napravili prostor za novi dosije. Čak i ako bi lista bila napravljena po principu prvi ulaz prvi izlaz, uklanjanje pozicija sa liste bilo bi neefikasno, pošto bi sve ostale pozicije morale da se fizički pomere za po jedan položaj u nizu. Metod rukovanja listama pomoću fizičkog preuređivanja neće dalje biti razmatran. Ono što je potrebno je metod za praćenje i preuređivanje logičkog redosleda pozicija na listi bez potrebe za fizičkim pomeranjem dosijea u memoriji kompjutera. Kod drugog metoda, promenljiva koja se naziva pokazivač glave, pod imenom headptr, pokazuje dosije na vrhu liste. Naprimer, ako je dosije u položaju R(1 1) dosije na vrhu liste, tada bi headptr imao vrednsot 11. Pored toga svaki dosije ima polje koje memoriše indeks ili pokazivač sledećeg dosijea na listi. Radi lakšeg manipulisnja, dozvolite da R (i, sledeći) predstavlja polje sledećeg indeksa.

Primer 3.7 Lista za kipere u redu za merenje težine. U primeru 3.5 (problem kipera), predpostavimo da je red za čekanje sa tri kipera registrovan u redu za merenje težine, konkretno kiper 3, kiper2, i kiper 4, po tom redosledu, u tačno 10.00 sati u tabeli 3.6. predpostavimo dalje da ovaj model traga za jednim atributom svakog kipera: njegovim vremenom dolaska u red za merenje težine i ažurira svako vreme njegovog dolaska. Konačno predpostavimo da se grupe podataka memorišu u dosijeima u nizu dimenzionisanom od 1 do 6, po jedan dosije za svaki kiper. Svaka grupa podataka predstavljena je dosijeom sa tri polja: prvo je za prepoznavnaje grupe podataka, drugo je vreme dolaska u red za merenje težine, poslednje je polje pokazivača za „ pokazivanje na“ sledeći dosije. Ukoliko postoji, na listi koja predstavlja red za merenje težine, kao što sledi:

( kiper 7, vreme dolaska u red za mernje težine, sledeći indeks) Pre njegovog prvog dolaska u red za merenje težine, i pre nego što se doda listi za merenje težine, drugo ni treće polje kipera su bez značaja. U vreme 0, dosijei bi mogli da se otpočnu na sledeći način:

R(1) = [ DTI, 0.0, 0] R(2) = [ DT2, 0.0, 0] R(6) = [ DT6, 0.0, 0]

Zatim u vreme sa sata 10 kod simulacije u tabeli 3.6, lista podataka u redu za merenje težine bila bi definisana pomoću:

headptr = 3 R(l) = [ DTI, 0.0, 0] R(2) = [ DT2, 10.0, 4] R(3) = [ DT3, 5.0, 2] R(4) = [DT4, 10.0,0] R(5) = [ DT5, 0.0, 0] R(6) = [ DT6, 0.0, 0] tailptr = 4

Za pregled liste, počnite sa pokazivačem glave, izvucite sledeći pokazivač tog dosijea, i nastavite, da bi ste stvorili listu po njenom logičnom redosledu:

headptr = 3 R(3) = [ DT3, 5.0, 2] R(2) = [ DT2, 10.0, 4] R(4) = [ DT4, 10.0, 0]

Nulti ulaz podataka za sledeći pokazivač u R(4), kao i tailptr =4, pokazuje da je kiper 4 na kraju liste. Koristeći sledeće pokazivače za listu po principu prvi ulaz, prvi izlaz, kao što je red za merenje težine u ovom primeru, čini operacije dodavanja i uklanjanja dosijea sa grupama podataka prilično jednostavnim, dok kiperi stižu i odlaze iz reda za merenje težine. U vreme sa sata 12, kiper 3 počinje sa merenjem težine i time napušta red za merenje težine. Da biste uklonili dosije sa grupom podataka kipera 3 sa vrha liste, ažurirajte pokazivač glave podešavajući ga da bude jednak vrednosti sledećeg pokazivača dosijea na vrhu liste. Slično tome, u vreme sa sata 20, kiper 5 stiže u red za merenje težine i staje na kraj reda. Da bi se dodao dosije sa grupom podataka za kiper 5 na dno liste, preuzimaju se sledeći koraci:

R (tailptr, sledeći)=5 ( ažurirajte polje sledećeg pokazivača predhodno poslednje pozicije) Tailptr=5 ( ažurirajte vrednost pokazivača repa)

Page 15: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Ovak pristup postaje nešto složeniji kada je rangirana lista, kada je lista budućih događaja, ili lista grupe podataka rangirana po njihovim atributima. Za rangirane liste, Da bi se dodala ili uklonila pozicija bilo gde osim na glavu ili rep liste obično se zahteva traganje. Imati u vidu da, kod problema kipera, red utovarivača bi takođe mogao da se primeni kao lista koja koristi istih šest dosijea i isti niz, zbog toga što će grupa podataka za svaki kiper biti na najviše jednoj od dve liste i, dok se tovari, meri težinu ili putuje, kiper neće biti ni na jednoj listi.

3.2.3. Korišćenje dinamičkog dodavanja povezanih listi Kod proceduralnih jezika, kao što su C++ i Java, i kod većine simulacionih jezika, dosijei sa grupom podataka se dinamički stvarju kada se stvori grupa podataka a dosijei sa saopštenjem o događaju dinamički se stvaraju kad god se događaj navede na listi budućih događaja. Sami jezici, ili operativni sistemi na kojima oni rade, održavaju povezanu listu slobodnih delova kompjuterske memorije i dodeljuju deo željene veličine radnim programima po zahtevu ( druga upotreba povezanih listi !) kada grupa podataka „umre“, tj. izađe iz simuliranog sistema, i takođe kada se događaj pojavi a saopštenje o njemu nije više potrebno, oslobađaju7 se odgovarajući dosijei, čineći taj deo kompjuterske memorije dostupnim za kasniju ponovnu upotrebu; jezik ili operativni sistem dodaje taj deo listi slobodne memorije. Predpostavićemo da se neophodne operacije odvijaju po potrebi. Kod dinamičkog dodeljivanja, dosije se poziva pokazivačem umesto indeksom niza. Kada je dosije dodeljen u C++ ili Javi, postupak dodeljivanja vraća pokazivač na dodeljeni dosije, koji mora da se memoriše u promenljivoj ili u polju nekog drugog dosijea za kasniju upotrebu. Pokazivač dosijea može da se smatra fizičkom ili logičnom adresom u komjuterskoj memoriji dosijea. U našem primeru, koristićemo sistem označavanja za dosijee indentične onima u predhodnom odeljku ( 3.2.2): Grupe podataka: ( lična karta, atributi, sledeći pokazivač) Obaveštenja o događaju: (tip događaja, vreme događaja, ostali podaci, sledeći pokazivač), ali mi nećemo da se na njih pozivamo sistemom označavanja pomoću niza R (() kao ranije , pošto bi to moglo da nas navede na pogrešan trag. Ako bi smo iz nekog razloga želeli i treću poziciju na listi, morali bi smo da pregledamo listu, brojeći pozicije dok ne bismo došli do trećeg dosijea. Za razliku od onog što smo imali u nizovima, ne postoji način da se direktno izvuče /-i dosije u povezanoj listi, pošto bi sami dosijei mogli da se memorišu na bilo kojoj proizvoljnoj lokaciji u kompjuterskoj memoriji a nisu memorisani u dodirnim tačkama, kao što nizovi jesu.

Primer 3.8. : Lista budućih događaja i problem kipera Počevši od tabele 3.6, obaveštenja o događaju kod problema kipera iz primera 3.5 proširuju se da bi obuhvatila pokazivač sledećeg obaveštenja o događaju na listi budućih događaja i mogu da se predstave pomoću

( tip događaja, vreme događaja, kiper (, sledeći pokazivač), Headplt =R (Headptl, sledeći)

U ovom primeru dobijamo:

Headptl=R ( 3, sledeči)=2 Što znači da je kiper 2 u R (2) sada na vrhu liste.

Slika 3.9. Lista budučih dogadjaja

Page 16: Literatura: Discrete-Event Sysrem Simulation, 2005 3 ...ttl.masfak.ni.ac.rs/Programski paketi/Simulacija-Koncept (prevod).pdf · Šta se modelira: U mašinstvu to su mašine, konvejeri

Lista budućih događaja za kiper kao povezana lista:

- na primer: ( EL,10, kiper 3, sledeči pokazivač)

Gde je EL zadnji utovar koji će se odigrati u budućem vremenu 10 za kiper 3, a polje nextptr pokazuje na sledeći dosije na FEL. Imajte u vidu da dosijei mogu da se memorišu bilo gde u memoriji kopjutera i konkretno nije neophodno da se memorišu jedan do drugog. Slika 3.9. predstavlja listu budučih dogadjaja u vremenu sa sata 10, uzetom iz tabele 3.6. Četvrto polje u svakom dosijeu nije vrednost pokazivača do sledećeg dosijea u listi budućih događaja. Jezici C++ i Java, i ostali jezici opšte namene, koriste različit sistem obeležavanja za referentne podatke iz promenljivih pokazivača. U svrhu daljeg razmatranja, ako je R pokazivač dosijea, tada je:

R- > - tip događaja, R - vreme događaja, R - * sledeći

predstavljaju tip događaja, vreme događaja i sledeći dosije za obaveštenje o događaju na koje R pokazuje. Na primer, ako je R podešeno da bude jednako pokazivaču glave za FEL na vremenu sa sata 10, tada je:

R- - tip događaja = EW R – vreme događaja = 12 R - sledeći je pokazivač za obaveštenje za drugi događaj na FEL,

tako da je: R ->- sledeći - * tip događaja = EL R - sledeći - > vreme događaja = 20 R > sledeći -

- * sledeći je pokazivač obaveštenja o trećem događaju na FEL Ako je jedno od polja pokazivača nula ( ili nulti) tada taj dosije predstavlja poslednju poziciju na listi, a promenljiva pokazivača tailptr pokazuje na taj zadnji dosije, kao što je uočeno na slici 3.9. Ono što smo opisali naziva se pojedinačno povezanim listama, zato što postoji jednosmerno povezivanje od glave liste do njenog repa. Pokazivač repa zadržava se najviše zbog lakšeg rada i efikasnosti, naročito za liste kod kojih se pozicije pridoidaju na dnu liste. Naravno, pokazivač repa nije striktno neohodan, zato što poslednja pozicija uvek može da se nađe pregledom liste, ali on zaista neke operacije čini efikasnijim. Iz nekih razloga, poželjno je vršiti pregled ili pretragu liste počevši od repa i pored glave. Zbog takvih razloga, može da se koristi dvostruko povezana lista. Dosijei na dvostruko povezanoj listi imaju dva polja pokazivača, jedno za sledeći dosije, a jedno za predhodni. Dobre reference koje razmatraju nizove, pojedinačno i dvostruko povezane liste, i pretragu i pregled listi su CORMEN etal (2001) i Sedgewick (1998).

3.2.4 Savremene tehnike Mnogi od savremenih simulacionih paketa koriste tehnike i predstavljanja listi koje su mnogo efikasnije nego traganje kroz dvostruko povezane liste. Jedna od ideja za ubrzavanje obrade ili dvostruko povezanih listi je upotrebiti srednji pokazivač pored pokazivača glave i repa. Kod posebnih tehnika srednji pokazivač uvek će pokazati na približnu sredinu liste, zatim, kada se listi dodaje novi dosije, algoritam prvo ispita srednji dosije da bi odlučio da li da počne pretragu na vrhu liste ili u sredini. Teoretski, izuzev nekih dodatnih troškova zbog održavanja srednjeg pokazivača, ova tehnika trebalo bi da vreme traganja prepolovi. Nekoliko savremenih tehnika koristi jednu ili više srednjih pokazivača, u zavisnosti od dužine liste. Neki savremeni algoritmi koriste drugačija predstavljanja liste osim dvostruko poveznae liste, kao što su gomile ili drveće.

3.3 Rezime Predstavljeni su: Glavni koncepti i Sastavni blokovi u simulaciji. To su: Grupe podataka i Atributi, Događaji i aktivnosti. Tri glavna naučna aspekta: Dinamika događaja, inerakcija procesa, skeniranje aktivnosti – su razmotrene.