1 1.1 Latar Belakang Masalah
Permainan puzzle merupakan permainan yang membutuhkan nalar dan logika untuk menyelesaikan goal permainan tersebut. Permainan puzzle pada dasarnya merupakan permainan yang bertujuan untuk menyusun urutan angka, huruf, atau gambar yang teracak menjadi berurutan. Aturan permaianan puzzle
adalah terletak pada kepiawaian pemain dalam menggeser dan atau mengisi posisi
puzzle yang kosong.
Puzzle angka merupakan salah satu jenis puzzle yang belakangan menjadi
tren tersendiri [1]. Puzzle angka merupakan permainan teka-teki silang angka, dimana setiap baris dan kolom harus diisi dengan angka-angka dengan aturan tertentu. Puzzle angka adalah teka-teki penempatan angka yang didasarkan pada logika matematika. Puzzle angka terdiri dari kotak-kotak kecil yang membentuk baris dan kolom seperti halnya teka-teki silang (TTS). Puzzle angka ini cenderung bersifat umum, karena pemain sudah dapat membayangkan goal dari puzzle angka ini. Berbeda dengan puzzle gambar, sebelum mencari solusi permainan, pemain dituntut untuk memikirkan dahulu gambar apa yang ada pada puzzle tersebut. Begitu pula pada puzzle huruf seperti teka teki silang, pemain harus memiliki pengetahuan umum yang cukup luas. Puzzle angka menyediakan beberapa angka pada kotak soal sebagai patokan untuk menyelesaikan keseluruhan teka-teki
puzzle angka tersebut. Kotak jawaban yang kosong harus diisi dengan angka unik
dari 1 sampai 9 dan nilai jumlah pada kotak jawaban harus bernilai sama dengan nilai pada kotak soal dan angka-angka itu hanya muncul sekali dalam setiap baris dan kolom. Puzzle angka jenis ini di Jepang dikenal dengan nama kakuro puzzle
Puzzle kakuro merupakan sebuah permainan yang menggunakan teknik komputasi dalam pencarian solusi salah satunya adalah dengan penerapan algoritma pencarian yaitu dengan memahami kemungkinan yang mungkin dari setiap solusi dari masalah yang disajikan. Salah satunya adalah dengan menggunakan algoritma harmony search. Implementasi suatu algoritma pada permainan puzzle kakuro sudah pernah dilakukan yaitu dengan menerapkan beberapa algoritma, diantaranya algoritma backtracking oleh Herdi Prayoga[11].
Berdasarkan kajian sebelumnya algoritma harmony search dapat menyelesaikan permasalahan sudoku. Penelitian tentang harmony search untuk menyelesaikan sudoku telah dilakukan oleh Zong Woo Geem [3]. Sementara penelitian terkait dengan implementasi algoritma harmony search pada permainan
puzzle kakuo belum pernah dilakukan. Oleh karena itu peneliti tertarik untuk mengeksplorasi kemungkinan diterapkannya algoritma harmony search pada permainan puzzle kakuro.
1.2 Perumusan Masalah
Berdasarkan latar belakang yang telah diuraikan pada latar belakang, maka yang menjadi pokok permasalahan adalah sebagai berikut :
1. Bagaimana mengimplementasikan algoritma harmony search pada permainan puzzle kakuro.
2. Bagaimana performansi algoritma harmony search dalam menyelesaikan permainan puzzle kakuro.
1.3 Maksud dan Tujuan
Maksud dari penelitian skripsi ini adalah menerapkan algoritma harmony
search pada permainan puzzle kakuro. Tujuan yang hendak dicapai dari penelitian
skipsi ini adalah :
1. Menerapkan algoritma harmony search pada permainan puzzle kakuro. 2. Mengetahui performansi algoritma harmony search dalam menyelesaikan
1.4 Batasan Masalah
Batasan Masalah yang ditentukan dalam penelitian ini adalah sebagai berikut :
1. Game yang dibangun berbasis dekstop.
2. Game dibangun dengan desain 2D.
3. Game bersifat offline.
4. Game bergenre puzzle game.
5. Game dibangun untuk menerapkan algoritma harmony search pada permainan puzzle kakuro.
6. Game yang dibangun dibatasi hanya untuk puzzle kakuro berukuran grid (6x6
, 7x7, 8x8, 9x9, 10x10).
7. Papan puzzle kakuro sudah disediakan.
8. Algoritma harmony search digunakan untuk mencari solusi optimal permaianan puzzle kakuro.
9. Parameter pengujian adalah HMCR, PAR, dan waktu pencarian. a. HMCR diberi nilai 0.7, 0.8, dan 0.9.
b. PAR diberi nilai 0.1, 0.2, dan 0.3.
10. Metode analisis perancangan yang digunakan adalah analisis perancangan dan pengembangan perangkat lunak berorientasi obyek, dengan menggunakan pemodelan Unified Modeling Language (UML).
1.5 Metode Penelitian
Metodologi penelitian yang digunakan adalah metodologi Analisis deskriptif. Analisis deskriptif adalah metode analisis dengan mendeskripsikan atau menggambarkan data yang telah terkumpul sebagaimana adanya tanpa membuat kesimpulan yang berlaku untuk umum. Metodologi ini terbagi menjadi dua metode yaitu metode pengumpulan data dan metode pembangunan perangkat lunak.
1.5.1 Metode Pengumpulan Data
Studi Literatur adalah metode pengumpulan data dengan mengumpulkan teori-teori pendukung yang berhubungan dengan judul yang diambil melalui buku, jurnal, paper dan juga mengumpulkan data – data melalui website yang membahas tentang masalah puzzle kakuro dan algoritma harmony search.
1.5.2 Metode Pengembangan Perangkat Lunak
Adapun langkah-langkah atau tahapan dalam membangun aplikasi ini adalah sebagai berikut [4]:
a. Definisi dan Analisa Kebutuhan.
Layanan dan tujuan sistem yang ditetapkan melalui konsultasi dengan pengguna sistem, kemudian didefinisikan secara rinci dan berfungsi sebagai spesifikasi sistem.
b. Desain Sistem dan Software
Dilakukan proses desain persyaratan sistem baik untuk perangkat keras maupun perangkat lunak sistem. Ini menetapkan arsitektur sistem secara keseluruhan.
c. Implementasi dan Pengujian unit
Dalam tahap ini, desain perangkat lunak direalisasikan sebagai serangkaian program atau unit program. Unit pengujian melibatkan verifikasi bahwa setiap unit memenuhi spesifikasinya.
d. Integrasi dan pengujian sistem
Unit program individu atau program yang terintegrasi dan diuji sebagai sistem yang lengkap untuk memastikan bahwa persyaratan perangkat lunak telah dipenuhi.
e. Operasi dan pemeliharaan.
Gambar 1. 1 Metode Waterfall [4] 1.6 Sistematika Penulisan
Sistematika penulisan skripsi ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan skripsi ini adalah sebagai berikut :
BAB I. PENDAHULUAN
Bab ini menguraikan tentang latar belakang permasalahan yang meliputi Permainan puzzle kakuro dan mekanismenya, masalah dalam hal mekanisme, solusi dan penelitian yang telah ada beserta masalahnya dan solusi yang ditawarkan beserta harapannya, mencoba merumuskan inti permasalahan yang dihadapi, menentukan maksud dan tujuan penelitian, metodologi penelitian, yang kemudian diikuti dengan pembatasan masalah serta sistematika penulisan.
BAB II. TINJAUAN PUSTAKA
Bab ini membahas subyek permasalahan yang diangkat yaitu Permainan puzzle
kakuro beserta varian dan aturan permainannya, teori mengenai metaheuristik, kemudian lebih spesifik membahas mengenai algoritma harmony search, permasalahan optimasi, kemudian diikuti oleh pembahasan mengenai teknik pemodelan dengan UML.
BAB III. ANALISIS DAN PERANCANGAN
BAB IV. IMPLEMENTASI DAN PENGUJIAN
Bab ini menjelaskan implementasi dari hasil analisis dan perancangan yang telah dibuat ke dalam bentuk aplikasi pemrograman, serta pengujian white box dan
black box yang meliputi pengujian parameter algoritma yang diterapkan pada aplikasi yang telah dibangun.
BAB V. KESIMPULAN DAN SARAN
7 2.1 Metaheuristik
Heuristik berasal dari kata Yunani heuriskein yang berarti seni untuk menemukan strategi dalam menyelesaikan persoalan. Sedangkan meta berarti metodologi tingkat tinggi atau lanjut. Didalam ilmu komputer, metode heuristik merupakan suatu teknik yang didesain untuk memecahkan masalah dengan sedikit mengabaikan apakah solusinya bisa dibuktikan benar, tetapi biasanya menghasilkan solusi yang bagus, dalam arti optimal atau mendekati optimal [5]. Heuristik dimaksudkan untuk mendapatkan hasil yang secara yang secara komputasi lebih cepat dengan konsekuensi mengurangi kepresisian atau akurasi. Jadi kecepatan perhitungan biasanya lebih baik (dibandingkan optimasi eksak) dengan sedikit mengorbankan akurasi. Walaupun pada kenyataanya solusinya bisa juga mempunyai akurasi yang tinggi. Pendekatan heuristik biasanya sangat spesifik untuk problem tertentu.
Metaheuristik dapat didefinisikan sebagai pendekatan komputasi untuk mencari solusi optimal atau mendekati optimal dari suatu problem optimasi dengan cara mencoba secara iteratif untuk memperbaiki kandidat solusi dengan memperhatikan batasan kualitas solusi yang diinginkan [5]. Metode metaheuristik banyak dipakai dalam optimisasi stokastik (optimisasi stokastim merupakan optimisasi yang memiliki derajat ketidakpastian atau random).
Metaheuristik memiliki beberapa karakteristik dasar yaitu: 1. Metaheuristik adalah strategi yang memandu proses pencarian.
2. Tujuan dari metaheuristik adalah untuk menjelajahi ruang pencarian secara efficient untuk menemukan solusi optimal.
3. Teknik metaheuristik berkisar dari prosedur pencarian lokal yang sederhana sampai proses pembelajaran yang komplek.
4. Meteheuristik adalah metode pendekatan dan biasanya non-deterministik. 5. Metaheuristik dapat terdiri dari penggabungan beberapa mekanisme supaya
6. Konsep dasar dari metaheuristik memungkinkan pendeskripsian secara abstrak. 7. Metaheuristik bersifat general/umum sehingga dapat diterapkan dalam
berbagai macam persoalan.
8. Metaheuristik dapat menggunakan domain pengetahuan khusus dalam bentuk heuristik yang dikendalikan dengan strategi tingkat lanjut.
9. Metaheuristik dapat menggunakan pengalaman yang didapat selama proses pencarian untuk menuntun proses pencarian.
Dalam menentukan apakah metaheuristik adalah metode yang sesuai untuk menyelesaikan suatu permasalahan, ada beberapa hal yang perlu diperhatikan misalnya kompleksitas permasalahan, ukuran input, struktur input dan waktu yang diperlukan untuk menyelesaikan masalah tersebut. Secara umum metehauristik dipakai untuk masalah-masalah yang komplek dan tidak bisa diselesaikan dengan mudah secara analitikal/eksak. Tidaklah terlalu bermanfaat menggunakan metaheuristik untuk persoalan yang dengan mudah dan cepat dapat diselesaikan secara eksak (penyelesaian eksak merupakan penyelesaian terbaik, tetapi seringkali metode ini tidak dapat diterapkan pada permasalahan optimisasi, sehingga dipakailah metode pendekatan). Metaheuristik mencari solusi dengan memadukan interaksi antara prosedur pencarian lokal dan strategi yang lebih tinggi untuk menciptakan proses yang mampu keluar dari titik-titik local optima dan melakukan pencarian diruang solusi untuk menemukan solusi global. Tentu saja diperlukan berbagai modifikasi agar suatu metoda metaheuristik sesuai dapat menyelesaikan masalah khusus yang dihadapi. Banyak pendekatan yang masuk kategori metaheuristik diantaranya adalah algoritma harmony search [5].
2.2 Algoritma Harmony Searh
2.2.1 Pengertian Algoritma Harmony Searh
Harmony Search (HS) termasuk pendekatan metaheuristik yang
memainkan musik tertentu, berimprovisasi memainkan nada secara random atau berdasarkan pengalaman untuk menemukan harmoni yang indah, variable dalam algoritma harmony search memiliki nilai random atau nilai yang didapat dari iterasi (memori) dalam usaha mendapatkan solusi optimal.
Algoritma ini terinspirasi dari observasi bahwa tujuan dari orang bermusik adalah mencari status harmoni yang sempurna. Usaha menemukan harmoni dalam musik adalah analogi dengan proses penemuan solusi optimal dalam optimasi. Dengan kata lain, proses improvisasi yang dilakukan seorang pemain musik jazz bisa dianalogikan dalam proses pencarian solusi dalam optimasi. Selain itu, harmoni yang sempurna ditentukan oleh standar keindahan audio. Musisi selalu ingin menghasilkan karya musik yang mempunyai harmony yang sempurna. Sementara itu solusi optimal untuk masalah optimasi harus dicari berdasarkan fungsi tujuan dan konstrain yang ada. Kemiripan ini digunakan sebagai dasar penyusunan algoritma harmony search (HS). Algoritma harmony
search pertama kali diperkenalkan oleh Zong Woo Geem [3].
Permainan musik akan mencari harmoni yang paling indah yang ditentukan oleh estimasi keindahan (aesthetic estimation), sebagaimana proses optimasi ingin menemukan solusi optimum yang ditentukan oleh adanya fungsi tujuan. Estimasi keindahan dilakukan dengan pengaturan (pitches) nada yang dilakukan bersama dari gabungan instrumen. Sebagaimana fungsi tujuan diestimasi pada beberapa nilai variabel, suara yang indah akan didapatkan setelah pemain musik sering berlatih sebagaimana fungsi tujuan dapat diperbaiki dengan menambah iterasi.
Dalam kasus optimasi nyata, setiap pemain musik dapat dianalogikan dengan variabel keputusan, sedangkan suara yang diinginkan dapat dianalogikan dengan nilai setiap variabel. Misalkan setiap variabel mewakili pipa yang dicari diameternya dan pilihan nada. Nada
{Do, Re, Mi, Fa, Sol, La, Si} Mewakili nilai diameter
Jika variabel pertama bernilai 5 dari {1, 4, 3, 5, 2}
Dan yang kedua bernilai 7 dari {7, 1, 7, 2, 5}
Dan yang ketiga 1 dari {6, 5, 4, 3, 1}
Akan didapat vektor solusi baru yang terbentuk (5, 7, 1). Jika vektor solusi baru ini lebih baik dari vektor terburuk yang sudah ada, biasanya disimpan dalam harmony memory (HM), maka solusi baru ini akan masuk kedalam HM dan vektor terburuk dikeluarkan dari HM. Prosedur ini diulang sampai kriteria penghentian dicapai.
Misalkan ada 3 orang pemain musik masing-masing memainkan saxophone, gitar, dan bass. Mereka ingin mencari harmoni nada yang bagus. Nada yang ada pada memori pemain saxophone adalah
{Do, Fa, Mi, Sol, Re} Bassis
{Si, Do, Si, Re, Sol} Dan gitaris,
{La, Sol, Fa, Mi, Do}
Jika saxophonis secara random memainkan Sol dari memorinya Do, Fa, Mi, Sol, Re, basis memainkan Si dari {Si, Do, Si, Re, Sol}, dan gitaris memainkan Do dari {La, Sol, Fa, Mi, Do}, maka didapatkan harmoni baru (Sol, Si, Do). Secara musik nada ini mewakili chord C7. Jika harmoni baru ini lebih baik dari harmoni yang ada pada harmony memory, maka harmoni ini akan menggantikannya. Langkah ini akan diulang sampai harmoni yang lebih bagus didapat.
Walaupun teknik ini terbilang baru dalam metaheuristik, namun dalam beberapa penerapan pada berbagai problem menunjukan HS termasuk efektif dan mempunyai banyak kelebihan. Beberapa contoh penerapannya adalah pada optimasi fungsi, jaringan, distribusi air, pemodelan air tanah, energy-saving
penggabungan HS denga algoritma lain seperti Particle Swarm Optimization juga dilakukan untuk memperbaiki performansi [5].
2.2.2 Konsep Harmony Search
Analogi musik dengan proses optimasi menurut HS adalah sebagai berikut :
1. Instrumen Musik ↔ variabel keputusan
2. Pitch range↔ Range nilai variabel
3. Harmony↔ Vektor Solusi
4. Aesthetic↔ Fungsi Tujuan
5. Practice↔ Iterasi
6. Experience↔ Matrik Memori
Dengan adanya analogi seperti ini, disusunlah algoritma HS ini. Ide dasar algoritma HS adalah meniru proses perbaikan harmoni musik yang dilakukan oleh kelompok pemain musik. Ketika kelompok pemain musik melakukan perbaikan pada harmoni musik yang dimainkan, maka akan terdapat tiga kemungkinan pilihan, yaitu :
1. Memainkan harmoni musik yang terkenal berdasarkan ingatan mereka.
2. Memainkan harmoni musik yang serupa dengan harmoni musik yang terkenal namun ada sedikit penyesuaian, atau
3. Membuat harmoni musik yang baru.
Geem menganalogikan ketiga pilihan ini pada proses optimasi secara kuantitatif. Ketiga komponen tersebut diformulasikan menjadi harmony memory, penyesuaian nada (pitch adjusting), dan proses pembangkitan nada secara
random. Penggunaan HMCR dan PAR akan berhubungan dengan pilihan
variabel maka pengaturan nilainya akan dilakukan per variabel untuk setiap siklus. Jadi dalam setiap iterasi akan mendapat siklus sebanyak jumlah variabel.
Penggunaan harmoni memori sangat penting karena harmoni memori tersebut bisa menjamin bahwa harmoni yang bagus akan dipertimbangkan sebaga elemen-elemen dari vektor solusi yang baru. Agar harmony memory dapat digunakan secara efektif, algoritma HS mengadopsi sebuah parameter yang disebut Harmony memory Considering Rate (HMCR). Nilai HMCR akan menetukan apakah satu nada baru akan dibangkitkan atau mengambil dari
harmony memory. Jika nilai rate ini terlalu rendah, maka hanya sedikit harmoni elit (yang sudah tersimpan dalam harmony memory) yang terpilih untuk dilakukan pengaturan dan dapat menyebabkan proses konvergensi terlalu lambat, jika rate
ini terlalu besar, maka akan menyebabkan nada-nada pada harmony memory
banyak terpakai dan tidak sempat mengeksplorasi nada lain yang baru dimana pada akhirnya sulit mencapai solusi yang bagus. Sehingga akan besar kemungkinan terjadi solusi yang local optimum. Oleh karena itu, biasanya digunakan HMCR = 0.7 – 0.95.
Komponen kedua adalah penyesuaian nada dimana proses ini ada beberapa parameter seperti bandwidth(bw) dan Pitch Adjusting Rate (PAR). Pernyesuaian nada musik berarti pengubahan frekuensi nada. Hal ini berarti membangkitkan nilai yang sedikit berbeda dari nada yang sudah ada. Pengaturan dengan menaikan nada yang sekarang atau menurunkan. Dalam optimasi berarti menaikan atau menurunkan nilai variabel dengan menggunakan bandwidth tadi. Jika bandwidth nilainya terlalu besar maka pengaturan akan lebih cepat tetapi akan ada kemungkinan melompati nilai optimal yang dicari. Jika nilai bandwidth
1. Langkah 1. Inisialisasi parameter
Parameter dari algoritma Harmony search :
HMS = Ukuran Harmony memory. Hal ini biasanya bervariasi dari 1 sampai 100. (nilai khas = 30)
HMCR = Laju memilih nilai dari Harmony memory. Hal ini biasanya bervariasi 0,7-0,99. (nilai khas = 0,9)
PAR = Laju memilih nilai tetangga. Hal ini biasanya bervariasi 0,1-0,3. (nilai khas = 0,3)
f(x) = Fungsi Objektif xL = Batas Bawah xU = Batas Atas
2. Langkah 2. Inisialisasi Harmony memory (HM)
HM terdiri dari N solusi awal. Solusi ini terdiri dari satu variabel sampai p variabel. Solusi ini dibangkitkan secara random. Semua kandidat solusi ini dievaluasi untuk menemukan solusi terburuk.
Dimana masing-masing vektor solusi (tiap baris) akan dievaluasi nilai fungsinya
3. Langkah 3. Lankukan perbaikan / improvisasi terhadap solusi yang ada
dengan HMCR dan PAR) hingga akan didapatkan nilai baru. Atau kalau tidak memenuhi aturan, akan dibangkitkan solusi baru secara random.
Suatu harmoni baru atau vektor baru akan dibangkitkan berdasarkan aturan berikut : Harmony memory Consideration Rate (HMCR), Pitch Adjusting Rate (PAR), dan pembangkitan yang benar-benar random. Sebagai contoh nilai baru akan diambil dari . Variabel yang lain dicari dengan cara yang sama. Besarnya nilai HMCR akan menentukan nilai baru ini besar kemungkinannya akan diambil dari HM atau benar-benar dibangkitkan secara
random.
pitch adjustment dilakukan untuk setiap komponen vektor solusi. Prosedur ini menggunakan parameter PAR untuk melakukan pengaturan:
{ (2.3) Dalam proses pitch adjustment ini, suatu nilai pindah ke nilai didekatnya dengan peluang (d.p) PAR atau tetap pada nilai aslinya dengan peluang (1-PAR).
4. Langkah 4. Perbarui Harmony memory
Solusi Baru ini akan dibandingkan dengan solusi terburuk dalam N populasi awal. Jika lebih baik maka ia akan menggantikan vektor solusi terburuk tadi.
5. Langkah 5. Cek kriteria Penghentian
2.2.3 Implementasi Algoritma Harmony Search
Berikut adalah contoh bagaimana HS diimplementasikan dalam minimasi fungsi dengan dua variabel.
min f(x) = +
1. Pertama tetapkan beberapa nilai parameter berikut : HMS = 10, HMCR = 0.9, PAR = 0.3
Dengan perhitungan yang sama terhadap semua dan maka akan didapatkan hasil sebagai berikut :
Tabel 2.2 Harmony memory
f (x)
4.5666 5.1052 782.1557
2.9607 -3.6990 128.1969
1.91347 0.4705 70.8475
-4.0163 -5.9232 579.8802
0.8370 0.4696 131.9409
-5.5020 -3.5190 248.1863
2.6383 3.4459 56.7877
-2.4362 -3.7531 99.3760
1.3137 4.7428 303.0511
-4.9343 -0.3410 308.8373
3. Bangkitkan bilangan random, misal r = 0.85. bangkitkan dengan HMCR, karena r≤ HMCR, maka ambil satu nilai dari HM sebagai . Misalkan secara
random diambil baris 2 dari HM, maka = 2.9607.
4. Bangkitkan bilangan random, r = 0.25. bandingkan dengan PAR. Karena r ≤
PAR maka perlu dilakukan pengaturan nilai menjadi
+ (2 * r - 1) * b(1)
Disini bilangan random r perlu dikalikan 2 dan dikurangi dengan 1 agar ada kemungkinan bernilai – atau +, misal r = 0.6, maka
+ (2 * 0.6 - 1) * 0.012 = 2.9631
5. Bangkitkan nilai xnew untuk variabel kedua. Bangkitkan bilangan random, misal r = 0.92. karena r≥ HMCR, maka perlu dibangkitkan nilai baru untuk
(tidak diambil dari HM). Gunakan
+ r * ( - )
Misalnya bilangan random r = 0.3130, maka
+ 0.3130 * (6 – (-6)) = 2.2435
Karena hanya ada 2 variabel maka kita mendapatkan
xnew = [2.9607, -2.2435]
Cek nilai f dari xnew ini,
f([2.9631, -2.2435]) = 20.9160
Bandingkan nilai f ini dengan nilai f terburuk dalam HM. Nilai f terburuk dalam HM adalah 782.1557 (baris 1). Maka nilai x pada HM dibaris 1 akan digantikan dengan [2.9631, -2.2435].
6. masuk ke iterasi 2, i= 2, ulangi langkah 3 hingga jumlah iterasi maksimum dicapai.
Dalam kasus optimasi kombinatorial, misalkan Travelling Salesman Problem (TSP) maka ada beberapa langkah modifikasi terhadap algoritma HS. Dalam problem ini ingin ditemukan solusi berupa urutan kota yang dikunjungi. Misalkan kota awal p[emberangkatan adalah kota 1 , dan kota berikutnya yang dikunjungi adalah dipilih berdasarkan tiga aturan berikut.
2. Aturan 2. Pilih kota terdekat sebagai kota berikutnya yang dikunjungi dengan probabilitas HMCR x PAR1; atau pilih kota terdekat kedua dengan probabilitas HMCR x PAR2; atau pilih kota terdekat ketiga dengan probabilitas HMCR x PAR3
3. Aturan 3. Pilih kota berikutnya secara random dengan probabilitas (1-HMCR).
Penjelasan dari aturan diatas adlah sebagai berikut. Untuk aturan 1 berarti jika bilangan random r yang terpilih lebih kecil dari HMCR maka akan dipilih salah satu kota secara random dari HM. Aturan 2 menyatakan jika r yang dibangkitkan lebih kecil dari HMCR dan PAR1 maka dipilih kota terdekat; atau pilih kota lebih kecil dari HMCR dan PAR1 maka dipilih kota terdekat, atau pilih kota terdekat kedua jika r lebih kecil dari HMCR, atau pilih kota terdekat ketiga jika r lebih kecil dari HMCR. Aturan 3 menyatakan jika r yang dibangkitkan lebih besar dari HMCR maka pilih kota secara random.
Pada algoritma diatas memungkinkan adanya kota yang sama dalam suatu rute diulang lagi, hal ini disebabkan karena adanya kemungkinan terpilihnya satu kota lebih dari satu kali pada tahap memory consideration.
1.3 Game Puzzle
1.3.1 Pengertian Game Puzzle
Puzzle berasal dari bahasa Inggris yang berarti teka-teki atau bongkar pasang, media puzzle merupakan media sederhana yang dimainkan dengan bongkar pasang.
2.3.2 Jenis-Jenis Game Puzzle Jenis-Jenis game puzzle [6] : 1. Puzzle konstruksi
Puzzle rakitan (construction puzzle) merupakan kumpulan
potongan-potongan yang terpisah, yang dapat digabungkan kembali menjadi beberapa model. Mainan rakitan yang paling umum adalah blok-blok kayu sederhana berwarna-warni. Mainan rakitan ini sesuai untuk orang yang suka bekerja dengan tangan, suka memecahkan puzzle, dan suka berimajinasi.
2. Puzzle batang (stick)
Puzzle batang merupakan permainan teka-teki matematika sederhana
namun memerlukan pemikiran kritis dan penalaran yang baik untuk menyelesaikannya. Puzzle batang ada yang dimainkan dengan cara membuat bentuk sesuai yang kita inginkan ataupun menyusun gambar yang terdapat pada batang puzzle.
3. Puzzle lantai
Puzzle lantai terbuat dari bahan sponge (karet/busa) sehingga baik untuk alas bermain anak dibandingkan harus bermain di atas keramik. Puzzle lantai memiliki desain yang sangat menarik dan tersedia banyak pilihan warna yang cemerlang. Juga dapat merangsang kreativitas dan melatih kemampuan berpikir anak. Puzzle lantai sangat mudah dibersihkan dan tahan lama.
4. Puzzle angka
Mainan ini bermanfaat untuk mengenalkan angka. Selain itu puzzle
5. Puzzle transportasi
Puzzle transportasi merupakan permainan bongkar pasang yang memiliki
gambar berbagai macam kendaraan darat, laut dan udara. Fungsinya selain untuk melatih motorik, juga untuk stimulasi otak kanan dan otak kiri.
6. Puzzle geometri
Puzzle geometri merupakan puzzle yang dapat mengembangkan
keterampilan mengenali bentuk geometri (segitiga, lingkaran, persegi dan lain-lain).
7. Puzzle Angka silang
Puzzle angka silang merupakan puzzle yang dapat mengembangkan
kemampuan logika matematika.
2.3.3 Puzzle Kakuro
Kakuro adalah sebuah permainan puzzle yang bermula bernama cross
sums. Puzzle, pertama dikeluarkan pada tahun 1966 oleh Dell Megazine di
Amerika Serikat. Sepuluh tahun kemudian, Dell Megazine memperkenalkan
puzzle sudoku pada dunia. Maki Kaji presiden dari Nicoli Puzzle, pada tahun 1980 membawa masuk cross games ke Jepang. Maki Kaji memberi nama puzzle
buatannya adalah kasan kurosu (penjumlahan silang). Pada tahun 1986, Nicoli
memberi nama dagang game dengan nama kakuro (kependekan dari kasan kurosu). September 2005 adalah titik penentunya, dimana game puzzle kakuro diperkenalkan ke barat oleh The Guardian dan The Daily Mail yang menerbitkan
puzzle kakuro setiap harinya di Inggris dan setelah itu game puzzle kakuro ini menyebar keseluruh dunia [2].
2.3.3.1 Definisi Puzzle Kakuro
Puzzle kakuro adalah permainan puzzle dengan ukuran grid N x M
horizontal dan vertikal. Kotak berwarna hitam digunakan sebagai tanda pembatas dan soal untuk menyelesaikan permainan puzzle kakuro, sedangkan kotak berwarna putih digunakan sebagai kotak jawaban. Pada baris paling atas dan kolom paling kiri pada grid puzzle kakuro, hanya berisi kotak berwarna hitam (dapat berfungsi sebagai pembatas atau kotak jawaban). Aturan dalam pengisisan
puzzle kakuro ini adalah dengan mengisi angka bilangan bulat dari 1 hingga 9 dengan tidak boleh terdapat angka yang sama pada satu lajur (baris maupun kolom). Nilai angka yang terdapat pada kotak jawaban yang sudah dijumlahkan harus bernilai sama dengan nilai angka pada kotak soal disetiap lajurnya [1]. Gambar 2.1 adalah sebagian contoh dari puzzle kakuro serta solusi penyelesaianya [6].
Gambar 2.1 Contoh puzzle kakuro dan solusi penyelesaiannya
2.3.3.2Aturan Permainan Puzzle Kakuro
Puzzle kakuro adalah adalah sebuah permainan puzzle yang bersifat
puzzle logika. Puzzle ini biasa disebut transliterasi matematis dari puzzle silang. Aturan dalam permainan puzzle kakuro ini adalah dengan mengisi setiap setiap kotak jawaban yang tersedia dengan angka bulat dari 1 hingga 9 dengan beberapa syarat dalam pengisiannya. Adapun syarat-syarat dalam pengisian kotak jawaban adalah sebagai berikut [1]:
2. Setiap kotak jawaban yang berurutan dalam satu lajur (lajur yang dimaksud adalah deretan kotak yang berurutan dalam satu baris atau kolom) tidak boleh memiliki angka yang sama.
3. Isi dari setiap lajur harus memiliki jumlah yang sama dengan kotak soal pada ujung kiri (baris) atau ujung atas (kolom) lajur tersebut.
Gambar 2.2 Cara pengisisan dengan jumlah jawaban sesuai dengan kotak soal
Pengisian kotak jawaban seperti pada gambar gambar 2.3 merupakan contoh yang salah karena terdapat angka yang sama pada satu lajur.
Sedangkan pada gambar 2.4 merupakan pengisian kotak jawaban yang benar karena terdapat pada kotak soal yang berbeda walaupun dalam lajur yang sama.
Gambar 2.4 Nilai sama pada lajur yang sama tetapi pada kotak jawaban yang berbeda
2.3.3.3 Fungsi Objektif Puzzle Kakuro Fungsi Objektif untuk baris [8]:
∑ (2.4)
TH(h) = Jumlah yang terdapat dalam Kotak Soal secara baris
CH(h) = Hasil Perhitungan Penjumlahan dari Vektor Solusi v secara baris.
Fungsi Objektif untuk kolom :
∑ (2.5)
TV(v) = Jumlah yang terdapat dalam Kotak Soal secara kolom. CV(v) = Hasil Perhitungan Penjumlahan dari Vektor Solusi secara
1.4 Tools yang digunakan
Tools adalah unsur yang diguunakan dalam pembangunan sebuah aplikasi
1.4.1 OOP (Object Oriented Progamming)
Metodologi berorientasi objek adalah suatu strategi pembangunan perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan objek yang berisi data dan operasi yang diberlakukan terhadapnya. Metodologi berorientasi objek merupakan suatu cara bagaimana sistem perangkat lunak dibangun melalui pendekatan objek secara sistematis. Metode berorientasi objek didasarkan pada penerapann prinsip-prinsip pengelolaan kompleksitas. Metode berorientasi objek meliputi rangkaian aktifitas analisis beorientasi objek, perancangan berorientasi objek, pemrograman berorientasi objek, dan pengujian berorientasi objek.
Pada saat ini, metode berorientais objek banyak dipilih karena metodologi lama banyak menimbulkan masalah seperti adanya kesulitan pada saat mentranformasi hasil dari satu tahap pengembangan ke tahap berikutnya, misalnya pada metode pendekatan terstruktur, jenis aplikasi yang dikembangkan saat ini berbeda dengan masa lalu. Aplikasi yang dikembangkan saat ini sangat beragam (aplikasi bisnis, real-time, utility dan sebagainya) dengan platform yang berbeda-beda, sehingga menimbulkan tuntutan kebutuhan metodologi pengembangan yang dapat mengakomodasi ke semua jenis aplikasi.
Keuntungan menggunakan metodologi berorientasi objek adalah sebagai berikut [9]:
1. Meningkatkan Produktivitas
Karena kelas dan objek yang ditemukan dalam suatu masalah masih dapat dipakai ulang untuk masalah lainnya yang melibatkan objek tersebut (reuseable).
2. Kecepata Pengembangan
Karena sistem yang dibangun dengan baik dan benar pada saat analisis dan perancangan akan mennyababkan berkurangnya kesalahan pada saat pengkodean
Karena dengan model objek, pola-pola yang cendrung tetap dan stabil dapat dipisahkan dan pola-pola yang mungkin sering diubah-ubah.
4. Adanya Konsistensi
Karena sifat pewarisan dan penggunaan notasi yang sama pada saat analisis, perancangan maupun pengkodean.
5. Meningkatkan Kualitas Perangkat Lunak
Karena adanya pendekatan pengembangan lebih dekat dengan dunia nyata dan adanya konsistensi pada saat pengambangannya, perangkat lunak yang dihasilkan akan mampu memenuhi kebutuhan pemakai serta mempunyai sedikit kesalahan.
Berikut beberapa contoh bahasa pemograman yang mendukung pemrograman berorinentasi objek adalah :
1. Smalltalk
Smalltalk adalah salah satu bahasa pemograman yang diekmbangkan untuk mendukung pemrograman beroirentasi objek.
2. Bahasa Pemrograman Eiffel
Eiffel merupakan bahsa pemrograman yang kembangkan untuk mendukung pemrograman berorientasi objek oleh Bertrand Meyer dan
compiler.
3. Bahasa Pemrograman (Web) PHP
Php dibuat pertama kali oleh seorang perekayasa perangkat (software engineering) yang bernama Rasmus Lerdoff.
4. Bahasa Pemrograman C++
C++ merupakan pengembangan lebih lanjut dari bahasa pemrograman C untuk mendukung pemrograman berorientasi objek.
5. Bahasa Pemrograman Java
Java dikembangkan oleh perusahaan Sun Microsystem. Java menurut definisi dari Sun Microsystem adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada komputer
1.4.2 Konsep Dasar Berorientasi Objek
Berikut adalah konsep dasar pemrograman berorientasi objek [9]: 1. Objek (Object)
Objek adalah abtraksi dan sesuatu yang mewakili dunia nyata seperti benda, satuan organisasi, tempat, kejadian, struktur, status, atau hal-hal lain yang bersifat abstrak. Objek merupakan suatu entitas yang mampu menyimpan informasi dan mempunyai operasi yang dapat diterapkan atau dapat berpengaruh pada status objeknya.
2. Kelas (Class)
Kelas adalah kumpulan objek-objek dengan karakteristik yang sama. Kelas merupakan definisi statik dan himpunan objek yang sama yang mungkin lahir atau diciptakan dalam kelas tersebut.
3. Pembungkusan (Encapsulation)
Pembungkusan atribut data dan layanan yang mempunyai objek untuk menyembunyikan implementasi dan objek sehingga objek lain tidak mengetahui cara kerjanya.
4. Pewarisan (Inheritance) dan Generalisasi/Spesialisasi
Mekanisme yang memungkinkan satu objek mewarisi sebagian atau seluruh definisi dan objek lain sebagai bagian dirinya.
5. Metode
Operasi atau metode pada sebuah kelas hampir sama dengan fungsi atau prosedur pada metodologi struktural.
6. Polimorfisme
Kemampuan suatu objek untuk digunakan dibanyak tujuan yang berbeda dengan nama yang sama sehingga menghemat baris program.
1.4.3 Pemodelan dengan UML
mereka dalam bentuk yang baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif untuk berbagi dan mengkomunikaskan rancangan mereka dengan yang lain.
UML merupakan kesatuan dari bahasa pemodelan yang dikembangkan oleh Booch, Object Modeling Technique (OMT) dan Object Oriented Software
Engineering (OOSE). Metode Booch dari Grady Booch sangat terkenal dengan
nama metode Design Object Oriented. Metode ini menjadikan proses analisis dan
design ke dalam empat tahapan iterative, yaitu : identifikasi kelas-kelas dan obyek-obyek, identifikasi semantic dari hubungan obyek dan kelas tersebut, perincian interface dan implementasi. Keunggulan metode Booch adalah pada detail dan kayanya dengan notasi dan elemen. Pemodelan Object Modeling
Technique yang dikembangkan Rumbaugh didasarkan pada analisis terstruktur
dan permodelan entity-relationship. Tahapan utama dalam metodologi ini adalah analisis, design sistem, design obyek dan implementasi. Keungulan metode ini aladah dalam penotasian yang mendukung semua konsep Object Oriented
Software Engineering. Metode Object Oriented Software Engineering Jacobson
lebih memberikan penekanan pada use case. Object Oriented Software
Engineering memiliki tiga tahapan yaitu membuat model requirement dan
analisis, design dan implementasi, dan model pengujian. Keungulan metode ini adalah mudah dipelajari karena memiliki notasi yang sederhana namun mencakup seluruh tahapan dalam rekayasa perangkat lunak. Dengan UML, metode Booch,
Object Modeling Technique dan Object Oriented Software Engineering
digabungkan dengan membuang elemen-elemen yang tidak praktis ditambah dengan elemen-elemen dari metode lain yang lebih efektif dan elemen-elemen baru yang belum ada pada metode terdahulu sehingga UML lebih ekspresif dan seragam dari pada metode lainnya.
2.4.4 Diagram-diagram UML
2.4.4.1Struktur Diagram
Struktur Diagram, yaitu kumpulan diagram yang digunakan untuk menggambarkan suatu struktur statis dari sistem yang dimodelkan. Pada Struktur Diagram dibagi menjadi 6 bagian [9]:
1. Diagam Kelas
Diagram kelas menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut attribut dan metode atau operasi.
2. Diagram Objek
Digram objek menggambarkan struktur sistem dari segi penamaan objek dan jalannya objek dalam sistem.
3. Diagram Komponen
Diagram komponen dibuat untuk menunjukan organisasi dan ketergantungan diantara kumpulan komponen dalam sebuah sistem.
4. Composite Structure Diagram
Composite Structure Diagram bru muali ada pada UML versi 2.0.
diagram ini dapat digunakan untuk menggambarkan struktur dari bagian-bagian yang saling terhubung maupun mendeskripsikan struktur pada saat berjalan (runtime) .
5. Package Diagram
Package diagram menyediakan cara mengumpulkan elemen-elemen
yang saling terkait dalam diagram UML. Hampir semua diagram dalam UML dapat dikelompokan menggunakan Package Diagram.
6. Deployment Diagram
Deployment diagram menunjukan konfigurasi komponen dalam
2.4.4.2Behavior Diagram
Behavior Diagram, yaitu kumpulan diagram yang digunakan untuk
menggambarkan kelakuan sistem atau rangkaian perubahan yang terjadi pada sebuah sistem. Pada Behavior Diagram dibagi menjadi 3 bagian [9]:
1. Use Case Diagram
Use case diagram merupakan pemodelan untuk kelakuan (behavior)
sistem informasi yang akan dibuat,. Use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem informasi yang akan dibuat.
2. Activity Diagram
Activity diagram menggambarkan workflow atau aktivitas dari
sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak.
3. State Machine Diagram
State machine diagram digunakan untuk menggambarkan perubahan
status atau transisi status dari sebuah mesin atau sistem atau objek.
2.4.4.3Interactions Diagram
Interactions Diagram, yaitu kumpulan diagram yang digunakan untuk menggambarkan interaksi antar subsistem pada suatu sistem. Pada Interactions Diagram dibagi menjadi 4 bagian [9]:
1. Sequence Diagram
Sequence diagram menggambarkan kelakuan objek pada use case
dengan mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar objek.
2. Communication Diagram
Communication diagram menggambarkan interaksi antar
mendeskripsikan gabungan antara struktur statis dan tingkah laku dinamis dari suatu sistem.
3. Timing Diagram
Timing diagram merupakan diagram yang fokus pada penggambaran
terkait batas waktu.
4. Interaction Overview Diagram
Interaction overview diagram mirip dengan diagram aktivitas yang berfungsi untuk menggarbarkan sekumpulan urutan aktivitas, diagram ini adlaah bentuk aktivias diagram yang setiap titik merepresentasikan diagram interaksi.
2.5 Bahasa Pemograman C#
C# (tanda „#’ dibaca “Sharp”) merupakan bahasa pemograman baru yang
diciptakan Microsoft seacra khusus sebagai salah satu bahasa pemrograman dalam teknologi .Net sebagai bahasa baru, C# tidak berevolusi dari bahasa C# versi bukan teknologi .Net. dengan demikian C# dapat memaksimalkan kemampuannya tanpa khawatir dengan masalah kompatibilitas dengan versi-versi sebelumnya. Keharusan sebuah perangkat lunak untuk tetap dapat kompatibel dengan versi-versi sebelumnya sebagaimana yang terjadi pada Visual Basic (VB) maupun C++biasanya menghambat optimalitas kemampuan dari perangkat lunak tersebut [10].
Sejak diluncurkan pada tahun 2000, C# dengan cepat merebut hati progammer C++ bahkan VB. Dengan tata cara penulisan yang mirip C++ dan
interface mirip VB 6.0 menurut wikipedia, sebuah ensiklopedia gratis di internet
pengguna C# .Net pada saat ini sudah melebihi pengguna VB.Net. sementara itu jumlah pengguna bahasa pemrograman lain masih berada dibawah jumlah pengguna VB .Net. masih menurut wikipedia, jumlah buku C# yang terjual pun berada dikisaran 2 hingga 3 kali lebih banyak dari jumlah buku VB yang terjual.
33
Pada bab ini akan dibahas mengenai analisis dan perancangan pada sistem yang dibangun yaitu implementasi algoritma Harmony search (HS) pada permainan puzzle angka.
3.1 Analisis Masalah
Kakuro adalah permainan puzzle yang bersifat logika dan biasa disebut sebagai transliterasi matematis dari puzzle silang. Permainan ini adalah permainan penjumlahan angka dengan aturan mainnya yaitu dengan mengisi setiap kotak yang tersedia (kotak jawaban) dengan angka bulat dari 1 hingga 9 dengan beberapa syarat dalam pengisiannya. Soal-soal dalam permainan puzzle kakuro bersifat unik, karena soal-soal ini akan saling terkait baik dengan soal lainnya maupun jawaban dalam menyelesaikan permainan puzzle kakuro. Untuk menyelesaikan permainan puzzle kakuro ini, jumlah total pada nilai jawaban harus bernilai sama dengan nilai soal dan tidak boleh terdapat dua angka yang sama pada satu lajur (kolom maupun baris). Gambar 3.1 memperlihatkan penyelesaian
puzzle kakuro.
Oleh karena itu dibutuhkan teknik penyelesaian solusi dalam menyelesaikan jawaban pada permainan puzzle kakuro dengan beberapa syarat didalamnya. Kelayakan solusi pada permainan puzzle kakuro didefinisikan dengan suatu nilai akan dinyatakan layak apabila tidak terdapat nilai angka yang sama pada satu lajur (baik baris maupun kolom) serta nilai total pada kotak jawaban harus bernilai sama dengan nilai pada kotak soal. Fungsi solusi didefiniskan jika semua kotak kosong (kotak jawaban) telah terisi dengan nilai yang sesuai (sesuai dengan kelayakan solusi). Berikut gambaran kelayakan solusi pada permainan
puzzle kakuro :
Gambar 3.2 contoh kelayakan solusi puzzle kakuro
3.2 Analisis Game
Diantaranya adalah algoritma harmony search. Algoritma ini dalam beberapa penerapan pada berbagai problem menunjukan algoritma ini termasuk efektif dan mempunyai banyak kelebihan. Atas dasar itu dilakukan penelitian kemungkinan diterapkannya algoritma harmony search pada permainan puzzle kakuro. Pada
puzzle kakuro ini algoritma harmony search akan digunakan sebagai penyelesai permainan. Berikut merupakan alur penyelesaian jawaban pada kotak jawaban: 1. Proses penyelesaian jawaban pada kotak jawaban kosong.
Pada proses ini, penyelesaian jawaban dengan algoritma harmony search
dengan sistem acak dalam pencarian nilai. Kemudian dilanjutkan dengan melakukan tahapan pengecekan nilai yaitu tidak boleh terdapat angka yang sama pada satu lajur serta total nilai jawaban pada satu lajur yang akan dibandingkan dengan nilai soal.
Membangkitkan jawaban
Menampilkan jawaban
Gambar 3.3 Proses penyelesaian jawaban pada kotak kosong
3.3 Analisis Masukan
Gambar 3.4 analisis masukan pada game puzzle kakuro
3.4 Analisis Metode / Algoritma
Analisis algoritma dilakukan untuk mengetahui optimalitas suatu algoritma yang dapat diukur dari kompleksitas ruang dan kompleksitas waktunya. Algoritma Harmony Search akan diterapkan untuk mencari solusi optimal pada
algoritma Harmony Search digunakan secara efektif, algoritma Harmony Search
mengadopsi sebuah parameter yang disebut Harmony memory Considering rate (HMCR) dan Pitch Adjusting Rate (PAR). Tahapan-tahapan yang dilakukan dalam pencarian solusi dengan algoritma harmony search adalah sebagai berikut :
Gambar 3.5 pseudo code algoritma harmony search
3.4.1 Analisis Algoritma Harmony Search
Sebelum meneliti cara kerja algoritma Harmony Search pada permainan
puzzle kakuro ini, akan dibahas terlebih dahulu bagaimana cara
Dalam proses inisialisasi kotak pada puzzle kakuro, di setiap kotak puzzle
kakuro akan direpresentasikan sebagai array dua dimensi, P dengan panjang kolom n dan panjang baris m yang akan di gambarkan sebagai berikut :
Gambar 3.6 kotak puzzle direpresentasikan sebagai array P dengan panjang m dan n
Proses inisialisasi awal dilakukan pada susunan pola utama dengan mengiterasi dari kiri ke kanan, posisi blok di pojok kiri atas sebagai awal pencarian (elemen array P[0][0]). Kemudian dilanjutkan dari atas ke bawah dengan posisi blok di pojok kiri atas sebagai awal pencarian. Dalam menentukan kotak blok dan kotak kosong dalam permainan puzzle kakuro ini, maka alur proses yang akan terjadi adalah sebagai berikut :
1. Apabila nilai indeks pada kotak yang dipilih terdapat nilai 0, maka kotak tersebut akan menjadi kotak kosong/kotak jawaban.
2. Apabila nilai indeks pada kotak yang dipilih terdapat nilai > 0, maka kotak tersebut akan menjadi kotak blok/kotak soal.
Puzzle kakuro yang direpresentasikan sebagai array dapat dilihat pada gambar 3.7 berikut :
Gambar 3.7 Inisialisasi State Puzzle dan Struktur data
Analisis algoritma harmony search dalam menyelesaikan jawaban terjadi dalam kondisi disaat kotak jawaban kosong. Dalam penelitian ini, dilakukan pendekatan baru untuk menyelesaikan puzzle kakuro. Untuk keperluan penelitian ini, perlu dilakukan beberapa eliminasi dari semua kemungkinan kombinasi. Hal ini penting, sehingga pada saat pelaksanaan algoritma akan memberikan solusi terbaik dengan iterasi yang lebih sedikit yang diperlukan. 1. Inisialisasi Kombinasi
Gambar 3.8 kombinasi angka dari 8
2. Menghitung Kombinasi Silang
Gambar 3.9 kotak persimpangan yang dipengaruhi oleh kombinasi dari angka 8 dan 15
3. Algoritma Harmony Search Inisialisasi parameter
Pertama tetapkan beberapa nilai parameter berikut :
Harmony memory Consideration Rate (HMCR) = biasanya bernilai dari
(0.7-0.9). Dalam contoh kasus ini dimisalkan HMCR=0.9
Pitch Adjusting Rate (PAR) = biasanya bernilai dari (0.1-0.3). Dalam contoh kasus ini dimisalkan PAR=0.1
Batas bawah = 1 Batas atas = 9
Fungsi Objektif untuk baris (Cazinave, 2010):
∑ (2.4)
Fungsi Objektif untuk kolom :
Inisialisasi Harmony memory
Masuk ke iterasi pertama, untuk mencari jawaban kotak soal, bangkitkan
harmony memory dari setiap kombinasi yang didapat dari kotak
persimpangan. Misalkan diambil contoh kasus seperti pada gambar 3.9 di bawah ini.
Gambar 3.10 kombinasi dari kotak persimpangan
Gambar 3.11 pendeklarasian nama kotak jawaban
Data dari gambar 3.9 dan 3.10 dimasukan ke dalam tabel 3.1 dibawah ini
Tabel 3.1 Tabel harmony memory Nama Kotak
Jawaban Kandidat Solusi / Harmony memory
6, 7
7, 8, 9
1, 2, 3, 5, 6, 7
7
1, 2, 3, 4, 6, 7
8,9
8,9
Improvisasi Harmoni Baru Lakukan iterasi untuk
Kemudian bangkitkan bilangan random r, bilangan random r diperoleh dari rand(0,1).
Misalkan r = 0.56, bandingkan r dengan HMCR
Jika r ≤ HMCR, ambil satu nilai secara acak dari HM
Jika r ≥ HMCR, ambil satu nilai dari rentang nilai = 1 , = 9.
Karena 0.56 ≤ 0.9, ambil satu nilai secara acak dari HM misal 7.
Kemudian bangkitkan kembali bilangan random r, Misalkan r=0.3, bandingkan r dengan PAR
Jika r ≤ PAR, ambil satu nilai ketetanggaan dari
Bangkitkan bilangan random r, Misalkan r= 0.7
0.7 ≤ 0.9, ambil satu nilai dari HM, misalkan = 8
Bangkitkan bilangan random r, Misalkan r= 0.5
= 15
f = | 15 - 15 |
= 0
Karena Nilai yang didapatkan 0, Itu berarti nilai ( . Maka perbaharui Harmony
memory. Puzzle kakuro yang sudah diperbaharui harmony memory nya
dapat dilihat pada gambar 3.11 dibawah ini :
Gambar 3. 12 Puzzle kakuro yang sudah diperbaharui harmony memory
Masuk ke iterasi kedua, untuk mencari nilai 8 menurut kolom, bangkitkan
Tabel 3.2 Tabel Harmony memory yang sudah diperbaharui Nama Kotak
Jawaban Kandidat Solusi / Harmony memory
7 (update) Bangkitkan bilangan random r,
Misalkan r = 0.86, bandingkan r dengan HMCR
0.86 ≤ 0.9, ambil satu nilai secara acak dari HM misal nilai =1.
Bangkitkan bilangan random r, Misalkan r= 0.4
Karena Nilai yang didapatkan 0, Itu berarti nilai ( . Maka perbaharui Harmony
memory. Puzzle kakuro yang sudah diperbaharui harmony memory nya
dapat dilihat pada gambar 3.12 dibawah ini :
Gambar 3.13 Puzzle kakuro yang sudah diperbaharui
Masuk ke iterasi ketiga, untuk mencari nilai 10 menurut baris, bangkitkan
harmony memory, harmony memory yang sudah diperbaharui dapat dilihat pada tabel 3.3 dibawah ini.
Tabel 3.3 Tabel Harmony memory yang sudah diperbaharui Nama Kotak
Jawaban Kandidat Solusi / Harmony memory
7 (update) 8 (update) 1 (update)
7
1, 2, 3, 4, 6, 7
8,9
Improvisasi Harmoni Baru
Lakukan iterasi untuk , karena kotak jawaban dan
sudah berisi nilai.
Bangkitkan bilangan random r,
Misalkan r = 0.16, bandingkan r dengan HMCR
0.16 ≤ 0.9, ambil satu nilai secara acak dari HM misal nilai =2.
Bangkitkan bilangan random r, Misalkan r= 0.7
0.7 ≥ 0.1, maka nilai tetap dipertahankan dengan nilai = 2
Perbaharui Harmony memory
Cek nilai , dan nilai . Dengan cara memasukkan nilai tersebut ke fungsi objektif baris.
∑
TH(h) = 10
CH(h) = = 1 + 7 + 2
= 10
f = | 10 - 10 |
= 0
Karena Nilai yang didapatkan 0, Itu berarti nilai (
. Maka perbaharui Harmony memory. Puzzle
Gambar 3.14 Puzzle kakuro yang sudah diperbaharui
Masuk ke iterasi keempat, untuk mencari nilai 24 menurut kolom, bangkitkan harmony memory, harmony memory yang sudah diperbaharui dapat dilihat pada tabel 3.4 dibawah ini.
Tabel 3.4 Tabel Harmony memory yang sudah diperbaharui Nama Kotak
Jawaban Kandidat Solusi / Harmony memory
7 (update) 8 (update) 1 (update) 7 (update) 2 (update)
8,9
Improvisasi Harmoni Baru
Lakukan iterasi untuk , karena kotak jawaban dan
sudah berisi nilai.
Bangkitkan bilangan random r,
Misalkan r = 0.26, bandingkan r dengan HMCR
0.26 ≤ 0.9, ambil satu nilai secara acak dari HM misal nilai =9.
Bangkitkan bilangan random r, Misalkan r= 0.3
0.3 ≥ 0.1, maka nilai tetap dipertahankan dengan nilai = 9
Perbaharui Harmony memory
Cek nilai , dan nilai . Dengan cara memasukkan nilai tersebut ke fungsi objektif kolom.
∑
TV(v) = 24
CV(v) = = 8 + 7 + 9
= 24
f = | 24 - 24 |
= 0
Karena Nilai yang didapatkan 0, Itu berarti nilai (
. Maka perbaharui Harmony memory. Puzzle
Gambar 3.15 Puzzle kakuro yang sudah diperbaharui
Masuk ke iterasi kelima, untuk mencari nilai 17 menurut baris, bangkitkan
harmony memory, harmony memory yang sudah diperbaharui dapat dilihat pada tabel 3.5 dibawah ini.
Tabel 3.5 Tabel Harmony memory yang sudah diperbaharui Nama Kotak
Jawaban Kandidat Solusi / Harmony memory
7 (update) 8 (update) 1 (update) 7 (update) 2 (update) 9 (update)
8,9
Improvisasi Harmoni Baru
Bangkitkan bilangan random r,
Misalkan r = 0.96, bandingkan r dengan HMCR
0.9 ≥ 0.9, ambil satu nilai secara acak dari rentang nilai 1 – 9, misal nilai
= 5.
Bangkitkan bilangan random r, Misalkan r= 0.2
0.2 ≥ 0.1, maka nilai tetap dipertahankan dengan nilai = 5
Karena Nilai yang didapatkan 3, Itu berarti nilai
( . Maka Harmony memory tidak di perbaharui.
Masuk ke iterasi keenam, untuk mencari nilai 17 menurut baris, bangkitkan
harmony memory.
Improvisasi Harmoni Baru
Lakukan iterasi untuk , karena kotak jawaban sudah berisi nilai. Bangkitkan bilangan random r,
Misalkan r = 0.29, bandingkan r dengan HMCR
Bangkitkan bilangan random r, Misalkan r= 0.5
0.5 ≥ 0.1, maka nilai tetap dipertahankan dengan nilai = 8
Perbaharui Harmony memory
Cek nilai dan nilai . Dengan cara memasukkan nilai tersebut ke fungsi objektif baris.
∑
TH(h) = 17 CH(h) =
= 9 + 8 = 17
f = | 17 - 17 |
= 0
Karena Nilai yang didapatkan 0, Itu berarti nilai ( . Maka perbaharui Harmony
memory. Puzzle kakuro yang sudah diperbaharui harmony memory nya
dapat dilihat pada gambar 3.15 dibawah ini :
Masuk ke iterasi ketujuh, untuk mencari nilai 10 menurut kolom, bangkitkan harmony memory, harmony memory yang sudah diperbaharui dapat dilihat pada tabel 3.6 dibawah ini.
Tabel 3.6 Tabel Harmony memory yang sudah diperbaharui Nama Kotak
Jawaban Kandidat Solusi / Harmony memory
7 (update)
Gambar 3.17 Solusi Penyelesaian Puzzle Kakuro
Cek kriteria Penghentian
Alur kerja Algoritma akan digambarkan pada alur flowchart berikut :
Pertahankan nilai xi Ambil nilai
ketetanggan xi
3.5 Analisis Kebutuhan Perangkat Lunak 3.5.1 Analisis Kebutuhan Non Fungsional
Analisis non fungsional merupakan analisis yang dibutuhkan untuk menentukan spesifikasi kebutuhan sistem. Spesifikasi ini juga meliputi elemen atau komponen-komponen apa saja yang akan dibutuhkan sistem yang akan dibangun, sampai sistem tersebut diimplementasikan. Adapun kebutuhan non fungsionalnya yaitu meliputi analisis kebutuhan perangkat keras, analisis kebutuhan perangkat lunak, dan analisis pengguna.
1. Analisis Kebutuhan Perangkat Keras
Perangkat keras diperlukan untuk menjalankan suatu aplikasi guna mendukung proses kerja dari suatu sistem. Analisis perangkat keras digunakan untuk mengetahui mengenai spesifikasi perangkat keras dalam membangun dan menerapkan aplikasi, terdapat dua spesifikasi yang akan dijelaskan, yaitu spesifikasi perangkat keras pengembang dan spesifikasi perangkat keras pengguna.
Berikut ini merupakan spesifikasi perangkat keras yang digunakan dalam membangun aplikasi ini, yaitu:
Tabel 3.7 Spesifikasi Perangkat Keras
Perangkat Keras Spesifikasi
Prosesor Prosesor 3.6GHz QuadCore
VGA 2 GB DDR5
Resolusi Layar 1366 x 768 Pixel
Memory Memory 4GB DDR3
Hard Disk Hard Disk 250GB
Keyboard dan Mouse -
Tabel 3.8 Spesifikasi Perangkat Keras Pengguna
Perangkat Keras Spesifikasi
Prosesor Prosesor 2GHz
VGA 256 MB
Resolusi Layar 1366 x 768 Pixel
Memory Memory 1GB
Hard Disk Hard Disk 80GB
Keyboard dan Mouse -
2. Analisis kebutuhan perangkat lunak (software)
Analisis perangkat lunak digunakan untuk mengetahui mengenai spesifikasi perangkat lunak untuk membangun dan menerapkan aplikasi, terdapat dua spesifikasi yang akan dijelaskan, yaitu spesifikasi perangkat lunak pengembang dan spesifikasi perangkat lunak pengguna.Berikut ini merupakan spesifikasi perangkat lunak yang digunakan dalam membangun aplikasi ini, yaitu:
Kebutuhan perangkat lunak (software) untuk penerapan algoritma Harmony Search
pada permainan puzzle kakuro dapat dilihat pada Tabel 3.9.
Tabel 3.9 Spesifikasi Perangkat Lunak
Perangkat Lunak Spesifikasi
Sistem Operasi Windows 7,
Bahasa pemrograman Visual Studio 2012
Berikut ini merupakan spesifikasi perangkat lunak yang digunakan dalam menjalankan aplikasi ini, yaitu:
Tabel 3.10 Spesifikasi Perangkat Lunak Pengguna
Perangkat Lunak Spesifikasi
3.5.2 Analisis Kebutuhan Fungsional
Pemodelan aplikasi yang akan dibangun dilakukan dengan metode analisis perancangan dan pengembangan perangkat lunak berorientasi objek dan menggunakan pemodelan Unified Modeling Language (UML). Pemodelan mencakup use case diagram, activity diagram, class diagram dan sequence diagram. Proses yang dirancang diuraikan menjadi beberapa bagian yang dapat membentuk sistem tersebut menjadi satu kesatuan komponen.
3.5.2.1
Use Case Diagram aplikasi puzzle angkaUse case diagram untuk memodelkan aplikasi untuk mencari langkah terpendek pada puzzle kakuro dengan algoritma Harmony Search dapat dilihat pada Gambar 3.19.
Gambar 3.19 Use Case Diagram Aplikasi Puzzle Kakuro
System
User
menyediakan papan kosong
Menyelesaikan Permainan
<<include>>
Pilih HMCR
Pilih PAR
<<include>>
1. Definisi Use Case
Definisi use case berfungsi untuk menjelaskan proses yang terdapat pada
setiap use case. Tabel 3.11 menjelaskan definisi Use Case aplikasi Puzzle Kakuro.
Tabel 3.11 Definisi Use Case
Use Case Definisi
menyediakan Papan kosong Proses untuk menampilkan papan
puzzle kakuro
Menyelesaikan Permainan Proses untuk menyelesaikan permainan puzzle kakuro
2. Skenario Use Case
Skenario merupakan penjelasan lebih detail dari use case dari awal sampai akhirnya diperoleh output.
1) Skenario Use Case menyediakan papan kosong, diperlihatkan pada Tabel 3.12.
Tabel 3.12 Skenario Use Case Menyediakan Papan Puzzle Kakuro Identifikasi
Nama Use Case Menyediakan Papan kosong
Tujuan Membuat Papan Puzzle Kakuro
Aktor user
Skenario Utama
Kondisi Awal Halaman Utama Form Puzzle kakuro.
No Aksi Aktor No Respons Sistem
1 Memilih Ukuran Puzzle
2 Menampilkan Papan kosong dengan ukuran sesuai pilihan user
2) Skenario Use Case memainkan permainan, diperlihatkan pada Tabel 3.13.
Tabel 3.13 Skenario Use Case memainkan permainan Identifikasi
Nama Use Case Menyelesaikan permainan
Tujuan Permainan puzzle kakuro
Terselesaikan
Aktor user
Skenario Utama
Kondisi Awal Halaman Utama Form Puzzle
kakuro.
No Aksi Aktor No Respons Sistem
1
Menampilkan Puzzle yang terisi Harmony memory
Penyelesaian Permainan oleh Algoritma harmony Search Solusi Ditemukan
3.5.2.2 Activity Diagram
Activity Diagram menggambarkan berbagai alir aktivitas dalam sistem yang
sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, serta proses paralel yang mungkin terjadi pada beberapa eksekusi.
1. Activity Diagram membuat Papan
Berikut ini merupakan diagram yang menunjukan alur aksi pada aktivitas Membuat papan yang dapat dilihat pada gambar 3.20.
Gambar 3.20 Activity Diagram menyediakan Papan
Pemain Sistem
Memilih Ukuran Puzzle
2. Activity Diagram Menyelesaikan Permainan
Berikut ini merupakan diagram yang menunjukan alur aksi pada aktivitas Menyelesaikan permainan yang dapat dilihat pada gambar 3.21.
Gambar 3.21 Activity Diagram Menyelesaikan Permainan
Pemain Sistem
memilih papan puzzle menampilkan papan puzzle yang dipilih
klik solve
menyelesaikan puzzle dengan algoritma HS
menampilkan puzzle dengan kondisi terselesaikan solusi
menampilkan puzzle kosong solusi tidak ditemukan Pilih HMCR
Pilih PAR
3.5.2.3 Class Diagram
Class diagram merupakan gambaran sistem berupa relasi antar
kelas-kelas ataupun paket-paketnya. Class diagram dijelaskan melalui gambar berikut.
Gambar 3.22 Class diagram permainan puzzle kakuro
Penjelasan dari masing-masing class diagram dapat dilihat pada tabel 3.14
Tabel 3.14 Deskripsi Class Diagram User Application
Class Jenis Class Deskripsi
MenuUtama View Class yang menampilkan
halaman awal aplikasi
Papan Control
Class yang berisikan ukuran papan puzzle kakuro,
inisialisasi array
Algorithm Control Class yang berisikan algoritma
3.5.2.4 Sequence Diagram
Sequence diagram menggambarkan tindakan objek pada use case dengan
mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar objek. Sequence diagram dapat dilihat pada gambar berikut.
Gambar 3.23 Sequence diagram menyediakan papan
User MenuUtama
Papan
1 : membuka permainan()
2 : comboBox1_SelectedIndexChanged()
Gambar 3.24 Sequence diagram menyelesaikan permainan
3.6 Perancangan Sistem
Perancangan sistem adalah suatu bagian dari metodologi pembangunan suatu perangkat lunak yang dilakukan setelah tahapan analisis sistem untuk memberikan gambaran secara terperinci sistem yang akan dibangun. Dalam perancangan sistem pada aplikasi ini, maka dilakukan beberapa langkah, yaitu:
1. Perancangan Antarmuka 2. Perancangan pesan 3. Jaringan Semantik
User MenuUtama Papan Algorithm
1 : memulai permainan()
2 : comboBox1_SelectedIndexChanged()
3 : papan_load() 4 : menampilkan papan()
5 : pilih HMCR PAR HM()
6 : tampilkan_hm()
7 : menampilkanpapanhm() 8 : solve()
9 : harmony()
10 : UpdateStatus()
3.2.1 Perancangan Antarmuka
Perancangan antarmuka dibutuhkan untuk mewakili keadaan sebenarnya dari aplikasi yang akan dibangun. Perancangan antarmuka pada aplikasi ini adalah sebagai berikut:
Gambar 3.26 Antarmuka permainan Penyelesai Permainan
3.2.2 Perancangan Pesan
Perancangan pesan merupakan pesan yang muncul guna memberi peringatan atau pemberitahuan kepada user. Perancangan pesan pada aplikasi ini adalah sebagai berikut:
Gambar 3.28 Pesan Solusi Tidak Ditemukan
3.2.3 Jaringan Semantik
Jaringan semantik merupakan gambaran tentang relasi dari masing-masing halaman yang bisa diakses oleh pengguna. Jaringan semantik pada aplikasi ini adalah sebagai berikut:
T001
T002
M01, M02