input
Real
System
Pemodelan
System
Model
Simulasi
Pemrograman
Simulasi
Experiment/
Running
Terbagi 2 :
- Program Programming
- Program Modeling
Validasi
output
N
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.
1. Simulasi Diskrit
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
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
A
Arrive
Job Antri
Departure
Mesin/Proses
Batas Sistem
Model
IID Exponential interarrival time dg mean 1/
IID Exponential service time dg mean 1/
s0
s1
s2
s3
s4
s5
t1
t2
C1
t3
C2
A1
A3
A2
S1
S2
time
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
Time = 0
System State
Clock
Status
Number in
Queue
Time of Last
Event
Time of Arrival
System
Time = 55
customer
55
Status
Number in
Queue
Time of Last
Event
Time of Arrival
System
Time = 87
customer
Number
delay
Total
delay
A
D
Number
delay
Total
delay
87
87
87
Status
Number in
Queue
Time of Last
Event
Time of Arrival
A
D
Clock
0
Area
under Q(t)
87
98
Event List
Statistical Counters
System State
S
1
Clock
0 (8.00)
Event List
55
55
Statistical Counters
System State
S
1
A
D
0
Area
under Q(t)
111
98
Event List
Statistical Counters
Number
delay
Total
delay
0
Area
under Q(t)
Time = 98
System State
98
S
2
customer
Clock
98
Status
Number in
Queue
Time of Last
Event
Time of Arrival
System
Time = 111
System State
customer
111
Status
Number in
Queue
Time of Last
Event
Time of Arrival
3
Time = 134
System State
customer
System
11
Number
delay
Total
delay
A
D
11
Number
delay
Total
delay
A
D
Clock
134
Status
Number in
Queue
Time of Last
Event
Time of Arrival
11
Area
under Q(t)
151
134
Event List
Statistical Counters
134
134
Event List
Clock
111
Statistical Counters
111
111
S
2
A
D
11
Area
under Q(t)
151
168
Event List
Statistical Counters
34
Number
delay
Total
delay
34
Area
under Q(t)
Time =
A
D
System State
Clock
Event List
Statistical Counters
customer
Status
Number in
Queue
Time of Last
Event
Time of Arrival
System
Time =
Number
delay
Total
delay
Area
under Q(t)
A
D
System State
Clock
Event List
Statistical Counters
customer
Status
Number in
Queue
Time of Last
Event
Time of Arrival
Time =
Number
delay
Total
delay
Area
under Q(t)
A
D
System State
Clock
Event List
Statistical Counters
customer
System
Status
Number in
Queue
Time of Last
Event
Time of Arrival
Number
delay
Total
delay
Area
under Q(t)
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
Main
Program
Event
Routine i
Generate random
variates
Library Routine
Is simulation
over ?
No
Yes
Report
Generator
= 1
= 2
b. Sub Routine :
Sub - Program
INIT
TIMING
ARRIVE
DEPART
REPORT
EXPON (RMEAN)
Purpose
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)
c. Input Parameter :
MARRVT
MSERVT
TOTCUS
Definisi
Waktu rata-rata antar kedatangan
Waktu pelayanan rata-rata
Jumlah total n yang selesai dilayani
d. Modeling variables :
Definisi
ANIQ
DELAY
NEVNTS
NEXT
NIQ
NUMCUS
RMEAN
RMIN
STATUS
TARRVL(1)
TIME
TLEVNT
TNE(1)
TOTDEL
U
e. Output Variables :
AVGDEL
AVGNIQ
Definisi
Waktu antrian rata-rata
Panjang antrian rata-rata
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
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
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
Return
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
***
Return
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
***
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
***
: 1.000 MINUTES
: .500 MINUTES
: 1000
: .497 MINUTES
: .500