Anda di halaman 1dari 23

PEMODELAN DAN SIMULASI

SIMULASI AIRPORT

OLEH
KELOMPOK A4

I Gst Lanang Ary Kresnwan (1708561031)


Hendra (1708561020)
sam (1708561030)

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
BADUNG
2019
KATA PENGANTAR

Sehubungan dengan berjalannya mata kuliah Pemodelan dan Simulasi


Komputer, penulis menyusun laporan ini berdasarkan kegiatan praktikum yang sudah di
alami penulis. Dalam menyusun laporan ini, penulis mendapatkan referensi dari
kegiatan praktikum yang dijalani.

Penulis menyadari bahwa laporan ini belum sempurna, oleh karena itu penulis
meminta maaf dan mengharap kritik saran yang membangun dari semua pihak yang
membutuhkan laporan ini. Sebagai akhir kata, penulis berharap, semoga laporan ini
dapat memberi manfaat bagi semua pihak yang membutuhkannya.

Badung,14 Oktober 2019

Penulis,

Kelompok
BAB I
Deskripsi Simulasi

Simulasi ini dilakukan untuk mengetahui jumlah runway yang dibutuhkan


agar waktu tunggu dari setiap pesawat tidak terlalu lama. Pesawat memiliki
waktu di landasan selama 2,5 menit. Diketahui juga waktu kedatangan diantara
pesawat besar dan pesawat kecil adalah sebagai berikut:

Time between arrival for landing (minute) Percentage


1–2 30%
2–3 35%
3–4 25%
4–5 10%

Untuk melakukan Simulasi, pertama harus dicari terlebih dahulu waktu


kedatangan dari masing-masing pesawat berdasarkan tabel diatas. Setelah itu
dilakukan simulasi untuk mengetahui waktu tunggu yang didapat masing-
masing pesawat berdasarkan dari waktu kedatangan yang sudah didapatkan dan
waktu yang diperlukan masing-masing pesawat selama di landasan. Simulasi
untuk mencari waktu tunggu dilakukan dengan cara membandingkan rata-rata
waktu tunggu dari jumlah landasan (runway) yang berbeda. Disini kami
membandingkan landasan (runway) yang berjumlah satu dan dua. Setelah
mendapatkan waktu tunggu dari masing-masing pesawat, selanjutnya yang
dilakukan adalah mencari rata-rata waktu tunggu berdasarkan jumlah landasan
(runway). Setelah mendapatkan rata-rata waktu tunggu, selanjutnya dilakukan
perbandingan untuk mengetahui apakah penambahan landasan (runway)
diperlukan atau tidak.
BAB II
MODEL

2.1 Model dengan Jumlah Runway 1


2.2 Model dengan jumlah runway 2
BAB III
IMPLEMENTASI DAN PEMBAHASAN

BAB III
IMPLEMENTASI DAN PEMBAHASAN

3.1 Pembahasan Soal 2.3

A. Inter-arrival time.

Diketahui distribusi untuk inter arrival time sebagai berikut:

Time between arrival for landing (minutes) Percentage


2-3 30%
3-4 35%
4-5 25%
5-6 10%

a. Melakukan pembangkitan bilangan acak sebagai sampel

40 95 50 5
71 26 81 36
2 57 12 67
33 88 43 98
64 19 74 29

b. Tabel Hubungan Bilangan Acak Hingga Sampel Waktu Kedatangan


Random Numbers Inter-arrival
time (minutes)
00 – 29 2–3
30 – 64 3–4
65 – 89 4–5
90 – 99 5–6
Untuk interval kelas bilangan acak diatas, berpatokan pada distribusi inter
arrival- time. Dalam pembangkitan bilangan acak dari rentang 0-99
menggunakan 100 buah bilangan, dapat ditentukan interval kelas dengan
cara sebagai berikut:
Untuk waktu kedatangan pada menit 2 – 3 dengan presentase 30% dapat
dihitung, 30% x 100 = 30 (karena dimulasi dari 0 maka rentang kelas yang
didapat adalah 00 – 29 ).

