10 rotasi menjadi sebuah pergerakan agen. Berikut merupakan pseudo code pengolahan keluaran jaringan syaraf tiruan menjadi pergerakan agen : 1. 2. Hitung gaya rotasi (rotational force) : rotasi kiri = keluaran neuron ke-0 rotasi kanan = keluaran neuron ke-1 gaya rotasi = rotasi kiri – rotasi kanan if gaya rotasi < minimum gaya rotasi then gaya rotasi = minimum gaya rotasi else if gaya rotasi > maksimum gaya rotasi then gaya rotasi = maksimum gaya rotasi end if rotasi agen += gaya rotasi Update rotasi dan posisi agen : x agen = -sin(rotasi agen) z agen = cos(rotasi agen) if agen tidak tertabrak then kecepatan = (rotasi kiri + rotasi kanan) * konstanta kecepatan agen x agen += kecepatan * selisih waktu frame update z agen += kecepatan * selisih waktu frame update end if Pelatihan Discreet Evolution Pelatihan jaringan syaraf tiruan dilakukan menggunakan algoritma genetika untuk mengevolusi bobot jaringan syaraf tiruan. Pelatihan agen dilakukan dengan cara menaruh masing-masing agen dalam peta permainan yang sama dimana setiap agen harus dapat bergerak dari titik awal (S) sampai titik tujuan (G) dengan menghindari halangan seperti yang ditunjukkan dalam Gambar 11. Jika interval waktu evolusi tercapai maka agen akan direset ke posisi awal, hal ini akan dilakukan berulang kali sampai pelatihan selesai. Berikut merupakan pseudo code pelatihan discreet evolution menggunakan algoritma genetika : Pada saat frame update : if timer > interval waktu evolusi Hitung nilai fungsi fitness populasi Evolusi bobot jaringan menggunakan algoritma genetika Update bobot jaringan agen Reset posisi agen Reset timer else Update agen Timer += waktu selisih frame update end if Evolusi Bobot Jaringan Syaraf Tiruan Evolusi bobot jaringan syaraf tiruan agen menggunakan algoritma genetika dilakukan ketika waktu interval evolusi tercapai. Proses evolusi algoritma genetika dimulai meliputi proses elitisme, seleksi, crossover, dan mutasi. Berikut merupakan pseudo code evolusi bobot jaringan syaraf tiruan menggunakan algoritma genetika : Pada setiap iterasi : Lakukan proses elitisme while jumlah populasi baru < jumlah populasi Dapatkan parent 1 dan parent 2 dengan seleksi turnamen Dapatkan child 1 dan child 2 dengan melakukan crossover antara parent 1 dan parent 2 Lakukan mutasi terhadap child 1 dan child 2 Masukkan child 1 dan child 2 dalam populasi baru end while Proses elitisme dilakukan dengan cara menyalin beberapa individu terbaik dalam populasi. Berikut merupakan pseudo code proses elitisme : 1. 2. Urutkan individu dalam populasi (dari nilai terendah ke tertinggi) Lakukan proses elitisme : Tentukan jumlah individu terbaik yang disalin (n) Tentukan banyaknya penyalinan (numCopies) for i=1 to n for j=1 to numCopies ambil individu terbaik peringkat ke-n end for end for Proses seleksi dilakukan menggunakan teknik tournament selection. Berikut merupakan pseudo code tournament selection : 1. 2. Tentukan jumlah pesaing atau competitor dalam seleksi turnamen (numCompetitor) Seleksi turnamen : for i=1 to numCompetitor individu ← ambil individu secara acak if fitness individu > fitness terbaik then individu terpilih ← individu fitness terbaik ← fitness individu end if end for Proses crossover yang dilakukan dengan cara membagi kromosom menjadi beberapa split points dan dilanjutkan dengan menentukan dua buah titik crossover secara acak dari split points yang dihasilkan. Jumlah
6
Embed
PEMBANGUNAN PORTAL SMS UNTUK SISTEM INFORMASI …digilib.its.ac.id/public/ITS-Master-15631-Paper-1072453.pdf · (dari nilai terendah ke tertinggi) Lakukan proses elitisme : Tentukan
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
10
rotasi menjadi sebuah pergerakan agen.
Berikut merupakan pseudo code pengolahan
keluaran jaringan syaraf tiruan menjadi
pergerakan agen :
1.
2.
Hitung gaya rotasi (rotational
force) :
rotasi kiri = keluaran neuron
ke-0
rotasi kanan = keluaran neuron
ke-1
gaya rotasi = rotasi kiri –
rotasi kanan
if gaya rotasi < minimum gaya
rotasi then
gaya rotasi = minimum gaya
rotasi
else if gaya rotasi > maksimum
gaya rotasi then
gaya rotasi = maksimum gaya
rotasi
end if
rotasi agen += gaya rotasi
Update rotasi dan posisi agen :
x agen = -sin(rotasi agen)
z agen = cos(rotasi agen)
if agen tidak tertabrak then
kecepatan = (rotasi kiri +
rotasi kanan) * konstanta
kecepatan agen
x agen += kecepatan * selisih
waktu frame update
z agen += kecepatan * selisih
waktu frame update
end if
Pelatihan Discreet Evolution
Pelatihan jaringan syaraf tiruan
dilakukan menggunakan algoritma genetika
untuk mengevolusi bobot jaringan syaraf
tiruan. Pelatihan agen dilakukan dengan
cara menaruh masing-masing agen dalam
peta permainan yang sama dimana setiap
agen harus dapat bergerak dari titik awal (S)
sampai titik tujuan (G) dengan menghindari
halangan seperti yang ditunjukkan dalam
Gambar 11. Jika interval waktu evolusi
tercapai maka agen akan direset ke posisi
awal, hal ini akan dilakukan berulang kali
sampai pelatihan selesai. Berikut merupakan
pseudo code pelatihan discreet evolution
menggunakan algoritma genetika :
Pada saat frame update :
if timer > interval waktu evolusi
Hitung nilai fungsi fitness populasi
Evolusi bobot jaringan menggunakan
algoritma genetika
Update bobot jaringan agen
Reset posisi agen
Reset timer
else
Update agen
Timer += waktu selisih frame update
end if
Evolusi Bobot Jaringan Syaraf Tiruan
Evolusi bobot jaringan syaraf tiruan
agen menggunakan algoritma genetika
dilakukan ketika waktu interval evolusi
tercapai. Proses evolusi algoritma genetika
dimulai meliputi proses elitisme, seleksi,
crossover, dan mutasi. Berikut merupakan
pseudo code evolusi bobot jaringan syaraf
tiruan menggunakan algoritma genetika :
Pada setiap iterasi :
Lakukan proses elitisme
while jumlah populasi baru < jumlah
populasi
Dapatkan parent 1 dan parent 2
dengan seleksi turnamen
Dapatkan child 1 dan child 2 dengan
melakukan crossover antara parent 1
dan parent 2
Lakukan mutasi terhadap child 1 dan
child 2
Masukkan child 1 dan child 2 dalam
populasi baru
end while
Proses elitisme dilakukan dengan cara
menyalin beberapa individu terbaik dalam
populasi. Berikut merupakan pseudo code
proses elitisme :
1.
2.
Urutkan individu dalam populasi
(dari nilai terendah ke
tertinggi)
Lakukan proses elitisme :
Tentukan jumlah individu terbaik
yang disalin (n)
Tentukan banyaknya penyalinan
(numCopies)
for i=1 to n
for j=1 to numCopies
ambil individu terbaik
peringkat ke-n
end for
end for
Proses seleksi dilakukan menggunakan
teknik tournament selection. Berikut
merupakan pseudo code tournament selection : 1.
2.
Tentukan jumlah pesaing atau
competitor dalam seleksi turnamen
(numCompetitor)
Seleksi turnamen :
for i=1 to numCompetitor
individu ← ambil individu
secara acak
if fitness individu > fitness
terbaik then
individu terpilih ← individu
fitness terbaik ← fitness
individu
end if
end for
Proses crossover yang dilakukan
dengan cara membagi kromosom menjadi
beberapa split points dan dilanjutkan dengan
menentukan dua buah titik crossover secara
acak dari split points yang dihasilkan. Jumlah
11
split points adalah sejumlah neuron pada layer
tersembunyi. Penentuan split points
ditunjukkan dalam Gambar 12. Berikut
merupakan pseudo code proses crossover :
1.
2.
Tentukan split points :
Inisialisasi counter index bobot
(n) = 0
for i=1 to jumlah layer
tersembunyi
for j=1 to jumlah neuron dalam
layer tersembunyi ke-i
for k=1 to jumlah masukan
dalam neuron ke-j
++n
end for
definisikan split point pada
gen indeks ke-n
end for
end for
Proses crossover menggunakan
split points :
ambil sebuah nilai acak (rate)
if rate > crossover rate ||
parent 1 == parent 2 then
child 1 ← parent 1
child 2 ← parent 2
return
end if
Titik crossover ke-1 ← ambil
secara acak titik crossover dari
posisi gen pertama sampai dengan
posisi split point indek
terakhir-1
Titik crossover ke-2 ← ambil
secara acak titik crossover dari
posisi titik crossover ke-2
sampai dengan posisi split point
indeks terakhir.
Lakukan crossover antara parent 1
dan parent 2 dengan titik
crossover ke-1 dan titik
crossover ke-2 sehingga
didapatkan child 1 dan child 2
Proses mutasi dilakukan dengan cara
menambahkan masing-masing nilai gen
dengan nilai yang dihasilkan secara acak.
Berikut merupakan pseudo code mutasi :
Tentukan maksimum penambahan nilai
(maxPeturbation)
for i=1 to jumlah gen dalam kromosom
ambil sebuah nilai acak (rate)
if rate < mutation rate then
nilai gen ke-i = nilai gen ke-i
+ random number *
maxPeturbation
end if
end for
Penghitungan Fungsi Fitness
Agen akan mendapatkan bonus (nilai
fitness akan bertambah) ketika agen tersebut
mendekati tujuan dan menghindari
halangan serta ketika mencapai target.
Berikut merupakan pseudo code
penghitungan nilai fitness agen :
Pada saat frame update :
jarak agen sekarang = (x target – x
agen) + (z target – z agen)
if agen tidak tertabrak and jarak
agen sekarang < jarak agen minimum
then
fitness++
jarak agen minimum = jarak agen
sekarang
end if
if agen mencapai target then
fitness +=50
end if
Integrasi Minimal-Memory Abstraction
dengan Jaringan Syaraf Tiruan
Dalam menyelesaikan permasalahan
realtime pathfinding dilakukan integrasi
antara minimal-memory abstraction sebagai
algoritma long steering dan jaringan syaraf
tiruan sebagai algoritma short steering.
Algoritma long steering digunakan sebagai
path planning yaitu untuk menentukan path
dari node awal sampai ke node tujuan
sedangkan algoritma short steering
digunakan untuk menghindari halangan
dinamis yang posisinya berada pada path
yang dihasilkan (menghalangi pergerakan
agen). Langkah – langkah pendekatan baru
yang diusulkan dimulai dengan (i)
melakukan abstraksi peta permainan
menggunakan minimal-memory abstraction
sehingga dihasilkan abstract map beserta
sectors, regions, dan edges, (ii) selanjutnya dari
hasil abstraksi tersebut dapat dilakukan
proses pathfinding untuk menentukan abstract
path dan real path, (iii) dan akhirnya
dilakukan pergerakan neural agent.
Abstraksi Peta Permainan Menggunakan
Minimal-Memory Abstraction
Untuk mempercepat proses pathfinding
dapat dilakukan tahap pre-processing dengan
melakukan abstraksi peta permainan
menggunakan minimal memory abstraction.
Minimal memory abstraction merupakan
teknik abstraksi yang membutuhkan sedikit
memori penyimpanan hasil abstraksi. Proses
abstraksi ini dapat dilakukan secara offline.
Berikut merupakan pseudo code abstraksi peta
permainan menggunakan minimal memory
abstraction :
1.
2.
Definisikan maksimum jumlah
region yang ada dalam sebuah
sektor sebesar 16x16 :
ukuran sektor = 16
Buat sektor :
jumlah sektor x = (panjang map
12
3.
4.
5.
+ ukuran sektor - 1) / ukuran
sektor
jumlah sektor y = (lebar map +
ukuran sektor -1) / ukuran
sektor
jumlah sektor = jumlah sektor x
* jumlah sektor y
for sektor i=1 to jumlah sektor
buat sektor ke-i
end for
Buat region :
for sektor i=1 to jumlah sektor
hitung jumlah region dalam
sektor ke-i
for j=1 to jumlah region
dalam sektor ke-i
buat region ke-j
end for
end for
Buat edge :
for sektor i=1 to jumlah sektor
hitung jumlah edge dalam
sektor ke-i
for j=1 to jumlah edge
dalam sektor ke-i
buat edge ke-j
end for
end for
Simpan informasi abstraksi ke
memori :
for sektor i=1 to jumlah sektor
hitung jumlah edge dalam
sektor ke-i
for j=1 to jumlah region
dalam sektor ke-i
simpan region ke-j
end for
for j=1 to jumlah edge dalam
sektor ke-i
simpan edge ke-j
end for
end for
Pathfinding Menggunakan Abstraksi
Setelah hasil abstraksi diperoleh maka
tahap selanjutnya adalah melakukan proses
pathfinding menggunakan abstraksi untuk
memperoleh abstract path dan real path. Real
path yang dihasilkan akan digunakan
sebagai penunjuk jalan neural agent dalam
menelusuri peta permainan sampai ke
tujuan. Berikut merupakan pseudo code
pathfinding menggunakan abstraksi : 1.
2.
3.
4.
Cari region terdekat dengan
posisi awal dengan Breadth
First Search
Cari region terdekat dengan
posisi tujuan dengan Breadth
First Search
Cari abtract path menggunakan
A* dari posisi awal sampai ke
posisi tujuan (sektor dan
region mana yang akan
dilewati)
Cari real path menggunakan A*
dari posisi awal sampai ke
posisi tujuan (grid cell mana
yang akan dilewati)
Pergerakan Neural Agent
Real path yang dihasilkan dari proses
pathfinding menggunakan abstraksi akan
digunakan oleh agen sebagai penunjuk jalan
dalam menelusuri peta permainan. Neural
Gambar 12. Split points crossover [16]
agent bergerak sesuai dengan real path yang
dihasilkan dan secara realtime menghindari
halangan dinamis menggunakan modifikasi
salah satu algoritma reynold steering [17]
yaitu algoritma path following. Berikut
merupakan pseudo code algoritma path
following yang digunakan agen :
1.
2.
Inisialisasi :
awal = path indeks awal
tujuan = path indeks terakhir
target = path indeks ke-1
indeks path sekarang = 1
definisikan offset
Pada saat frame update :
Hitung jarak posisi agen dan
target
if posisi agen == tujuan then
agen berhenti
return
end
if target terblok || jarak
posisi agen dan target <
offset then
if indeks path sekarang !=
tujuan then
indeks path sekarang++;
target = indeks path
sekarang
end if
end if
Update informasi sensor
Update jaringan syaraf tiruan
agen
Update posisi dan rotasi agen
HASIL DAN PEMBAHASAN
Lingkungan Uji Coba
Spesifikasi perangkat keras yang
digunakan dalam uji coba adalah prosesor
Intel Core i3, harddisk 320 GB, 3GB RAM,
NVIDIA G310M CUDA. Sedangkan
spesifikasi perangkat lunak yang digunakan
adalah Microsoft Windows 7 64-bit, Java
13
SDK 1.6, game engine 3D JMonkeyEngine 3,
Eclipse IDE Helios.
Uji Coba Skenario 1
Uji coba dilakukan dengan cara
mengubah secara manual jumlah layer
tersembunyi dan jumlah neuron layer
tersembunyi pada saat pelatihan neural agent
menggunakan mode discreet evolution.
Generasi terbaik diperoleh pada generasi ke-
37 dengan parameter pelatihan yang
ditunjukkan pada Tabel 1. Gambar 13
menunjukkan individu pada generasi ke-37
berhasil sampai ke tujuan serta menghindari
halangan.
Tabel 1. Parameter uji coba skenario 1.
No. Parameter Nilai
1. Crossover rate 0,7
2. Mutation rate 0,1
3. Jumlah Agen 50
4. Tournament selection Ya
5. Elitism Ya
6. Jumlah layer tersembunyi 1
7. Jumlah neuron tiap layer
tersembunyi
10
8. Jumlah layer masukan 12
9. Jumlah layer keluaran 2
10. Waktu interval evolusi 15 detik
Gambar 13. Generasi terbaik ditemukan
pada generasi ke-37.
Gambar 14. Outline uji coba skenario 2.
Gambar 15. Peta permainan arena.map.
Uji Coba Skenario 2
Uji coba dilakukan dengan cara menaruh
sejumlah agen pada posisi yang saling
berlawanan seperti yang ditunjukkan pada
Gambar 14. Masing masing agen harus dapat
sampai ke tujuan. Dalam uji coba ini
digunakan peta permainan arena.map yang
ditunjukkan pada Gambar 15 dan diukur 2
parameter yaitu frame rate game engine rata-
rata dan jumlah tabrakan setiap frame.
Uji Coba Skenario 3
Uji coba dilakukan dengan menaruh
agen ke dalam 10 peta permainan yang
berbeda untuk mengukur solusi path yang
dihasilkan (path length) dan waktu tempuh
agen untuk sampai ke tujuan.
Tabel 2. Hasil uji coba skenario 2.
Jumlah
Agen
Jaringan Syaraf
Tiruan
Minimal Memory
Abstraction &
Jaringan Syaraf
Tiruan
Frame
Rate
Jumlah
Tabrakan
per
Frame
Frame
Rate
Jumlah
Tabrakan
per
Frame
10 59 0 59 0
20 59 1 59 1
30 59 3 59 1
40 59 4 59 3
50 59 5 59 5
60 59 5 59 5
70 59 6 59 6
80 59 9 59 10
90 59 10 59 11
100 58 12 59 11
Rata-
rata 59 5 59 5
Tabel 3. Hasil uji coba skenario 3.
No
Tes
Peta
Perma-
inan
Jaringan
Syaraf Tiruan
Minimal
Memory
Abstraction &
Jaringan
Syaraf Tiruan
Pan-
jang
Path
(wu)
Waktu
Tem-
puh
(detik)
Pan-
jang
Path
(wu)
Waktu
Tem-
puh
(detik)
1 test1.map 60,60 19,86 33,49 11,61
2 test2.map 28,12 9,68 27,86 9,66
3 test3.map 54,09 17,98 37,97 13,05
4 test4.map 61,23 20,43 56,20 19,26
5 test5.map 32,88 11,08 33,03 11,45
6 test6.map 111,33 36,48 45,33 15,51
7 test7.map 32,91 11,22 32,85 11,36
8 test8.map 88,12 29,01 53,16 18,25
9 test9.map 38,92 13,17 29,34 10,15
10 test10.map 36,54 12,48 29,34 10,15
Rata-rata 54,47 18,14 37,86 13,05
14
(a)
(b)
Gambar 16. Contoh perbandingan path yang
dihasilkan oleh (a) minimal
memory abstraction & jaringan
syaraf tiruan (b) jaringan syaraf
tiruan dalam peta permainan
test1.map.
Analisa Uji Coba
Tabel 1 menunjukkan hasil uji coba
skenario 1. Dalam uji coba skenario 1 dapat
disimpulkan bahwa agen hanya
membutuhkan sebuah layer tersembunyi
pada arsitektur jaringan syaraf tiruan agar
berhasil mempelajari dua komponen penting
realtime pathfinding yaitu path planning dan
obstacle avoidance. Dengan arsitektur jaringan
syaraf tiruan dengan 12 buah masukan, 1
buah layer tersembunyi, 10 buah neuron
layer tersembunyi, dan 2 buah keluaran
menyebabkan proses pelatihan neural agent
menjadi relatif singkat dengan diperoleh
generasi terbaik pada generasi ke-37.
Tabel 2 menunjukkan hasil uji coba
skenario 2 dalam peta permainan arena.map.
Pada Tabel 2 terdapat beberapa parameter
yang dievaluasi yaitu frame rate game engine
dan jumlah tabrakan per frame. Pada Tabel
2, dapat diketahui bahwa jumlah frame rate
game engine dan jumlah tabrakan per frame
yang dihasilkan dari kedua metode yang
diujikan tidak memiliki perbedaan yang
signifikan. Perbedaan frame rate game engine
antara metode realtime pathfinding
menggunakan jaringan syaraf tiruan dan
metode realtime pathfinding menggunakan
minimal memory abstraction yang tidak
signifikan mengindikasikan bahwa proses
pathfinding menggunakan minimal memory
abstraction berjalan cepat. Jumlah rata-rata
tabrakan per frame kedua metode adalah 5
buah tabrakan per frame. Jumlah tabrakan
per frame kedua metode lebih banyak
daripada algoritma clearpath [15], dimana
dalam skenario uji coba yang kompleks
dengan 100 buah agen algoritma clearpath
menghasilkan 0 tabrakan per frame. Hal ini
dikarenakan dalam kedua metode realtime
pathfinding yang diujicoba dalam penelitian
tidak dilatih untuk mempelajari pathfinding
dalam lingkungan yang ramai (crowded
environment).
Tabel 3 menunjukkan hasil uji coba
skenario 3. Pada Tabel 3 terdapat beberapa
parameter yang dievaluasi yaitu panjang
path dan waktu tempuh agen sampai ke
tujuan. Pada Tabel 3, dapat diketahui bahwa
path yang dihasilkan oleh metode realtime
pathfinding menggunakan jaringan syaraf
tiruan dan minimal memory abstraction 3 kali
lebih pendek daripada metode realtime
pathfinding menggunakan jaringan syaraf
tiruan. Serta waktu tempuh yang dihasilkan
oleh metode realtime pathfinding
menggunakan jaringan syaraf tiruan dan
minimal memory abstraction 3 kali lebih
cepat daripada metode realtime pathfinding
menggunakan jaringan syaraf tiruan.
Sehingga dapat disimpulkan bahwa metode
realtime pathfinding menggunakan jaringan
syaraf tiruan dan minimal memory abstraction
menghasilkan solusi path yang lebih optimal
daripada metode realtime pathfinding
menggunakan jaringan syaraf tiruan seperti
yang ditunjukkan pada Gambar 16.
KESIMPULAN
Dari uji coba yang telah dilakukan,
maka dapat ditarik kesimpulan sebagai
berikut:
1. Permasalahan realtime pathfinding
berhasil diselesaikan menggunakan
minimal memory abstraction sebagai
algoritma long steering dan jaringan
syaraf tiruan sebagai algoritma short
steering.
2. Neural agent hanya membutuhkan
sebuah layer tersembunyi untuk dapat
mempelajari dua komponen penting
realtime pathfinding.
15
3. Dengan menambahkan minimal memory
abstraction sebagai algoritma long
steering tidak mempengaruhi frame rate
game engine secara signifikan dibanding
metode realtime pathfinding
menggunakan jaringan syaraf tiruan.
4. Metode yang diusulkan mempunyai
solusi path yang optimal dengan hasil
panjang path 3 kali lebih pendek dan
waktu tempuh 3 kali lebih cepat
daripada metode realtime pathfinding
menggunakan jaringan syaraf tiruan. Untuk meningkatkan hasil yang telah