SKRIPSI
Disusun Oleh :
KALORINDA
155314083
A THESIS
Presented as Partial Fulfillment of Requirements to Obtain Sarjana
Komputer Degree in Informatics Engineering Department
By :
KALORINDA
155314083
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSETUJUAN
SKRIPSI
Oleh :
Kalorinda
(155314083)
Dosen Pembimbing,
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PENGESAHAN
SKRIPSI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
MOTTO
melihat ujungnya “
- Kalorinda
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kalorinda
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Yang bertada tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma:
Nama : Kalorinda
Nim : 155314083
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan,
mengalihkan dalam bentuk media lain, mengelohnya dalam bentuk angkalan data,
mendistribusikannya secara terbatas, dan mempublikasikannya di Internet atau
media lain untuk kepentingan akademis tanpa meminta ijin dari saya maupun
memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai
penulis.
Kalorinda
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, oleh
karena rahmatnya yang melimpah penulis dapat menyelesaikan tugas akhir dengan
tepat waktu. Saya selaku penulis menyadari tugas akhir dapat terselesaikan dengan
bantuan dan bimbingan dari berbagai pihak secara langsung maupun tidak
langsung. Maka pada kesempatan ini, selaku penulis mengucapkan terimakasih
sebesar-besarnya kepada:
1. Tuhan Yesus Kristus, karena atas anugerah dan kemurahan-NYA penulis
dapat menyelesaikan tugas akhir.
2. Keluarga tercinta, Bapak Johai dan Ibu Nerai serta saudara-saudara saya
terkhusus kakak saya Rudok yang selalu mendukung saya selama
perkuliahan.
3. Kepada orang tua angkat saya Bapak Alius Ngeban dan Ibu Rusina dan kk
Amie yang selalu mendukung saya selama perkuliahan.
4. Bapak Bambang Soelistijanto, S.T., M.Sc., Ph.D. selaku dosen pembimbing
tugas akhir yang telah membimbing, memberi ilmu, serta pengelaman
dalam menyelesaikan tugas akhir.
5. Seluruh teman-teman konsentrasi Jaringan Komputer angkatan 2015 yang
selalu mengingatkan dan membantu saya dalam mengerjakan tugas akhir .
6. Seluruh teman-teman Teknik Informatika angkatan 2015 yang selalu
memberikan semangat dan dorongan untuk menyelesaikan tugas akhir.
7. Kepada Family Squad yaitu Trinanda Monica Silalahi, Yein Viwandi,
Clinton Lumban Gaol, Bondan, Natanael Simamora, dan Arnold Audri yang
sudah memberi saya semangat untuk terus menyelesaikan tugas akhir serta
menjadi saudara saya selama di Yogyakarta dan hidup ini.
8. Kepada Preman Squad yaitu Kintan Mayang Sari, Alberto Siregar, dan
Trinanda Monica Silalahi yang sudah banyak membantu dan mengingatkan
saya untuk terus semangat dalam menyelesaikan tugas akhir dan sudah
menjadi saudara dalam suka dan duka.
9. Serta Seluruh pihak lain yang sudah memberikan dukungan baik secara
langsung maupun tidak langsung.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Saya selaku penulis menyadari bahwa tulisan ini belumlah sempurna, maka
kritik dan saran sangat kami harapkan demi menyempurnakan tulisan ini. Akhir
kata penulis ucapkan terimakasih semoga tulisan ini bermanfaat bagi semua pihak.
Penulis
Kalorinda
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.2.1.3 Grafik average convergence time beberapa node mati sebelum
waktu convergence dataset Reality MIT menggunakan interval .......................... 27
Gambar 4.2.1.4 Grafik average convergence time dataset Reality MIT beberapa
node mati sesudah waktu convergence ............................................................... 28
Gambar 4.2.1.5 Grafik average convergence time beberapa node mati sesudah
waktu convergence dataset Reality MIT menggunakan interval .......................... 28
Gambar 4.2.1.6 Grafik average convergence time dataset Reality MIT beberapa
node mati kemudian hidup sebelum waktu convergence..................................... 29
Gambar 4.2.1.7 Grafik average convergence time beberapa node mati kemudian
hidup sebelum waktu convergence dataset Reality MIT menggunakan interval... 30
Gambar 4.2.2.1 Grafik delivery probability dataset Reality MIT ......................... 31
Gambar 4.2.2.2 Grafik overhead ratio dataset Reality MIT ................................ 31
Gambar 4.2.2.3 Grafik latency average dataset Reality MIT ............................... 32
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR RUMUS
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I
PENDAHULUAN
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II
LANDASAN TEORI
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Pada protokol routing spray and wait L copy dibuat secara manual,
tantangannya adalah bagaimana menentukan L copy yang optimal untuk
disebarkan dijaringan merupakan hal yang sulit dilakukan mengingat setiap
node hanya mempunyai local knowledge tanpa pernah tahu global
knowledge dari jaringan, L copy yang terlalu sedikit atau terlalu banyak
sangat mempengaruhi unjuk kerja dijaringan. Oleh sebab itu, untuk
mengatasi masalah pada protokol routing spray and wait maka pada
penelitian ini diterapkan algoritma taxi problem untuk mendapatkan L copy
yang optimal untuk disebarkan dengan menggunakan ½ dari jumlah node
yang ada dijaringan dari hasil estimasi yang sudah diperoleh dengan
menggunakan local knowledge yang dimiliki setiap node.
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
memperkirakan jumlah taxi yang ada dikota New York. Taxi problem
mengasumsikan ada seorang pengamat yang mengamati setiap taxi yang
lewat yang diamati oleh pengamat adalah nomor taxi, dengan syarat nomor
pada taxi haruslah urut (1,2,3,...,N) sehingga pengamat dapat
memperkirakan jumlah taxi dari beberapa taxi yang sudah diamati. Berikut
adalah gambar ilustrasi taxi problem untuk melakukan estimasi total taxi.
9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Pada taxi problem yang bersifat pasif node hanya dapat melakukan
estimasi dengan menggunakan local knowledge yang dimiliki. Sehingga
estimasi yang diperoleh tentang jumlah node antara node satu dengan node
lainnya berbeda dan membuat waktu convergence menjadi lebih lama.
Untuk mengatasi kekurangan pada algoritma taxi problem pasif, maka
setiap kali node bertemu, keduanya tidak hanya mencatat unique id tetapi
juga melakukan pertukaran tentang informasi daftar tetangga yang sudah
ditemui, sehingga diharapkan setiap node akan mempunyai informasi yang
sama tentang jumlah node yang berpartisipasi dalam jaringan dan waktu
convergence menjadi lebih cepat. Berikut adalah algoritma taxi problem
aktif dengan bertukar informasi yang mempresentasikan komunikasi antara
node A dan B. Algoritma taxi problem dapat dibagi 3 fase yaitu :
1. Connection Up : fase saat kedua node menyadari ada node baru
dalam radio rangenya. Pada fase ini kedua node tidak melakukan
apapun.
ConnectionUp
Gambar 2.4.3
2. Setelah koneksi terbangun: pada fase ini kedua akan mencatat unique
id node yang ditemui, lalu melakukan pertukaran informasi daftar
tetangga yang sudah mereka peroleh.
Setelah terbangun koneksi baru,
akan dilakukan:
Gambar 2.4.4
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 2.4.5
Gambar 2.4.6
12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III
PERANCANGAN SIMULASI
13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jumlahnya statis atau dinamis. Berikut adalah beberapa metrik unjuk kerja
yang digunakan :
Average Convergency Time
Average Convergency Time adalah rata-rata semua node
mendapatkan informasi yang sama tentang jumlah node yang ada
dijaringan.
Delivered Probability
Delivered Probability adalah metrik unjuk kerja yang digunakan
untuk mengetahui probabilitas pesan berhasil dikirimkan ke tujuan. Rasio
antara jumlah pesan yang terkirim ke node tujuan dengan jumlah pesan yang
dibuat. Rumus 3.3.1
𝑇𝑜𝑡𝑎𝑙 𝐷𝑒𝑙𝑖𝑣𝑒𝑟𝑒𝑑 𝑀𝑒𝑠𝑠𝑎𝑔𝑒
𝑇𝑜𝑡𝑎𝑙 𝐺𝑒𝑛𝑒𝑟𝑎𝑡𝑒 𝑀𝑒𝑠𝑠𝑎𝑔𝑒
Overhead Ratio
Overhead ratio merupakan metrik unjuk kerja yang digunakan
untuk mengetahui perbandingan antara total copy dalam jaringan dengan
jumlah pesan yang sampai ke node destination. Semakin tinggi nilai
overhead ratio maka unjuk kerja protokol routing dapat dianggap buruk.
Rumus 3.3.2
𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑚𝑒𝑠𝑠𝑎𝑔𝑒𝑠 𝑟𝑒𝑙𝑎𝑦𝑒𝑑 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑑𝑒𝑙𝑖𝑣𝑒𝑟𝑒𝑑 𝑚𝑒𝑠𝑠𝑎𝑔𝑒𝑠
𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑑𝑒𝑙𝑖𝑣𝑒𝑟𝑒𝑑 𝑚𝑒𝑠𝑠𝑎𝑔𝑒𝑠
Latency Average
Latency average adalah metrik unjuk kerja yang digunakan untuk
mengetahui jumlah rata-rata waktu yang dibutuhkan sebuah pesan untuk
sampai ke destination.
Rumus 2.3.3
𝑆𝑢𝑚 𝑜𝑓 𝐿𝑎𝑡𝑒𝑛𝑐𝑦 𝑜𝑓 𝐷𝑒𝑙𝑖𝑣𝑒𝑟𝑒𝑑 𝑀𝑒𝑠𝑠𝑎𝑔𝑒
𝑇𝑜𝑡𝑎𝑙 𝐷𝑒𝑙𝑖𝑣𝑒𝑟𝑒𝑑 𝑀𝑒𝑠𝑠𝑎𝑔𝑒
15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Ni bertemu dengan Nj
IF Koneksi Terhubung
Ni memasukan unique id Nj kepenyimpanan lokal
Nj memasukan unique id Ni kepenyimpanan lokal
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
beberapa keadaan yang sesuai dengan simulasi yang dibutuhkan, antara lain
luas area, pergerakan node, kecepatan pergerakan node, interval pembuatan
pesan, protokol routing yang digunakan di oportunistik. Pada The One
Simulator juga tersedia tampilan grafis yang dapat digunakan untuk
visualisasi pergerakan dan persebaran pesan secara real time, tidak hanya
itu pada The One Simulator juga tersedia fitur untuk pelaporan pesan dan
data statistik setelah simulasi selesai dijalankan. Untuk pergerakan pada The
One Simulator juga dapat diambil dari kejadian sehari-hari. Simulator ini
dapat digunakan di beberapa platform pemrograman salah satunya bahasa
Java.
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV
PENGUJIAN DAN ANALISIS
50
40
30
20
10
0
98100
130500
238500
270900
900
11700
22500
33300
44100
54900
65700
76500
87300
108900
119700
141300
152100
162900
173700
184500
195300
206100
216900
227700
249300
260100
Time
19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
40
30
20
10
0
54900
141300
227700
900
11700
22500
33300
44100
65700
76500
87300
98100
108900
119700
130500
152100
162900
173700
184500
195300
206100
216900
238500
249300
260100
270900
Time
50
40
30
20
10
0
65700
87300
162900
238500
900
11700
22500
33300
44100
54900
76500
98100
108900
119700
130500
141300
152100
173700
184500
195300
206100
216900
227700
249300
260100
270900
Time
20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Number of Nodes
50
40
30
20
10
0
900
54900
141300
227700
11700
22500
33300
44100
65700
76500
87300
98100
108900
119700
130500
152100
162900
173700
184500
195300
206100
216900
238500
249300
260100
270900
Time
40
30
20
10
0
65700
87300
162900
238500
900
11700
22500
33300
44100
54900
76500
98100
108900
119700
130500
141300
152100
173700
184500
195300
206100
216900
227700
249300
260100
270900
Time
21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
waktu node dianggap hidup dapat membuat rata-rata hitung semua node
adaptif, dengan hasil rata-rata hitung semua node mendekati jumlah node
yang hidup dengan variasi yang cukup kecil seperti terlihat pada Gambar
4.1.1.3 dan Gambar 4.1.1.5. Pada strategi bertukar informasi setiap node
akan mendapatkan informasi tentang semua node yang ada dijaringan
walaupun tidak semua node dijaringan pernah ditemui secara langsung.
Sehingga ketika menggunakan strategi interval, terdapat beberapa dari node
yang tidak pernah ditemui kembali dan informasinya tidak pernah
diperbaharui yang menyebabkan node dianggap mati. Pada strategi interval
setiap node dapat hidup kembali ketika waktu bertemu mereka diperbaharui,
hal ini yang menyebabkan hasil rata-rata hitung bergerak naik turun.
50
40
30
20
10
0
54900
141300
227700
900
11700
22500
33300
44100
65700
76500
87300
98100
108900
119700
130500
152100
162900
173700
184500
195300
206100
216900
238500
249300
260100
270900
Time
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Number of Nodes
50
40
30
20
10
0
65700
87300
162900
238500
900
11700
22500
33300
44100
54900
76500
98100
108900
119700
130500
141300
152100
173700
184500
195300
206100
216900
227700
249300
260100
270900
Time
23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22500 22190.2155
22000
21500
21000
20500
L=3 TP-SebelumConvergence L=41
25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
80
60
40
20
0
0 5000000 10000000 15000000 20000000
Time
Gambar 4.2.1.1 Grafik average convergence time untuk dataset Reality MIT
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Walaupun ada beberapa dari node yang tidak pernah ditemui secara
langsung, namun karena ada dari beberapa node yang sudah bertemu maka
informasi akan disebarkan dijaringan sehingga semua node dapat
memperoleh informasi yang sama.
100
80
60
40
20
0
0 5000000 10000000 15000000 20000000
Time
100
80
60
40
20
0
0 5000000 10000000 15000000 20000000
Time
27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
80
60
40
20
0
0 5000000 10000000 15000000 20000000
Time
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
80
60
40
20
0
0 5000000 10000000 15000000 20000000
Time
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
0.2
0.1
0
L6 TP-SebelumConvergence L90
31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
560000
540000
520000 514206.4828
502248.0328
500000
480000
460000
L6 TP-SebelumConvergence L90
32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
relay node yang akan meneruskan pesan yang lebih banyak. Sehingga
probabilitas pesan sampai kedestination semakin besar dan latency juga
akan semakin menurun.
33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Setelah dilakukan analisis dari beberapa kali pengujian simulasi
dapat diambil kesimpulan bahwa algoritma Taxi problem dapat melakukan
estimasi jumlah node dengan tepat sesuai jumlah node yang ada dijaringan
dengan waktu convergence yang cukup cepat. Hal ini dipengaruhi oleh
pertukuran informasi tentang daftar tetangga yang sudah ditemui. Namun
pada kasus jumlah node berubah dinamis, taxi problem belum memberikan
hasil yang optimal, ini terlihat pada kedua dataset hasil estimasi memiliki
variasi yang cukup besar karena pada pergerakan manusia cenderung
membentuk kelompok, ketika menggunakan algoritma taxi problem dengan
strategi interval waktu node dianggap hidup, banyak dari node yang tidak
pernah ditemui secara langsung kemudian ketika informasi tentang node
tidak pernah diperbaharui maka node akan dianggap mati walaupun
sebenarnya node masih hidup.
Untuk penerapan taxi problem di protokol routing spray and wait
bisa terlihat dari hasil simulasi bahwa dengan mengetahui jumlah yang ada
dijaringan dapat membantu meningkatkan unjuk kerja dari jaringan karena
L copy yang sudah tidak perlu dibuat diawal simulasi, tetapi cukup
menggunakan ½ dari jumlah node. Setiap node dapat membuat node L copy
sesuai dengan informasi yang mereka miliki. Hasil dari semua simulasi yang
telah diuji menunjukan hasil yang cukup bagus namun belum sempurna
yang dapat terlihat dari metrik unjuk kerja yang sudah dituangkan dalam
grafik.
5.2. Saran
Pada penelitian selanjutnya algoritma untuk mengestimasi jumlah
dinamis dijaringan. Setiap node dapat memperkirakan interval waktu node
dianggap hidup yang optimal secara dinamis tanpa dibuat secara manual
berdasarkan pengetahuan yang diperoleh setiap node.
34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA
[1]. Ari Keränen, Jörg Ott and Teemu Kärkkäinen. The ONE Simulator for DTN
Protocol Evaluation. SIMUTools'09: 2nd International Conference on Simulation
Tools and Techniques. Rome, March 2009.
[4]. Aaron Tenenbein. The Racing Car Problem. The American Statistician, Vol.
25, No 1 . Pp. 38-40, Feb., 1971.
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
package routing.sprayandwait;
import core.*;
import java.util.*;
import routing.*;
/**
* @author Kalorinda
*/
public class SprayAndWaitRouterWithTaxiProblemDiTambah implements
RoutingDecisionEngine, CountingTaxiProblem {
public static final String NROF_COPIES = "nrofCopies";
public static final String BINARY_MODE = "binaryMode";
public static final String SPRAYANDWAIT_NS =
"SprayAndWaitRouterWithTaxiProblemDiTambah";
public static final String MSG_COUNT_PROPERTY = SPRAYANDWAIT_NS + "."
+ "copies";
public static final String LIVE_INTERVAL = "live_Interval";
private static double IntervalLive = 691200;
private double interval;
protected int initialNrofCopies;
protected boolean isBinary;
private int totalEstimationOfTheNode;
protected Map<DTNHost, Double> theCollections;
protected Set<DTNHost> theTombstonenodes;
public SprayAndWaitRouterWithTaxiProblemDiTambah(Settings s) {
if (s.contains(LIVE_INTERVAL)) {
interval = s.getInt(LIVE_INTERVAL);
} else {
interval = IntervalLive;
}
if (s.contains(BINARY_MODE)) {
isBinary = s.getBoolean(BINARY_MODE);
} else {
36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
publicSprayAndWaitRouterWithTaxiProblemDiTambah(SprayAndWaitRouter
WithTaxiProblemDiTambah proto) {
this.initialNrofCopies = proto.initialNrofCopies;
this.isBinary = proto.isBinary;
theCollections = new HashMap<DTNHost, Double>();
theTombstonenodes = new HashSet<>();
}
@Override
public void connectionUp(DTNHost thisHost, DTNHost peer) {
}
@Override
public void connectionDown(DTNHost thisHost, DTNHost peer) {
SprayAndWaitRouterWithTaxiProblemDiTambah partner =
getOtherDecisionEngine(peer);
if (thisHost.isRadioActive() == true && peer.isRadioActive() == true) {
for (Map.Entry<DTNHost, Double> entry : this.theCollections.entrySet()) {
DTNHost key = entry.getKey();
Double lastRecord = entry.getValue();
if (SimClock.getTime() - lastRecord > IntervalLive) {
this.theTombstonenodes.add(key);
} else {
this.theTombstonenodes.remove(key);
}
}
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
}
this.totalEstimationOfTheNode = this.CountTotalEstimationOfTheNode() -
theTombstonenodes.size();
partner.totalEstimationOfTheNode = partner.CountTotalEstimationOfTheNode() -
theTombstonenodes.size();
}
}
@Override
public void doExchangeForNewConnection(Connection con, DTNHost peer) {
DTNHost thisHost = con.getOtherNode(peer);
SprayAndWaitRouterWithTaxiProblemDiTambah partner =
getOtherDecisionEngine(peer);
if (thisHost.isRadioActive() == true && peer.isRadioActive() == true) {
if (this.theCollections.containsKey(peer) && partner.theCollections.containsKey
(thisHost)) {
this.theCollections.replace(peer, SimClock.getTime());
partner.theCollections.replace(thisHost, SimClock.getTime());
} else {
this.theCollections.put(peer, SimClock.getTime());
partner.theCollections.put(thisHost, SimClock.getTime());
}
38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} else {
Double myValue = partner.theCollections.get(key);
if (myValue < value) {
partner.theCollections.put(key, value);
}
}
}
}
}
@Override
public boolean newMessage(Message m) {
initialNrofCopies = (int) Math.ceil(this.totalEstimationOfTheNode / 2);
m.addProperty(MSG_COUNT_PROPERTY, initialNrofCopies);
return true;
}
@Override
public boolean isFinalDest(Message m, DTNHost aHost) {
return m.getTo() == aHost;
}
@Override
public boolean shouldSaveReceivedMessage(Message m, DTNHost thisHost) {
Integer nrofCopies = (Integer) m.getProperty(MSG_COUNT_PROPERTY);
if (isBinary) {
nrofCopies = (int) Math.ceil(nrofCopies / 2.0);
} else {
nrofCopies = 1;
}
m.updateProperty(MSG_COUNT_PROPERTY, nrofCopies);
return m.getTo() != thisHost;
}
@Override
public boolean shouldSendMessageToHost(Message m, DTNHost otherHost) {
if (m.getTo() == otherHost) {
return true;
}
Integer nrofCopies = (Integer) m.getProperty(MSG_COUNT_PROPERTY);
if (nrofCopies > 1) {
return true;
}
39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
return false;
}
@Override
public boolean shouldDeleteSentMessage(Message m, DTNHost otherHost) {
if (m.getTo() == otherHost) {
return false;
}
Integer nrofCopies = (Integer) m.getProperty(MSG_COUNT_PROPERTY);
if (isBinary) {
nrofCopies /= 2;
} else {
nrofCopies--;
}
m.updateProperty(MSG_COUNT_PROPERTY, nrofCopies);
return false;
}
@Override
public boolean shouldDeleteOldMessage(Message m, DTNHost hostReportingOld) {
return m.getTo() == hostReportingOld;
}
@Override
public RoutingDecisionEngine replicate() {
return new SprayAndWaitRouterWithTaxiProblemDiTambah(this);
}
private SprayAndWaitRouterWithTaxiProblemDiTambah
getOtherDecisionEngine(DTNHost h) {
MessageRouter otherRouter = h.getRouter();
assert otherRouter instanceof DecisionEngineRouter : "This router only works "
+ "with other routers of same type";
return (SprayAndWaitRouterWithTaxiProblemDiTambah) ((DecisionEngineRouter)
otherRouter).getDecisionEngine();
}
private int CountTotalEstimationOfTheNode() {
int tracehold = Integer.MIN_VALUE;
for (Map.Entry<DTNHost, Double> entry : theCollections.entrySet()) {
DTNHost key = entry.getKey();
if (key.getAddress() > tracehold) {
tracehold = key.getAddress();
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
}
double atas = Math.pow(tracehold, (theCollections.size() + 1)) -
Math.pow((tracehold - 1), (theCollections.size() + 1));
double bawah = Math.pow(tracehold, theCollections.size()) - Math.pow((tracehold -
1), theCollections.size());
return (int) (atas / bawah);
}
@Override
public int getCountTotalEstimationOfTheNode() {
return this.totalEstimationOfTheNode;
}
}
41