Implementasi algoritma harmony search pada permainan puzzle angka

(1)

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

[2]. Puzzle kakuro ini biasa disebut transliterasi matematis. Pada umumnya permainan puzzle kakuro ini dipandang sebagai permainan yang bersifat positif, karena dapat membantu melatih otak motorik pada saat sedang menyusun angka-angkanya.


(2)

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


(3)

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

Metode pengumpulan data yang digunakan dalam penelitian ini adalah studi literatur.


(4)

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.

Sistem ini diinstal dan digunakan. Pemeliharaan dilakukan dengan mengoreksi kesalahan yang tidak ditemukan pada tahap-tahap awal, untuk meningkatkan implementasi unit sistem dan meningkatkan layanan sistem.


(5)

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 ini membahas mengenai analisis masalah Permainan puzzle kakuro, analisis algoritma harmony search, analisis masukan, analisis penyelesaian masalah dengan algoritma harmony search, analisis struktur data yang akan digunakan serta perancangan aplikasi yang akan dibangun.


(6)

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

Bab ini berisi kesimpulan akhir yang diperoleh dari hasil penulisan skripsi, serta saran untuk pengembangan lebih lanjut.


(7)

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


(8)

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

mendasarkan algoritmanya pada musik [3]. Mungkin kita tidak pernah berfikir sebelumnya ada kaitannya antara musik dengan optimasi. Misalnya, setiap alat musik berkaitan dengan variabel keputusan, nada musik berkaitan dengan nilai variabel, harmoni berhubungan dengan vektor solusi. Seperti seorang musisi yang


(9)

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


(10)

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


(11)

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

mengambil harmoni baru dar memori lalu melakukan pengaturan atau tidak dan membuat harmoni baru. Pencarian harmoni dilakukan untuk setiap instrumen musik. Jika ada 2 instrumen atau ekuivalen dengan 2 variabel, maka setiap instrumen harus diatur sampai menemukan nada terbaik. Artinya kalau ada 2


(12)

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

kecil akan besar kemungkinan didapat nilai optimal yang dicari akan tetapi dengn waktu yang lebih lama. Umumnya diperlukan cukup banyak jumlah iterasi (dalam skala ribu) untuk menemukan solusi terbaik dalam HS ini. HS menyelesaikan suatu permasalahan optimasi (minimasi fungsi) dengan langkah-langkah umum sebagai berikut :