Untuk waktu kedatangan pada menit 3 – 4 dengan presentase 35% dapat


dihitung, 35% x 100 = 35 (interval kelasnya adalah dimulai dari 30 hingga 64).
Untuk waktu kedatangan pada menit 4 – 5 dengan presentase 25% dapat
dihitung, 25% x 100 = 25 (interval kelas yang didapat adalah dimulai dari 65
hingga 89).

Untuk waktu kedatangan pada menit 5 – 6 dengan presentase 10% dapat


dihitung, 10% x 100 = 10 (sehingga interval kelas yang didapat adalah dari 90
– 99)

c. Tabel inter-arrival time of the first 10 arrivals : sampled using random


numbers

Pesawat First Random Inter-arrival Second Inter-arrival


time range Random time (minutes)
Number (Row 3)
Number
(Row 5)
P1 40 3–4 50 4
P2 71 4–5 81 5
P3 2 2–3 12 3
P4 33 3–4 43 4
P5 64 3–4 74 4
P6 95 5–6 5 5
P7 26 2–3 36 3
P8 57 3–4 67 4
P9 88 4–5 98 5
P10 19 2–3 29 3
Mean 4,0

Berdasarkan pengujian menggunakan metode variability, diperoleh hasil


inter-arrival time sebesar 4 menit.
2. Aeroplane Size

Diketahui distribusi untuk frekuensi ukuran pesawat sebagai berikut:

Plane Percentage
Sizes
S 70
m
L %
30
a
a. Melakukan pembangkitan %
10 bilangan acak sebagai sampel
rl
40 71gl 2 33 64 95 26 57 88 19
e
b. Tabel Hubungan Bilangan Acak Hingga Sampel Waktu Kedatangan

Untuk mendapatkan interval kelas bilanagn acak, kita asumsikan jika banyak
pesawat adalah 100. Pada kasus ini, diketahui jika presentase perbandingan
pesawat besar dan kecil adalah 30% dan 70% oleh karena itu dapat
dilakukan perhitungan sebagai berikut :
70% x 100 = 70 (karena dimulai dari 0, maka interval kelas untuk pesawat
kecil
adalah 70 – 1 = 69 sehingga menjadi 0 – 69). Untuk pesawat besar, 100 – 70
= 30 (interval untuk kelas pesawat besar dimulai dari 70 sampai 99). Untuk
lebih jelasnya dapat melihat tabel dibawah ini

Random Numbers Plane Size


00 – 69 Small
70-99 Large
c. Tabel plane size of the first 10 arrivals : sampled using random numbers

Random Number Plane Size


40 Small
71 Large
2 Small
33 Small
64 Small
95 Large
26 Small
57 Small
88 Large
19 Small
Berdasarkan pengujian menggunakan metode variability, diperoleh hasil
plane
size 3 pesawat ukuran large dan 7 pesawat ukuran small.

B. Simulate a period of operation at the airport.

Tabel Interval Untuk B1

Pesawat First Random Inter-arrival Second Inter-arrival


Number (Row 3) time range Random time
Number (minutes)
(Row 5)
P1 40 3–4 57 4
P2 71 4–5 88 5
P3 2 2–3 19 3
P4 33 3–4 50 4
P5 64 3–4 81 4
P6 95 5–6 12 5
P7 26 2–3 43 3
Mean 4,0
Tabel Interval Untuk B2
Pesawat First Random Inter-arrival Second Inter-arrival
time range Random time (minutes)
Number (Row 1)
Number
(Row 4)
P1 74 4–5 6 4
P2 5 2–3 7
9 3
P3 36 3–4 8
29 3
Mean 3,3

Tabel Ukuran Pesawat


Random Number Plane Size
40 Small
71 Large
2 Small
33 Small
64 Small
95 Large
26 Small
57 Small
88 Large
19 Small
Diperoleh 3 pesawat berukuran large dan 7 pesawat berukuran small

- Tabel Simulasi dengan Jumlah Landasan (Runway) adalah 1

