DISCRETE-EVENT SIMULATION MODEL

25
DISCRETE-EVENT SIMULATION MODEL

description

DISCRETE-EVENT SIMULATION MODEL. KOMPONEN & SUSUNAN D-E SM. System state : koleksi variabel state yang diperlukan untuk menggambarkan sistem pada saat tertentu. Simulation clock : variabel yang menghasilkan nilai terbaru saat itu ( current ) dari waktu tersimulasi. - PowerPoint PPT Presentation

Transcript of DISCRETE-EVENT SIMULATION MODEL

Page 1: DISCRETE-EVENT SIMULATION MODEL

DISCRETE-EVENT SIMULATION MODEL

Page 2: DISCRETE-EVENT SIMULATION MODEL

System state : koleksi variabel state yang diperlukan untuk menggambarkan sistem pada saat tertentu.

Simulation clock : variabel yang menghasilkan nilai terbaru saat itu (current) dari waktu tersimulasi.

Event list : daftar yang memuat waktu berikutnya ketika masing-masing event akan muncul.

KOMPONEN & SUSUNAN D-E SM

Page 3: DISCRETE-EVENT SIMULATION MODEL

Statistical counters : variabel yang digunakan untuk menyimpan informasi statistik tentang kinerja sistem.

Initialization routine : subprogram untuk menginisialisasi model pada saat t = 0.

Timing routine : subprogram yang menentukan event berikutnya dari event list dan kemudian memajukan simulation clock ke waktu di mana event berikutnya tersebut muncul.

KOMPONEN & SUSUNAN D-E SM

Page 4: DISCRETE-EVENT SIMULATION MODEL

Event routine : subprogram yang meng-update state sistem ketika tipe event tertentu muncul (masing-masing tipe event mempunyai satu event routine).

Library routine : himpunan subprogram untuk menghasilkan (generate) observasi-observasi random dari distribusi probabilitas yang ditentukan sebagai bagian model simulasi.

KOMPONEN & SUSUNAN D-E SM

Page 5: DISCRETE-EVENT SIMULATION MODEL

Report generator : subprogram yang menghitung estimasi (dari statistical counters) dari ukuran kinerja yang diinginkan dan menghasilkan laporan (reports) ketika simulasi selesai.

Main program : subprogram yang memanggil (call – invoke) timing routine untuk menentukan next event dan kemudian mentrasfer kontrol ke event routine yang bersesuaian untuk meng-update state sistem secara tepat. Main program mungkin juga memeriksa terminasi (pemberhentian) dan invokes report generator ketika simulasi berakhir.

KOMPONEN & SUSUNAN D-E SM

Page 6: DISCRETE-EVENT SIMULATION MODEL

ALUR KONTROL UNTUK D-E SM

Initialization routine1. Set simulation clock

= 02. Initialize system

state & statistical counters

3. Initialize event list

Main Program Timing routine0. Invoke the initialization

routine1. Invoke the timing routine2. Invoke event routine i(1 dan 2 diulang-ulang)

1. Menentukan next event type, sebut i

2. Memajukan simulation clock

Event routine i1. Update system state2. Update statistical

counters3. Generate future events

& add to event list

Generate random variates

0

2

1

i

Library routine

Start

Page 7: DISCRETE-EVENT SIMULATION MODEL

ALUR KONTROL UNTUK D-E SM

Apakah simulasi selesai

?

Report generator1. Hitung estimasi-estimasi yang

dibutuhkan2. Tulis report

Stop

Page 8: DISCRETE-EVENT SIMULATION MODEL

Interarrival times A1, A2, … independent, identically distributed (IID) random variables.

Identically distributed : interarrival times mempunyai distribusi probailitas yang sama.

Customer yang tiba (arrives) dan menjumpai server idle akan langsung di-serve, dan service times S1, S2, … dari customer yang berurutan merupakan variabel-variabel random IID yang independent terhadap nilai-nilai Ai.

Customer yang tiba dan menjumpai server busy akan bergabung di akhir queue (antrian).

Server memilih customer dari queue menggunakan cara (manner) FIFO.

SINGLE-SERVER QUEUEING SYSTEM

Page 9: DISCRETE-EVENT SIMULATION MODEL

SINGLE-SERVER QUEUEING SYSTEM

Customer yang

arrives

Customers dalam queue

Customer sedang di-serve

Server Customer yang

departs Simulasi akan mulai dalam keadaan (state) “empty-and-

idle”, yaitu suatu keadaan di mana tidak ada customer yang datang dan server idle.

