Simulasi Pesawat Baru
Simulasi Pesawat Baru
SIMULASI AIRPORT
OLEH
KELOMPOK A4
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.
Penulis,
Kelompok
BAB I
Deskripsi Simulasi
BAB III
IMPLEMENTASI DAN PEMBAHASAN
A. Inter-arrival time.
40 95 50 5
71 26 81 36
2 57 12 67
33 88 43 98
64 19 74 29
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
Take
Time Arival Take
Arrival Landing Prepare Off
(minutes) Queue Off
Queue
4 S1(B1) S1(C1)
44,3 L3(B7)
46,3 S7(B7)
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)
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)
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
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
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("+---------------+----------------------
---------+-------------------+")
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()
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
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.