Take
Time Arival Take
Arrival Landing Prepare Off
(minutes) Queue Off
Queue
4 S1(B1) S1(C1)

5,5 S1(B3) S1(C3)

7,3 L1(B2) L1(C2)

9,5 L1 S1(B5) S1(C7)

9,8 L1(B4) L1(C3) S1(C4)

11,3 S2(B1) S2(C1) S1(B6)


12,8 S2(B3) S2(C3)

13,8 L1(B5) L1(C5)

15,3 S3(B1) S3(C6) L1

16,3 S3(C1) L1(B7)

16,8 S3 S2(B5) S2(C7)

17,8 S3(B3) S3(C3) S2(C4)

19,3 S4(B1) S4(C1) S2(B6)

20,8 S4(B3) S4(C3)

21,8 S3(B5) S3(C4)

22,6 L2(B2) L2(C6) S3

23,3 L2(C2) S3(B6)

24,8 L2 S4(B5) S4(C7)

25,8 L2(B4) L2(C3) S4(C4)

26,6 S5(B1) S5(C6) S4

27,3 S5(C1) S4(B6)

28,8 S5(B3) S5(C3)

29,8 L2(B5) L2(C5)

30,6 S6(B1) S6(C6) L2

32,3 S6(C1) L2(B7)

32,8 S6 S5(B5) S5(C7)

33,8 S6(B3) S6(C3) S5(C4)

33,9 L3(B2) L3(C6) S5

35,3 L3(C2) S5(B6)


L3(C3),
37,8 L3(B4) S6(C4)
S6(B5)

37,9 S7(B1) S7(C6) S6

39,3 S7(C1) S6(B6)

40,8 S7(B3) S7(C3)

41,8 L3(B5) L3(C5)

44,3 L3(B7)

44,8 S7(B5) S7(C4)

46,3 S7(B7)

- Tabel Simulasi dengan Jumlah Landasan (Runway) adalah 2


Ariv Take
Time
Arriv al Landin Landin Prepa Off Take Take
(minute
al Queu g1 g2 re Queu Off 1 Off 2
s)
e e
S1(B1 S1(C1
4
) )
S1(B3
5,5 S1(C3)
)
L1(B2 L1(C2
7,3
) )
S1(C
9,5 L1 S1(B5)
4)
L1(B4
9,8 L1(C3) S1
)
S1(B
11,0
6)
S2(B1 S2(C1
11,3
) )
S2(B3
12,8 S2(C3)
)
L1(C
13,8 L1(B5)
5)
S3(B1
15,3 S3(C1) L1
)
L1(B
16,3 S3
7)
S2(C
16,8 S3(B3) S2(B5)
4)

17,8 S3(C3)

S2(B
18,3
6)
S4(B1 S4(C1
19,3
) )
S4(B3
20,8 S4(C3)
)
S3(C4
21,8 S3(B5)
)
L2(B2
22,6 L2(C2) S3
)
S3(B
23,3 L2
6)
S4(C
24,8 L2 S4(B5)
4)

25,1 L2(B4) L2(C3) S4

S4(B
26,3
6)
S5(B1 S5(C1
26,6
) )
S5(B3
28,1 S5(C3)
)
L2(C
29,1 L2(B5)
5)
S6(B1
30,6 S6(C1) L2
)
L2(B
31,6 S6
7)
S5(B5)
S5(C
32,1 S6(B3) ,
4)
S6(C3)
S5(B
33,6
6)
L3(B2 L3(C2
33,9
) )
S6(C
36,1 L3 S6(B5)
4)

36,4 L3(B4 L3(C3) S6


)

S6(B
37,6
6)
S7(B1 S7(C1
37,9
) )
S7(B3
39,4 S7(C3)
)
L3(C
40,4 L3(B5)
5)
L3(B
42,9
7)
S7(C
43,4 S7(B5)
4)
S7(B
44,9
7)

1. Implementasi
- Dengan Jumlah Landasan (Runway) adalah 1
o Source Code
import time
a = 21
c = 7
m = 100
# xs = 3
xs = time.localtime().tm_sec
print(xs)

