Penerapan Algoritme Genetika dalam Sistem Permainan Tebak Angka
PENERAPAN ALGORITME GENETIKA DALAM
SISTEM PERMAINAN TEBAK ANGKA
HERMAN GUSTI ANUGRAH
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2012
PENERAPAN ALGORITME GENETIKA DALAM
SISTEM PERMAINAN TEBAK ANGKA
HERMAN GUSTI ANUGRAH
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada Program Studi Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2012
ABSTRACT
HERMAN GUSTI ANUGRAH. Application of Genetic Algorithms in the Number Guessing Game
System. Supervised by YENI HERDIYENI.
The number guessing game is a modified game of mastermind created by Mordecai Meirowitz in
1970. The goal of the game is to guess a hidden sequence of numbers stored by others (human or
computer) based on values obtained at each guess iteration. In this study, the game is applied into the
system by using genetic algorithms, a method that has been successfully utilized to implement the
mastermind game on the computer and get an effective solution for the game. Genetic algorithms
work through a process of natural selection or commonly known as the evolutionary process, which
will continue running until the system finds the optimal 4-digit series of numbers. The system is
designed in order to guess those hidden numbers with minimal iterations using c++ programming
language. The output of the program shows that the performance is determined by the first guess
iteration.
Keywords: genetic algorithms, number guessing game.
Penguji:
1 Ir. Julio Adisantoso, M.Kom.
2 Annisa, S.Kom., M.Kom.
Judul Skripsi : Penerapan Algoritme Genetika dalam Sistem Permainan Tebak Angka
Nama
: Herman Gusti Anugrah
NRP
: G64086036
Menyetujui:
Pembimbing
Dr. Yeni Herdiyeni, S.Si., M.Kom.
NIP. 19750923 200012 2 001
Mengetahui:
Ketua Departemen Ilmu Komputer
Dr. Ir. Agus Buono, M.Si., M.Kom.
NIP. 19660721 99302 1 001
Tanggal Lulus:
RIWAYAT HIDUP
Penulis dilahirkan di Bogor, pada tanggal 13 Oktober 1986, sebagai anak kedua dari tiga
bersaudara dari pasangan Bapak Tonny Wahyudi dan Ibu Dwi Wiworo Mulyati. Penulis
menyelesaikan pendidikan sekolah menengah umum di SMAN 3 Bogor pada tahun 2004 dan
menyelesaikan pendidikan Program Studi Diploma 3 Informatika, Institut Pertanian Bogor pada tahun
2007. Pada tahun 2008, penulis diterima bekerja di salah satu perusahaan swasta di Bogor dan
melanjutkan pendidikan ke jenjang Strata I Institut Pertanian Bogor jurusan Ilmu Komputer pada
tahun yang sama.
PRAKATA
Puji dan syukur penulis panjatkan kepada Allah Subhanahu wa ta’ala atas segala curahan rahmat
dan karunia-Nya sehingga tulisan akhir ini berhasil diselesaikan. Selawat serta salam tak lupa selalu
tercurahkan kepada baginda besar Nabi Muhammad shalallahu ‘alaihi wa salam, keluarganya, para
sahabat, dan para pengikutnya hingga akhir zaman.
Terima kasih penulis ucapkan kepada pihak yang telah membantu dalam penyelesaian tulisan
akhir ini, antara lain:
Kedua orang tua penulis, kakak dan adik penulis, serta seluruh keluarga atas doa, cinta, restu,
kasih sayang, dukungan, nasihat, dan perhatian yang diberikan kepada penulis.
Ibu Dr. Yeni Herdiyeni, S.Si., M.Kom. selaku dosen pembimbing.
Bapak Ir. Julio Adisantoso, M.Kom. dan Ibu Annisa, S.Kom., M.Kom. selaku dosen penguji.
Bapak Mushthofa S.Kom., M.Sc. yang telah bersedia meluangkan waktunya untuk berbagi ide
tentang tulisan akhir ini.
Teman-teman Alih Jenis Ilkom angkatan 3, atas bantuan, waktu, dan pengalaman yang tak
terlupakan.
Semoga tulisan akhir ini dapat bermanfaat, amin.
Bogor, Juli 2012
Herman Gusti Anugrah
DAFTAR ISI
Halaman
DAFTAR GAMBAR ............................................................................................................................. vi
PENDAHULUAN
Latar Belakang .................................................................................................................................. 1
Tujuan ............................................................................................................................................... 1
Ruang Lingkup .................................................................................................................................. 1
Manfaat ............................................................................................................................................. 1
TINJAUAN PUSTAKA
Permainan Tebak Angka ................................................................................................................... 1
Algoritme Genetika ........................................................................................................................... 2
Proses Algoritme Genetika................................................................................................................ 3
METODE PENELITIAN
Representasi ...................................................................................................................................... 4
Deret Angka Target ........................................................................................................................... 4
Deret Angka Tebakan ....................................................................................................................... 4
Evaluasi Fitness ................................................................................................................................ 4
Seleksi Individu ................................................................................................................................. 4
Mutasi ............................................................................................................................................... 5
Pindah-Silang .................................................................................................................................... 5
Rule ................................................................................................................................................... 5
Kondisi Stop ...................................................................................................................................... 5
Evaluasi Sistem ................................................................................................................................. 5
HASIL DAN PEMBAHASAN
Deret Angka Target ........................................................................................................................... 6
Deret Angka Tebakan ....................................................................................................................... 6
Evaluasi Fitness ................................................................................................................................ 6
Mutasi ............................................................................................................................................... 7
Pindah-Silang .................................................................................................................................... 7
Evaluasi Sistem ................................................................................................................................. 7
KESIMPULAN DAN SARAN
Kesimpulan ....................................................................................................................................... 7
Saran ................................................................................................................................................. 7
DAFTAR PUSTAKA ............................................................................................................................. 7
LAMPIRAN ........................................................................................................................................... 8
v
DAFTAR GAMBAR
Halaman
1
2
3
4
5
Permainan tebak angka ....................................................................................................................... 1
Siklus algoritme genetika (Goldberg 1989) ........................................................................................ 3
Alur metode penelitian ........................................................................................................................ 3
Probabilitas nilai fitness ...................................................................................................................... 4
Grafik uji pengaruh nilai fitness .......................................................................................................... 6
vi
1
PENDAHULUAN
Latar Belakang
Permainan
komputer sangat banyak
ragamnya dan terus berkembang. Salah satu
jenisnya adalah permainan yang bersifat
kompetisi antara komputer dan manusia. Hal ini
tentu membutuhkan suatu penelitian agar
komputer dapat memiliki kecerdasan yang
menyerupai manusia dan menyelesaikan
masalah yang ada pada permainan layaknya
manusia.
Penelitian
ini
membahas
proses
pembangunan sebuah sistem permainan tebak
angka otomatis. Permainan tebak angka adalah
suatu permainan menebak deret angka
tersembunyi yang disimpan oleh pihak lain
(manusia ataupun komputer) berdasarkan nilainilai yang didapatkan di setiap iterasi
penebakan. Permainan ini merupakan hasil
modifikasi dari permainan yang telah ada
sebelumnya, yaitu permainan mastermind yang
diciptakan oleh Mordecai Meirowitz pada tahun
1970 (Marcel 2009). Pada awal permainan
tebak angka, pihak lawan akan menyimpan satu
deret angka berjumlah n digit, lalu pemain akan
mencoba menebak deret angka tersebut,
mendapatkan hasilnya, membangkitkan deret
angka untuk penebakan selanjutnya berdasarkan
hasil yang didapat, dan melakukan penebakan
kembali hingga semua digit angka tersembunyi
tersebut berhasil ditebak (tebakangka.com).
Pada penelitian sebelumnya, telah dibahas
penerapan algoritme genetika pada permainan
mastermind
dan
menghasilkan
sebuah
kesimpulan bahwa algoritme genetika hanya
membutuhkan sedikit iterasi penebakan untuk
mendapatkan solusi yang tepat pada permainan
tersebut (Berghman et al. 2009). Oleh karena
itu, pada penelitian ini, akan dilakukan
percobaan untuk menerapkan algoritme
genetika pada permainan tebak angka yang
memiliki jenis dan aturan yang menyerupai
permainan mastermind. Setiap digit dari deret
angka akan dipandang sebagai suatu gen pada
algoritme genetika dan selanjutnya diproses
hingga mendapatkan hasil yang diinginkan.
Tujuan
Tujuan
dari
penelitian
ini
adalah
menerapkan algoritme genetika di dalam sistem
permainan tebak angka.
Ruang Lingkup
Ruang lingkup penelitian ini meliputi:
Jumlah digit angka yang digunakan pada
penelitian ini adalah empat digit.
Faktor keberhasilan diukur dari jumlah
iterasi penebakan yang seminimal mungkin,
bukan dari kecepatan proses penebakannya.
Manfaat
Hasil dari penelitian ini diharapkan dapat
berguna untuk mengukur kinerja algoritme
genetika di dalam permainan tebak angka dan
juga mengembangkan fitur dari permainan
tebak angka, yaitu fitur penebakan dengan
posisi penebak angka adalah komputer (sistem).
TINJAUAN PUSTAKA
Permainan Tebak Angka
Permainan ini dilakukan antara dua pihak,
yaitu pihak yang menyimpan angka target
(codemaker) dan pihak yang melakukan proses
penebakan (codebreaker). Ilustrasi permainan
dapat dilihat pada Gambar 1.
Output proses penebakan
Submit angka tebakan
Penebak
(codebreaker)
Penyimpan angka
(codemaker)
Gambar 1 Permainan tebak angka.
Di dalam prosesnya, terdapat beberapa
aturan yang berlaku, yaitu:
Deret angka n-digit (n = 1, 2,…, 10) yang
disimpan oleh pihak lawan terdiri atas D =
(d1, d2,…, dn), d = 0, 1,…, 9. Setiap digit
angka dari deret tersebut tidak boleh ada
yang berulang/sama antara satu dengan
lainnya. Jadi, jumlah kemungkinan deret
angka target (worst case jumlah penebakan)
adalah permutasi 4 dari 10 angka:
10!
P(10,4) = (10-4)! =
10!
6!
= 7 x 8 x 9 x 10
= 5040 kemungkinan
Satu kali pencocokan deret angka tebakan
dengan deret angka target dihitung sebagai
satu iterasi penebakan.
Hasil dari setiap iterasi penebakan
direpresentasikan melalui dua buah variable
yang juga berfungsi untuk menentukan
besarnya nilai fitness bagi deret angka
tebakan yang ada. Variable tersebut adalah:
2
1 c (correct): Variable ini akan bertambah
pada hasil jika salah satu digit pada deret
angka tebakan sama dengan yang ada
pada deret angka target dan terletak pada
posisi yang sama pula.
didapatkan suatu susunan kromosom yang
terbaik, yang merepresentasikan kemungkinan
solusi dari persoalan yang ada (Melanie 1996).
2 m (misplace): Variable ini akan
bertambah pada hasil jika salah satu digit
pada deret angka tebakan sama dengan
yang ada pada deret angka target, tetapi
terletak pada posisi yang berbeda (Tabel
1).
Gen: sebuah nilai yang menyatakan satuan
dasar yang membentuk suatu arti tertentu
dalam satu kesatuan gen yang dinamakan
kromosom. Dalam algoritme genetika, gen
ini bisa berupa nilai biner, float, integer,
karakter, maupun kombinatorial.
Contoh:
Target
5678
Tebakan 5689
Alel: nilai dari gen.
Kromosom: gabungan
membentuk nilai tertentu.
Tabel 1 Contoh verifikasi deret (n = 4)
Angka
tebakan
5
6
8
9
Digit posisi
Tebakan Target
1
1
2
2
3
4
4
Total hasil
Beberapa definisi penting
algoritme genetika, yaitu:
Hasil
c
c
m
2c 1m
Permainan akan berakhir ketika hasil yang
diharapkan telah didapat, yaitu nc 0m, yang
berarti n angka yang ada pada deret tebakan
tersedia dan terletak pada digit yang sama
dengan deret angka target.
Algoritme Genetika
Algoritme genetika ditemukan oleh John
Holland pada tahun 1960-an. Pada tahun yang
sama, algoritme tersebut dikembangkan
bersama dengan murid dan rekannya hingga
tahun 1970-an. Berbeda dengan strategi evolusi
dan pemrograman evolusioner, tujuan awal dari
pengembangan algoritme tersebut sebenarnya
bukan untuk menyelesaikan masalah tertentu,
tetapi lebih kepada mempelajari fenomena
proses adaptasi yang terjadi di alam dan
mencoba mencari cara untuk menerapkannya
pada sistem komputer. Seiring dengan
banyaknya interaksi dari para peneliti tentang
metode dan pendekatan evolusioner, istilah
“algoritme genetika” pun menjadi umum
digunakan.
Algoritme genetika memanfaatkan proses
seleksi alamiah atau yang biasa dikenal dengan
proses evolusi. Proses ini melibatkan perubahan
gen pada suatu individu melalui proses
perkembang-biakan
yang
bertujuan
menyesuaikan
diri
dengan
lingkungan
hidupnya. Proses evolusi yang terjadi pada gengen tersebut akan terus berjalan hingga
menyangkut
gen-gen
yang
Individu: menyatakan satu nilai atau
keadaan yang menyatakan salah satu solusi
yang mungkin dari permasalahan yang
diangkat.
Populasi: merupakan sekumpulan individu
yang akan diproses bersama dalam satu
siklus proses evolusi.
Generasi: menyatakan satu siklus proses
evolusi atau satu iterasi di dalam algoritme
genetika.
Nilai fitness: nilai yang menyatakan baik
tidaknya suatu solusi (individu).
Seleksi: proses yang digunakan untuk
memilih individu-individu yang akan
terlibat dalam proses pindah-silang dan
mutasi.
Seleksi dengan mesin Roulette: metode ini
merupakan metode seleksi yang paling
sederhana. Cara kerjanya sebagai berikut:
1 Hitung nilai
individu.
fitness
masing-masing
2 Hitung total nilai fitness semua individu.
3 Hitung probabilitas dari tiap individu.
4 Dari probabilitas tersebut, hitung jatah
masing-masing individu pada selang
angka 1 – 100.
5 Bangkitkan bilangan acak antara 1 – 100.
6 Dari bilangan acak yang dihasilkan,
tentukan individu mana yang terpilih
dalam proses seleksi.
Mutasi: operator ini berperan untuk
menggantikan gen yang hilang dari populasi
akibat proses seleksi yang memungkinkan
3
munculnya gen yang tidak muncul pada
inisialisasi populasi.
Populasi
awal
Random Mutation: mengganti gen yang
akan dimutasi dengan nilai acak.
Shift Mutation: menggeser nilai gen yang
akan dimutasi sebesar nilai tertentu (ε).
Populasi
baru
Evaluasi
fitness
Reproduksi:
mutasi dan
pindah-silang
Seleksi
indvidu
Pindah-silang: proses mengombinasikan dua
individu untuk memperoleh individuindividu baru yang diharapkan mempunyai
nilai fitness yang lebih baik.
Pindah-silang Satu Titik: posisi pindahsilang k (k = 1, 2, …, N-1) dengan N
(panjang kromosom) diseleksi secara acak.
Variable-variable ditukar antarkromosom
pada titik tersebut untuk menghasilkan anak.
Pindah-silang Banyak Titik: m posisi
penyilangan ki (k = 1, 2, …, N-1, i = 1, 2, …,
m) dengan N (panjang kromosom) diseleksi
secara acak dan tidak diperbolehkan ada
posisi yang sama, serta diurutkan naik
(Satriyanto 2009).
Gambar 2 Siklus algoritme genetika
(Goldberg 1989).
METODE PENELITIAN
Alur penelitian untuk mencari solusi efisien
pada permainan tebak angka dapat dilihat pada
Gambar 3.
Proses Algoritme Genetika
Setelah diberikan suatu masalah yang jelas
dan juga representasi string sebagai kandidat
dari solusi yang dicari, algoritme genetika yang
paling sederhana bekerja dengan cara berikut
(Gambar 2):
1 Populasi baru akan dibangkitkan secara
acak, yang di dalamnya terdiri atas n l-bit
buah kromosom yang merupakan kandidat
solusi dari problem yang ada.
2 Hitung nilai fitness dari setiap kromosom
yang ada di dalam populasi dengan
menggunakan fungsi fitness yang telah
ditentukan.
Pembangkitan deret angka target
oleh server
Pembangkitan deret angka tebakan
secara acak oleh client (komputer)
Algoritme genetika
Seleksi individu
Reproduksi: mutasi dan
pindah-silang
3 Pilih beberapa pasang kromosom untuk
dijadikan induk berdasarkan nilai fitnessnya.
4 Lakukan proses pindah-silang dan mutasi
pada kromosom induk tersebut hingga
populasi baru yang berpotensi memiliki nilai
fitness lebih tinggi tercipta.
5 Gantikan populasi yang ada dengan populasi
yang baru terbentuk tadi. Lakukan kembali
penghitungan nilai fitness dari setiap
kromosom dengan menggunakan fungsi
fitness yang telah ditentukan (langkah no.2)
hingga solusi optimal berhasil ditemukan
(Melanie 1996).
Deret angka
tebakan baru
Target belum
ditemukan
Evaluasi fitness
Target ditemukan
Evaluasi sistem
Gambar 3 Alur metode penelitian.
4
Fungsi fitness xc + ym
Representasi
Sebelum proses pencarian solusi dilakukan,
kondisi yang ada pada permainan harus terlebih
dahulu direpresentasikan ke dalam algoritme
genetika. Hasil representasinya adalah:
Setiap digit angka yang ada pada deret
angka tebakan dan deret angka target
dianggap sebagai sebuah gen yang bertipe
integer.
Contoh: 1234.
x: Jumlah variable c (x = 0, 1, 2, 3, 4)
y: Jumlah variable m (y = 0, 1, 2, 3, 4)
Setiap variable akan diberi bobot masingmasing untuk mendapatkan nilai real-nya. Jika
bobot c = 10, bobot m = 5, dan hasil penebakan
adalah 2c 1m, nilai fitness-nya:
x = 2; y = 1;
Nilai fitness = 2(10) + 1(5) = 20 + 5 = 25
Kumpulan gen tersebut akan membentuk
suatu kromosom, yaitu kumpulan deret
angka tebakan yang akan dimanipulasi
sebelum dicocokkan dengan deret angka
target.
Jika nilai fitness belum mencapai jumlah 40
(4c 0m), yang berarti target belum berhasil
ditemukan, proses algoritme genetika pun
dilakukan berdasarkan hasil yang didapat dari
iterasi penebakan sebelumnya.
Proses manipulasi sejumlah kromosom akan
menghasilkan sebuah individu, yaitu deret
angka tebakan yang siap dicocokkan dengan
deret angka target.
Seleksi Individu
Setiap individu yang tercipta akan dianggap
sebagai satu generasi, yang berarti juga satu
iterasi penebakan.
Deret Angka Target
Berdasarkan Gambar 3, langkah pertama
yang harus dilakukan dalam penelitian ini
adalah pembangkitan deret angka target yang
akan menjadi acuan berhasil atau tidaknya
sebuah penebakan yang dihasilkan dari
algoritme genetika. Deret angka yang terdiri
dari empat digit angka dan mengacu pada aturan
permainan tersebut akan disimpan oleh
codemaker dan nantinya akan dicocokkan
dengan deret angka tebakan dari codebreaker.
Deret Angka Tebakan
Proses penebakan pun dilakukan. Pada
iterasi pertama, komputer selaku codebreaker
akan membangkitkan deret angka tebakan
secara acak. Hal ini dilakukan karena tidak
tersedianya informasi apapun yang bisa
membedakan besar/kecilnya nilai fitness antara
sekumpulan deret angka yang mungkin
dibangkitkan.
Proses algoritme genetika itu sendiri akan
mulai dijalankan pada iterasi penebakan kedua
dan seterusnya.
Evaluasi Fitness
Deret angka tebakan yang dibangkitkan
secara acak tersebut dicocokkan dengan deret
angka target yang disimpan oleh codemaker.
Output yang dihasilkan direpresentasikan
melalui variable c (correct) dan m (misplace).
Tahap selanjutnya pada algoritme genetika
adalah seleksi individu. Proses tersebut
dilakukan dengan cara memilih sejumlah deret
angka yang ada di dalam variable history, yang
didapatkan dari iterasi penebakan sebelumnya
berdasarkan besar/kecilnya nilai fitness.
Metode seleksi yang digunakan pada
penelitian ini adalah metode Mesin Roulette,
yang melibatkan nilai fitness dan probabilitas.
Setelah dihitung nilai fitness masing-masing
individu dan total keseluruhannya, didapatkan
probabilitas dan jatah per individu (Gambar 4).
Contoh:
Probabilitas: Individu 1 = 10%
Individu 2 = 20%
Individu 3 = 30%
Individu 4 = 40%
Jatah per individu: Individu 1 1 – 10
Individu 2 11 – 30
Individu 3 31 – 60
Individu 4 61 – 100
Individu 2
11 – 30
Individu 3
31 – 60
20%
30%
10%
Individu 1
1 – 10
40%
Individu 4
61 – 100
Gambar 4 Probabilitas nilai fitness.
5
Selanjutnya, bangkitkan bilangan acak
antara 1 – 100. Jika didapatkan bilangan seperti
berikut: 69, 18, 86, dan 41, individu yang
terpilih adalah individu 4, individu 2, dan
individu 3.
69 Individu 4 (61 – 100)
18 Individu 2 (11 – 30)
86 Individu 4 (61 – 100)
41 Individu 3 (31 – 60)
Mutasi
Deret angka yang terpilih tadi akan diproses
lebih lanjut dengan operator-operator pada
algoritme genetika hingga didapatkan sebuah
deret angka baru yang siap untuk dicocokkan
kembali dengan deret angka target.
Operator algoritme genetika yang pertama
yaitu mutasi. Gen-gen pada individu terpilih
akan diubah nilainya dengan bilangan acak
(Random Mutation).
Deret angka induk:
1
2
3
4
Deret angka anak:
1
6
3
4
Jika deret angka baru keluar dari ruang
solusi (memiliki angka yang sama), dibutuhkan
teknik mutasi lainnya (Basuki 2003).
Contoh:
1
3
3
4
Proses ini dilakukan berdasarkan peluang
mutasi yang ditetapkan sebelumnya. Jika
peluang acak yang dibangkitkan oleh sistem
berjumlah lebih kecil dari peluang mutasi,
proses mutasi pun dilakukan.
Pindah-Silang
Operator algoritme genetika yang kedua
yaitu pindah-silang. Gen-gen yang bersesuaian
pada individu terpilih (induk) akan saling
ditukar pada satu digit tertentu (pindah-silang
satu titik) untuk mendapatkan individu baru
(anak).
Deret angka induk:
1
2
3
4
5
6
7
8
Deret angka anak:
1
2
7
4
5
6
3
8
Proses ini dilakukan berdasarkan peluang
pindah-silang yang ditetapkan sebelumnya. Jika
peluang acak yang dibangkitkan oleh sistem
berjumlah lebih kecil dari peluang pindahsilang, proses pindah-silang pun dilakukan.
Rule
Beberapa rule dibangun untuk menunjang
kinerja dari algoritme genetika. Rule-rule
tersebut akan berfungsi pada setiap perubahan
yang terjadi dari deret-deret yang ada pada
history dan berusaha memprediksi angka-angka
mana saja yang telah tepat letaknya ataupun
yang tidak ada dalam deret target sehingga
angka-angka tersebut dapat dihilangkan dan
memperkecil ruang pencarian.
Beberapa rule yang dibangun, yaitu:
Jika hasil penebakan adalah 0c 0m, seluruh
angka pada deret tebakan tersebut tidak
terdapat pada deret target dan harus
dihilangkan dari ruang pencarian.
Jika nilai fitness deret anak sama dengan
induk dan m bernilai 0, hilangkan angka
sebelum dan sesudah perubahan dari ruang
pencarian karena kedua angka tersebut tidak
memberikan pengaruh apapun pada deret.
Jika c bertambah 1 dari tebakan sebelumnya,
hilangkan angka sebelum perubahan dari
ruang pencarian dan tandai digit letak angka
tersebut.
Jika c berkurang 1 dan m tetap, hilangkan
angka sesudah perubahan dari ruang
pencarian dan tandai digit letak angka
tersebut.
Jika c berkurang 1 dan m bertambah 1,
tandai digit letak angka tersebut.
Jika c tetap dan m berkurang 1, hilangkan
angka sesudah perubahan dari ruang
pencarian.
Kondisi Stop
Program akan berhenti jika kondisi 4c 0m
telah tercapai atau iterasi penebakan telah
mencapai 50 kali.
Evaluasi Sistem
Setelah terbentuk, sistem pun lalu dievaluasi
menggunakan satu buah soal yang dibangkitkan
secara acak. Kinerjanya
akan dinilai
berdasarkan pengaruh nilai fitness (jumlah
variable c dan m) dari deret tebakan awal dan
juga dibandingkan dengan worst case dari
jumlah penebakan.
6
HASIL DAN PEMBAHASAN
Deret Angka Tebakan
Pada iterasi pertama, komputer selaku
codebreaker akan membangkitkan deret angka
tebakan secara acak. Pada tahap ini, dilakukan
sebuah pengujian untuk mengetahui pengaruh
nilai fitness deret tebakan awal terhadap
banyaknya iterasi penebakan.
Pengujian ini dilakukan terhadap tiga belas
kemungkinan kondisi jumlah variable hasil
penebakan. Pada setiap kondisi, dibangkitkan
lima deret angka berbeda, lalu dijadikan sebagai
deret tebakan pada iterasi pertama. Penebakan
dilakukan sebanyak sepuluh kali untuk tiap
deret dan dicari rata-ratanya. Dari kelima deret
tebakan di masing-masing kondisi tadi, dicari
rata-ratanya kembali (Tabel 2).
Tabel 2 Hasil uji pengaruh nilai fitness (dengan
pembulatan)
Kemungkinan hasil
penebakan iterasi ke-1
0c 0m
0c 1m
0c 2m
0c 3m
0c 4m
1c 0m
1c 1m
1c 2m
1c 3m
2c 0m
2c 1m
2c 2m
3c 0m
Rata-rata
jumlah iterasi
keseluruhan
11
24
20
22
13
12
11
11
17
7
10
25
4
Proses pengujian ini membuktikan bahwa
nilai fitness dari deret tebakan awal (iterasi
pertama)
mempengaruhi
jumlah
iterasi
penebakan keseluruhan. Pada Gambar 5, terlihat
bahwa semakin besar jumlah c dan m yang
didapat pada iterasi pertama, semakin sedikit
jumlah iterasi keseluruhan yang dibutuhkan
untuk menebak deret target.
30
25
20
15
10
5
0
0c 0m
0c 1m
0c 2m
0c 3m
0c 4m
1c 0m
1c 1m
1c 2m
1c 3m
2c 0m
2c 1m
2c 2m
3c 0m
Deret angka target dibangkitkan secara acak
oleh codemaker sebanyak satu buah, yaitu deret
angka 3714. Deret angka tersebut akan
dijadikan sebagai soal uji coba program untuk
pengujian pengaruh nilai fitness deret tebakan
awal terhadap banyaknya iterasi penebakan.
Jumlah Iterasi
Deret Angka Target
Kemungkinan hasil penebakan iterasi ke-1
(nilai fitness)
Gambar 5 Grafik uji pengaruh nilai fitness.
Terdapat dua kasus yang tidak sesuai dengan
pola grafik. Kasus yang pertama, yaitu pada
kondisi 0c 0m yang memiliki jumlah iterasi
keseluruhan yang lebih sedikit dibandingkan
dengan kondisi 0c 1m (yang notabene memiliki
nilai fitness lebih besar dari kondisi 0c 0m). Hal
ini terjadi karena pada kondisi 0c 1m, sistem
tidak memperoleh informasi yang cukup berarti.
Sistem hanya memperoleh informasi bahwa
terdapat hasil 1m tanpa mengetahui hasil
tersebut diberikan untuk digit yang mana. Pada
kondisi 0c 0m, sistem memperoleh informasi
bahwa seluruh digit angka yang ada pada deret
tebakan tersebut salah (tidak terdapat pada deret
target) sehingga sistem langsung menandai
angka-angka tersebut dan otomatis memperkecil
ruang pencarian berikutnya.
Kasus yang kedua yaitu tidak tertebaknya
deret angka target hingga batas iterasi telah
tercapai (50) ataupun iterasi yang dibutuhkan
sangat tinggi. Kasus tersebut terjadi pada
beberapa deret tebakan di kondisi tertentu,
yaitu: 2471 (kondisi 0c 3m), 3471 (kondisi 1c
3m), 3417 (kondisi 2c 2m), dan 3741 (kondisi
2c 2m).
Evaluasi Fitness
Proses ini menggunakan sebuah fungsi
fitness yang mengandung dua variable yang
perlu ditetapkan bobotnya, yaitu c dan m.
Variable inilah yang nantinya akan menentukan
besar kecilnya nilai fitness suatu deret tebakan
serta peluang terpilihnya deret tersebut dalam
proses seleksi.
Fungsi fitness xc + ym
Target yang akan dicapai oleh program yaitu
4c 0m. Oleh karena itu, c harus memiliki bobot
yang lebih besar daripada m agar deret tebakan
pada history yang mengandung hasil c dapat
terseleksi dengan mudah.
7
Berdasarkan hasil percobaan, didapatkan
bobot untuk c sebesar 40 dan bobot untuk m
sebesar 15 (selisih 25). Jika selisih nilai kedua
variable tersebut lebih besar, deret pada history
yang memiliki hasil m akan berpeluang sangat
kecil untuk terpilih dalam proses seleksi.
Sebaliknya, jika selisih nilainya lebih kecil
(yang berarti bobot c dan m hampir sama besar),
deret pada history yang memiliki hasil c akan
semakin sulit terpilih dalam proses seleksi dan
mengakibatkan kondisi 4c 0m akan semakin
lama tercapai.
Mutasi
Jenis mutasi yang dipakai yaitu Random
Mutation. Peluang mutasi ditetapkan sebesar 0.1
agar variable c dan m yang telah didapatkan
sebelumnya tidak mudah hilang ataupun
tergantikan (konvergensi mudah didapatkan).
Pindah-Silang
Jenis pindah-silang yang dipakai yaitu
pindah-silang satu titik. Hal ini dilakukan agar
informasi yang muncul pada saat terjadinya
perubahan deret dapat lebih mudah dilihat.
Peluang pindah-silang ditetapkan sebesar
0.85 agar deret-deret pada history yang
memiliki nilai fitness tinggi dapat dengan
mudah digabungkan dan membentuk deret anak
baru yang diharapkan mempunyai nilai fitness
yang lebih tinggi dari deret induknya.
Evaluasi Sistem
Berdasarkan hasil uji pengaruh nilai fitness
yang telah dilakukan sebelumnya, jumlah ratarata iterasi keseluruhan yang diperlukan sistem
untuk menebak deret angka target adalah 4 kali
untuk batas bawah dan 25 kali untuk batas atas.
Jika dibandingkan dengan worst case jumlah
penebakan sebesar 5040, jumlah rata-rata iterasi
keseluruhan tadi berada sangat jauh di
bawahnya. Hal ini membuktikan bahwa
algoritme genetika yang diterapkan di dalam
permainan tebak angka ini cukup efektif.
KESIMPULAN DAN SARAN
Kesimpulan
Dari beberapa percobaan yang dilakukan
terhadap deret angka, diperoleh kesimpulan
berikut:
Algoritme genetika cukup efektif untuk
diterapkan pada kasus optimasi permainan
tebak angka.
Hasil dari deret tebakan pada iterasi pertama
mempengaruhi kinerja penebakan sistem
dan menentukan jumlah iterasi keseluruhan
yang dibutuhkan sistem untuk mencapai
solusi yang tepat.
Kinerja algoritme genetika cukup terbantu
dengan dibangunnya beberapa rule.
Saran
Hal yang dapat dilakukan pada penelitian
selanjutnya yaitu memperlihatkan kinerja
penebakan sistem pada deret di atas empat digit
ataupun menyertakan data waktu penyelesaian
permainan sebagai faktor penilaian lainnya.
DAFTAR PUSTAKA
Basuki A. 2003. Strategi Menggunakan
Algoritma Genetika. http://lecturer.eepisits.edu/~basuki/lecture/StrategiAlgoritmaGe
netika.pdf [29 Apr 2010].
Berghman L, Goossens D, Leus R. 2009.
Efficient Solutions for Mastermind Using
Genetic Algorithms. Leuven: K. U. Leuven
Press.
Goldberg DE. 1989. Genetic Algorithms in
Search,
Optimization,
and
Machine
Learning. Boston: Addison−Wesley.
Marcel J. 2009. Aplikasi Algoritma Genetik
pada
Permainan
Mastermind.
http://informatika.stei.itb.ac.id/~rinaldi.muni
r/Stmik/2009-2010/Makalah2009/Makalah
IF3051-2009-030.pdf [12 Okt 2011].
Melanie M. 1996. An Introduction to Genetic
Algorithms. Cambridge: MIT Press.
Satriyanto E. 2009. Bab 7 Algoritma Genetika.
http://lecturer.eepis-its.edu/~kangedi/materi
kuliah/Kecerdasan Buatan/Bab 7 Algoritma
Genetika.pdf [22 Jun 2010].
LAMPIRAN
9
Lampiran 1 Hasil uji pengaruh nilai fitness
Kemung
kinan
hasil
0c 0m
Jumlah iterasi percobaan keDeret
1
2
3
4
5
6
7
8
9
10
2095
20
16
16
18
15
15
16
17
16
15
16
6908
11
10
10
10
11
9
10
9
12
10
10
8562
9
9
10
10
13
10
9
9
11
10
10
5028
10
14
13
13
12
13
17
12
11
15
13
9856
6
6
6
7
6
7
5
9
5
6
6
Jumlah iterasi keseluruhan
0c 1m
11
7580
25
25
27
26
29
27
32
26
29
27
27
5961
19
23
24
19
27
24
23
23
26
24
23
2603
17
16
23
19
18
19
20
20
19
22
19
8249
22
31
27
25
27
27
29
28
26
28
27
9426
19
24
26
23
26
24
24
20
28
27
24
Jumlah iterasi keseluruhan
0c 2m
24
4158
23
21
24
26
24
25
22
25
24
27
24
6351
17
18
15
17
16
16
20
17
16
18
17
8472
22
21
18
20
18
23
20
22
18
20
20
1386
20
22
15
17
18
20
17
18
16
18
18
7230
22
21
22
24
18
20
21
23
19
21
21
Jumlah iterasi keseluruhan
0c 3m
20
1573
21
23
22
21
18
21
20
25
23
17
21
4138
15
17
18
23
17
14
19
17
16
18
17
2471
15
18
19
50
50
50
50
50
50
50
40
7340
10
14
11
15
17
14
13
17
15
14
14
1463
23
19
20
18
21
23
18
20
22
19
20
Jumlah iterasi keseluruhan
0c 4m
Ratarata
(dibulat
kan)
22
4137
11
17
14
15
18
13
15
17
14
18
15
1347
15
16
16
14
11
18
14
15
13
20
15
7431
10
11
15
10
12
11
13
9
11
12
11
4371
9
15
11
18
14
17
13
15
17
11
14
1437
10
13
12
15
11
12
10
16
11
12
12
Jumlah iterasi keseluruhan
13
10
Lanjutan
Kemung
kinan
hasil
1c 0m
Jumlah iterasi percobaan keDeret
1
2
3
4
5
6
7
8
9
10
2709
9
15
11
8
12
14
10
9
12
14
11
8624
9
8
11
10
15
11
10
9
10
7
10
3950
12
11
10
15
12
14
10
15
13
10
12
6815
21
23
17
15
18
20
17
18
15
20
18
9762
9
13
15
9
11
10
13
9
12
11
11
Jumlah iterasi keseluruhan
1c 1m
12
7084
7
6
9
12
8
9
13
10
8
10
9
5316
15
13
9
12
10
9
13
15
12
13
12
3942
18
21
15
13
15
18
15
16
14
18
16
8701
6
9
6
12
9
11
8
12
10
9
9
6394
14
12
11
8
11
10
14
8
17
9
11
Jumlah iterasi keseluruhan
1c 2m
11
4917
13
14
11
10
12
15
10
15
10
12
12
1738
6
8
10
9
8
12
11
9
8
11
9
3461
12
10
11
12
11
16
13
12
15
10
12
5374
12
11
10
11
15
11
14
8
10
12
11
4703
11
12
10
17
13
15
11
12
9
12
12
Jumlah iterasi keseluruhan
1c 3m
11
7134
8
13
6
10
11
9
7
9
12
7
9
3471
50
50
50
50
50
50
50
50
50
50
50
4317
11
7
9
11
8
10
13
9
8
6
9
1743
10
15
7
10
12
9
10
9
11
7
10
1374
14
9
10
12
7
9
7
10
8
6
9
Jumlah iterasi keseluruhan
2c 0m
Ratarata
(dibulat
kan)
17
3815
4
5
5
4
5
6
5
4
5
7
5
2719
4
4
5
3
6
4
3
5
4
4
4
3024
10
8
11
10
9
7
10
9
15
11
10
9764
5
8
5
11
8
10
7
11
9
8
8
3610
5
6
9
5
6
8
6
5
7
6
6
Jumlah iterasi keseluruhan
7
11
Lanjutan
Kemung
kinan
hasil
2c 1m
Jumlah iterasi percobaan keDeret
1
2
3
4
5
6
7
8
9
10
4719
8
7
10
7
12
16
10
9
12
9
10
3751
6
8
11
8
12
10
7
9
5
6
8
3416
15
13
16
10
13
11
10
12
10
12
12
1704
6
5
7
5
10
14
8
7
10
8
8
3817
13
12
10
15
12
11
17
12
8
13
12
Jumlah iterasi keseluruhan
2c 2m
10
3417
50
50
50
50
50
50
50
50
50
50
50
3741
50
50
50
50
50
50
50
50
50
50
50
7314
8
8
8
8
8
8
8
8
8
8
8
1734
8
8
8
8
8
8
8
8
8
8
8
4713
8
6
8
8
9
8
8
7
10
8
8
Jumlah iterasi keseluruhan
3c 0m
Ratarata
(dibulat
kan)
25
3704
4
4
3
4
3
5
4
3
6
4
4
3814
3
3
4
3
2
3
3
3
4
3
3
2714
6
5
5
7
5
3
6
5
4
5
5
3794
5
4
3
4
6
4
5
3
4
3
4
3715
6
7
6
7
6
5
9
6
5
6
6
Jumlah iterasi keseluruhan
4
ABSTRACT
HERMAN GUSTI ANUGRAH. Application of Genetic Algorithms in the Number Guessing Game
System. Supervised by YENI HERDIYENI.
The number guessing game is a modified game of mastermind created by Mordecai Meirowitz in
1970. The goal of the game is to guess a hidden sequence of numbers stored by others (human or
computer) based on values obtained at each guess iteration. In this study, the game is applied into the
system by using genetic algorithms, a method that has been successfully utilized to implement the
mastermind game on the computer and get an effective solution for the game. Genetic algorithms
work through a process of natural selection or commonly known as the evolutionary process, which
will continue running until the system finds the optimal 4-digit series of numbers. The system is
designed in order to guess those hidden numbers with minimal iterations using c++ programming
language. The output of the program shows that the performance is determined by the first guess
iteration.
Keywords: genetic algorithms, number guessing game.
1
PENDAHULUAN
Latar Belakang
Permainan
komputer sangat banyak
ragamnya dan terus berkembang. Salah satu
jenisnya adalah permainan yang bersifat
kompetisi antara komputer dan manusia. Hal ini
tentu membutuhkan suatu penelitian agar
komputer dapat memiliki kecerdasan yang
menyerupai manusia dan menyelesaikan
masalah yang ada pada permainan layaknya
manusia.
Penelitian
ini
membahas
proses
pembangunan sebuah sistem permainan tebak
angka otomatis. Permainan tebak angka adalah
suatu permainan menebak deret angka
tersembunyi yang disimpan oleh pihak lain
(manusia ataupun komputer) berdasarkan nilainilai yang didapatkan di setiap iterasi
penebakan. Permainan ini merupakan hasil
modifikasi dari permainan yang telah ada
sebelumnya, yaitu permainan mastermind yang
diciptakan oleh Mordecai Meirowitz pada tahun
1970 (Marcel 2009). Pada awal permainan
tebak angka, pihak lawan akan menyimpan satu
deret angka berjumlah n digit, lalu pemain akan
mencoba menebak deret angka tersebut,
mendapatkan hasilnya, membangkitkan deret
angka untuk penebakan selanjutnya berdasarkan
hasil yang didapat, dan melakukan penebakan
kembali hingga semua digit angka tersembunyi
tersebut berhasil ditebak (tebakangka.com).
Pada penelitian sebelumnya, telah dibahas
penerapan algoritme genetika pada permainan
mastermind
dan
menghasilkan
sebuah
kesimpulan bahwa algoritme genetika hanya
membutuhkan sedikit iterasi penebakan untuk
mendapatkan solusi yang tepat pada permainan
tersebut (Berghman et al. 2009). Oleh karena
itu, pada penelitian ini, akan dilakukan
percobaan untuk menerapkan algoritme
genetika pada permainan tebak angka yang
memiliki jenis dan aturan yang menyerupai
permainan mastermind. Setiap digit dari deret
angka akan dipandang sebagai suatu gen pada
algoritme genetika dan selanjutnya diproses
hingga mendapatkan hasil yang diinginkan.
Tujuan
Tujuan
dari
penelitian
ini
adalah
menerapkan algoritme genetika di dalam sistem
permainan tebak angka.
Ruang Lingkup
Ruang lingkup penelitian ini meliputi:
Jumlah digit angka yang digunakan pada
penelitian ini adalah empat digit.
Faktor keberhasilan diukur dari jumlah
iterasi penebakan yang seminimal mungkin,
bukan dari kecepatan proses penebakannya.
Manfaat
Hasil dari penelitian ini diharapkan dapat
berguna untuk mengukur kinerja algoritme
genetika di dalam permainan tebak angka dan
juga mengembangkan fitur dari permainan
tebak angka, yaitu fitur penebakan dengan
posisi penebak angka adalah komputer (sistem).
TINJAUAN PUSTAKA
Permainan Tebak Angka
Permainan ini dilakukan antara dua pihak,
yaitu pihak yang menyimpan angka target
(codemaker) dan pihak yang melakukan proses
penebakan (codebreaker). Ilustrasi permainan
dapat dilihat pada Gambar 1.
Output proses penebakan
Submit angka tebakan
Penebak
(codebreaker)
Penyimpan angka
(codemaker)
Gambar 1 Permainan tebak angka.
Di dalam prosesnya, terdapat beberapa
aturan yang berlaku, yaitu:
Deret angka n-digit (n = 1, 2,…, 10) yang
disimpan oleh pihak lawan terdiri atas D =
(d1, d2,…, dn), d = 0, 1,…, 9. Setiap digit
angka dari deret tersebut tidak boleh ada
yang berulang/sama antara satu dengan
lainnya. Jadi, jumlah kemungkinan deret
angka target (worst case jumlah penebakan)
adalah permutasi 4 dari 10 angka:
10!
P(10,4) = (10-4)! =
10!
6!
= 7 x 8 x 9 x 10
= 5040 kemungkinan
Satu kali pencocokan deret angka tebakan
dengan deret angka target dihitung sebagai
satu iterasi penebakan.
Hasil dari setiap iterasi penebakan
direpresentasikan melalui dua buah variable
yang juga berfungsi untuk menentukan
besarnya nilai fitness bagi deret angka
tebakan yang ada. Variable tersebut adalah:
2
1 c (correct): Variable ini akan bertambah
pada hasil jika salah satu digit pada deret
angka tebakan sama dengan yang ada
pada deret angka target dan terletak pada
posisi yang sama pula.
didapatkan suatu susunan kromosom yang
terbaik, yang merepresentasikan kemungkinan
solusi dari persoalan yang ada (Melanie 1996).
2 m (misplace): Variable ini akan
bertambah pada hasil jika salah satu digit
pada deret angka tebakan sama dengan
yang ada pada deret angka target, tetapi
terletak pada posisi yang berbeda (Tabel
1).
Gen: sebuah nilai yang menyatakan satuan
dasar yang membentuk suatu arti tertentu
dalam satu kesatuan gen yang dinamakan
kromosom. Dalam algoritme genetika, gen
ini bisa berupa nilai biner, float, integer,
karakter, maupun kombinatorial.
Contoh:
Target
5678
Tebakan 5689
Alel: nilai dari gen.
Kromosom: gabungan
membentuk nilai tertentu.
Tabel 1 Contoh verifikasi deret (n = 4)
Angka
tebakan
5
6
8
9
Digit posisi
Tebakan Target
1
1
2
2
3
4
4
Total hasil
Beberapa definisi penting
algoritme genetika, yaitu:
Hasil
c
c
m
2c 1m
Permainan akan berakhir ketika hasil yang
diharapkan telah didapat, yaitu nc 0m, yang
berarti n angka yang ada pada deret tebakan
tersedia dan terletak pada digit yang sama
dengan deret angka target.
Algoritme Genetika
Algoritme genetika ditemukan oleh John
Holland pada tahun 1960-an. Pada tahun yang
sama, algoritme tersebut dikembangkan
bersama dengan murid dan rekannya hingga
tahun 1970-an. Berbeda dengan strategi evolusi
dan pemrograman evolusioner, tujuan awal dari
pengembangan algoritme tersebut sebenarnya
bukan untuk menyelesaikan masalah tertentu,
tetapi lebih kepada mempelajari fenomena
proses adaptasi yang terjadi di alam dan
mencoba mencari cara untuk menerapkannya
pada sistem komputer. Seiring dengan
banyaknya interaksi dari para peneliti tentang
metode dan pendekatan evolusioner, istilah
“algoritme genetika” pun menjadi umum
digunakan.
Algoritme genetika memanfaatkan proses
seleksi alamiah atau yang biasa dikenal dengan
proses evolusi. Proses ini melibatkan perubahan
gen pada suatu individu melalui proses
perkembang-biakan
yang
bertujuan
menyesuaikan
diri
dengan
lingkungan
hidupnya. Proses evolusi yang terjadi pada gengen tersebut akan terus berjalan hingga
menyangkut
gen-gen
yang
Individu: menyatakan satu nilai atau
keadaan yang menyatakan salah satu solusi
yang mungkin dari permasalahan yang
diangkat.
Populasi: merupakan sekumpulan individu
yang akan diproses bersama dalam satu
siklus proses evolusi.
Generasi: menyatakan satu siklus proses
evolusi atau satu iterasi di dalam algoritme
genetika.
Nilai fitness: nilai yang menyatakan baik
tidaknya suatu solusi (individu).
Seleksi: proses yang digunakan untuk
memilih individu-individu yang akan
terlibat dalam proses pindah-silang dan
mutasi.
Seleksi dengan mesin Roulette: metode ini
merupakan metode seleksi yang paling
sederhana. Cara kerjanya sebagai berikut:
1 Hitung nilai
individu.
fitness
masing-masing
2 Hitung total nilai fitness semua individu.
3 Hitung probabilitas dari tiap individu.
4 Dari probabilitas tersebut, hitung jatah
masing-masing individu pada selang
angka 1 – 100.
5 Bangkitkan bilangan acak antara 1 – 100.
6 Dari bilangan acak yang dihasilkan,
tentukan individu mana yang terpilih
dalam proses seleksi.
Mutasi: operator ini berperan untuk
menggantikan gen yang hilang dari populasi
akibat proses seleksi yang memungkinkan
3
munculnya gen yang tidak muncul pada
inisialisasi populasi.
Populasi
awal
Random Mutation: mengganti gen yang
akan dimutasi dengan nilai acak.
Shift Mutation: menggeser nilai gen yang
akan dimutasi sebesar nilai tertentu (ε).
Populasi
baru
Evaluasi
fitness
Reproduksi:
mutasi dan
pindah-silang
Seleksi
indvidu
Pindah-silang: proses mengombinasikan dua
individu untuk memperoleh individuindividu baru yang diharapkan mempunyai
nilai fitness yang lebih baik.
Pindah-silang Satu Titik: posisi pindahsilang k (k = 1, 2, …, N-1) dengan N
(panjang kromosom) diseleksi secara acak.
Variable-variable ditukar antarkromosom
pada titik tersebut untuk menghasilkan anak.
Pindah-silang Banyak Titik: m posisi
penyilangan ki (k = 1, 2, …, N-1, i = 1, 2, …,
m) dengan N (panjang kromosom) diseleksi
secara acak dan tidak diperbolehkan ada
posisi yang sama, serta diurutkan naik
(Satriyanto 2009).
Gambar 2 Siklus algoritme genetika
(Goldberg 1989).
METODE PENELITIAN
Alur penelitian untuk mencari solusi efisien
pada permainan tebak angka dapat dilihat pada
Gambar 3.
Proses Algoritme Genetika
Setelah diberikan suatu masalah yang jelas
dan juga representasi string sebagai kandidat
dari solusi yang dicari, algoritme genetika yang
paling sederhana bekerja dengan cara berikut
(Gambar 2):
1 Populasi baru akan dibangkitkan secara
acak, yang di dalamnya terdiri atas n l-bit
buah kromosom yang merupakan kandidat
solusi dari problem yang ada.
2 Hitung nilai fitness dari setiap kromosom
yang ada di dalam populasi dengan
menggunakan fungsi fitness yang telah
ditentukan.
Pembangkitan deret angka target
oleh server
Pembangkitan deret angka tebakan
secara acak oleh client (komputer)
Algoritme genetika
Seleksi individu
Reproduksi: mutasi dan
pindah-silang
3 Pilih beberapa pasang kromosom untuk
dijadikan induk berdasarkan nilai fitnessnya.
4 Lakukan proses pindah-silang dan mutasi
pada kromosom induk tersebut hingga
populasi baru yang berpotensi memiliki nilai
fitness lebih tinggi tercipta.
5 Gantikan populasi yang ada dengan populasi
yang baru terbentuk tadi. Lakukan kembali
penghitungan nilai fitness dari setiap
kromosom dengan menggunakan fungsi
fitness yang telah ditentukan (langkah no.2)
hingga solusi optimal berhasil ditemukan
(Melanie 1996).
Deret angka
tebakan baru
Target belum
ditemukan
Evaluasi fitness
Target ditemukan
Evaluasi sistem
Gambar 3 Alur metode penelitian.
4
Fungsi fitness xc + ym
Representasi
Sebelum proses pencarian solusi dilakukan,
kondisi yang ada pada permainan harus terlebih
dahulu direpresentasikan ke dalam algoritme
genetika. Hasil representasinya adalah:
Setiap digit angka yang ada pada deret
angka tebakan dan deret angka target
dianggap sebagai sebuah gen yang bertipe
integer.
Contoh: 1234.
x: Jumlah variable c (x = 0, 1, 2, 3, 4)
y: Jumlah variable m (y = 0, 1, 2, 3, 4)
Setiap variable akan diberi bobot masingmasing untuk mendapatkan nilai real-nya. Jika
bobot c = 10, bobot m = 5, dan hasil penebakan
adalah 2c 1m, nilai fitness-nya:
x = 2; y = 1;
Nilai fitness = 2(10) + 1(5) = 20 + 5 = 25
Kumpulan gen tersebut akan membentuk
suatu kromosom, yaitu kumpulan deret
angka tebakan yang akan dimanipulasi
sebelum dicocokkan dengan deret angka
target.
Jika nilai fitness belum mencapai jumlah 40
(4c 0m), yang berarti target belum berhasil
ditemukan, proses algoritme genetika pun
dilakukan berdasarkan hasil yang didapat dari
iterasi penebakan sebelumnya.
Proses manipulasi sejumlah kromosom akan
menghasilkan sebuah individu, yaitu deret
angka tebakan yang siap dicocokkan dengan
deret angka target.
Seleksi Individu
Setiap individu yang tercipta akan dianggap
sebagai satu generasi, yang berarti juga satu
iterasi penebakan.
Deret Angka Target
Berdasarkan Gambar 3, langkah pertama
yang harus dilakukan dalam penelitian ini
adalah pembangkitan deret angka target yang
akan menjadi acuan berhasil atau tidaknya
sebuah penebakan yang dihasilkan dari
algoritme genetika. Deret angka yang terdiri
dari empat digit angka dan mengacu pada aturan
permainan tersebut akan disimpan oleh
codemaker dan nantinya akan dicocokkan
dengan deret angka tebakan dari codebreaker.
Deret Angka Tebakan
Proses penebakan pun dilakukan. Pada
iterasi pertama, komputer selaku codebreaker
akan membangkitkan deret angka tebakan
secara acak. Hal ini dilakukan karena tidak
tersedianya informasi apapun yang bisa
membedakan besar/kecilnya nilai fitness antara
sekumpulan deret angka yang mungkin
dibangkitkan.
Proses algoritme genetika itu sendiri akan
mulai dijalankan pada iterasi penebakan kedua
dan seterusnya.
Evaluasi Fitness
Deret angka tebakan yang dibangkitkan
secara acak tersebut dicocokkan dengan deret
angka target yang disimpan oleh codemaker.
Output yang dihasilkan direpresentasikan
melalui variable c (correct) dan m (misplace).
Tahap selanjutnya pada algoritme genetika
adalah seleksi individu. Proses tersebut
dilakukan dengan cara memilih sejumlah deret
angka yang ada di dalam variable history, yang
didapatkan dari iterasi penebakan sebelumnya
berdasarkan besar/kecilnya nilai fitness.
Metode seleksi yang digunakan pada
penelitian ini adalah metode Mesin Roulette,
yang melibatkan nilai fitness dan probabilitas.
Setelah dihitung nilai fitness masing-masing
individu dan total keseluruhannya, didapatkan
probabilitas dan jatah per individu (Gambar 4).
Contoh:
Probabilitas: Individu 1 = 10%
Individu 2 = 20%
Individu 3 = 30%
Individu 4 = 40%
Jatah per individu: Individu 1 1 – 10
Individu 2 11 – 30
Individu 3 31 – 60
Individu 4 61 – 100
Individu 2
11 – 30
Individu 3
31 – 60
20%
30%
10%
Individu 1
1 – 10
40%
Individu 4
61 – 100
Gambar 4 Probabilitas nilai fitness.
5
Selanjutnya, bangkitkan bilangan acak
antara 1 – 100. Jika didapatkan bilangan seperti
berikut: 69, 18, 86, dan 41, individu yang
terpilih adalah individu 4, individu 2, dan
individu 3.
69 Individu 4 (61 – 100)
18 Individu 2 (11 – 30)
86 Individu 4 (61 – 100)
41 Individu 3 (31 – 60)
Mutasi
Deret angka yang terpilih tadi akan diproses
lebih lanjut dengan operator-operator pada
algoritme genetika hingga didapatkan sebuah
deret angka baru yang siap untuk dicocokkan
kembali dengan deret angka target.
Operator algoritme genetika yang pertama
yaitu mutasi. Gen-gen pada individu terpilih
akan diubah nilainya dengan bilangan acak
(Random Mutation).
Deret angka induk:
1
2
3
4
Deret angka anak:
1
6
3
4
Jika deret angka baru keluar dari ruang
solusi (memiliki angka yang sama), dibutuhkan
teknik mutasi lainnya (Basuki 2003).
Contoh:
1
3
3
4
Proses ini dilakukan berdasa
SISTEM PERMAINAN TEBAK ANGKA
HERMAN GUSTI ANUGRAH
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2012
PENERAPAN ALGORITME GENETIKA DALAM
SISTEM PERMAINAN TEBAK ANGKA
HERMAN GUSTI ANUGRAH
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada Program Studi Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2012
ABSTRACT
HERMAN GUSTI ANUGRAH. Application of Genetic Algorithms in the Number Guessing Game
System. Supervised by YENI HERDIYENI.
The number guessing game is a modified game of mastermind created by Mordecai Meirowitz in
1970. The goal of the game is to guess a hidden sequence of numbers stored by others (human or
computer) based on values obtained at each guess iteration. In this study, the game is applied into the
system by using genetic algorithms, a method that has been successfully utilized to implement the
mastermind game on the computer and get an effective solution for the game. Genetic algorithms
work through a process of natural selection or commonly known as the evolutionary process, which
will continue running until the system finds the optimal 4-digit series of numbers. The system is
designed in order to guess those hidden numbers with minimal iterations using c++ programming
language. The output of the program shows that the performance is determined by the first guess
iteration.
Keywords: genetic algorithms, number guessing game.
Penguji:
1 Ir. Julio Adisantoso, M.Kom.
2 Annisa, S.Kom., M.Kom.
Judul Skripsi : Penerapan Algoritme Genetika dalam Sistem Permainan Tebak Angka
Nama
: Herman Gusti Anugrah
NRP
: G64086036
Menyetujui:
Pembimbing
Dr. Yeni Herdiyeni, S.Si., M.Kom.
NIP. 19750923 200012 2 001
Mengetahui:
Ketua Departemen Ilmu Komputer
Dr. Ir. Agus Buono, M.Si., M.Kom.
NIP. 19660721 99302 1 001
Tanggal Lulus:
RIWAYAT HIDUP
Penulis dilahirkan di Bogor, pada tanggal 13 Oktober 1986, sebagai anak kedua dari tiga
bersaudara dari pasangan Bapak Tonny Wahyudi dan Ibu Dwi Wiworo Mulyati. Penulis
menyelesaikan pendidikan sekolah menengah umum di SMAN 3 Bogor pada tahun 2004 dan
menyelesaikan pendidikan Program Studi Diploma 3 Informatika, Institut Pertanian Bogor pada tahun
2007. Pada tahun 2008, penulis diterima bekerja di salah satu perusahaan swasta di Bogor dan
melanjutkan pendidikan ke jenjang Strata I Institut Pertanian Bogor jurusan Ilmu Komputer pada
tahun yang sama.
PRAKATA
Puji dan syukur penulis panjatkan kepada Allah Subhanahu wa ta’ala atas segala curahan rahmat
dan karunia-Nya sehingga tulisan akhir ini berhasil diselesaikan. Selawat serta salam tak lupa selalu
tercurahkan kepada baginda besar Nabi Muhammad shalallahu ‘alaihi wa salam, keluarganya, para
sahabat, dan para pengikutnya hingga akhir zaman.
Terima kasih penulis ucapkan kepada pihak yang telah membantu dalam penyelesaian tulisan
akhir ini, antara lain:
Kedua orang tua penulis, kakak dan adik penulis, serta seluruh keluarga atas doa, cinta, restu,
kasih sayang, dukungan, nasihat, dan perhatian yang diberikan kepada penulis.
Ibu Dr. Yeni Herdiyeni, S.Si., M.Kom. selaku dosen pembimbing.
Bapak Ir. Julio Adisantoso, M.Kom. dan Ibu Annisa, S.Kom., M.Kom. selaku dosen penguji.
Bapak Mushthofa S.Kom., M.Sc. yang telah bersedia meluangkan waktunya untuk berbagi ide
tentang tulisan akhir ini.
Teman-teman Alih Jenis Ilkom angkatan 3, atas bantuan, waktu, dan pengalaman yang tak
terlupakan.
Semoga tulisan akhir ini dapat bermanfaat, amin.
Bogor, Juli 2012
Herman Gusti Anugrah
DAFTAR ISI
Halaman
DAFTAR GAMBAR ............................................................................................................................. vi
PENDAHULUAN
Latar Belakang .................................................................................................................................. 1
Tujuan ............................................................................................................................................... 1
Ruang Lingkup .................................................................................................................................. 1
Manfaat ............................................................................................................................................. 1
TINJAUAN PUSTAKA
Permainan Tebak Angka ................................................................................................................... 1
Algoritme Genetika ........................................................................................................................... 2
Proses Algoritme Genetika................................................................................................................ 3
METODE PENELITIAN
Representasi ...................................................................................................................................... 4
Deret Angka Target ........................................................................................................................... 4
Deret Angka Tebakan ....................................................................................................................... 4
Evaluasi Fitness ................................................................................................................................ 4
Seleksi Individu ................................................................................................................................. 4
Mutasi ............................................................................................................................................... 5
Pindah-Silang .................................................................................................................................... 5
Rule ................................................................................................................................................... 5
Kondisi Stop ...................................................................................................................................... 5
Evaluasi Sistem ................................................................................................................................. 5
HASIL DAN PEMBAHASAN
Deret Angka Target ........................................................................................................................... 6
Deret Angka Tebakan ....................................................................................................................... 6
Evaluasi Fitness ................................................................................................................................ 6
Mutasi ............................................................................................................................................... 7
Pindah-Silang .................................................................................................................................... 7
Evaluasi Sistem ................................................................................................................................. 7
KESIMPULAN DAN SARAN
Kesimpulan ....................................................................................................................................... 7
Saran ................................................................................................................................................. 7
DAFTAR PUSTAKA ............................................................................................................................. 7
LAMPIRAN ........................................................................................................................................... 8
v
DAFTAR GAMBAR
Halaman
1
2
3
4
5
Permainan tebak angka ....................................................................................................................... 1
Siklus algoritme genetika (Goldberg 1989) ........................................................................................ 3
Alur metode penelitian ........................................................................................................................ 3
Probabilitas nilai fitness ...................................................................................................................... 4
Grafik uji pengaruh nilai fitness .......................................................................................................... 6
vi
1
PENDAHULUAN
Latar Belakang
Permainan
komputer sangat banyak
ragamnya dan terus berkembang. Salah satu
jenisnya adalah permainan yang bersifat
kompetisi antara komputer dan manusia. Hal ini
tentu membutuhkan suatu penelitian agar
komputer dapat memiliki kecerdasan yang
menyerupai manusia dan menyelesaikan
masalah yang ada pada permainan layaknya
manusia.
Penelitian
ini
membahas
proses
pembangunan sebuah sistem permainan tebak
angka otomatis. Permainan tebak angka adalah
suatu permainan menebak deret angka
tersembunyi yang disimpan oleh pihak lain
(manusia ataupun komputer) berdasarkan nilainilai yang didapatkan di setiap iterasi
penebakan. Permainan ini merupakan hasil
modifikasi dari permainan yang telah ada
sebelumnya, yaitu permainan mastermind yang
diciptakan oleh Mordecai Meirowitz pada tahun
1970 (Marcel 2009). Pada awal permainan
tebak angka, pihak lawan akan menyimpan satu
deret angka berjumlah n digit, lalu pemain akan
mencoba menebak deret angka tersebut,
mendapatkan hasilnya, membangkitkan deret
angka untuk penebakan selanjutnya berdasarkan
hasil yang didapat, dan melakukan penebakan
kembali hingga semua digit angka tersembunyi
tersebut berhasil ditebak (tebakangka.com).
Pada penelitian sebelumnya, telah dibahas
penerapan algoritme genetika pada permainan
mastermind
dan
menghasilkan
sebuah
kesimpulan bahwa algoritme genetika hanya
membutuhkan sedikit iterasi penebakan untuk
mendapatkan solusi yang tepat pada permainan
tersebut (Berghman et al. 2009). Oleh karena
itu, pada penelitian ini, akan dilakukan
percobaan untuk menerapkan algoritme
genetika pada permainan tebak angka yang
memiliki jenis dan aturan yang menyerupai
permainan mastermind. Setiap digit dari deret
angka akan dipandang sebagai suatu gen pada
algoritme genetika dan selanjutnya diproses
hingga mendapatkan hasil yang diinginkan.
Tujuan
Tujuan
dari
penelitian
ini
adalah
menerapkan algoritme genetika di dalam sistem
permainan tebak angka.
Ruang Lingkup
Ruang lingkup penelitian ini meliputi:
Jumlah digit angka yang digunakan pada
penelitian ini adalah empat digit.
Faktor keberhasilan diukur dari jumlah
iterasi penebakan yang seminimal mungkin,
bukan dari kecepatan proses penebakannya.
Manfaat
Hasil dari penelitian ini diharapkan dapat
berguna untuk mengukur kinerja algoritme
genetika di dalam permainan tebak angka dan
juga mengembangkan fitur dari permainan
tebak angka, yaitu fitur penebakan dengan
posisi penebak angka adalah komputer (sistem).
TINJAUAN PUSTAKA
Permainan Tebak Angka
Permainan ini dilakukan antara dua pihak,
yaitu pihak yang menyimpan angka target
(codemaker) dan pihak yang melakukan proses
penebakan (codebreaker). Ilustrasi permainan
dapat dilihat pada Gambar 1.
Output proses penebakan
Submit angka tebakan
Penebak
(codebreaker)
Penyimpan angka
(codemaker)
Gambar 1 Permainan tebak angka.
Di dalam prosesnya, terdapat beberapa
aturan yang berlaku, yaitu:
Deret angka n-digit (n = 1, 2,…, 10) yang
disimpan oleh pihak lawan terdiri atas D =
(d1, d2,…, dn), d = 0, 1,…, 9. Setiap digit
angka dari deret tersebut tidak boleh ada
yang berulang/sama antara satu dengan
lainnya. Jadi, jumlah kemungkinan deret
angka target (worst case jumlah penebakan)
adalah permutasi 4 dari 10 angka:
10!
P(10,4) = (10-4)! =
10!
6!
= 7 x 8 x 9 x 10
= 5040 kemungkinan
Satu kali pencocokan deret angka tebakan
dengan deret angka target dihitung sebagai
satu iterasi penebakan.
Hasil dari setiap iterasi penebakan
direpresentasikan melalui dua buah variable
yang juga berfungsi untuk menentukan
besarnya nilai fitness bagi deret angka
tebakan yang ada. Variable tersebut adalah:
2
1 c (correct): Variable ini akan bertambah
pada hasil jika salah satu digit pada deret
angka tebakan sama dengan yang ada
pada deret angka target dan terletak pada
posisi yang sama pula.
didapatkan suatu susunan kromosom yang
terbaik, yang merepresentasikan kemungkinan
solusi dari persoalan yang ada (Melanie 1996).
2 m (misplace): Variable ini akan
bertambah pada hasil jika salah satu digit
pada deret angka tebakan sama dengan
yang ada pada deret angka target, tetapi
terletak pada posisi yang berbeda (Tabel
1).
Gen: sebuah nilai yang menyatakan satuan
dasar yang membentuk suatu arti tertentu
dalam satu kesatuan gen yang dinamakan
kromosom. Dalam algoritme genetika, gen
ini bisa berupa nilai biner, float, integer,
karakter, maupun kombinatorial.
Contoh:
Target
5678
Tebakan 5689
Alel: nilai dari gen.
Kromosom: gabungan
membentuk nilai tertentu.
Tabel 1 Contoh verifikasi deret (n = 4)
Angka
tebakan
5
6
8
9
Digit posisi
Tebakan Target
1
1
2
2
3
4
4
Total hasil
Beberapa definisi penting
algoritme genetika, yaitu:
Hasil
c
c
m
2c 1m
Permainan akan berakhir ketika hasil yang
diharapkan telah didapat, yaitu nc 0m, yang
berarti n angka yang ada pada deret tebakan
tersedia dan terletak pada digit yang sama
dengan deret angka target.
Algoritme Genetika
Algoritme genetika ditemukan oleh John
Holland pada tahun 1960-an. Pada tahun yang
sama, algoritme tersebut dikembangkan
bersama dengan murid dan rekannya hingga
tahun 1970-an. Berbeda dengan strategi evolusi
dan pemrograman evolusioner, tujuan awal dari
pengembangan algoritme tersebut sebenarnya
bukan untuk menyelesaikan masalah tertentu,
tetapi lebih kepada mempelajari fenomena
proses adaptasi yang terjadi di alam dan
mencoba mencari cara untuk menerapkannya
pada sistem komputer. Seiring dengan
banyaknya interaksi dari para peneliti tentang
metode dan pendekatan evolusioner, istilah
“algoritme genetika” pun menjadi umum
digunakan.
Algoritme genetika memanfaatkan proses
seleksi alamiah atau yang biasa dikenal dengan
proses evolusi. Proses ini melibatkan perubahan
gen pada suatu individu melalui proses
perkembang-biakan
yang
bertujuan
menyesuaikan
diri
dengan
lingkungan
hidupnya. Proses evolusi yang terjadi pada gengen tersebut akan terus berjalan hingga
menyangkut
gen-gen
yang
Individu: menyatakan satu nilai atau
keadaan yang menyatakan salah satu solusi
yang mungkin dari permasalahan yang
diangkat.
Populasi: merupakan sekumpulan individu
yang akan diproses bersama dalam satu
siklus proses evolusi.
Generasi: menyatakan satu siklus proses
evolusi atau satu iterasi di dalam algoritme
genetika.
Nilai fitness: nilai yang menyatakan baik
tidaknya suatu solusi (individu).
Seleksi: proses yang digunakan untuk
memilih individu-individu yang akan
terlibat dalam proses pindah-silang dan
mutasi.
Seleksi dengan mesin Roulette: metode ini
merupakan metode seleksi yang paling
sederhana. Cara kerjanya sebagai berikut:
1 Hitung nilai
individu.
fitness
masing-masing
2 Hitung total nilai fitness semua individu.
3 Hitung probabilitas dari tiap individu.
4 Dari probabilitas tersebut, hitung jatah
masing-masing individu pada selang
angka 1 – 100.
5 Bangkitkan bilangan acak antara 1 – 100.
6 Dari bilangan acak yang dihasilkan,
tentukan individu mana yang terpilih
dalam proses seleksi.
Mutasi: operator ini berperan untuk
menggantikan gen yang hilang dari populasi
akibat proses seleksi yang memungkinkan
3
munculnya gen yang tidak muncul pada
inisialisasi populasi.
Populasi
awal
Random Mutation: mengganti gen yang
akan dimutasi dengan nilai acak.
Shift Mutation: menggeser nilai gen yang
akan dimutasi sebesar nilai tertentu (ε).
Populasi
baru
Evaluasi
fitness
Reproduksi:
mutasi dan
pindah-silang
Seleksi
indvidu
Pindah-silang: proses mengombinasikan dua
individu untuk memperoleh individuindividu baru yang diharapkan mempunyai
nilai fitness yang lebih baik.
Pindah-silang Satu Titik: posisi pindahsilang k (k = 1, 2, …, N-1) dengan N
(panjang kromosom) diseleksi secara acak.
Variable-variable ditukar antarkromosom
pada titik tersebut untuk menghasilkan anak.
Pindah-silang Banyak Titik: m posisi
penyilangan ki (k = 1, 2, …, N-1, i = 1, 2, …,
m) dengan N (panjang kromosom) diseleksi
secara acak dan tidak diperbolehkan ada
posisi yang sama, serta diurutkan naik
(Satriyanto 2009).
Gambar 2 Siklus algoritme genetika
(Goldberg 1989).
METODE PENELITIAN
Alur penelitian untuk mencari solusi efisien
pada permainan tebak angka dapat dilihat pada
Gambar 3.
Proses Algoritme Genetika
Setelah diberikan suatu masalah yang jelas
dan juga representasi string sebagai kandidat
dari solusi yang dicari, algoritme genetika yang
paling sederhana bekerja dengan cara berikut
(Gambar 2):
1 Populasi baru akan dibangkitkan secara
acak, yang di dalamnya terdiri atas n l-bit
buah kromosom yang merupakan kandidat
solusi dari problem yang ada.
2 Hitung nilai fitness dari setiap kromosom
yang ada di dalam populasi dengan
menggunakan fungsi fitness yang telah
ditentukan.
Pembangkitan deret angka target
oleh server
Pembangkitan deret angka tebakan
secara acak oleh client (komputer)
Algoritme genetika
Seleksi individu
Reproduksi: mutasi dan
pindah-silang
3 Pilih beberapa pasang kromosom untuk
dijadikan induk berdasarkan nilai fitnessnya.
4 Lakukan proses pindah-silang dan mutasi
pada kromosom induk tersebut hingga
populasi baru yang berpotensi memiliki nilai
fitness lebih tinggi tercipta.
5 Gantikan populasi yang ada dengan populasi
yang baru terbentuk tadi. Lakukan kembali
penghitungan nilai fitness dari setiap
kromosom dengan menggunakan fungsi
fitness yang telah ditentukan (langkah no.2)
hingga solusi optimal berhasil ditemukan
(Melanie 1996).
Deret angka
tebakan baru
Target belum
ditemukan
Evaluasi fitness
Target ditemukan
Evaluasi sistem
Gambar 3 Alur metode penelitian.
4
Fungsi fitness xc + ym
Representasi
Sebelum proses pencarian solusi dilakukan,
kondisi yang ada pada permainan harus terlebih
dahulu direpresentasikan ke dalam algoritme
genetika. Hasil representasinya adalah:
Setiap digit angka yang ada pada deret
angka tebakan dan deret angka target
dianggap sebagai sebuah gen yang bertipe
integer.
Contoh: 1234.
x: Jumlah variable c (x = 0, 1, 2, 3, 4)
y: Jumlah variable m (y = 0, 1, 2, 3, 4)
Setiap variable akan diberi bobot masingmasing untuk mendapatkan nilai real-nya. Jika
bobot c = 10, bobot m = 5, dan hasil penebakan
adalah 2c 1m, nilai fitness-nya:
x = 2; y = 1;
Nilai fitness = 2(10) + 1(5) = 20 + 5 = 25
Kumpulan gen tersebut akan membentuk
suatu kromosom, yaitu kumpulan deret
angka tebakan yang akan dimanipulasi
sebelum dicocokkan dengan deret angka
target.
Jika nilai fitness belum mencapai jumlah 40
(4c 0m), yang berarti target belum berhasil
ditemukan, proses algoritme genetika pun
dilakukan berdasarkan hasil yang didapat dari
iterasi penebakan sebelumnya.
Proses manipulasi sejumlah kromosom akan
menghasilkan sebuah individu, yaitu deret
angka tebakan yang siap dicocokkan dengan
deret angka target.
Seleksi Individu
Setiap individu yang tercipta akan dianggap
sebagai satu generasi, yang berarti juga satu
iterasi penebakan.
Deret Angka Target
Berdasarkan Gambar 3, langkah pertama
yang harus dilakukan dalam penelitian ini
adalah pembangkitan deret angka target yang
akan menjadi acuan berhasil atau tidaknya
sebuah penebakan yang dihasilkan dari
algoritme genetika. Deret angka yang terdiri
dari empat digit angka dan mengacu pada aturan
permainan tersebut akan disimpan oleh
codemaker dan nantinya akan dicocokkan
dengan deret angka tebakan dari codebreaker.
Deret Angka Tebakan
Proses penebakan pun dilakukan. Pada
iterasi pertama, komputer selaku codebreaker
akan membangkitkan deret angka tebakan
secara acak. Hal ini dilakukan karena tidak
tersedianya informasi apapun yang bisa
membedakan besar/kecilnya nilai fitness antara
sekumpulan deret angka yang mungkin
dibangkitkan.
Proses algoritme genetika itu sendiri akan
mulai dijalankan pada iterasi penebakan kedua
dan seterusnya.
Evaluasi Fitness
Deret angka tebakan yang dibangkitkan
secara acak tersebut dicocokkan dengan deret
angka target yang disimpan oleh codemaker.
Output yang dihasilkan direpresentasikan
melalui variable c (correct) dan m (misplace).
Tahap selanjutnya pada algoritme genetika
adalah seleksi individu. Proses tersebut
dilakukan dengan cara memilih sejumlah deret
angka yang ada di dalam variable history, yang
didapatkan dari iterasi penebakan sebelumnya
berdasarkan besar/kecilnya nilai fitness.
Metode seleksi yang digunakan pada
penelitian ini adalah metode Mesin Roulette,
yang melibatkan nilai fitness dan probabilitas.
Setelah dihitung nilai fitness masing-masing
individu dan total keseluruhannya, didapatkan
probabilitas dan jatah per individu (Gambar 4).
Contoh:
Probabilitas: Individu 1 = 10%
Individu 2 = 20%
Individu 3 = 30%
Individu 4 = 40%
Jatah per individu: Individu 1 1 – 10
Individu 2 11 – 30
Individu 3 31 – 60
Individu 4 61 – 100
Individu 2
11 – 30
Individu 3
31 – 60
20%
30%
10%
Individu 1
1 – 10
40%
Individu 4
61 – 100
Gambar 4 Probabilitas nilai fitness.
5
Selanjutnya, bangkitkan bilangan acak
antara 1 – 100. Jika didapatkan bilangan seperti
berikut: 69, 18, 86, dan 41, individu yang
terpilih adalah individu 4, individu 2, dan
individu 3.
69 Individu 4 (61 – 100)
18 Individu 2 (11 – 30)
86 Individu 4 (61 – 100)
41 Individu 3 (31 – 60)
Mutasi
Deret angka yang terpilih tadi akan diproses
lebih lanjut dengan operator-operator pada
algoritme genetika hingga didapatkan sebuah
deret angka baru yang siap untuk dicocokkan
kembali dengan deret angka target.
Operator algoritme genetika yang pertama
yaitu mutasi. Gen-gen pada individu terpilih
akan diubah nilainya dengan bilangan acak
(Random Mutation).
Deret angka induk:
1
2
3
4
Deret angka anak:
1
6
3
4
Jika deret angka baru keluar dari ruang
solusi (memiliki angka yang sama), dibutuhkan
teknik mutasi lainnya (Basuki 2003).
Contoh:
1
3
3
4
Proses ini dilakukan berdasarkan peluang
mutasi yang ditetapkan sebelumnya. Jika
peluang acak yang dibangkitkan oleh sistem
berjumlah lebih kecil dari peluang mutasi,
proses mutasi pun dilakukan.
Pindah-Silang
Operator algoritme genetika yang kedua
yaitu pindah-silang. Gen-gen yang bersesuaian
pada individu terpilih (induk) akan saling
ditukar pada satu digit tertentu (pindah-silang
satu titik) untuk mendapatkan individu baru
(anak).
Deret angka induk:
1
2
3
4
5
6
7
8
Deret angka anak:
1
2
7
4
5
6
3
8
Proses ini dilakukan berdasarkan peluang
pindah-silang yang ditetapkan sebelumnya. Jika
peluang acak yang dibangkitkan oleh sistem
berjumlah lebih kecil dari peluang pindahsilang, proses pindah-silang pun dilakukan.
Rule
Beberapa rule dibangun untuk menunjang
kinerja dari algoritme genetika. Rule-rule
tersebut akan berfungsi pada setiap perubahan
yang terjadi dari deret-deret yang ada pada
history dan berusaha memprediksi angka-angka
mana saja yang telah tepat letaknya ataupun
yang tidak ada dalam deret target sehingga
angka-angka tersebut dapat dihilangkan dan
memperkecil ruang pencarian.
Beberapa rule yang dibangun, yaitu:
Jika hasil penebakan adalah 0c 0m, seluruh
angka pada deret tebakan tersebut tidak
terdapat pada deret target dan harus
dihilangkan dari ruang pencarian.
Jika nilai fitness deret anak sama dengan
induk dan m bernilai 0, hilangkan angka
sebelum dan sesudah perubahan dari ruang
pencarian karena kedua angka tersebut tidak
memberikan pengaruh apapun pada deret.
Jika c bertambah 1 dari tebakan sebelumnya,
hilangkan angka sebelum perubahan dari
ruang pencarian dan tandai digit letak angka
tersebut.
Jika c berkurang 1 dan m tetap, hilangkan
angka sesudah perubahan dari ruang
pencarian dan tandai digit letak angka
tersebut.
Jika c berkurang 1 dan m bertambah 1,
tandai digit letak angka tersebut.
Jika c tetap dan m berkurang 1, hilangkan
angka sesudah perubahan dari ruang
pencarian.
Kondisi Stop
Program akan berhenti jika kondisi 4c 0m
telah tercapai atau iterasi penebakan telah
mencapai 50 kali.
Evaluasi Sistem
Setelah terbentuk, sistem pun lalu dievaluasi
menggunakan satu buah soal yang dibangkitkan
secara acak. Kinerjanya
akan dinilai
berdasarkan pengaruh nilai fitness (jumlah
variable c dan m) dari deret tebakan awal dan
juga dibandingkan dengan worst case dari
jumlah penebakan.
6
HASIL DAN PEMBAHASAN
Deret Angka Tebakan
Pada iterasi pertama, komputer selaku
codebreaker akan membangkitkan deret angka
tebakan secara acak. Pada tahap ini, dilakukan
sebuah pengujian untuk mengetahui pengaruh
nilai fitness deret tebakan awal terhadap
banyaknya iterasi penebakan.
Pengujian ini dilakukan terhadap tiga belas
kemungkinan kondisi jumlah variable hasil
penebakan. Pada setiap kondisi, dibangkitkan
lima deret angka berbeda, lalu dijadikan sebagai
deret tebakan pada iterasi pertama. Penebakan
dilakukan sebanyak sepuluh kali untuk tiap
deret dan dicari rata-ratanya. Dari kelima deret
tebakan di masing-masing kondisi tadi, dicari
rata-ratanya kembali (Tabel 2).
Tabel 2 Hasil uji pengaruh nilai fitness (dengan
pembulatan)
Kemungkinan hasil
penebakan iterasi ke-1
0c 0m
0c 1m
0c 2m
0c 3m
0c 4m
1c 0m
1c 1m
1c 2m
1c 3m
2c 0m
2c 1m
2c 2m
3c 0m
Rata-rata
jumlah iterasi
keseluruhan
11
24
20
22
13
12
11
11
17
7
10
25
4
Proses pengujian ini membuktikan bahwa
nilai fitness dari deret tebakan awal (iterasi
pertama)
mempengaruhi
jumlah
iterasi
penebakan keseluruhan. Pada Gambar 5, terlihat
bahwa semakin besar jumlah c dan m yang
didapat pada iterasi pertama, semakin sedikit
jumlah iterasi keseluruhan yang dibutuhkan
untuk menebak deret target.
30
25
20
15
10
5
0
0c 0m
0c 1m
0c 2m
0c 3m
0c 4m
1c 0m
1c 1m
1c 2m
1c 3m
2c 0m
2c 1m
2c 2m
3c 0m
Deret angka target dibangkitkan secara acak
oleh codemaker sebanyak satu buah, yaitu deret
angka 3714. Deret angka tersebut akan
dijadikan sebagai soal uji coba program untuk
pengujian pengaruh nilai fitness deret tebakan
awal terhadap banyaknya iterasi penebakan.
Jumlah Iterasi
Deret Angka Target
Kemungkinan hasil penebakan iterasi ke-1
(nilai fitness)
Gambar 5 Grafik uji pengaruh nilai fitness.
Terdapat dua kasus yang tidak sesuai dengan
pola grafik. Kasus yang pertama, yaitu pada
kondisi 0c 0m yang memiliki jumlah iterasi
keseluruhan yang lebih sedikit dibandingkan
dengan kondisi 0c 1m (yang notabene memiliki
nilai fitness lebih besar dari kondisi 0c 0m). Hal
ini terjadi karena pada kondisi 0c 1m, sistem
tidak memperoleh informasi yang cukup berarti.
Sistem hanya memperoleh informasi bahwa
terdapat hasil 1m tanpa mengetahui hasil
tersebut diberikan untuk digit yang mana. Pada
kondisi 0c 0m, sistem memperoleh informasi
bahwa seluruh digit angka yang ada pada deret
tebakan tersebut salah (tidak terdapat pada deret
target) sehingga sistem langsung menandai
angka-angka tersebut dan otomatis memperkecil
ruang pencarian berikutnya.
Kasus yang kedua yaitu tidak tertebaknya
deret angka target hingga batas iterasi telah
tercapai (50) ataupun iterasi yang dibutuhkan
sangat tinggi. Kasus tersebut terjadi pada
beberapa deret tebakan di kondisi tertentu,
yaitu: 2471 (kondisi 0c 3m), 3471 (kondisi 1c
3m), 3417 (kondisi 2c 2m), dan 3741 (kondisi
2c 2m).
Evaluasi Fitness
Proses ini menggunakan sebuah fungsi
fitness yang mengandung dua variable yang
perlu ditetapkan bobotnya, yaitu c dan m.
Variable inilah yang nantinya akan menentukan
besar kecilnya nilai fitness suatu deret tebakan
serta peluang terpilihnya deret tersebut dalam
proses seleksi.
Fungsi fitness xc + ym
Target yang akan dicapai oleh program yaitu
4c 0m. Oleh karena itu, c harus memiliki bobot
yang lebih besar daripada m agar deret tebakan
pada history yang mengandung hasil c dapat
terseleksi dengan mudah.
7
Berdasarkan hasil percobaan, didapatkan
bobot untuk c sebesar 40 dan bobot untuk m
sebesar 15 (selisih 25). Jika selisih nilai kedua
variable tersebut lebih besar, deret pada history
yang memiliki hasil m akan berpeluang sangat
kecil untuk terpilih dalam proses seleksi.
Sebaliknya, jika selisih nilainya lebih kecil
(yang berarti bobot c dan m hampir sama besar),
deret pada history yang memiliki hasil c akan
semakin sulit terpilih dalam proses seleksi dan
mengakibatkan kondisi 4c 0m akan semakin
lama tercapai.
Mutasi
Jenis mutasi yang dipakai yaitu Random
Mutation. Peluang mutasi ditetapkan sebesar 0.1
agar variable c dan m yang telah didapatkan
sebelumnya tidak mudah hilang ataupun
tergantikan (konvergensi mudah didapatkan).
Pindah-Silang
Jenis pindah-silang yang dipakai yaitu
pindah-silang satu titik. Hal ini dilakukan agar
informasi yang muncul pada saat terjadinya
perubahan deret dapat lebih mudah dilihat.
Peluang pindah-silang ditetapkan sebesar
0.85 agar deret-deret pada history yang
memiliki nilai fitness tinggi dapat dengan
mudah digabungkan dan membentuk deret anak
baru yang diharapkan mempunyai nilai fitness
yang lebih tinggi dari deret induknya.
Evaluasi Sistem
Berdasarkan hasil uji pengaruh nilai fitness
yang telah dilakukan sebelumnya, jumlah ratarata iterasi keseluruhan yang diperlukan sistem
untuk menebak deret angka target adalah 4 kali
untuk batas bawah dan 25 kali untuk batas atas.
Jika dibandingkan dengan worst case jumlah
penebakan sebesar 5040, jumlah rata-rata iterasi
keseluruhan tadi berada sangat jauh di
bawahnya. Hal ini membuktikan bahwa
algoritme genetika yang diterapkan di dalam
permainan tebak angka ini cukup efektif.
KESIMPULAN DAN SARAN
Kesimpulan
Dari beberapa percobaan yang dilakukan
terhadap deret angka, diperoleh kesimpulan
berikut:
Algoritme genetika cukup efektif untuk
diterapkan pada kasus optimasi permainan
tebak angka.
Hasil dari deret tebakan pada iterasi pertama
mempengaruhi kinerja penebakan sistem
dan menentukan jumlah iterasi keseluruhan
yang dibutuhkan sistem untuk mencapai
solusi yang tepat.
Kinerja algoritme genetika cukup terbantu
dengan dibangunnya beberapa rule.
Saran
Hal yang dapat dilakukan pada penelitian
selanjutnya yaitu memperlihatkan kinerja
penebakan sistem pada deret di atas empat digit
ataupun menyertakan data waktu penyelesaian
permainan sebagai faktor penilaian lainnya.
DAFTAR PUSTAKA
Basuki A. 2003. Strategi Menggunakan
Algoritma Genetika. http://lecturer.eepisits.edu/~basuki/lecture/StrategiAlgoritmaGe
netika.pdf [29 Apr 2010].
Berghman L, Goossens D, Leus R. 2009.
Efficient Solutions for Mastermind Using
Genetic Algorithms. Leuven: K. U. Leuven
Press.
Goldberg DE. 1989. Genetic Algorithms in
Search,
Optimization,
and
Machine
Learning. Boston: Addison−Wesley.
Marcel J. 2009. Aplikasi Algoritma Genetik
pada
Permainan
Mastermind.
http://informatika.stei.itb.ac.id/~rinaldi.muni
r/Stmik/2009-2010/Makalah2009/Makalah
IF3051-2009-030.pdf [12 Okt 2011].
Melanie M. 1996. An Introduction to Genetic
Algorithms. Cambridge: MIT Press.
Satriyanto E. 2009. Bab 7 Algoritma Genetika.
http://lecturer.eepis-its.edu/~kangedi/materi
kuliah/Kecerdasan Buatan/Bab 7 Algoritma
Genetika.pdf [22 Jun 2010].
LAMPIRAN
9
Lampiran 1 Hasil uji pengaruh nilai fitness
Kemung
kinan
hasil
0c 0m
Jumlah iterasi percobaan keDeret
1
2
3
4
5
6
7
8
9
10
2095
20
16
16
18
15
15
16
17
16
15
16
6908
11
10
10
10
11
9
10
9
12
10
10
8562
9
9
10
10
13
10
9
9
11
10
10
5028
10
14
13
13
12
13
17
12
11
15
13
9856
6
6
6
7
6
7
5
9
5
6
6
Jumlah iterasi keseluruhan
0c 1m
11
7580
25
25
27
26
29
27
32
26
29
27
27
5961
19
23
24
19
27
24
23
23
26
24
23
2603
17
16
23
19
18
19
20
20
19
22
19
8249
22
31
27
25
27
27
29
28
26
28
27
9426
19
24
26
23
26
24
24
20
28
27
24
Jumlah iterasi keseluruhan
0c 2m
24
4158
23
21
24
26
24
25
22
25
24
27
24
6351
17
18
15
17
16
16
20
17
16
18
17
8472
22
21
18
20
18
23
20
22
18
20
20
1386
20
22
15
17
18
20
17
18
16
18
18
7230
22
21
22
24
18
20
21
23
19
21
21
Jumlah iterasi keseluruhan
0c 3m
20
1573
21
23
22
21
18
21
20
25
23
17
21
4138
15
17
18
23
17
14
19
17
16
18
17
2471
15
18
19
50
50
50
50
50
50
50
40
7340
10
14
11
15
17
14
13
17
15
14
14
1463
23
19
20
18
21
23
18
20
22
19
20
Jumlah iterasi keseluruhan
0c 4m
Ratarata
(dibulat
kan)
22
4137
11
17
14
15
18
13
15
17
14
18
15
1347
15
16
16
14
11
18
14
15
13
20
15
7431
10
11
15
10
12
11
13
9
11
12
11
4371
9
15
11
18
14
17
13
15
17
11
14
1437
10
13
12
15
11
12
10
16
11
12
12
Jumlah iterasi keseluruhan
13
10
Lanjutan
Kemung
kinan
hasil
1c 0m
Jumlah iterasi percobaan keDeret
1
2
3
4
5
6
7
8
9
10
2709
9
15
11
8
12
14
10
9
12
14
11
8624
9
8
11
10
15
11
10
9
10
7
10
3950
12
11
10
15
12
14
10
15
13
10
12
6815
21
23
17
15
18
20
17
18
15
20
18
9762
9
13
15
9
11
10
13
9
12
11
11
Jumlah iterasi keseluruhan
1c 1m
12
7084
7
6
9
12
8
9
13
10
8
10
9
5316
15
13
9
12
10
9
13
15
12
13
12
3942
18
21
15
13
15
18
15
16
14
18
16
8701
6
9
6
12
9
11
8
12
10
9
9
6394
14
12
11
8
11
10
14
8
17
9
11
Jumlah iterasi keseluruhan
1c 2m
11
4917
13
14
11
10
12
15
10
15
10
12
12
1738
6
8
10
9
8
12
11
9
8
11
9
3461
12
10
11
12
11
16
13
12
15
10
12
5374
12
11
10
11
15
11
14
8
10
12
11
4703
11
12
10
17
13
15
11
12
9
12
12
Jumlah iterasi keseluruhan
1c 3m
11
7134
8
13
6
10
11
9
7
9
12
7
9
3471
50
50
50
50
50
50
50
50
50
50
50
4317
11
7
9
11
8
10
13
9
8
6
9
1743
10
15
7
10
12
9
10
9
11
7
10
1374
14
9
10
12
7
9
7
10
8
6
9
Jumlah iterasi keseluruhan
2c 0m
Ratarata
(dibulat
kan)
17
3815
4
5
5
4
5
6
5
4
5
7
5
2719
4
4
5
3
6
4
3
5
4
4
4
3024
10
8
11
10
9
7
10
9
15
11
10
9764
5
8
5
11
8
10
7
11
9
8
8
3610
5
6
9
5
6
8
6
5
7
6
6
Jumlah iterasi keseluruhan
7
11
Lanjutan
Kemung
kinan
hasil
2c 1m
Jumlah iterasi percobaan keDeret
1
2
3
4
5
6
7
8
9
10
4719
8
7
10
7
12
16
10
9
12
9
10
3751
6
8
11
8
12
10
7
9
5
6
8
3416
15
13
16
10
13
11
10
12
10
12
12
1704
6
5
7
5
10
14
8
7
10
8
8
3817
13
12
10
15
12
11
17
12
8
13
12
Jumlah iterasi keseluruhan
2c 2m
10
3417
50
50
50
50
50
50
50
50
50
50
50
3741
50
50
50
50
50
50
50
50
50
50
50
7314
8
8
8
8
8
8
8
8
8
8
8
1734
8
8
8
8
8
8
8
8
8
8
8
4713
8
6
8
8
9
8
8
7
10
8
8
Jumlah iterasi keseluruhan
3c 0m
Ratarata
(dibulat
kan)
25
3704
4
4
3
4
3
5
4
3
6
4
4
3814
3
3
4
3
2
3
3
3
4
3
3
2714
6
5
5
7
5
3
6
5
4
5
5
3794
5
4
3
4
6
4
5
3
4
3
4
3715
6
7
6
7
6
5
9
6
5
6
6
Jumlah iterasi keseluruhan
4
ABSTRACT
HERMAN GUSTI ANUGRAH. Application of Genetic Algorithms in the Number Guessing Game
System. Supervised by YENI HERDIYENI.
The number guessing game is a modified game of mastermind created by Mordecai Meirowitz in
1970. The goal of the game is to guess a hidden sequence of numbers stored by others (human or
computer) based on values obtained at each guess iteration. In this study, the game is applied into the
system by using genetic algorithms, a method that has been successfully utilized to implement the
mastermind game on the computer and get an effective solution for the game. Genetic algorithms
work through a process of natural selection or commonly known as the evolutionary process, which
will continue running until the system finds the optimal 4-digit series of numbers. The system is
designed in order to guess those hidden numbers with minimal iterations using c++ programming
language. The output of the program shows that the performance is determined by the first guess
iteration.
Keywords: genetic algorithms, number guessing game.
1
PENDAHULUAN
Latar Belakang
Permainan
komputer sangat banyak
ragamnya dan terus berkembang. Salah satu
jenisnya adalah permainan yang bersifat
kompetisi antara komputer dan manusia. Hal ini
tentu membutuhkan suatu penelitian agar
komputer dapat memiliki kecerdasan yang
menyerupai manusia dan menyelesaikan
masalah yang ada pada permainan layaknya
manusia.
Penelitian
ini
membahas
proses
pembangunan sebuah sistem permainan tebak
angka otomatis. Permainan tebak angka adalah
suatu permainan menebak deret angka
tersembunyi yang disimpan oleh pihak lain
(manusia ataupun komputer) berdasarkan nilainilai yang didapatkan di setiap iterasi
penebakan. Permainan ini merupakan hasil
modifikasi dari permainan yang telah ada
sebelumnya, yaitu permainan mastermind yang
diciptakan oleh Mordecai Meirowitz pada tahun
1970 (Marcel 2009). Pada awal permainan
tebak angka, pihak lawan akan menyimpan satu
deret angka berjumlah n digit, lalu pemain akan
mencoba menebak deret angka tersebut,
mendapatkan hasilnya, membangkitkan deret
angka untuk penebakan selanjutnya berdasarkan
hasil yang didapat, dan melakukan penebakan
kembali hingga semua digit angka tersembunyi
tersebut berhasil ditebak (tebakangka.com).
Pada penelitian sebelumnya, telah dibahas
penerapan algoritme genetika pada permainan
mastermind
dan
menghasilkan
sebuah
kesimpulan bahwa algoritme genetika hanya
membutuhkan sedikit iterasi penebakan untuk
mendapatkan solusi yang tepat pada permainan
tersebut (Berghman et al. 2009). Oleh karena
itu, pada penelitian ini, akan dilakukan
percobaan untuk menerapkan algoritme
genetika pada permainan tebak angka yang
memiliki jenis dan aturan yang menyerupai
permainan mastermind. Setiap digit dari deret
angka akan dipandang sebagai suatu gen pada
algoritme genetika dan selanjutnya diproses
hingga mendapatkan hasil yang diinginkan.
Tujuan
Tujuan
dari
penelitian
ini
adalah
menerapkan algoritme genetika di dalam sistem
permainan tebak angka.
Ruang Lingkup
Ruang lingkup penelitian ini meliputi:
Jumlah digit angka yang digunakan pada
penelitian ini adalah empat digit.
Faktor keberhasilan diukur dari jumlah
iterasi penebakan yang seminimal mungkin,
bukan dari kecepatan proses penebakannya.
Manfaat
Hasil dari penelitian ini diharapkan dapat
berguna untuk mengukur kinerja algoritme
genetika di dalam permainan tebak angka dan
juga mengembangkan fitur dari permainan
tebak angka, yaitu fitur penebakan dengan
posisi penebak angka adalah komputer (sistem).
TINJAUAN PUSTAKA
Permainan Tebak Angka
Permainan ini dilakukan antara dua pihak,
yaitu pihak yang menyimpan angka target
(codemaker) dan pihak yang melakukan proses
penebakan (codebreaker). Ilustrasi permainan
dapat dilihat pada Gambar 1.
Output proses penebakan
Submit angka tebakan
Penebak
(codebreaker)
Penyimpan angka
(codemaker)
Gambar 1 Permainan tebak angka.
Di dalam prosesnya, terdapat beberapa
aturan yang berlaku, yaitu:
Deret angka n-digit (n = 1, 2,…, 10) yang
disimpan oleh pihak lawan terdiri atas D =
(d1, d2,…, dn), d = 0, 1,…, 9. Setiap digit
angka dari deret tersebut tidak boleh ada
yang berulang/sama antara satu dengan
lainnya. Jadi, jumlah kemungkinan deret
angka target (worst case jumlah penebakan)
adalah permutasi 4 dari 10 angka:
10!
P(10,4) = (10-4)! =
10!
6!
= 7 x 8 x 9 x 10
= 5040 kemungkinan
Satu kali pencocokan deret angka tebakan
dengan deret angka target dihitung sebagai
satu iterasi penebakan.
Hasil dari setiap iterasi penebakan
direpresentasikan melalui dua buah variable
yang juga berfungsi untuk menentukan
besarnya nilai fitness bagi deret angka
tebakan yang ada. Variable tersebut adalah:
2
1 c (correct): Variable ini akan bertambah
pada hasil jika salah satu digit pada deret
angka tebakan sama dengan yang ada
pada deret angka target dan terletak pada
posisi yang sama pula.
didapatkan suatu susunan kromosom yang
terbaik, yang merepresentasikan kemungkinan
solusi dari persoalan yang ada (Melanie 1996).
2 m (misplace): Variable ini akan
bertambah pada hasil jika salah satu digit
pada deret angka tebakan sama dengan
yang ada pada deret angka target, tetapi
terletak pada posisi yang berbeda (Tabel
1).
Gen: sebuah nilai yang menyatakan satuan
dasar yang membentuk suatu arti tertentu
dalam satu kesatuan gen yang dinamakan
kromosom. Dalam algoritme genetika, gen
ini bisa berupa nilai biner, float, integer,
karakter, maupun kombinatorial.
Contoh:
Target
5678
Tebakan 5689
Alel: nilai dari gen.
Kromosom: gabungan
membentuk nilai tertentu.
Tabel 1 Contoh verifikasi deret (n = 4)
Angka
tebakan
5
6
8
9
Digit posisi
Tebakan Target
1
1
2
2
3
4
4
Total hasil
Beberapa definisi penting
algoritme genetika, yaitu:
Hasil
c
c
m
2c 1m
Permainan akan berakhir ketika hasil yang
diharapkan telah didapat, yaitu nc 0m, yang
berarti n angka yang ada pada deret tebakan
tersedia dan terletak pada digit yang sama
dengan deret angka target.
Algoritme Genetika
Algoritme genetika ditemukan oleh John
Holland pada tahun 1960-an. Pada tahun yang
sama, algoritme tersebut dikembangkan
bersama dengan murid dan rekannya hingga
tahun 1970-an. Berbeda dengan strategi evolusi
dan pemrograman evolusioner, tujuan awal dari
pengembangan algoritme tersebut sebenarnya
bukan untuk menyelesaikan masalah tertentu,
tetapi lebih kepada mempelajari fenomena
proses adaptasi yang terjadi di alam dan
mencoba mencari cara untuk menerapkannya
pada sistem komputer. Seiring dengan
banyaknya interaksi dari para peneliti tentang
metode dan pendekatan evolusioner, istilah
“algoritme genetika” pun menjadi umum
digunakan.
Algoritme genetika memanfaatkan proses
seleksi alamiah atau yang biasa dikenal dengan
proses evolusi. Proses ini melibatkan perubahan
gen pada suatu individu melalui proses
perkembang-biakan
yang
bertujuan
menyesuaikan
diri
dengan
lingkungan
hidupnya. Proses evolusi yang terjadi pada gengen tersebut akan terus berjalan hingga
menyangkut
gen-gen
yang
Individu: menyatakan satu nilai atau
keadaan yang menyatakan salah satu solusi
yang mungkin dari permasalahan yang
diangkat.
Populasi: merupakan sekumpulan individu
yang akan diproses bersama dalam satu
siklus proses evolusi.
Generasi: menyatakan satu siklus proses
evolusi atau satu iterasi di dalam algoritme
genetika.
Nilai fitness: nilai yang menyatakan baik
tidaknya suatu solusi (individu).
Seleksi: proses yang digunakan untuk
memilih individu-individu yang akan
terlibat dalam proses pindah-silang dan
mutasi.
Seleksi dengan mesin Roulette: metode ini
merupakan metode seleksi yang paling
sederhana. Cara kerjanya sebagai berikut:
1 Hitung nilai
individu.
fitness
masing-masing
2 Hitung total nilai fitness semua individu.
3 Hitung probabilitas dari tiap individu.
4 Dari probabilitas tersebut, hitung jatah
masing-masing individu pada selang
angka 1 – 100.
5 Bangkitkan bilangan acak antara 1 – 100.
6 Dari bilangan acak yang dihasilkan,
tentukan individu mana yang terpilih
dalam proses seleksi.
Mutasi: operator ini berperan untuk
menggantikan gen yang hilang dari populasi
akibat proses seleksi yang memungkinkan
3
munculnya gen yang tidak muncul pada
inisialisasi populasi.
Populasi
awal
Random Mutation: mengganti gen yang
akan dimutasi dengan nilai acak.
Shift Mutation: menggeser nilai gen yang
akan dimutasi sebesar nilai tertentu (ε).
Populasi
baru
Evaluasi
fitness
Reproduksi:
mutasi dan
pindah-silang
Seleksi
indvidu
Pindah-silang: proses mengombinasikan dua
individu untuk memperoleh individuindividu baru yang diharapkan mempunyai
nilai fitness yang lebih baik.
Pindah-silang Satu Titik: posisi pindahsilang k (k = 1, 2, …, N-1) dengan N
(panjang kromosom) diseleksi secara acak.
Variable-variable ditukar antarkromosom
pada titik tersebut untuk menghasilkan anak.
Pindah-silang Banyak Titik: m posisi
penyilangan ki (k = 1, 2, …, N-1, i = 1, 2, …,
m) dengan N (panjang kromosom) diseleksi
secara acak dan tidak diperbolehkan ada
posisi yang sama, serta diurutkan naik
(Satriyanto 2009).
Gambar 2 Siklus algoritme genetika
(Goldberg 1989).
METODE PENELITIAN
Alur penelitian untuk mencari solusi efisien
pada permainan tebak angka dapat dilihat pada
Gambar 3.
Proses Algoritme Genetika
Setelah diberikan suatu masalah yang jelas
dan juga representasi string sebagai kandidat
dari solusi yang dicari, algoritme genetika yang
paling sederhana bekerja dengan cara berikut
(Gambar 2):
1 Populasi baru akan dibangkitkan secara
acak, yang di dalamnya terdiri atas n l-bit
buah kromosom yang merupakan kandidat
solusi dari problem yang ada.
2 Hitung nilai fitness dari setiap kromosom
yang ada di dalam populasi dengan
menggunakan fungsi fitness yang telah
ditentukan.
Pembangkitan deret angka target
oleh server
Pembangkitan deret angka tebakan
secara acak oleh client (komputer)
Algoritme genetika
Seleksi individu
Reproduksi: mutasi dan
pindah-silang
3 Pilih beberapa pasang kromosom untuk
dijadikan induk berdasarkan nilai fitnessnya.
4 Lakukan proses pindah-silang dan mutasi
pada kromosom induk tersebut hingga
populasi baru yang berpotensi memiliki nilai
fitness lebih tinggi tercipta.
5 Gantikan populasi yang ada dengan populasi
yang baru terbentuk tadi. Lakukan kembali
penghitungan nilai fitness dari setiap
kromosom dengan menggunakan fungsi
fitness yang telah ditentukan (langkah no.2)
hingga solusi optimal berhasil ditemukan
(Melanie 1996).
Deret angka
tebakan baru
Target belum
ditemukan
Evaluasi fitness
Target ditemukan
Evaluasi sistem
Gambar 3 Alur metode penelitian.
4
Fungsi fitness xc + ym
Representasi
Sebelum proses pencarian solusi dilakukan,
kondisi yang ada pada permainan harus terlebih
dahulu direpresentasikan ke dalam algoritme
genetika. Hasil representasinya adalah:
Setiap digit angka yang ada pada deret
angka tebakan dan deret angka target
dianggap sebagai sebuah gen yang bertipe
integer.
Contoh: 1234.
x: Jumlah variable c (x = 0, 1, 2, 3, 4)
y: Jumlah variable m (y = 0, 1, 2, 3, 4)
Setiap variable akan diberi bobot masingmasing untuk mendapatkan nilai real-nya. Jika
bobot c = 10, bobot m = 5, dan hasil penebakan
adalah 2c 1m, nilai fitness-nya:
x = 2; y = 1;
Nilai fitness = 2(10) + 1(5) = 20 + 5 = 25
Kumpulan gen tersebut akan membentuk
suatu kromosom, yaitu kumpulan deret
angka tebakan yang akan dimanipulasi
sebelum dicocokkan dengan deret angka
target.
Jika nilai fitness belum mencapai jumlah 40
(4c 0m), yang berarti target belum berhasil
ditemukan, proses algoritme genetika pun
dilakukan berdasarkan hasil yang didapat dari
iterasi penebakan sebelumnya.
Proses manipulasi sejumlah kromosom akan
menghasilkan sebuah individu, yaitu deret
angka tebakan yang siap dicocokkan dengan
deret angka target.
Seleksi Individu
Setiap individu yang tercipta akan dianggap
sebagai satu generasi, yang berarti juga satu
iterasi penebakan.
Deret Angka Target
Berdasarkan Gambar 3, langkah pertama
yang harus dilakukan dalam penelitian ini
adalah pembangkitan deret angka target yang
akan menjadi acuan berhasil atau tidaknya
sebuah penebakan yang dihasilkan dari
algoritme genetika. Deret angka yang terdiri
dari empat digit angka dan mengacu pada aturan
permainan tersebut akan disimpan oleh
codemaker dan nantinya akan dicocokkan
dengan deret angka tebakan dari codebreaker.
Deret Angka Tebakan
Proses penebakan pun dilakukan. Pada
iterasi pertama, komputer selaku codebreaker
akan membangkitkan deret angka tebakan
secara acak. Hal ini dilakukan karena tidak
tersedianya informasi apapun yang bisa
membedakan besar/kecilnya nilai fitness antara
sekumpulan deret angka yang mungkin
dibangkitkan.
Proses algoritme genetika itu sendiri akan
mulai dijalankan pada iterasi penebakan kedua
dan seterusnya.
Evaluasi Fitness
Deret angka tebakan yang dibangkitkan
secara acak tersebut dicocokkan dengan deret
angka target yang disimpan oleh codemaker.
Output yang dihasilkan direpresentasikan
melalui variable c (correct) dan m (misplace).
Tahap selanjutnya pada algoritme genetika
adalah seleksi individu. Proses tersebut
dilakukan dengan cara memilih sejumlah deret
angka yang ada di dalam variable history, yang
didapatkan dari iterasi penebakan sebelumnya
berdasarkan besar/kecilnya nilai fitness.
Metode seleksi yang digunakan pada
penelitian ini adalah metode Mesin Roulette,
yang melibatkan nilai fitness dan probabilitas.
Setelah dihitung nilai fitness masing-masing
individu dan total keseluruhannya, didapatkan
probabilitas dan jatah per individu (Gambar 4).
Contoh:
Probabilitas: Individu 1 = 10%
Individu 2 = 20%
Individu 3 = 30%
Individu 4 = 40%
Jatah per individu: Individu 1 1 – 10
Individu 2 11 – 30
Individu 3 31 – 60
Individu 4 61 – 100
Individu 2
11 – 30
Individu 3
31 – 60
20%
30%
10%
Individu 1
1 – 10
40%
Individu 4
61 – 100
Gambar 4 Probabilitas nilai fitness.
5
Selanjutnya, bangkitkan bilangan acak
antara 1 – 100. Jika didapatkan bilangan seperti
berikut: 69, 18, 86, dan 41, individu yang
terpilih adalah individu 4, individu 2, dan
individu 3.
69 Individu 4 (61 – 100)
18 Individu 2 (11 – 30)
86 Individu 4 (61 – 100)
41 Individu 3 (31 – 60)
Mutasi
Deret angka yang terpilih tadi akan diproses
lebih lanjut dengan operator-operator pada
algoritme genetika hingga didapatkan sebuah
deret angka baru yang siap untuk dicocokkan
kembali dengan deret angka target.
Operator algoritme genetika yang pertama
yaitu mutasi. Gen-gen pada individu terpilih
akan diubah nilainya dengan bilangan acak
(Random Mutation).
Deret angka induk:
1
2
3
4
Deret angka anak:
1
6
3
4
Jika deret angka baru keluar dari ruang
solusi (memiliki angka yang sama), dibutuhkan
teknik mutasi lainnya (Basuki 2003).
Contoh:
1
3
3
4
Proses ini dilakukan berdasa