Pada saat t = 0, menunggu kedatangan customer pertama yang akan terjadi setelah interarrival time pertama A1 (bukan di t = 0).

Simulasi akan berhenti ketika customer ke-n memasuki services.

Waktu berakhirnya simulasi merupakan variabel random.

Page 10: DISCRETE-EVENT SIMULATION MODEL

FLOWCHART UNTUK ARRIVAL ROUTINE, QUEUEING SYSTEM

Arrival event

Schedule the next arrival

event

Is the server busy

?

Add 1 to the number in

queue

Set delay = 0 for this customer and gather statistics

Page 11: DISCRETE-EVENT SIMULATION MODEL

FLOWCHART UNTUK ARRIVAL ROUTINE, QUEUEING SYSTEM

Is the queue full ?

Write error message &

stop simulation

Store time of arrival of this

customer

Add 1 to the number of customer

delayed

Make the server busy

Schedule a departure event for this customer

Return

Page 12: DISCRETE-EVENT SIMULATION MODEL

FLOWCHART UNTUK DEPARTURE ROUTINE, QUEUEING SYSTEM

Departure event

Is the queue

empty ?

Make the server idle

Subtract 1 from the number in queue

Compute delay of customer entering service and gather

statistics

Eliminate departure event from

consideration

Page 13: DISCRETE-EVENT SIMULATION MODEL

FLOWCHART UNTUK DEPARTURE ROUTINE, QUEUEING SYSTEM

Add 1 to the number of customer

delayed

Return

Schedule a departure event for this customer

Move each customer in queue (if any) up

one place

Page 14: DISCRETE-EVENT SIMULATION MODEL

PROGRAM SingleServerQ(Input, Output);CONST

QLimit = 100;Busy = 1;Idle = 0;

VARNextEventType, NumCustsDelayed, NumDelaysRequired, NumEvents, NumInQ, ServerStatus : Integer;AreaNumInQ, AreaServerStatus, MeanInterarrival, MeanService, Tijme, TimeLastEvent, TotalOfDelays : Real;Timearrival : ARRAY[1..QLimit] of Real;TimeNextEvent : ARRAY[1..2] of Real;

Zrng : ARRAY[1..100] of Integer;

PROCEDURE Initialize; FORWARD;PROCEDURE Timing; FORWARD;PROCEDURE Arrive; FORWARD;PROCEDURE Depart; FORWARD;PROCEDURE Report; FORWARD;PROCEDURE UpdateTimeAvgStats; FORWARD;FUNCTION Expon(Mean : Real) : Real; FORWARD;

PROCEDURE Randdf; FORWARD;FUNCTION Rand(Stream : Integer) : Real; FORWARD;PROCEDURE Randst(Zset : Integer; Stream : Integer); FORWARD;FUNCTION Randgt(Stream : Integer) : Integer; FORWARD;

PROGRAM PASCAL

Page 15: DISCRETE-EVENT SIMULATION MODEL

Procedure Initialize;Begin

{simulation clock}Time := 0.0; {state variables}ServerStatus := Idle;NumInQ := 0;TimeLastEvent := 0.0;{statistical counters}NumCustDelayed := 0;TotalOfDelays := 0.0;AreaNumInQ := 0.0;AreaServerStatus := 0.0;{event list}TimeNextEvent[1] := Time +

Expon(MeanInterArrival);TimeNextEvent[2] := 1.0E+30

End;

PROGRAM PASCAL

Page 16: DISCRETE-EVENT SIMULATION MODEL

Procedure Timing;Var

I : Integer;MinTimeNextEvent : Real;

BeginMinTimeNextEvent := 1.0E+29;NextEventType := 0;{ menentukan tipe event dari next event yang muncul }For I := 1 To NumEvent Do Begin

If TimeNextEvent[I] < MinTimeNextEvent Then Begin MinTimeNextEvent := TimeNextEvent[I];NextEventType := I

EndEnd;{ melihat apakah event list kosong }If NextEventType = 0 Then Begin{ event list kosong, hentikan simulasi }

writeln(‘Event list kosong pada pukul : ‘, Time);Halt

End;{ event list tidak kosong, majukan simulation clock }Time := MinTimeNextEvent

End;

PROGRAM PASCAL

Page 17: DISCRETE-EVENT SIMULATION MODEL

Procedure Arrive;Var

Delay : Real;Begin

{ schedule next event }TimeNextEvent[1] := Time + Expon(MeanInterArrival);{ melihat apakah server busy }If ServerStatus = Busy Then BeginNumInQ := NumInQ + 1;If NumInQ > QLimit Then BeginWriteln(‘Queue overload pada waktu :’,Time);HaltEnd;TimeArrival[NumInQ] := TimeEnd Else (* dilanjutkan … *)

