Anda di halaman 1dari 26

SIMULASI SISTEM

input

Real
System

Pemodelan
System

Model
Simulasi

Pemrograman
Simulasi

Experiment/
Running

Terbagi 2 :
- Program Programming
- Program Modeling

Validasi

output
N

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

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

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

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`
Job in servise

A
Arrive

Job Antri

Departure

Mesin/Proses

Batas Sistem

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 = / ( - )

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 !!!

s0

s1

s2

s3

s4

s5

t1

t2

C1

t3

C2

A1

A3

A2

S1

S2

Illustrasi sistem antrian M/M/1 dengan pendekatan event time

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)

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

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 :

Hubungan Logical (Flow Chart)


Initialization
Routine

Main
Program

Event
Routine i

1. Set simulation clock = 0


2. Initialize system state and
statistical counters
3. Initialize event list
1. Determine the next
event type, misal i
2. Advance the
simulation clock
Timing Routine

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

Generate random
variates
Library Routine

Is simulation
over ?

No

Yes
Report
Generator

1. Compute estimates of interest


2. Print Report

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)
- Kepergian / Departure (D)

= 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

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)

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

*** 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

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

FLOWCHART SUBROUTINE ARRIVE


Subroutine
ARRIVE
Schedule the next arrival
event

Update area under the


number in queue function
Add 1 to the number in
queue

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

Store the time of arrival


of this customer
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
***

FLOWCHART SUBROUTINE DEPART


Subroutine
DEPART
Make server busy

Update area under the


number in queue function

Set the time of the next


departure to infinity

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

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
***

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
MEAN SERVICE TIME
NUMBER OF CUSTOMERS

: 1.000 MINUTES
: .500 MINUTES
: 1000

AVERAGE DELAY IN QUEUE


AVERAGE NUMBER IN QUEUE

: .497 MINUTES
: .500

Anda mungkin juga menyukai