iv
ABSTRAK
Permainan kartu adalah permainan yang termasuk ke dalam jenis permainan turn-based strategy. Permainan dengan jenis turn-based strategy ini biasanya memiliki AI dengan tingkat kesulitan yang berbeda-beda sebagai lawan mainnya Ada banyak algoritma yang dapat diimplementasikan pada AI. Salah satu diantaranya adalah algoritma genetik. Algoritma genetik merupakan salah satu algoritma yang menggunakan teknik pencarian tahap demi tahap berdasarkan seleksi alam untuk mencari solusi. Akhirnya dilakukan analisa, perancangan, desain sistem, dan pencarian teori-teori yang mendukung untuk membuat permainan kartu yang berjenis turn-based strategy lalu riset dilanjutkan pada tahap implementasi dan pengujian. Hal ini dilakukan untuk mengimplementasikan algoritma genetik pada AI di permainan kartu dan menghasilkan AI dengan tingkat kesulitan yang berbeda-beda.
v
ABSTRACT
Card games are games that fall into the kind of turn-based strategy game. Games with turn-based strategy types are usually have more than one AI difficulty level that can be used as players enemy. There are many algorithms that can be implemented to AI. One of them is the genetic algorithm. Genetic algorithm is one of the search algorithm that uses the level-by-level technique based on natural selection to find a solution. Finally after many analyzes, plans, system designs, and search for theories that support to make the turn-based strategy card games then the research extended at the level of implementation and testing. This is done to implement genetic algorithms on AI in the card game and produce AI with various difficulty level.
vi
DAFTAR ISI
PERNYATAAN ORISINALITAS LAPORAN PENELITIAN ... i
PERNYATAAN PUBLIKASI LAPORAN PENELITIAN ... ii
KATA PENGANTAR ... iii
1.5. Sistematika Pembahasan ... 3
BAB II DASAR TEORI ... 7
2.1. Algoritma Genetik ... 7
2.2. Unified Modelling Language (UML) ... 11
2.3. TCP (Transmission Control Protocol) ... 18
2.4. LAN (Local Area Network) ... 19
2.5. Artificial Intelligence (AI) ... 20
BAB III ANALISA DAN PEMODELAN ... 21
3.1. Latar Belakang Cerita ... 21
3.3.2.1. Activity Diagram Memulai Game ... 25
3.3.2.2. Activity Diagram Tanya Fakta ... 25
3.3.2.3. Activity Diagram Jawab Fakta ... 26
3.3.2.4. Activity Diagram Menutup Kartu Solusi ... 27
3.3.2.5. Activity Diagram Mengatur Tingkat Kesulitan AI... 27
3.3.2.6. Activity Diagram Memecahkan Kasus ... 28
3.3.2.7. Activity Diagram Menendang Pemain ... 28
3.3.3. Class Diagram ... 29
3.3.3.1. Class Diagram Background ... 30
3.3.3.2. Class Diagram BoundingRectangle ... 30
3.3.3.3. Class Diagram Button ... 31
3.3.3.4. Class Diagram Card ... 31
3.3.3.5. Class Diagram CardCollector ... 33
3.3.3.6. Class Diagram CluedoCardComponent ... 33
3.3.3.7. Class Diagram CluedoComboBoxItem ... 34
3.3.3.8. Class Diagram CluedoComboBox ... 34
3.3.3.9. Class Diagram CluedoMessageBox... 35
3.3.3.10. Class Diagram HostProfile ... 35
3.3.3.11. Class Diagram Logo ... 36
3.3.3.12. Class Diagram MenuButton ... 36
3.3.3.13. Class Diagram ShowCard ... 36
3.3.3.14. Class Diagram Player ... 37
vii
3.3.3.16. Class Diagram WinsockNetworkData ... 39
3.3.3.17. Class Diagram WinsockServer ... 39
3.3.3.18. Class Diagram ActiveScreen ... 39
3.3.3.19. Class Diagram MainScreen ... 40
3.3.3.20. Class Diagram PlayingScreen ... 40
3.3.3.21. Class Diagram Screen ... 41
3.3.3.22. Class Diagram WaitingScreen ... 41
3.3.3.23. Class Diagram CluedoMathClass ... 42
3.3.3.24. Class Diagram CluedoNetworking ... 42
3.3.3.25. Class Diagram NuclexGUI ... 42
3.3.3.26. Class Diagram CluedoPlayersClass ... 43
3.3.3.27. Class Diagram CluedoAnswerClass ... 43
3.3.3.28. Class Diagram CluedoAskCardClass ... 44
3.3.3.29. Class Diagram CluedoLosingPack ... 44
3.3.3.30. Class Diagram CluedoPassCardClass ... 44
3.3.3.31. Class Diagram CluedoStarterPackClass ... 45
3.3.3.32. Class Diagram CluedoTurnChangeClass ... 45
3.3.3.33. Class Diagram AIMatrixView ... 46
3.3.3.34. Class Diagram CluedoGameStatic ... 46
3.3.3.35. Class Diagram CardTypeWithErrorRate ... 47
3.3.3.36. Class Diagram CardNameWithErrorRate ... 47
3.3.3.37. Class Diagram CardDataClass ... 47
3.3.3.38. Class Diagram Chromosomes ... 48
3.3.3.39. Class Diagram CluedoAIGeneticAlgorithm ... 48
3.4. Layout Tampilan ... 50
3.4.1. Tampilan Utama ... 50
3.4.2. Tampilan Host Game ... 50
3.4.3. Tampilan Join Game ... 51
3.4.4. Tampilan Bermain ... 52
3.4.5. Tampilan Menerima Pertanyaan ... 53
3.4.6. Tampilan WinLose... 53
BAB IV ANALISA DAN PEMODELAN ... 54
4.1. Tampilan Aplikasi Game ... 54
4.1.1. Tampilan Main Screen ... 54
4.1.2. Tampilan Waiting Screen ... 55
4.1.3. Tampilan In Game Screen ... 56
4.1.4. Tampilan Playing Screen (Main) ... 57
4.1.5. Tampilan Menerima Pertanyaan ... 58
4.1.6. Tampilan Win Screen ... 59
4.1.7. Tampilan Lose Screen... 59
4.1.8. Tampilan HowToPlay ... 60
4.2. Implementasi Jaringan LAN ... 60
4.3. Implementasi Algoritma Genetik ... 64
4.3.1. Pembuatan Kromosom ... 67
4.3.2. Fungsi Evaluasi ... 68
4.3.3. Implementasi Cross Over ... 70
4.3.4. Implementasi Kemampuan AI ... 71
4.3.5. Implementasi Keseluruhan AI ... 73
Bab V Pengujian ... 75
5.1. Kelas Player ... 75
5.2. Kelas WinsockClient ... 78
viii
5.4. Kelas CluedoAIGeneticAlgorithm ... 87
BAB VI KESIMPULAN DAN SARAN ... 90
6.1 Kesimpulan ... 90
6.2 Saran ... 90
ix
DAFTAR GAMBAR
Gambar 2.1 Populasi yang diambil secara acak ... 9
Gambar 2.2 Contoh Penggunaan System Boundary ... 13
Gambar 2.3 Contoh Penggunaan Use case ... 14
Gambar 2.4 Contoh Penggunaan Actor ... 14
Gambar 2.5 Contoh Penggunaan Communication ... 15
Gambar 2.6 Contoh Penggunaan Include ... 15
Gambar 2.7 Contoh Penggunaan Extend ... 16
Gambar 2.8 Contoh Penggunaan Generalisasi ... 16
Gambar 2.9 Class Diagram Buku ... 17
Gambar 2.10 Diagram Jangkauan LAN ... 19
Gambar 3.1 Use Case Diagram ... 24
Gambar 3.2 Activity Diagram Memulai Game ... 25
Gambar 3.3 Activity Diagram Tanya Fakta ... 26
Gambar 3.4 Activity Diagram Jawab Fakta ... 26
Gambar 3.5 Activity Diagram Menutup Kartu Solusi... 27
Gambar 3.6 Activity Diagram Mengatur Tingkat Kesulitan AI ... 27
Gambar 3.7 Activity Diagram Memecahkan Kasus ... 28
Gambar 3.8 Activity Diagram Menendang Pemain ... 28
Gambar 3.9 Class Diagram Permainan Kartu Cluedo ... 29
Gambar 3.10 Class Diagram Background ... 30
Gambar 3.11 Class Diagram BoundingRectangle ... 30
Gambar 3.12 Class Diagram Button ... 31
Gambar 3.13 Class Diagram Card ... 32
Gambar 3.14 Class Diagram CardCollector ... 33
Gambar 3.15 Class Diagram CluedoCardComponent ... 33
Gambar 3.16 Class Diagram CluedoComboBoxItem ... 34
Gambar 3.17 Class Diagram CluedoComboBox ... 34
Gambar 3.18 Class Diagram CluedoMessageBox ... 35
Gambar 3.19 Class Diagram HostProfile ... 35
Gambar 3.20 Class Diagram Logo ... 36
Gambar 3.21 Class Diagram MenuButton ... 36
Gambar 3.22 Class Diagram ShowCard ... 37
Gambar 3.23 Class Diagram Player ... 38
Gambar 3.24 Class Diagram WinsockClient ... 38
Gambar 3.25 Class Diagram WinsockNetworkData ... 39
Gambar 3.26 Class Diagram WinsockServer ... 39
Gambar 3.27 Class Diagram ActiveScreen ... 40
Gambar 3.28 Class Diagram MainScreen ... 40
Gambar 3.29 Class Diagram PlayingScreen ... 40
Gambar 3.30 Class Diagram Screen ... 41
Gambar 3.31 Class Diagram WaitingScreen ... 41
Gambar 3.32 Class Diagram CluedoMathClass ... 42
Gambar 3.33 Class Diagram CluedoNetworking ... 42
Gambar 3.34 Class Diagram NuclexGUI ... 43
Gambar 3.35 Class Diagram CluedoPlayersClass ... 43
Gambar 3.36 Class Diagram CluedoAnswersClass ... 43
Gambar 3.37 Class Diagram CluedoAskCardClass ... 44
Gambar 3.38 Class Diagram CluedoLosingPack ... 44
Gambar 3.39 Class Diagram CluedoPassCardClass ... 45
x
Gambar 3.41 Class Diagram CluedoTurnChangeClass ... 45
Gambar 3.42 Class Diagram AIMatrixView ... 46
Gambar 3.43 Class Diagram CluedoGameStatic ... 46
Gambar 3.44 Class Diagram CardTypeWithErrorRate ... 47
Gambar 3.45 Class Diagram CardNameWithErrorRate ... 47
Gambar 3.46 Class Diagram CardDataClass ... 47
Gambar 3.47 Class Diagram Chromosomes ... 48
Gambar 3.48 Class Diagram CluedoAIGeneticAlgorithm ... 49
Gambar 3.49 Gambar tampilan Menu Utama ... 50
Gambar 3.50 Gambar tampilan Menu Host Game ... 51
Gambar 3.51 Gambar tampilan Menu Join Game ... 51
Gambar 3.52 Gambar tampilan Menu Bermain ... 52
Gambar 3.53 Gambar menerima pertanyaan ... 53
Gambar 3.54 Gambar WinLose ... 53
Gambar 4.1 Tampilan Main Screen ... 54
Gambar 4.2 Tampilan Waiting Screen ... 55
Gambar 4 3 Tampilan in Game Screen ... 56
Gambar 4.4 Tampilan Playing Screen (Main) ... 57
Gambar 4.5 Tampilan Playing Screen (Question) ... 58
Gambar 4.6 Tampilan Win Screen ... 59
Gambar 4.7 Tampilan Lose Screen ... 59
Gambar 4.8 Flowchart pengiriman data ... 61
Gambar 4.9 Gambar pseudocode DataSender ... 62
Gambar 4.10 Flowchart penerimaan data ... 63
Gambar 4.11 Gambar pseudocode Winsock_DataArrival ... 64
Gambar 4.12 flowchart algoritma genetik pada permainan kartu “Cluedo” ... 65
Gambar 4.13 Gambar pseudocode GenerateQuestion ... 67
Gambar 5.1 Gambar pseudocode AskAQuestion ... 76
Gambar 5.2 Flowchart dari procedure AskAQuestion ... 77
Gambar 5.3 Gambar pseudocode DataSender (pengujian) ... 79
Gambar 5.4 Flowchart dari fungsi DataSender ... 80
Gambar 5.5 Gambar pseudocode winsockClient_DataArrival ... 82
Gambar 5.6 Flowchart dari fungsi WinsockClient_DataArrival ... 82
Gambar 5.7 Gambar pseudocode WinsockServer_ConnectionRequest ... 83
Gambar 5.8 Flowchart dari fungsi WinsockServer_ConnectionRequest ... 84
Gambar 5.9 Gambar pseudocode EnqueueBroadcastData ... 85
Gambar 5.10 Flowchart dari fungsi EnqueueBroadcastData ... 86
xi
DAFTAR TABEL
Tabel 4.1 Tabel Kromosom ... 67
Tabel 4.2 Tabel indeks kartu ... 67
Tabel 4.3 Tabel kumpulan kromosom ... 68
Tabel 4.4 Tabel catatan AI ... 69
Tabel 4.5 Tabel implementasi kemampuan AI ... 71
Tabel 4.6 Tabel tingkat akurasi pencatatan AI ... 72
Tabel 4.7 Tabel Data AI ... 73
Tabel 4.8 Tabel perhitungan tingkat kesalahan gen ... 73
Tabel 4.9 Tabel Kromosom AI (Acak) ... 74
Tabel 4.10 Tabel kromosom yang akan dikawin silang... 74
Tabel 5.1 Pengujian class Player – Property PlayerName ... 75
Tabel 5.2 Pengujian class Player – Fungsi AskAQuestion ... 78
Tabel 5.3 Pengujian class winsockClient – Fungsi DataSender ... 81
Tabel 5.4 Pengujian class winsockClient – Fungsi winsockClient_DataArrival ... 83
Tabel 5.5 Pengujian class winsockServer – Method winsockServer_ConnectionRequest ... 84
Tabel 5.6 Pengujian class winsockServer – Fungsi EnqueueBroadcastData ... 87
Tabel 5.7 Pengujian class CluedoAIGeneticAlgorithm – fungsi GeneratePopulation ... 87
Tabel 5.8 Pengujian class CluedoAIGeneticAlgorithm – fungsi CluedoCrossOver ... 88
Tabel 5.9 Pengujian class CluedoAIGeneticAlgorithm – fungsi GenerateQuestion ... 88
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Algoritma genetik adalah algoritma pencarian yang adaptif dan didasarkan pada ide-ide
evolusi seleksi alam dan genetik. Konsep dasar dari algoritma ini dirancang untuk
mensimulasikan proses dalam sistem alam yang diperlukan untuk evolusi, prinsip-prinsip
pertama yang ditetapkan oleh Charles Darwin adalah survival of the fittest. Dengan
demikian algoritma genetik ini merupakan suatu eksploitasi cerdas dari pencarian secara
acak yang dapat diimplementasikan dalam ruang pencarian yang sudah didefinisikan
untuk memecahkan masalah. Pertama dipelopori oleh John Holland pada tahun 60an,
Algoritma Genetik telah banyak dipelajari, dieksperimen dan diterapkan di berbagai
bidang dalam dunia teknik. Algoritma genetik tidak hanya memberikan metode alternatif
untuk memecahkan masalah, algoritma genetik juga secara konsisten mengalahkan
performa metode-metode tradisional lainnya di sebagian besar masalah. Banyak masalah
dunia nyata yang mencari parameter optimal sebagai pemecahan masalahnya, yang
terbukti sulit untuk metode tradisional tetapi ideal untuk algoritma genetik. Algoritma
genetik sering digunakan untuk memecahkan permasalahan penjadwalan untuk
menemukan solusi yang dianggap terbaik menurut fungsi fitness yang dibuat. Karena
algoritma ini sudah sering diimplementasikan untuk memecahkan masalah penjadwalan,
maka penulis bermaksud untuk mencoba menerapkan algoritma ini untuk melakukan
pemecahan masalah pada permainan kartu. Permainan kartu yang dimaksud adalah
permainan kartu Cluedo. Permainan ini menyediakan 15 (lima belas) kartu fakta yang
terdiri dari 6 (enam) tersangka, 5 (lima) tempat pembunuhan dan 4 (empat) senjata
pembunuhan, secara acak akan diambil masing-masing 1 (satu) kartu tersangka, 1 (satu)
tempat pembunuhan dan 1 (satu) senjata pembunuhan, setelah itu sisa dari kartu fakta
akan dibagikan secara rata kepada pemain, selanjutnya pemain akan saling bertanya
mengenai kartu fakta yang tidak dimilikinya ke pemain lain, dan pemain yang paling
cepat menebak kartu yang diambil secara acak tadi paling cepat adalah pemenangnya.
Maka penulis akan mengimplementasikan algoritma genetik ini pada AI (Artificial
Intellegence) di permainan ini dengan tujuan menemukan solusi dengan waktu yang
2
1.2.
Rumusan Masalah
Melihat latar belakang tersebut, maka terdapat beberapa masalah yang muncul, adalah
sebagai berikut:
1. Bagaimana cara mengimplementasikan algoritma genetik pada AI di permainan
kartu cluedo?
2. Bagaimana cara merancang sebuah fungsi fitness yang baik sehingga dapat
menghasilkan solusi-solusi yang terbaik?
3. Bagaimana cara merancang fungsi mutasi dan kombinasi yang efektif sehingga
penggunaannya tetap dapat menjaga keefektifan jumlah perulangan untuk pencarian
solusi?
4. Bagaimana cara mendesain fungsi fitness yang mendukung sehingga dapat
digunakan untuk menentukan tingkat kesulitan AI?
1.3.
Tujuan
Adapun tujuan yang diharapkan dari tugas akhir yang dilakukan ini, adalah sebagai
berikut:
1. Mengimplementasikan algoritma genetik pada AI di dalam pencarian solusinya.
2. Merancang sebuah fungsi fitness yang dapat menentukan tingkat performa dari suatu
solusi dengan baik sehingga keputusan akhir yang diambil merupakan solusi yang
baik.
3. Merancang fungsi kombinasi dan mutasi yang efektif sehingga pada saat
fungsi-fungsi ini digunakan jumlah perulangan yang dilakukan untuk pencarian solusi tetap
efektif.
4. Mendesain fungsi fitness yang mendukung sehingga dapat digunakan untuk
menentukan tingkat kesulitan AI di dalam permainan.
1.4.
Batasan Masalah
Pada tugas akhir ini, ada beberapa batasan masalah yang terdapat dalam pembuatan
perangkat lunak ini. Batasan-batasan masalah itu meliputi:
1. Komputer-komputer yang digunakan harus terhubung di dalam sebuah jaringan.
2. Jumlah minimum pemain yang diijinkan di dalam permainan ini yaitu 3 (tiga) pemain
dan maksimum 4 (empat) pemain.
3. Media masukan yang digunakan di dalam permainan ini hanya keyboard dan mouse.
4. Pemain hanya dapat menanyakan kartu fakta yang tidak dimilikinya.
3
1.5.
Sistematika Pembahasan
Dalam proses penyusunan laporan, sistematika penulisan yang akan digunakan adalah
sebagai berikut:
BAB I. PENDAHULUAN
Bab ini digunakan untuk menjelaskan latar belakang, rumusan masalah, tujuan, batasan
masalah, sistematika pembahasan, dan time schedule.
BAB II. DASAR TEORI
Bab ini digunakan untuk menjelaskan teori-teori yang berkaitan dengan pembuatan
sistem dan mendukung pembuatan sistem yang ada dan juga aturan dari permainan yang
dibuat yaitu algoritma genetika, TCP,flowchart dan UML
BAB III. ANALISA DAN PERMODELAN
Bab ini digunakan untuk menceritakan cerita singkat tentang game yang akan dibuat,
rincian dari komponen-komponen yang dibuat, arsitektur secara keseluruhan tentang
permainan kartu “Cluedo”, dan rancangan dari tampilan pada permainan ini
BAB IV. PERANCANGAN DAN IMPLEMENTASI
Bab ini berisi kumpulan screenshot dari game yang dibuat dan penjelasan–penjelasan dari
tiap fungsi utama yang dibuat dengan menggunakan pseudocode.
BAB V. PENGUJIAN
Bab ini berisi tentang pengujian (white box) dari fungsi-fungsi yang telah dibuat.
BAB VI. SIMPULAN DAN SARAN
Bab ini berisi tentang simpulan yang memberitahukan pengetahuan yang didapat setelah
mengerjakan karya ilmiah ini baik berupa penegasan atau pembuktian atau pengetahuan
baru dan juga saran yang dapat digunakan untuk mengembangkan penelitian ini lebih
lanjut.
DAFTAR PUSTAKA
Bagian ini berisi tentang daftar sumber-sumber informasi yang digunakan untuk
90
BAB VI
KESIMPULAN DAN SARAN
6.1
Kesimpulan
Dari hasil pembahasan yang telah dilakukan dan berdasarkan hasil pengujian, dapat
ditarik beberapa kesimpulan, yaitu:
1. Algoritma genetik dapat digunakan untuk membuat AI pada permainan kartu “Cluedo” dengan tingkat kesulitan yang berbeda-beda. Kelebihan dari penggunaan algoritma ini adalah AI dapat mencari pertanyaan yang valid dan memiliki tingkat
kesalahan terkecil dengan cepat selain itu alur kerja dari algoritma ini sangat cocok
untuk membuat AI dengan tingkat kesulitan yang berbeda-beda.
2. Implementasi LAN pada permainan kartu “Cluedo” ini sangat meningkatkan
kenyamanan pemain dalam bermain karena permain tidak perlu bergiliran
menggunakan sebuah komputer untuk memainkan permainan ini, walaupun
dibutuhkan beberapa komputer jika pemain yang bukan AI lebih dari 1 (satu) namun
selain meningkatkan kenyamanan pemain dalam bermain, penggunaan beberapa
komputer ini juga dapat menjaga agar pemain tidak dapat melihat kartu pemain lain
pada saat permainan ini berjalan.
6.2
Saran
Berdasarkan hal-hal yang telah dicapai dalam implementasi algoritma genetik pada permainan kartu “Cluedo” ini, dapat diperoleh beberapa saran, yaitu:
1. Dapat ditambahkan perhitungan-perhitungan lain pada fungsi evaluasi pada algoritma
ini sehingga AI yang dibuat dapat lebih akurat dalam menentukan pertanyaan.
2. Implementasi jaringan pada permainan ini dibuat dapat menjangkau internet sehingga
tidak terbatas pada LAN saja.
3. Fungsi kawin silang pada permainan ini dibuat lebih bervariasi sesuai dengan tingkat
kesulitan AI agar perbedaan kemampuan pada setiap tingkat kesulitan AI terlihat lebih
91
DAFTAR PUSTAKA
Dan, Pilone., & Pitman, Neil. (2005). UML 2.0 in a Nuthell. O’Reilly Media.
Marshall, Donis. (2006). Programming Microsoft Visual C# 2005: The Language.
Redmond: Microsoft Press.
Michalewicz, Zbigniew. (1995). Genetic Algorithms + Data Structures = Evolution
Programs. New York: Springer-Verlag Berlin Heidelberg.
Schmuller, Joseph. (2004). Sams Teach Yourself UML in 24 Hours. Indiana: Sams
Publishing.
Tanenbaum, Andrew. S. (2003). Computer Networks. New Jersey: Prentice Hall PTR.
Fourth Edition.
Russel, Stuart dan Norvig, Peter. (2010). Artificial Intelligence A Modern Aproach Third