PROGRAM PASCAL

Page 18: DISCRETE-EVENT SIMULATION MODEL

(* … lanjutan *)Else Begin

{ server idle }Delay := 0.0;TotalOfDelays := TotalOfDelays + Delay;{ rubah status server menjadi busy }NumCustDelayed := NumCustDelayed + 1;ServerStatus := Busy;{ schedule departure (service completion) }TimeNextEvent[2] := Time + Expon(MeanService)

EndEnd { end dari procedure arrival }

PROGRAM PASCAL

Page 19: DISCRETE-EVENT SIMULATION MODEL

Procedure Depart;Var

I : Integer;Delay : Real;

BeginIf NumInQ = 0 Then Begin

ServerStatus := Idle;TimeNextEvent[2] := 1.0E+30;

End Else BeginNumInQ := NumInQ - 1;Delay := Time – TimeArrival[1];TotalOfDelays := TotalOfDelays + Delay;NumCustDelayed := NumCustDelayed + 1;TimeNextEvent[2] := Time + Expon(MeanService);For I := 1 To NumInQ Do

TimeArrival[I] := TimeArrival[I + 1]End

End;

PROGRAM PASCAL

Page 20: DISCRETE-EVENT SIMULATION MODEL

Procedure Report;Var

AvgDelayInQ, AvgNumInQ, ServerUtilization : Real;

BeginAvgDelayInQ := TotalOfDelays / NumCustDelayed;AvgNumInQ := AreaNumInQ / Time;ServerUtilization := AreaServerStatus / Time;Writeln;Writeln(‘Rata-rata delay dalam queue ‘, AvgDelayInQ:11:3, ‘ menit’);Writeln(‘Rata-rata panjang queue ‘, AvgNumInQ:10:3);Writeln(‘Server Utilization ‘, ServerUtilization:10:3);Writeln(‘Waktu akhir simulasi : ‘,Time:12:3)

End;

PROGRAM PASCAL

Page 21: DISCRETE-EVENT SIMULATION MODEL

Procedure UpdateTimeAvgStats;Var

TimeSinceLastEvent : Real;Begin

{ menghitung waktu sejak event terakhir, dan meng- update last-event-time marker }

TimeSinceLastEvent := Time – TimeLastEvent;TimeLastEvent := Time;

AreaNumInQ := AreaNumInQ + NumInQ * TimeSinceLastEvent;

AreaServerStatus := AreaServerStatus + ServerStatus * TimeSinceLastEvent

End;

PROGRAM PASCAL

Page 22: DISCRETE-EVENT SIMULATION MODEL

Function Expon; { fungsi pembentukan variabel eksponensial }

VarU : Real;

Begin{ men-generate variabel random U(0,1) }U := Rand(1);Expon := -Mean * Ln(U)

End;

PROGRAM PASCAL

Page 23: DISCRETE-EVENT SIMULATION MODEL

{ Single server Queuing Main Program }Begin (* Mulai Main Program *)

{ Inisialisasi pembangkit bilangan acak }Randdf;{ Menentukan banyaknya event untuk prosedur timing }NumEvents := 2;Readln(MeanInterArrival, MeanService, NumDelaysRequired);{ Menulis report heading dan input parameters }writeln(‘Single Server Queuing System’);writeln;…

PROGRAM PASCAL

Page 24: DISCRETE-EVENT SIMULATION MODEL

…………….. lanjutan { Inisialisasi Simulasi }

Initialize;While NumCustDelayed < NumDelaysRequired Do Begin

Timing;UpdateTimeAvgStats;Case NextEventType Of

1 : Arrive;2 : Depart;

EndEnd;Report

End. (* Akhir Main Program *)

PROGRAM PASCAL

Page 25: DISCRETE-EVENT SIMULATION MODEL

#include <stdio.h>#include <math.h>#include “rand.h” /* header file untuk random-number generator */#define Q_LIMIT 100#define BUSY 1#define IDLE 0

int next_event_type, num_custs_delayed, num_delays_required, num_events, num_in_q, server_status;

float area_num_in_q, area_server_status, mean_interarrival, mean_service, time, time_arrival[Q_LIMIT+1], time_last_event, time_next_event[3], total_of_delays;

FILE *infile, *outfile;

void initialize(void);void timing(void);void arrive(void);void depart(void);void report(void);void update_time_avg_stats(void);float expon(float mean);

C Program