BAB IV PERANCANGAN DAN IMPLEMENTASI · Mengelola case 4 schedule 1 ... dijalankan pada sistem...
Transcript of BAB IV PERANCANGAN DAN IMPLEMENTASI · Mengelola case 4 schedule 1 ... dijalankan pada sistem...
IV-14
BAB IV
PERANCANGAN DAN IMPLEMENTASI
4.1 Pendahuluan
Sistem multiagen untuk menyelesaikan permasalahan job shop scheduling diimplementasikan
dalam bentuk program yang menerima masukan berupa definisi permasalahan job shop
scheduling dan kemudian melakukan simulasi untuk mendapatkan jadwal pengerjaan job
yang terbaik yaitu yang makespan tersingkat.
Agen-agen yang telah dijelaskan pada BAB III Analisis akan diimplementasikan sebagai
bagian dari program. Selama melakukan simulasi ini agen-agen (machine agent) akan
melakukan pembelajaran (menyimpan pengalaman dan melakukan inferensi) untuk
memperoleh aturan (policy) terbaik untuk mengambil keputusan dalam pemrosesan job
(menentukan urutan operasi job yang akan dikerjakan).
4.2 Perancangan Kelas
Program ini dirancang menggunakan metode berorientasi objek sehingga program ini dibagi
menjadi kelas-kelas dengan tanggung jawab tertentu. Tabel daftar kelas perancangan program
dan jenisnya dapat dilihat pada Tabel IV-1 Daftar Jenis Kelas.
Tabel IV-1 Daftar Jenis Kelas
No Nama Kelas Jenis
1 Jsspui Interface
2 Job Entity
3 Case Entity
4 schedule Entity
5 controlAgent Controller
6 controlAgentBehaviour Controller
7 machineAgent Controller
IV-15
8 machineAgentBehaviour Controller
Tabel rincian tanggung jawab setiap kelas dapat dilihat padaTabel IV-2 Daftar Tanggung
Jawab Kelas.
Tabel IV-2 Daftar Tanggung Jawab Kelas
No Nama Kelas Daftar Tanggung Jawab
1 jsspui 1. Menerima input dari user dan menjalankan
program
2. Menerima output dari program dan
menampilkannya kepada user
2 job 1. Menyimpan data spesifikasi setiap job (rute,
waktu operasi)
2. Menyimpan status (perubahan) tiap job yang
diproses oleh sistem
3 Case 1. Menyimpan kasus untuk basis pengetahuan agen
case-based reasoning
2. Mengelola case
4 schedule 1. Menyimpan penjadwalan dari hasil simulasi
sistem
2. Mengelola schedule
5 controlAgent 1. Menerima definisi job shop problem dari file
input
2. Mengontrol seluruh proses job shop scheduling
3. Menjalankan controlAgentBehaviour
6 controlAgentBehaviour 1. Mengirimkan kondisi sistem kepada
machineAgent
2. Menerima keputusan (pilihan aksi) dari
machineAgent
3. Mengirimkan reward kepada machineAgent
4. Mencatat hasil simulasi job shop scheduling dan
IV-16
menuliskannya di file output
7 machineAgent 1. Mengambil pengetahuan (case) dari file
eksternal
2. Menjalankan machineAgentBehaviour
8 machineAgentBehaviour 1. Mengelola pengetahuan (case) di dalam memori
2. Mengambil keputusan aksi berdasarkan kondisi
sistem dari controlAgent dan basis pengetahuan
yang dimiliki
3. Memutakhirkan basis pengetahuan berdasar kan
nilai reward dari aksi, yang diberikan oleh
controlAgent
4. Menuliskan kembali pengetahuan (case) yang
telah dimutakhirkan ke file eksternal
Diagram kelas perancangan dapat dilihat pada Gambar IV-1. Kelas jsspui merupakan kelas
yang hanya bertugas menghidupkan seluruh agen yang dibutuhkan sesuai dengan definisi
permasalahan job shop scheduling yang diberikan oleh user. Kelas machineAgentBehaviour
merupakan bagian dari kelas machineAgent sedangkan kelas controlAgentBehavior
merupakan bagian dari kelas controAgent. Dengan demikian kelas machineAgentBehaviour
dapat menggunakan atribut dan method yang ada pada kelas machineAgent dan
controlAgentBehaviour dapat menggunakan atribut dan method yang ada pada kelas
controlAgent.
Diagram sequence perancangan dari program dapat dilihat padaGambar IV-2 Diagram
sequence perancangan program. Sequence program ini akan berulang sampai seluruh job
yang didefinisikan selesai. Status job terus menerus dicek pada setiap akhir iterasi dengan
fungsi isJobsDone() yang dimiliki kelas controlAgent. Gambar IV-2 Diagram sequence
perancangan program berpadanan dengan flowchart pada Gambar III-3.
IV-17
Gambar IV-1 Diagram perancangan kelas program
Keterangan lebih rinci dari setiap atribut dan operasi dapat dilihat pada Tabel IV-3 Kelas
jsspui, Tabel IV-4 Kelas job, Tabel IV-5 Kelas Case, Tabel IV-6 Kelas schedule, Tabel IV-7
Kelas controlAgent, Tabel IV-8 Kelas controlAgentBehaviour, Tabel IV-9 Kelas
machineAgent dan Tabel IV-10 Kelas machineAgentBehaviour.
IV-18
Gambar IV-2 Diagram sequence perancangan program
IV-19
Tabel IV-3 Kelas jsspui
No Nama atribut Visibility Tipe
1 - - -
No Nama operasi Visibility Deskripsi
1 jsspui() Public Konstruktor kelas
2 out() Public Menampilkan output program kepada
user
Tabel IV-4 Kelas job
No Nama atribut Visibility Tipe
1 route Public Array of Integer
2 optime Public Array of Integer
3 next Public Integer
4 prev Public Integer
5 ticker Public Integer
No Nama operasi Visiblility Deskripsi
1 job() Public Konstrktor kelas
2 process() Public
Memutakhirkan (menambah) nilai atribut
ticker pada job yang menandakan bahwa
job telah diproses
3 isDone() Public
Mencek apakah job sudah selesai
diproses pada setiap mesin pada rute
(sesuai urutan)
Tabel IV-5 Kelas Case
No Nama atribut Visibility Tipe
1 p Public Array of Integer
IV-20
2 sol Public solution (internal class)
No Nama operasi Visiblility Deskripsi
1 Case() Public Konstrktor kelas
2 out() Public Mencetak nilai atribut sebuah Case ke
dalam String
3 updateExp() Public Melakukan pemutakhiran pengalaman
(experience) yang disimpan dalam Case
4 updateExpN() Public
Melakukan pemutakhiran update-counter
(N) dari sebuah aksi pada pengalaman
dalam sebuah Case
5 getExpUpdate() Public
Mengembalikan nilai updateCounter (N)
dari sebuah aksi pada pengalaman dalam
sebuah Case
6 getExpQ() Public Mengembalikan nilai Q dari sebuah aksi
pada pengalaman dalam sebuah Case
7 getExpAction() Public Mengembalikan nilai aksi pada
pengalaman dalam sebuah Case
Tabel IV-6 Kelas schedule
No Nama atribut Visibility Tipe
1 table Public Array of array of Integer
2 time Public Integer
No Nama operasi Visiblility Deskripsi
1 schedule() Public Konstrktor kelas
2 occupy() Public
Memutakhirkan nilai table sebagai log
dari penjadwalan yang dihasilkan
simulasi
3 out() Public Mengembalikan table ke dalam bentuk
String
IV-21
Tabel IV-7 Kelas controlAgent
No Nama atribut Visibility Tipe
1 AID Public AID
2 jobs Public Array of job
3 schedule Public Schedule
4 machineAgents Public Array of AID
No Nama operasi Visiblility Deskripsi
1 controlAgent() Public Konstrktor kelas
2 setup() Public Fase persiapan agen. Penambahan
behaviour dilakukan di sini
3 addBehaviour() Public Penambahan behaviour atau perilaku
agen
4 updateList() Public Melakukan pendaftara seluruh agen yang
aktif
5 getTotalTime() Public
Memperoleh nilai total dari proses yang
dibutuhkan untuk menyelesaikan seluruh
job secara sekuensial (worst case)
6 isJobsDone() Public
Mencek apakah seluruh job telah selesai
diproses (melalui setiap mesin sesuai rute
yang telah didefinisikan)
7 doDelete() Public
Memberikan sinyal kepada agen untuk
memicu prosedur takeDown() untuk
mematikan agen
8 takeDown() Public Mematikan agen
9 out() Public
Mengembalikan bentuk String dari data
keluaran agen :
1. DPR yang digunakan,
2. Waktu hasil penjadwalan
(makespan) dan
IV-22
3. Exploration rate tiap machineAgent
Tabel IV-8 Kelas controlAgentBehaviour
No Nama atribut Visibility Tipe
1 status Public Integer
No Nama operasi Visibility Deskripsi
1 controlAgentBehaviour() Public Konstruktor kelas
2 action()
Public Mendefinisikan perilaku (urutan
aksi) yang harus dilakukan agen saat
diaktifkan/dihidupkan
Tabel IV-9 Kelas machineAgent
No Nama atribut Visibility Tipe
1 AID Public AID
2 CB Public Vector of Case
3 controlAgent Public AID
No Nama operasi Visiblility Deskripsi
1 machineAgent() Public Konstrktor kelas
2 setup() Public Fase persiapan agen. Penambahan behaviour
dilakukan di sini
3 addBehaviour() Public Penambahan behaviour atau perilaku agen
4 NN() Public Mencari Nearest Neighbour (Case) dari
sebuah kondisi (state)
5 selectIndex() Public Memilih indeks dari aksi (dispatch rule) yang
akan dilakukan untuk memilih job
6 selectJob() Public Memilih job berdasarkan indeks aksi
7 shellSort() Public Mengurutkan nilai Q dari sebuah Case
(ascending sort)
IV-23
8 doDelete() Public
Memberikan sinyal kepada agen untuk
memicu prosedur takeDown() untuk
mematikan agen
9 takeDown() Public Mematikan agen
Tabel IV-10 Kelas machineAgentBehaviour
No Nama atribut Visibility Tipe
1 status Public Integer
No Nama operasi Visibility Deskripsi
1 machineAgentBehaviour() Public Konstruktor kelas
2 action() Public
Mendefinisikan perilaku (urutan aksi)
yang harus dilakukan agen saat
diaktifkan/dihidupkan
4.3 Implementasi
IV.3.1 Lingkungan implementasi
Lingkungan implementasi yang dipilih adalah bahasa pemrograman Java dengan
framework JADE. Bahasa Java dipilih karena merupakan bahasa yang dapat
menghasilkan program multiplatform. Selain itu, alasan dipilihnya bahasa
pemrograman Java adalah tersedianya framework khusus untuk mengembangkan
sistem berbasis multiagent yaitu JADE. Java SDK yang digunakan adalah versi 1.6.
IDE yang digunakan untuk membuat program ini adalah Net Beans vesi 6.0.1 yang
dijalankan pada sistem operasi Windows XP SP2.
IV.3.2 Implementasi kelas
Tabel implementasi kelas dapat dilihat pada Tabel IV-11 Implementasi kelas.
Sebagian dari kelas yang diimplementasikan merupakan turunan dari kelas-kelas
bawaan framework JADE. Selain itu ada kelas-kelas bawaan lain dari JADE yang
digunakan dalam sistem. Daftar seluruh kelas bawaan dari JADE berikut deskripsi
IV-24
tanggung jawabnya dapat dilihat pada Tabel IV-12 Daftar kelas bawaan dari
framework.
Tabel IV-11 Implementasi kelas
No Nama Kelas Nama File Fisik
1 Jsspui jsspui.java
2 Job job.java
3 Case case.java
4 Schedule schedule.java
5 controlAgent controlAgent.java
6 controlAgentBehaviour controlAgent.java
7 machineAgent machineAgent.java.java
8 machineAgentBehaviour machineAgent.java.java
Tabel IV-12 Daftar kelas bawaan dari framework
No Nama Kelas Daftar Tanggung Jawab
1 Jade.core.agent Parent dari kelas controlAgent dan
machineAgent
2 Jade.core.behaviours Parent dari kelas controlAgentBehaviour
dan machineAgentBehaviour
3 Jade.core.AID Mengelola ID khusus untuk tiap agen
4 Jade.domain.FIPAAgentManagement Mengelola deskripsi agen dan layananya
(service)
5 Jade.domain.FIPAException Mengelola exception dari aksi
6 Jade.domain.DFService Mengelola layanan yang terkait dengan
agen-agen
7 Jade.lang.acl.ACLMessage Mengelola pesan untuk komunikasi antar
agen
IV.3.3 Sintaks untuk menjalankan program
Sintaks run program:
IV-25
java jsspui [path_dari_file_job_shop_input]
[learning_exploration_rate][test_value]
contoh :
1. D:\My Documents\NetBeansProjects\JSSP\build\classes >java jsspui
C:\tes1.txt
2. D:\My Documents\NetBeansProjects\JSSP\build\classes >java jsspui
C:\tes1.txt 5
3. D:\My Documents\NetBeansProjects\JSSP\build\classes >java jsspui
C:\tes1.txt 5 1
Keterangan:
1 learning_exploration_rate
Bernilai {0..10} 0 = tidak melakukan ekplorasi; 10 = terus melakukan explorasi;
2 test_value
Nilai untuk mengeksekusi test agent yang hanya menggunakan satu jenis DPR. 0
= EDD agent, 1 = MS agent, 2 = SPT agent
3 Program harus dijalankan di folder di mana seluruh kelas JSSP berada
IV.3.4 Spesifikasi file input
# JSS
# 10 5 // [jumlah_job] [jumlah_mesin]
# 1 72 0 87 4 95 2 66 3 60
# 4 5 3 35 0 48 2 39 1 54
# 1 46 3 20 2 21 0 97 4 55
# 0 59 3 19 4 46 1 34 2 37
# 4 23 2 73 3 25 1 24 0 28
# 3 28 0 45 4 5 1 78 2 83
# 0 53 3 71 1 37 4 29 2 12
# 4 12 2 87 3 33 1 55 0 38
# 2 49 3 83 1 40 0 48 4 7
# 2 65 3 17 0 90 4 27 1 23
IV-26
//[mesin1] [optime1] [mesin2] [optime2] … [mesinN] [optimeN]
Contoh file input tes2.txt dapat dilihat pada Gambar IV-4 Contoh file input.
Gambar IV-3 Diagram kelas implementasi program.
IV-27
Gambar IV-4 Contoh file input
IV.3.5 Spesifikasi file output
Program akan menghasilkan 2 jenis output (kedua file output ini di buat oleh program
di folder yang sama di tempat seluruh kelas program ini berada):
1. Schedule.txt : dibagi menjadi dua bagian yaitu spesifikasi job yang diberikan
(ditulis ulang) dan hasil penjadwalan (schedule). Contoh file ada pada Gambar
IV-5 Contoh file output program schedule.txt. Penjelasan dari setiap baris dalam
file adalah sebagai berikut :
1
0 2 1
4 7 3
1. Baris pertama adalah id dari job
2. Baris kedua adalah urutan mesin (rute) yang harus dilalui job
3. Baris ketiga adalah waktu operasi job di tiap mesin. Pada contoh diatas :
waktu operasi pada mesin 4 adalah 88, mesin 8 adalah 68 .dst
IV-28
Total time = 34
Machine[0] 0 0 0 0 - 1 1 1 1 1 - - - - - - - - - - - - - - - 2 2 2 2 2 2 2 2 2 - - - - - - - - - - - - - Machine[1] - - - - - - - - - - 1 1 1 1 1 1 0 0 0 2 2 2 2 2 2 - - - - - - - - - - - - - - - - - - - - - - Machine[2] 1 1 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1. Baris pertama adalah makespan
2. Baris kedua dan seterusnya adalah tabel (baris dan kolom) jadwal pengerjaan
yang dihasilkan sistem. Bagian baris (machine[1], machine[2], machine[1])
adalah mesin yang bekerja pada sistem. Sedangkan bagian kolom adalah
waktu (t). Lambang ‘-‘ berarti pada saat itu mesin sedang idle. Sedangkan
lambang berupa angka tertentu adalah id dari job yang sedang diproses pada
mesin tersebut.
Gambar IV-5 Contoh file output program schedule.txt
2. Case [n].txt : representasi pengetahuan dari tiap machine Agent. Contoh file
output case base dapat dilihat pada Gambar IV-6 Contoh file case base dari agen.
Penjelasan dari bagian-bagian dalam file ini adalah :
10 11 15
0
IV-29
0 2 0.6041666666666666
1 3 0.4166666666666667
2 0 0.0
1. Baris pertama merupakan state dari case yaitu case[i].state
2. Baris kedua merupakan evaluation value dari tiap case[i].solution
3. Baris ketiga dan seterusnya adalah experience[i] = <kode_aksi
jumlah_update nilai_q> atau Case[i].solution.E[j] = <a, n, Q>.
Tuple E = <a, n, Q> selalu terurut menaik berdasarkan Q
Gambar IV-6 Contoh file case base dari agen
IV-30
IV.3.6 Contoh penyelesaian kasus
Pada sistem multiagent ini, control agent dan beberapa (dalam kasus ini tiga) machine
agent akah saling berinteraksi untuk melakukan simulasi job shop scheduling dengan
spesifikasi kasus job shop di atas. Dalam simulasi ini, sistem tidak mengambil pilihan
acak (exploration rate = 0), sehingga perilaku agen lebih mudah ditelaah. Contoh
kasus yang disimulasikan adalah kasus job shop 3 job 3 mesin dengan representasi
sebagai berikut :
3 3
0 4 2 7 1 3
2 5 0 5 1 6
2 5 1 6 0 9
Dalam skenario satu, semua machine agent belum memiliki pengetahuan (case) sama
sekali. Jadi dalam simulasi ini ditunjukkan tahap-tahap pembuatan dan penambahan
case oleh setiap machine agent. Mengacu pada siklus CBR, maka setiap kasus yang
ditemukan oleh agen akan disimpan (retained). Sesuai dengan algoritma global
program pada Algoritma III-9 penambahan kasus baru akan mengakibatkan
reinisialisasi dari case yang mengacu pada kasus baru tersebut.
Flowchart skenario satu dibagi menjadi tiga bagian yaitu control agent, machine
agent 0, machine agent 1 dan machine agent 2. Keseluruhan flowchart dibagi dalam
beberapa bagian gambar :
1. Control agent : terdapat pada Gambar IV-7, Gambar IV-8, Gambar A - 1,
Gambar A - 2 dan Gambar A - 3
2. Machine agent 0 : terdapat pada Gambar IV-9, Gambar IV-10 dan Gambar A - 4
3. Machine agent 1 : terdapat pada Gambar A - 5, Gambar A - 6 dan Gambar A - 7
4. Machine agent 2 : terdapat pada Gambar IV-11, Gambar IV-12 dan Gambar A - 8
Legenda dari flowchart dapat dilihat pada Gambar III-3.
IV-31
mulai
J[0].route = {0, 2, 1}; j[0].optime = {4, 7, 3}
J[1].route = {2, 0, 1}; j[1].optime = {5, 5, 6}
J[2].route = {2, 1, 0}; j[2].optime = {5, 6, 9}
Kirim daftar job :
Machine[0] = {j[0]}
Machine[2] = {j[1],j[2]}
21
Kirim state (total duedate, total slack,
total processing time, current time) :
14 50 14 0
3 4
Terima pilihan job:
Machine[0] = j[0] (0 0 4 0)
Machine[2] = j[1] (0 0 5 0)
5
Reward = 0 + 0 + ((7+3)+(5+6)+(5+6+9))/3
= 1387
6
9
Gambar IV-7 Flowchart control agent (1)
Gambar IV-8
Gambar IV-9
Gambar IV-9
Gambar IV-9
Gambar IV-11
Gambar IV-11
Gambar IV-11
IV-32
Gambar IV-8 Flowchart control agent (2)
Gambar IV-7
Gambar A - 1
Gambar IV-10
Gambar IV-10
Gambar IV-10
Gambar IV-12
Gambar IV-10
Gambar IV-10
IV-33
J[0].route = {0, 2, 1}; j[0].optime = {4, 7, 3}2
State: 14 50 14 0
Tambah case :
14 50 14 0
0
2 0 0.0
1 0 0.0
0 0 0.0
Cold == Cnew (tidak ada transisi
state)
Action_ix = selectIndex(0)
Cnew.sol.E[Action_ix].action = 2 (SPT)
Cnew.sol.E[Action_ix].n++
Cnew:
14 50 14 0
1
2 1 0.0
1 0 0.0
0 0 0.0
PT(j[0]) = 4
Kirim pilihan job = j[0]
Kirim start, completion time,
reward lokal:
0 0 4 0
5
getReward(4,4) = 0
Reward global = 13
Cold = Cnew (14 50 14 0)
Old_action = Action_ix = 0
8
41
4
mulai
Gambar IV-9 Flowchart machine agent 0 (1)
Gambar IV-7
Gambar IV-7
Gambar IV-7
Gambar IV-10
IV-34
Gambar IV-10 Flowchart machine agent 0 (2)
Gambar IV-9
Gambar IV-8
Gambar IV-8
Gambar IV-8
Gambar A - 4
IV-35
J[1].route = {2, 0, 1}; j[1].optime = {5, 5, 6}
J[2].route = {2, 1, 0}; j[2].optime = {5, 6, 9}1
State: 14 50 14 0
Tambah case (Cnew) :
14 50 14 0
0
2 0 0.0
1 0 0.0
0 0 0.0
Cold == Cnew (tidak ada transisi state)
Jadi nilai tidak diupdate
Action_ix = selectIndex(0)
Cnew.sol.E[Action_ix].action = 2 (SPT)
Cnew.sol.E[Action_ix].n++
Cnew:
14 50 14 0
1
2 1 0.0
1 0 0.0
0 0 0.0
PT(j[1]) = 5
PT(j[2]) = 5
Kirim pilihan job = j[1]
Kirim start, completion time,
reward lokal:
0 0 5 0
6
getReward(5,5) = 0
Reward global = 13
Cold = Cnew (14 50 14 0)
Old_action_ix = Action_ix = 0
7
46
3
Mulai
Gambar IV-11 Flowchart machine agent 2 (1)
Gambar IV-7
Gambar IV-7
Gambar IV-7
Gambar IV-12
IV-36
Gambar IV-12 Flowchart machine agent 2 (2)
Gambar IV-8
Gambar IV-8
Gambar IV-8
Gambar IV-11
Gambar A - 8
IV-37
Pada skenario dua ditunjukkan proses pemutakhiran nilai Q yang disimpan dalam
pengetahuan machine agent. Skenario ini hanya melengkapi skenario sebelumnya jadi
tidak ditampilkan lengkap (dari awal simulasi sampai akhir) melainkan hanya
sebagian saja. Flowchart skenario dua hanya ditampilkan sebagian karena secara
keseluruhan, mirip dengan skenario satu. Flowchart skenario dua terdapat pada
Gambar IV-13, Gambar IV-14 dan Gambar IV-15.
Gambar IV-13 Flowchart control agent (skenario 2)
Gambar IV-14 Gambar IV-15
Gambar IV-15
Gambar IV-15
Gambar IV-14
Gambar IV-14
IV-38
Gambar IV-13 Flowchart control agent (skenario 2) menunjukkan interaksi yang
dinisiasi oleh control agent. Pada Gambar IV-13 mengirimkan plihan job pada
machine agent 0 dan machine agent 2.
CB[1]
26 41 17 5
1
2 1 0.0
0 0 0.0
1 0 7.5
CB[0]
14 50 14 0
1
2 2 0.0
1 0 0.0
0 0 0.0
CB[2]
34 12 12 22
1
2 2 0.0
1 0 0.0
0 0 0.0
J[1].route = {0, 1}; j[1].optime = {5, 6}12
State: 26 41 17 513
Cold = (14 50 14 0)
Reward global = 13
Old_action_ix = 0
Alpha = 1 / 1 + 2 = 0.33
Q = (1-0.33) (0) + (0.33) (13 + 0.5 * 0.0) = 4.33
Cold.sol.E[Old_action_ix].q = 4.33
Resort(Cold.sol.E)
14 50 14 0
1
1 0 0.0
0 0 0.0
2 2 4.33
Action_ix = SelectIndex(5)
Cnew.sol.E[Action_ix].action = 2 (SPT)
Cnew.sol.E[Action_ix].n++
Cnew:
26 41 17 5
1
2 1 0.0
1 0 0.0
0 0 0.0
PT(j[1]) = 5
Kirim pilihan job = j[1]
Kirim start, completion time,
reward lokal:
(1 5 10 0)
getReward(10,10) = 0
Reward global = 15
Cold = Cnew (26 41 17 5)
Old_action_ix = Action_ix = 0
14
16
CB[1]
26 41 17 5
1
2 2 0.0
0 0 0.0
1 0 7.5
CB[0]
14 50 14 0
1
1 0 0.0
0 0 0.0
2 2 4.33
CB[2]
34 12 12 22
1
2 2 0.0
1 0 0.0
0 0 0.0
Cnew = NN(state, CB)
CB[1]
26 41 17 5
1
2 1 0.0
0 0 0.0
1 0 7.5
Gambar IV-14 Flowchart machine agent 0 (skenario 2)
Pada Gambar IV-14 ditunjukkan proses pemutakhiran nilai Q (yang diikuti dengan
resorting) pada case yang dimiliki machine agent 0. Tiga kotak di sebelah kiri atas
Gambar IV-13
Gambar IV-13
Gambar IV-13
IV-39
merupakan case base awal dari machine agent 0, sedangkan tiga kotak di sebelah kiri
bawah merupakan case base akhir dari machine agent 0.
Gambar IV-15 Flowchart machine agent 2 (skenario 2)
Pada Gambar IV-15 ditunjukkan proses pemutakhiran nilai Q (yang diikuti dengan
resorting) pada case yang dimiliki machine agent 2. Tiga kotak di sebelah kiri atas
merupakan case base awal dari machine agent 0, sedangkan tiga kotak di sebelah kiri
bawah merupakan case base akhir dari machine agent 0.
Gambar IV-13
Gambar IV-13
Gambar IV-13