(13)

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 ( ( ( (

) (2.1)

3. Langkah 3. Lankukan perbaikan / improvisasi terhadap solusi yang ada

Untuk setiap variabel diambil secara random nilai yang ada pada HM. Dengan prosedur tertentu nilai ini akan diadjust sedemikian rupa jika memenuhi aturan tertentu (menggunakan pembangkitan bilangan random dan dibandingkan


(14)

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.

{ { }

(2.2)

Dimana HMCR adalah probabilitas memilih satu nilai dari HM dan 1-HMCR adalah probabilitas memilih nilai secara random dalam range xl-xu. Setelah memilih suatu harmoni baru , keputusan melakukan

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

Jika kriteria penghentian belum dipenuhi, kembali ke langkah 3 untuk mengambil secara acak salah satu vektor solusi dari variabel pertama. Bisa digunakan kriteria penghentian berupa jumlah iterasi atau nilai mutlak selisih dua nilai fungsi tujuan yang berturutan.


(15)

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

xu = [6, 6]

xl = [-6, -6]

b = (xu - xl) / 1000 = [0.012]

2. Mulai iterasi 1. Bangkitkan HM secara random. HM berisi solusi-solusi sementara yang kita bangkitkan. Misalnya berukuran 10 dan hitung nilai f

yang bersangkutan. Berikut adalah nilai x yang kita bangkitkan dan rand(1,2) (xu - xl), dimana rand(1,2) adalah vektor bilangan random 1x2 dengan nilai antara (0,1).

Tabel 2.1 Harmony memory

4.5666 5.1052

2.9607 -3.6990

1.91347 0.4705

-4.0163 -5.9232

0.8370 0.4696

-5.5020 -3.5190

2.6383 3.4459

-2.4362 -3.7531

1.3137 4.7428

-4.9343 -0.3410

Masukan nilai dan ke dalam fungsi objektif

min f(x) = +

min f(x) = +

min f(x) = (223.7727) + (558.3612)


(16)

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

Karena nilai ini masih didalam batas dan bisa kita gunakan untuk langkah berikutnya


(17)

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.

1. Aturan 1 . pilih sembarang kota dari HM sebagai kota berikutnya dengan probabilitas HMCR x (1-PAR), dimana PAR = PAR1 + PAR2 + PAR3


(18)

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.

Permainan puzzle ditujukan untuk memecahkan suatu masalah tertentu. Hampir semua semua tantangan disini menyangkut masalah logika yang biasanya dibatasi oleh waktu.


(19)

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

angka dapat melatih kemampuan berpikir logis dengan menyusun angka sesuai urutannya. Selain itu, puzzle angka bermanfaat untuk melatih koordinasi mata dengan tangan, melatih motorik halus serta menstimulasi kerja otak.


(20)

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

dengan mempunyai dua jenis kotak yaitu kotak berwarna hitam dan kotak berwarna putih. Pada kedua jenis kotak tersebut mempunyai dua posisi yaitu


(21)

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]:

1. Setiap kotak jawaban hanya boleh diisikan dengan bilangan bulat dari angka 1 hingga 9.


(22)

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.


(23)

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


(24)

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


(25)

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


(26)

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

UML (Unified Modeling Language) adalah salah satu alat bantu yang sangat handal di dunia pengembangan sistem yang berorientasi obyek. Hal ini disebabkan karena UML menyediakan bahasa pemodelan visual yang memungkinkan bagi pengembang sistem untuk membuat cetak biru atas visi


(27)

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

Didalam UML terdapat beberapa macam diagram yang dapat menggambarkan suatu sistem, berikut adalah beberapa diagram yang terdapat di dalam UML.


(28)

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


(29)

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

bojek/bagian dalam bentuk urutan pengiriman pesan. Diagram komunikasi merepresentasikan informasi yang diperoleh dari diagram kelas, diagram sequence, dan diagram use case untuk


(30)

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.

Dari informasi ini dapat disimpulkan bahwa C# merupakan bahasa pemrogrman baru yang sedang berkembang dan dapat diterima dengan baik oleh kebanyakan progammer dan kalangan industri. Di Microsoft sendiri, C#


(31)

merupakan bahasa pemrograman yang digunakan untuk membuat perangkat lunak yang bertteknologi .Net dengan demikian dapat diperkirakan bahwa C# akan menjadi bahasa pemrograman yang akan banyak digunakan di masa-masa mendatang.


(32)

(33)

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.


(34)

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

Analisis game yang akan diteliti pada game puzzle kakuro adalah bagaimana cara menyelesaikan jawaban pada puzzle kakuro. Pada dasarnya permainan puzzle kakuro ini 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. Aturan permainan dari puzzle kakuro sendiri mirip dengan sudoku. Ada beberapa algoritma pencarian yang sudah digunakan untuk menyelesaikan masalah yang disajikan pada sudoku.


(35)

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

Analisis masukan yang dilakukan dalam penelitian ini adalah menganalisis inputan puzzle dalam algoritma Harmony Search pada game kakuro. Masukan tersebut berupa nilai (angka), akan tetapi masukan diberi batasan nilai yaitu dari angka 1 hingga 9, berikut merupakan gambar tabel analisis masukan pada game puzzle kakuro. Pada gambar 3.4 dapat dilihat angka 2 – 9 di sebelah kiri itu menunjukan banyaknya kotak jawaban yang kosong, sedangkan angka dari 3 – 45 di bagian atas menunjukan nilai penjumlahan atau nilai jumlah kotak soal.


(36)

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


(37)

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

menginisialisasikan kotak terlebih dahulu yang akan menghasilkan kotak kosong (kotak jawaban) dan kotak blok (kotak nilai soal / pembatas).


(38)

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.

3. Sedangkan apabila nilai indeks pada kotak yang dipilih null, maka kotak tersebut akan menjadi kotak batasan.


(39)

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

Pertama-tama, semua kotak soal pada puzzle kakuro di cek, baik secara baris maupun kolom. Begitu juga dengan banyaknya kotak jawaban. Untuk setiap kemungkinan dari jumlah kombinasi yang dapat membentuk jumlah pada kotak soal akan dibangkitkan dan disimpan sebagai satu set angka untuk tahap perhitungan berikutnya. Misalnya pada contoh gambar 3.7, jika isi yang terdapat pada kotak soal adalah 8 (delapan), maka akan dicari kombinasi angka yang ketika dijumlahkan akan menghasilkan angka 8, diketahui bahwa hal itu dapat diperoleh dengan menggunakan kombinasi jumlah (2,6), (3,5), (1,7 ) sehingga kombinasi angka yang ditetapkan untuk nomor 8 adalah {1,2,3,5,6,7,}.


(40)

Gambar 3.8 kombinasi angka dari 8

2. Menghitung Kombinasi Silang

Untuk semua kotak jawaban kosong dalam puzzle kakuro merupakan kotak persimpangan, setiap kombinasi set dari kotak persimpangan akan dihitung. Hal ini penting untuk mengurangi kombinasi yang dibutuhkan, sehingga mempercepat pencarian pada algoritma harmony search. Sebagai contoh, pada Gambar 3.8 dapat dilihat pada kotak hijau, itu merupakan kotak persimpangan yang dipengaruhi oleh kombinasi untuk kotak soal 8 (kolom) dan 15 (baris). Untuk kotak soal 8 kita memiliki kombinasi {1,2,3,5,6,7}, dan untuk nomor 15 kita memiliki kombinasi {6,9}{7,8}. Oleh karena itu, kotak persimpangan memiliki kombinasi {6,7}, kombinasi itu merupakan nilai yang mungkin pada kotak persimpangan.


(41)

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 :


(42)

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

Dari gambar diatas, dapat diketahui kandidat solusi yang mungkin untuk setiap kotak jawaban. Pada Gambar 3.10 dibawah ini dijelaskan pendeklarasian nama pada setiap kotak jawaban.


(43)

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


(44)

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

Jika ≤ maka = Jika ≥ maka =

Jika r ≥ PAR, maka nilai untuk dipertahankan.

Karena 0.3 ≥ 0.1, maka nilai tetap dipertahankan dengan nilai = 7.

Lakukan iterasi untuk

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

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) = 15 CH(h) = = 7 + 8


(45)

= 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

harmony memory, harmony memory yang sudah diperbaharui dapat dilihat pada tabel 3.2 dibawah ini.


(46)

Tabel 3.2 Tabel Harmony memory yang sudah diperbaharui Nama Kotak

Jawaban Kandidat Solusi / Harmony memory

7 (update) 8 (update) 1, 2, 3, 5, 6, 7

7

1, 2, 3, 4, 6, 7

8,9

8,9

Improvisasi Harmoni Baru

Lakukan iterasi untuk , karena kotak jawaban sudah berisi nilai. 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

0.4 ≥ 0.1, maka nilai tetap dipertahankan dengan nilai = 1

Perbaharui Harmony memory

Cek nilai dan nilai . Dengan cara memasukkan nilai tersebut ke fungsi objektif kolom.

TV(v) = 8

CV(v) = = 7 + 1

= 8

f = | 8 - 8 |


(47)

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


(48)

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

kakuro yang sudah diperbaharui harmony memory nya dapat dilihat pada gambar 3.13 dibawah ini :


(49)

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


(50)

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

kakuro yang sudah diperbaharui harmony memory nya dapat dilihat pada gambar 3.14 dibawah ini :


(51)

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


(52)

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

Perbaharui Harmony memory

Cek nilai dan nilai . Dengan cara memasukkan nilai tersebut ke fungsi objektif baris.

TH(h) = 17 CH(h) =

= 9 + 5 = 14

f = | 17 - 14 |

= 3

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


(53)

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 :


(54)

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) 8 (update) 1 (update) 7 (update) 2 (update) 9 (update) 8 (update)

Karena nilai dan sudah ada maka langsung ke langkah dibawah ini. Perbaharui Harmony memory

Cek nilai dan nilai . Dengan cara memasukkan nilai tersebut ke fungsi objektif kolom.

TV(v) = 10 CV(v) =

= 2 + 8 = 10

f = | 10 - 10 |

= 0

Karena Nilai yang didapatkan 0, Itu berarti nilai ( . Maka perbaharui Harmony

memory. Puzzle kakuro yang sudah diperbaharui harmony memory nya


(55)

Gambar 3.17 Solusi Penyelesaian Puzzle Kakuro

Cek kriteria Penghentian


(56)

Alur kerja Algoritma akan digambarkan pada alur flowchart berikut :

mulai

Inisialisasi parameter iterasi

Bangkitkan HM Iterasi variabel

Xi, i=1,2 ... N

Bangkitkan r rand(0,1)

Apakah r<=HMCR?

Ambil nilai xi dari range xl-xu

Ambil nilai xi dari HM

r>=HMCR r<=HMCR

Bangkitkan r rand(0,1)

Apakah r<=PAR?

Pertahankan nilai xi Ambil nilai

ketetanggan xi

r>=PAR r<=PAR

Simpan nilai xi

Cek xi

Apakah i<=N?

xi<=N

Update HM xi>=N

Cek kriteria Berhenti

Apakah kriteria berhenti tercapai? Kriteria berhenti Belum Tercapai

Selesai Kriteria Berhenti

Tercapai


(57)

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 -

Berikut ini merupakan spesifikasi perangkat keras pengguna atau spesifikasi minimum untuk menjalankan aplikasi ini, yaitu:


(58)

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


(59)

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 angka

Use 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>>


(60)

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


(61)

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

3 4 5

7

Memilih Papan Puzzle

Pilih HMCR Pilih PAR

Tampilkan Harmony memory

Klik Solve

2

6

8

9

Menampilkan papan puzzle

kakuro

Menampilkan Puzzle yang terisi Harmony memory

Penyelesaian Permainan oleh Algoritma harmony Search Solusi Ditemukan


(62)

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


(63)

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


(64)

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

harmony search MenuUtama +int: nrows +int: ncols +MenuUtama() +comboBox1_SelectedIndexChanged() +buttonBrowse_Click() +buttonLoad_Click() Papan +int: nRows +int: nCols +int: i +int: j +int: nCol +int: nRow +int: valDown +int: valRight +int: ColumnSpacing +int: RowSpacing +int: ColumnWidth +int: RowHeight +int: LeftMargin +int: TopMargin +int: RightMargin +int: BottomMargin +int: m_nRows +int: m_nCols +UpdateStatus() +Papan() +InitializeArrays() +UpdateTextBoxes() +tampilkan_hm() Algorithm +int jmR +int: jmK +int: update_waktu_sol +double: minimum +double: maximum +double: par +double: hmcr +int: xxnew +int: xynew +int: opsi +int: curvalue +int: baris +int: kolom +int: jmKtart +int: jmRtart +int: rowsum +int: colsum +Board() +Solve() +GetRandomNumber() +SolveIterate() +findxnew() +FindMinMaxSum() +SetValue() +harmony() +SetSum()


(65)

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()


(66)

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() 11 : Solusi Ditemukan()


(67)

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:


(68)

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:


(69)

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


(70)

(71)

71 4.1 Implementasi

Implementasi merupakan terjemahan perancangan yang berdasarkan hasil analisis pada bab sebelumnya ke dalam bahasa pemprograman yang dapat dimengerti oleh komputer. Bahasa pemprograman yang digunakan adalah C#.

4.1.1 Perangkat Lunak Implementasi dan Pengujian

Perangkat lunak yang digunakan untuk mengimplementasikan dan menguji aplikasi puzzle kakuro dengan Algoritma Harmony Search adalah sebagai berikut :

Tabel 4. 1 Spesifikasi Perangkat lunak pengujian

Perangkat Lunak Spesifikasi

Sistem Operasi Windows 7, Bahasa pemrograman Visual Studio 2012

4.1.2 Perangkat Keras Implementasi dan Pengujian

Perangkat keras yang digunakan untuk mengimplementasikan dan menguji aplikasi puzzle kakuro dengan Algoritma Harmony Search adalah sebagai berikut:

Tabel 4. 2 Spesifikasi Perangkat keras pengujian

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


(1)

iii

KATA PENGHANTAR

Puji dan syukur penulis panjatkan kehadirat Allah SWT yang telah memberikan rahmat serta hidayah-Nya sehingga penulis dapat menyelesaikan

penulisan skripsi dengan judul “IMPLEMENTASI ALGORITMA HARMONY

SEARCH PADA PERMAINAN PUZZLE ANGKA” sebagai salah satu syarat

kelulusan pada Program Strata 1 Program Studi Teknik Informatika Fakultas Ilmu dan Teknik Komputer di Universitas Komputer Indonesia.

Penyusunan skripsi ini tidak akan terwujud tanpa mendapat dukungan, bantuan dan masukan dari berbagai pihak. Untuk itu, penulis ingin menyampaikan terima kasih yang sebesar-besarnya kepada :

1. Allah SWT atas rahmat, berkah dan izin-Nya saya bisa menyelesaikan penulisan skripsi ini.

2. Ibunda tercinta, teristimewa Ibu Suharah, S.Pd,. M.Pdi, terimakasih ibu atas setiap hembusan nafas do’a mu, setiap tetes air matamu, setiap usapan manismu, segala perhatian dan segala pengorbananmu. Disetiap langkah kakimu, disetiap pijakan kakimu semua hanya untuk kebaikan anakmu. Tiada keiklasan didunia ini yang melebihi keiklasan hatimu, tiada kasih didunia ini yang setulus kasih sayangmu. Tangisan di setiap do’a mu merupakan butir mutiara bagiku. Semoga Allah S.W.T membalas keridhoan-mu yang telah kau korbankan untuk putramu ini. Untaian kata lautan tinta tidak dapat mewakili ungkapan tentang pengorbananmu untukku selama ini, ku hanya berharap semoga Allah S.W.T memberikanku jalan untuk membahagiakanmu dan kupersembahkan semua ini untukmu. Dibalik kesuksesan dan nama besarku terselip do’a-mu untukku. Terima kasih, Terima kasih, Terima kasih hanya untukmu ibu.


(2)

iv

3. Bapak Kusman Adi, S.Pd, teguranmu, nasihatmu, perjuanganmu, serta pengorbananmu menjadi semangat hidup bagiku, nasihatmu akan selalu ku ingat. Tidak ada yang sehebat, dan sekuat dirimu. Terima kasih untuk semuanya.

4. Kepada Nenek dan Kakek ku terima kasih atas do’a-mu, nasihatmu. Aku akan selalu memberikan yang terbaik. Semua yang penulis dapat takan pernah lepas dari semua do’a dan pengorbananmu. Teima kasih Nenek, terima kasih Kakek.

5. Ratna Widianti Utami. S.Si., kau wanita yang selalu ada, sebagai wanita terindah, wanita terhebat dibalik perjuanganku. Dibalik nama besar dan kesuksesanku selalu ada campur tanganmu. Terima kasih kau adalah wanita terindah dari sang pencipta.

6. Bapak Harsa Wara Prabawa, S.Si., M.Pd. selaku dosen pembimbing skripsi. Terima kasih banyak atas bimbingan, arahan serta seluruh waktu dan perjuangan bapak selama ini demi mengantarkan penulis untuk dapat menyelesaikan tugas akhir skripsi.

7. Bapak Irawan Afrianto, S.T., M.T. selaku reviewer yang telah banyak memberikan masukan dan arahan.

8. Ibu Ednawati Rainarli, S.Si., M.Si. selaku penguji sidang yang telah banyak memberikan masukan dan arahan.

9. Ibu Utami Dewi, S.Kom., M.Kom. selaku dosen wali IF-11 2010 selama penulis menempuh pendidikan di UNIKOM

10. Kepada seluruh Dosen dan Staff Program Studi Teknik Informatika Universitas Komputer Indonesia, terima kasih atas semua ilmu pendidikan, pengetahuan serta pengajaran Bapak/Ibu.

11. Untuk teman-teman IF-11 2010 seperjuangan dan semua pihak yang telah membantu dalam menyelesaikan tugas akhir ini yang tidak dapat penulis sebutkan satu per satu, terima kasih banyak atas semua dukungan dan bantuannya hingga skripsi ini dapat terselesaikan dengan baik.


(3)

v

Penulis sangat menyadari dalam penulisan skripsi ini masih banyak terdapat kekurangan. Penulis juga berharap agar skripsi ini dapat bermanfaat bagi semua pihak khususnya bagi penulis dan umumnya bagi pembaca.

Bandung, Februari 2015


(4)

(5)

(6)