2. Simulasi sistem terdiri dari :
1. Simulasi Sistem Diskrit, bila hanya didefinisikan pd titik-titik
waktu tertentu :
a. Kejadian Diskrit (Event Based Simulation)
b. Pendekatan Aktivitas (Activity Based Simulation)
c. Process Interaction Approach
d. Three Phase Approach
2. Simulasi Sistem Kontinyu, merupakan fungsi kontinyu dari
waktu :
a. Model Sistem Kontinyu :
- Sistem Statis state variables independen terhadap waktu
- Sistem Dinamis state variables merupakan fungsi waktu
b. Sistem umpan balik
c. Metode analog
3. Software Simulasi
Secara kasar software tools utk membangun discrete event
simulation dapat dikategorikan kedlm empat kategori :
1. General purpose languages
– C, Pascal, FORTRAN, C++, ADA, Java, dll.
2. Event Scheduled Simulation Languages
– SLAM, SIMAN, SIMPAS, SIM++, JAVASIM, dll,
3. Process Oriented Simulation Languages
– CSIM, EZSIM, GPSS, SIMAN, SLAM, GASP, JAVASIM dll.
4. Application Oriented Simulators
– Opnet, Comnet III, Tangram II, ns-2, Qualnet, Jade, dll.
Software tools utk membangun kontinyu simulation dapat
dikategorikan kedlm : VENSIM, SEESIM, Dynamo dll
4. Bagaimana Simulasi Diskrit Berjalan……..
(Programming Simulation)
– Time-driven: simulasi berjalan pd interval waktu
tertentu/fixed (mis. state ditentukan pada saat t, t + ∆t,
t + 2 ∆t, …)
Time-based simulation
– Event-driven: simulasi berjalan dari event-ke-event
(mis. state ditentukan pd titik waktu dari event
berikutnya)
Event-based simulation
1. Simulasi Diskrit
5. Contoh :
Mensimulasikan Discrete Event System (Event Approach)
pendekatan kejadian yakni pengembangan model simulasi didasarkan
pd adanya kejadian yg terjadi pd sistem
• States
Kumpulan variabel-variabel yg diperlukan utk karakterisasi sistem pada
sembarang titik waktu
• Entities
Objek-objek yg diproses dalam simulasi – mis. packet atau panggilan
telepon
• Attributes
Karakteristik dari entities (mis., panjang paket, tipe dan tujuan)
• Resources
Substansi/items dimana entities menduduki atau menggunakan (mis., buffer
space pd router, tokens pd FDDI network, bandwidth pd suatu link)
• Activities
Durasi waktu dimana panjangnya diketahui saat dimulai. Misalnya, waktu
transmisi dari suatu paket pd suatu link
• Delay
Durasi waktu dg panjang yg tdk terspesifikasi yg tdk diketahui sebelum
selesai. misalnya – waktu perjalanan suatu paket dari node A ke node B dlm
suatu jaringan
6. • Utk mengimplementasikan suatu event scheduling simulasi
perlu membangun suatu event list, secara tdk langsung perlu
membangun suatu deretan events
• Perhatikan contoh antrian Single Server (M/M1) – misalnya
pada proses permesinan.
• Ada EVENT bila ada job Datang dan Pergi (selesai di proses)
• Ada ACTIVITY bila job tsb di Proses`
A M
Job in servise
Job AntriArrive
Departure
Batas Sistem
Mesin/Proses
D
• Model
– IID Exponential interarrival time dg mean 1/λ
– IID Exponential service time dg mean 1/µ
• Ingin mendapatkan mean job delay dlm antrian
– Solusi analitis mean waiting time = ρ/ (µ - λ)
7. Adapun representasi komputasinya sbb :
Misal data waktu kedatangan (A) dan waktu permesinan (M) :
A1=55 A2=32 A3=24 A4=40 A5=12 A6=29 …… dstnya
S1=43 S2=36 S3=34 …..dstnya
Catatan :
data2 tsb diperoleh dari hasil Pembangkitan Bilangan Random
(Random Number Generator) berdasarkan distribusi kedatangan
dan proses (pelayanan) Minggu depan akan di jelaskan !!!
0 t1 t2 t3C1 C2 time
s1 s2 s3s0 s4 s5
A1 A2 A3
S1 S2
Illustrasi sistem antrian M/M/1 dengan pendekatan event time
8. Keterangan :
ti : wkt kedatangan customer ke i (to = 0)
Ai = ti – ti-1 = antar wkt kedatangan antara (i-1) dan customer ke I
Si : time server actually spends serving customer ke i (termasuk customer
delay pd antrian)
Di : delay in queue customer ke I
Ci : ti + Di + Si = wkt selesai melayani customer ke i dan pergi dari sistem
A1 datang pd wkt simulasi menit ke 55
A2 datang pd wkt simulasi menit ke 32 kemudian atau menit ke 87 (55 + 32) dst
A1 dilayani selama 43 menit (S1), selesai pd menit 98 (55 + 43) sehingga A2 yg
datang pd menit ke 87 menunggu hingga menit 98 (selama 11 menit) atau
menunggu hingga A1 selesai dilayani
A2 mulai dilayani pada menit ke 98 selama 36 menit (S2) dan selesai pd menit ke
134 (98 + 36) …..dstnya
9. Time = 0
System
System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
0
55
0 (8.00)
0 0 0
0 0 0
S
Time = 55
System
System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
Time = 87 System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
S
S
1
1
0
1
55
87
55
1
87
1
0
0
0
0
98
87
98
111
87
1
customer
2
customer
1
10. Time = 98
System
System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
98
111
134
2 11 11
1 0 98
S
Time = 111 System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
Time = 134
System
System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
S
S
1
1
1
0
11
1
134
11
1
2
134
3
11
34
11
34
111 134
151
168
151
2
customer
3
customer
2
customer
3
11. Time =
System
System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
S
Time = System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
Time =
System
System State
Status Number in Time of Last
Queue Event
Time of Arrival
A
D
Clock Event List
Statistical Counters
Number Total Area
delay delay under Q(t)
S
S
customer
customer
customer
12. Pemrograman Simulasi Diskrit
Komponen & Pengorganisasian Model Pemrograman
• System State
menggambarkan keadaan sistem pd suatu waktu tertentu
• Simulation Clock
Jam simulasi yang menentukan waktu terjadinya event
• Even List
Daftar yg memuat kejadian berikutnya
• Statistical Counter
variabel2 yg dipakai utk menghitung statistik (memberikan informasi
statistik tentang performance sistem)
• Initialization Routine
sub-rutin untuk memulai/menolkan waktu simulasi
• Timing Routine
sub-rutin utk menentukan event berikutnya dan melanjutkan jam
simulasi untuk event berikutnya
• Event Routine
sub-rutin utk meng-update state (keadaan) sistem ketika suatu
event terjadi
13. • Report Generator
sub-rutin estimasi perhitungan (dari statistical counter) dan mencetak
laporan
• Main Program
sub-program untuk memanggil timing routin untuk menentukan event
berikutnya dan meng-update keadaan sistem
Hubungan logical (flow control) dari masing-masing
komponen tersebut sebagai berikut :
14. Hubungan Logical (Flow Chart)
1. Set simulation clock = 0
2. Initialize system state and
statistical counters
3. Initialize event list
1. Call the timing routine
2. Call event routine i
1. Update system state
2. Update statistical counters
3. Generate future events and
add to the event list
1. Compute estimates of interest
2. Print Report
1. Determine the next
event type, misal i
2. Advance the
simulation clock
Is simulation
over ?
No
Yes
Initialization
Routine
Main
Program
Event
Routine i
Report
Generator
Timing Routine
Generate random
variates
Library Routine
15. Pemrograman (Bahasa Program FORTRAN) :
Beberapa asumsi tentang single-server queueing system yaitu waktu antar
kedatangan konsumen berdistribusi exponential, misal rata-rata 1 menit &
waktu pelayanan berdistribusi eksponential dgn rata-rata 0,5 menit. Simulasi
berhenti jika jumlah konsumen yg dilayani n = 1000 orang.
a. Event Deskripsi :
- Kedatangan / Arrival (A) = 1
- Kepergian / Departure (D) = 2
b. Sub – Routine :
Sub - Program Purpose
INIT
TIMING
ARRIVE
DEPART
REPORT
EXPON (RMEAN)
Initialisasi routine
Timing routine
Event routine (1)
Event routine (2)
Laporan simulasi (dipanggil ketika simulasi
selesai n = 1000)
Distribusi eksponential dgn rata-rata RMEAN
(λ = 1 dan μ = 0,5)
16. Definisi
MARRVT
MSERVT
TOTCUS
Waktu rata-rata antar kedatangan
Waktu pelayanan rata-rata
Jumlah total n yang selesai dilayani
c. Input Parameter :
d. Modeling variables :
Definisi
ANIQ
DELAY
NEVNTS
NEXT
NIQ
NUMCUS
RMEAN
RMIN
STATUS
TARRVL(1)
TIME
TLEVNT
TNE(1)
TOTDEL
U
Fungsi dari grafik jumlah dalam antrian
Lamanya customer dalam antrian
Jumlah event dalam simulasi (2 event yakni datang & pergi)
Jenis event yg terjadi berikutnya
Jumlah customer dalam antrian
Jumlah customer yg telah menyelesaikan waktu tunggunya
Rata-rata dari distribusi eksponential yg digunakan
Utk menyatakan event yg akan terjadi utk jangka yg masih lama
Status = 0 jika server idle dan staus = 1 jika sibuk
Waktu kedatangan customer ke I
Jam simulasi
Waktu kejadian terakhir
Wkt perubahan dari waktu sekarang ke waktu berikutnya
Total customer yg mengalami antrian
Variabel random berdistribusi uniform antara 0 dan 1 (utk
pembangkitan bilangan random)
17. Definisi
AVGDEL
AVGNIQ
Waktu antrian rata-rata
Panjang antrian rata-rata
e. Output Variables :
PEMROGRAMAN FORTRAN :
1. SUB-ROUTINE PROGRAM UTAMA
*** MAIN PROGRAM
INTEGER NEVNTS, NEXT, NIQ, NUMCUS, STATUS, TOTCUS
REAL ANIQ, MARRVT, MSERVT, TARRVL(100), TIME, TNE(2), TOTDEL
COMMON /MODEL/ ANIQ, MARVT, MSERVT, NEVNTS, NEXT, NIQ,
NUMCUS, STATUS, TIME, TLEVNT, TNE, TOTCUS, TOTDEL
*** SPECIFY THE NUMBER OF EVENT TYPES FOR THE TIMING ROUTINE
NEVNTS=2
*** READ INPUT PARAMETERS
REALD 10, MARRVT, MSERVT
10 FORMAT (2F, 10.0)
READ 20, TOTCUS
20 FORMAT (I 10)
Deklarasi
18. *** INITIALIZE THE SIMULATION
CALL INIT
*** DETERMINE THE NEXT EVENT
30 CALL TIMING
*** CALL THE APPROPRIATE EVENT ROUTINE
GO TO (40, 50), NEXT
40 CALL ARRIVE
GO TO 60
50 CALL DEPART
*** IF THE SIMULATION IS OVER, CALL THE REPORT GENERATOR AND END THE
*** SIMUALTION, IF NOT, CONTINUE THE SIMULATION
60 IF(NUMCUS.LT. TOTCUS) GO TO 30
CALL REPORT
STOP
END
19. 2. SUB-ROUTINE INITIALISATION :
SUBROUTINE INIT
INTEGER NEVNTS, NEXT, NIQ, NUMCUS, STATUS, TOTCUS
REAL ANIQ, MARRVT, MSERVT, TARRVL(1000), TIME, TLEVNT, TNE(2), TOTDEL
COMMON /MODEL/ ANIQ, MARRVT, MSERVT, NEVNTS, NEXT, NIQ, NUMCUS, STATUS,
1TARRVL, TIME, TLEVNT, TNE, TOTCUS, TOTDEL
*** INITIALIZE THE SIMULATION CLOCK
TIME=0
.
*** INITIALIZE THE ATATE VARIABLES
STATUS=0
NIQ=0
TLEVNT=0
*** INITIALIZE THE STATISTICAL COUNTERS
NUMCUS=0
TOTDEL=0
ANIQ=0
*** INITIALIZE THE EVENT LIST. SINCE NO CUSTOMERS ARE PRESENT, THE TIME OF THE
*** NEXT DEPARTURE (SERVICE COMPLETION) IS SET TO ‘INFINITY.’
TNE(1)=TIME+EXPON(MARRVT)
TNE(2)=1.E+30
RETURN
END
20. 3. SUB-ROUTINE TIMING :
SUBROUTINE TIMING
INTEGER NEVNTS, NEXT, NIQ, NUMCUS, STATUS, TOTCUS
REAL ANIQ, MARRVT, MSERVT, TARRVL(1000), TIME, TLEVNT, TNE(2), TOTDEL
COMMON /MODEL/ ANIQ, MARRVT, MSERVT, NEVNTS, NEXT, NIQ, NUMCUS, STATUS,
1TARRVL, TIME, TLEVNT, TNE, TOTCUS, TOTDEL
RMIN=1.E+29
NEXT=0
*** DETERMINE THE EVENT TYPE OF THE NEXT EVENT TO OCCUR
DO 10 I=1.NEVNTS
IF (TNE(I).E.RMIN) GO TO 10
RMIN=TNE(I)
NEXT=I
10 CONTINUE
.
*** IF THE EVENT LIST IS EMPTY (1.E., NEXT=0), STOP THE SIMULATION
*** OTHERWISE, ADVANCE THE SIMULATION CLOCK
IF (NEXT, GT.0) GO TO 30
PRINT 20
20 FORMAT (1h1, 5X, ‘EVENT LIST EMPTY’)
STOP
30 TIME=TNE(NEXT)
RETURN
END
21. FLOWCHART SUBROUTINE ARRIVE
Subroutine
ARRIVE
Schedule the next arrival
event
Set DELAY = 0 for this
customer and gather statistics
Add 1 to the number of
customers delayed
Make server busy
Schedule a departure
event for this customer
Return
Update area under the
number in queue function
Add 1 to the number in
queue
Store the time of arrival
of this customer
Return
22. 4. SUB-ROUTINE ARRIVE :
SUBROUTINE ARRIVE
INTEGER NEVNTS, NEXT, NIQ, NUMCUS, STATUS, TOTCUS
REAL ANIQ, MARRVT, MSERVT, TARRVL(1000), TIME, TLEVNT, TNE(2), TOTDEL
COMMON /MODEL/ ANIQ, MARRVT, MSERVT, NEVNTS, NEXT, NIQ, NUMCUS, STATUS,
1TARRVL, TIME, TLEVNT, TNE, TOTCUS, TOTDEL
***
23. FLOWCHART SUBROUTINE DEPART
Subroutine
DEPART
Update area under the
number in queue function
Subtract 1 from the number in
queue
Compute delay of
customer entering service
and gather statistics
Add 1 to the number of
customers delayed
Schedule a departure
event for this customer
Return
Make server busy
Set the time of the next
departure to infinity
Return
24. 5. SUB-ROUTINE DEPART :
SUBROUTINE DEPART
INTEGER NEVNTS, NEXT, NIQ, NUMCUS, STATUS, TOTCUS
REAL ANIQ, MARRVT, MSERVT, TARRVL(1000), TIME, TLEVNT, TNE(2), TOTDEL
COMMON /MODEL/ ANIQ, MARRVT, MSERVT, NEVNTS, NEXT, NIQ, NUMCUS, STATUS,
1TARRVL, TIME, TLEVNT, TNE, TOTCUS, TOTDEL
***
25. 6. SUB-ROUTINE REPORT :
SUBROUTINE REPORT
INTEGER NEVNTS, NEXT, NIQ, NUMCUS, STATUS, TOTCUS
REAL ANIQ, MARRVT, MSERVT, TARRVL(1000), TIME, TLEVNT, TNE(2), TOTDEL
COMMON /MODEL/ ANIQ, MARRVT, MSERVT, NEVNTS, NEXT, NIQ, NUMCUS, STATUS,
1TARRVL, TIME, TLEVNT, TNE, TOTCUS, TOTDEL
***
26. 7. SUB-ROUTINE FUNGSI EXPONENTIAL :
FUNCTION EXPON(RMEAN)
REAL RMEAN, U
*** GENERATE A U(0,1) RANDOM VARIABLE, THE FORM OF THIS STATEMENT DEPENDS
*** ON THE COMPUTER USED
U=RANUN (Z)
*** GENERATE AN EXPONENTIAL RANDOM VARIABLE WITH MEAN RMEAN
EXPON=-RMEAN*ALOG (U)
RETURN
END
8 . OUTPUT HASIL SIMULASI :
-------------------------------------------------------------------------
SINGLE-SERVER QUEUEING SYSTEM
REAL RMEAN, U
MEAN INTERARRIVAL TIME : 1.000 MINUTES
MEAN SERVICE TIME : .500 MINUTES
NUMBER OF CUSTOMERS : 1000
AVERAGE DELAY IN QUEUE : .497 MINUTES
AVERAGE NUMBER IN QUEUE : .500