def random():
global xs
x = (a*xs+c) % m
xs = x
return x

def waktuAntar(listwaktu):
rand = random()
if (rand <= 29):
t = 2
elif (rand > 29) and (rand <= 64):
t = 3
elif (rand > 64) and (rand <= 89):
t = 4
elif (rand > 89) and (rand <= 99):
t = 5
rand = random()
if (len(listwaktu) == 0):
listwaktu.append(t+(rand/100))
else:
temp = listwaktu[-1]+t+(rand/100)
# if(temp <= waktu):
# listwaktu.append(temp)
temp = round(temp, 2)
listwaktu.append(temp)
return listwaktu

def jenisPesawat(pesawat):
rand = random()
if rand <= 69:
pesawat.append(0)
elif rand > 69:
pesawat.append(1)
return pesawat

waktu = int(input("Masukkan waktu(menit) = "))


landing = []
takeoff = []
pesawatLanding = []
pesawatTakeoff = []

waktu1 = 0

i = 0
print("Pesawat Landing")
while(waktu1 <= waktu):
landing = waktuAntar(landing)
# print(landing[i])
waktu1 = landing[i]
i+=1
print("+-----+-------------------------+----------
-----+")
print("| no | Waktu AntarLanding | Jenis
Pesawat |")
print("+-----+-------------------------+----------
-----+")
for i in range(0, len(landing)):
pesawatLanding = jenisPesawat(pesawatLanding)
if pesawatLanding[i] == 0:
print("| ",i+1," | \t",landing[i],"\t\t|
Kecil |")
else:
print("| ",i+1," | \t",landing[i],"\t\t|
Besar |")
print("+-----+-------------------------+----------
-----+")

i = 0
waktu1 = 0
print("\nPesawat Takeoff")
print("+-----+-------------------------+----------
-----+")
print("| no | Waktu AntarTakeoff | Jenis
Pesawat |")
print("+-----+-------------------------+----------
-----+")
while(waktu1 <= waktu):
takeoff = waktuAntar(takeoff)
# print(takeoff[i])
waktu1 = takeoff[i]
i+=1
for i in range(0, len(takeoff)):
pesawatTakeoff = jenisPesawat(pesawatTakeoff)
if pesawatTakeoff[i] == 0:
print("| ",i+1," | \t",takeoff[i],"\t\t|
Kecil |")
else:
print("| ",i+1," | \t",takeoff[i],"\t\t|
Besar |")
print("+-----+-------------------------+----------
-----+")

nlanding = 0
ntakeoff = 0
print("\nSimulasi dengan 1 Runway")
print("+---------------+--------------------------
-----+-------------------+")
print("| Waktu | Event
| Waktu Selesai |")
print("+---------------+--------------------------
-----+-------------------+")
time = 0
queue = 0

while (time < waktu):


temp = landing[0]

if(temp > takeoff[0]):


temp = takeoff[0]
if (time > temp):
print("| ", temp , "\t| Pesawat
takeoff antri selama = ", round((time -
temp),2) ," \t |")
print("+---------------+--------------
-----------------+-------------------+")
queue += (time - temp)
temp = time

if (pesawatTakeoff[0] == 0):
time = temp + 1.5
print("| ", round(temp,2) , "\t|
Pesawat kecil takeoff | ",
round(time, 2) ,"\t |")

if (pesawatTakeoff[0] == 1):
time = temp + 2.5
print("| ", round(temp,2) , "\t|
Pesawat besar takeoff | ",
round(time, 2) ,"\t |")
ntakeoff += 1
del takeoff[0]
del pesawatTakeoff[0]

else:
if (time > temp):
print("| ", temp , "\t| Pesawat
landing antri selama = ", round((time -
temp),2) ," \t |")
print("+---------------+--------------
-----------------+-------------------+")
queue += (time - temp)
temp = time

if (pesawatLanding[0] == 0):
time = temp + 1.5
print("| ", round(temp,2) , "\t|
Pesawat kecil landing | ",
round(time, 2) ,"\t |")

if (pesawatLanding[0] == 1):
time = temp + 2.5
print("| ", round(temp,2) , "\t|
Pesawat besar landing | ",
round(time, 2) ,"\t |")
nlanding += 1
del landing[0]
del pesawatLanding[0]
temp = time
print("+---------------+----------------------
---------+-------------------+")

print("lama antrian yang terjadi =


",round(queue,2))
print("Jumlah landing = ", nlanding)
print("Jumlah takeoff = ", ntakeoff)
o Hasil
- Dengan Jumlah Landasan (Runway) adalah 2
o Source Code
import simpy
from random import randrange
array1 = [0]*100
array2 = [0]*100

class LCG:
def __init__(self):
self.z0 = randrange(100)
self.Hasil=0

# def setSeed(self,seed):
# self.z0 = seed

def bilanganrandom(self):
self.Hasil = (11 * self.z0 + 9) % 100
if (self.Hasil > 99):
self.Hasil %= 100

self.z0 = self.Hasil
return self.Hasil

def arrival():
temp = [0]*10
hasil = 0
for i in range(1,10):
if(bilrand.bilanganrandom()<50):
temp[i] = 1
elif(bilrand.bilanganrandom()<65):
temp[i] = 2
elif(bilrand.bilanganrandom()<90):
temp[i] = 3
else:
temp[i] = 4
# for i in range(1,10):
# temp[i] +=
(bilrandom.bilanganrandom())/100
for i in range(1,10):
hasil+=temp[i]
return hasil/10

class Airport(object):

def __init__(self,env,runway,landingtime):
self.env = env
self.runaway1 = simpy.Resource(env,runway)
self.landingtime = landingtime

def landing(self,pesawat):
yield self.env.timeout(landingtime)
print("%s selesai landing"%pesawat)

k=0
l=0
counter = 0
def pesawat(env,name,runway):
global k
global l
global counter
print("%s Tiba di bandara
saat %.2f"%(name,env.now))
counter+=1
array1[k] = env.now
k+=1
with runway.runaway1.request() as request:
yield request
print("%s memasuki runway pada
waktu %.2f"%(name,env.now))
counter-=1
array2[l] = env.now - array1[l]
l+=1
yield env.process(runway.landing(name))
print("%s selesai landing pada
waktu %.2f"%(name,env.now))

def setup(env,runway,landing,t_inter):
landRunway = Airport(env,runway,landing)

for i in range(1):
env.process(pesawat(env,'Pesawat %d' %
i,landRunway))

while True:
yield env.timeout(t_inter)
i+=1

env.process(pesawat(env,'Pesawat %d'%i,landRunway))

print('Landing')
bilrand = LCG()

#seed = input("Masukan seed bilangan random : ")


#bilrand.setSeed(seed)

runway = 2
landingtime = 2.5
t_inter = arrival()
sim_time = 8

env = simpy.Environment()
env.process(setup(env,runway,landingtime,t_inter))
env.run(until=sim_time)

jumlah =0
x=1
while array2[x]!=0:
jumlah+=array2[x]
x+=1
if(x!=1):
hasil = jumlah/(x-1)
else:
hasil = x-1

print("\nRata-rata waktu tunggu %.2f" % hasil)


print("jumlah pesawat dalam queue %d" % counter)
o Hasil

2. Pembahasan
Berdasarkan hasil implementasi pada program diatas, didapatkan waktu
tunggu dari masing-masing jumlah Landasan (Runway). Pada jumlah landasan
(runway) adalah 1, didapatkan rata-rata waktu tunggu sebesar 2.20 menit
dengan jumlah pesawat adalah 2. Sedangkan pada jumlah landasan (runway)
adalah 2, rata-rata waktu tunggu yang didapatkan sebesar 0.00, artinya tidak
ada pesawat yang menunggu. Jadi dapat disimpulkan bahwa sebaiknya
dilakukan penambahan landasan (runway) menjadi 2 atau lebih.

Anda mungkin juga menyukai