• Tidak ada hasil yang ditemukan

Analisis Perbandingan Algoritma Ant Colony Optimization System Dengan Algoritma Genetika Untuk Mencari Langkah Optimal Dalam Penyelesaian Permainan Sudoku

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis Perbandingan Algoritma Ant Colony Optimization System Dengan Algoritma Genetika Untuk Mencari Langkah Optimal Dalam Penyelesaian Permainan Sudoku"

Copied!
105
0
0

Teks penuh

(1)

SKRIPSI

Diajukan Untuk Menempuh Ujian Akhir Sarjana

CANDI NURSADI

10109397

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

(2)
(3)

B-0

(4)
(5)

Tempat, Tanggal Lahir : Subang 26 November 1991

Agama : Islam

Jenis Kelamin : Laki-laki

Alamat : Jl. Haur Mekar RT 05 RW 01 Blok E26 Kelurahan

Sadangserang Kecamatan Coblong Bandung.

No. Telp : 085222446740

Email : cnursadi@gmail.com

RIWAYAT PENDIDIKAN

1997 – 2003 : SD Negeri Patimura

2003 – 2006 : SMP Negeri 1 Pusakanagara

2006 – 2009 : Jurusan Rekayasa Perangkat Lunak (RPL)

SMK Negeri 1 Subang

2009 – 2014 : Program S1, Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer

(6)

v

DAFTAR LAMPIRAN ... xiii

BAB 1 PENDAHULUAN ... 1

2.3.1 Pemrograman Berorientasi Objek atau Object Oriented Programming (OOP) ... 19

2.3.2 Unified Modeling Language (UML) ... 10

2.3.3 C# (C Sharp) ... 23

2.3.3 Microsoft Visual Studio ... 25

(7)

vi

3.1.2.2 Algoritma Ant Colony Optimization (ACO) System ... 40

3.1.3 Analisis Kebutuhan Non-Fungsional ... 48

3.1.3.1 Analisis Kebutuhan Perangkat Keras ... 49

3.1.3.2 Analisis Kebutuhan Perangkat Lunak ... 49

(8)

vii

BAB 5 KESIMPULAN DAN SARAN ... 93

5.1 Kesimpulan ... 93

5.2 Saran ... 93

(9)

95

approach, McGraw-Hill, New York, 68.

[2] Suyanto. (2007). Artificial Intelligence, Informatika, Bandung.

[3] Mullaney, David. (2006). Using Ant Systems to Solve Sudoku Problems, 1-8.

[4] Leksono, Agus. (2009). Algoritma Ant Colony Optimization (ACO) Untuk Menyelesaikan Traveling Salesman Problem (TSP), 22-24. [5] Wihandika, Randy Cahya, Nur Rosyid Mubtaba’i, and Rizky Yuniar H.

(2011). Penyelesaian Puzzle Sudoku Menggunakan Algoritma Genetika, 1-9.

[6] S, Rossa A and M Salahudin. (2011). Modul Pembelajaran Rekayasa Perangkat Lunak (Terstruktur dan Berorientasi Objek), Modula, Bandung, .

[7] Artekom, (2012). Pengenalan C# (C Sharp). Retreived from http://artekom.com/pengenalan-c-sharp/

[8] C#.NET Bagian 1. Pembuatan Project pada Visual Studio 2010 dengan

C#.NET, (2013). Retreived from

(10)

iii

Alhamdulillah, segala Puji dan syukur penulis panjatkan bagi Allah SWT, karena atas segala rahmat dan karunia-Nya yang memberikan kesehatan dan hikmat kepada penulis sehingga penelitian ini dapat diselesaikan dengan baik sesuai dengan waktu yang direncanakan.

Skripsi yang berjudul “Analisis Perbandingan Algoritma Ant Colony

Optimization System Dengan Algoritma Genetika Untuk Mencari Langkah Optimal Dalam Penyelesaian Permainan Sudoku”, disusun untuk memperoleh gelar Sarjana Teknik Informatika, Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia.

Dalam menyusun skripsi ini, penulis banyak memperoleh bantuan serta bimbingan dari berbagai pihak. Oleh karena itu, penulis ingin menyampaikan ucapan terimakasih kepada:

1. Keluarga penulis, khususnya Ibu dan Ayah penulis yang telah memberikan dukungan yang sangat besar kepada penulis.

2. Ibu Sufa’atin, S.T., M.Kom. selaku dosen pembimbing yang telah

meluangkan waktu untuk memberikan bimbingan, saran, dan nasehatnya selama penulisan skripsi ini.

3. Seluruh dosen dan staf Program Studi Teknik Informatika Universitas Komputer Indonesia.

4. Seluruh teman-teman kelas IF-9 angkatan 2009.

5. Seluruh pihak yang membantu dan mendukung penulis dalam menyusun skripsi ini.

(11)

iv

sama.

Wassalamu’alaikum Wr.Wb.

Bandung, Agustus 2014

(12)

1

BAB 1

PENDAHULUAN

1.1 Latar Belakang Masalah

Sudoku merupakan permainan teka-teki silang angka, dimana setiap baris dan kolom harus diisi dengan angka-angka dengan aturan tertentu. Sudoku adalah teka-teki penempatan angka yang didasarkan pada logika matematika. Sudoku terdiri dari kotak-kotak kecil yang membentuk baris dan kolom seperti halnya teka-teki silang (TTS).

Sudoku terdiri dari kisi persegi yang disebut grid berukuran 9x9 (9 baris x 9 kolom) yang dibagi menjadi sembilan bagian yang disebut subgrid berukuran 3x3. Teka-teki Sudoku menyediakan beberapa angka pada posisi acak sebagai patokan untuk menyelesaikan keseluruhan teka-teki tersebut. Kotak yang kosong harus diisi dengan angka unik dari 1 sampai 9 yang masing-masing hanya muncul sekali dalam setiap baris, kolom, dan region 3x3.

Ada beberapa algoritma yang sudah digunakan untuk menyelesaikan Sudoku diantaranya adalah algoritma bruteforce dan backtracking. Algoritma

bruteforce ialah algoritma yang membangkitkan seluruh kemungkinan penempatan angka pada papan Sudoku, kemudian dari seluruh kemungkinan penempatan angka itu akan dicari himpunan-himpunan penempatan angka mana yang akan memenuhi constraint permainan Sudoku. Algoritma backtracking

sebenarnya mempunyai kompleksitas asimptotik yang sama dengan algoritma

bruteforce, hanya saja algoritma ini mencari secara sistematis.

Algoritma yang dapat digunakan untuk menyelesaikan Sudoku salah satunya adalah algoritma Ant Colony Optimization (ACO) System. ACO System

(13)

seleksi alam dan genetika alam. Ide utama dibalik algoritma ini adalah memilih individu-individu terbaik dari sebuah populasi individu dan melakukan rekombinasi antar individu untuk membangkitkan individu baru yang diharapkan lebih baik dari individu sebelumnya. Kedua algoritma tersebut akan dilakukan perbandingan untuk mengukur performansi dalam kecepatan dan ketepatan.

Atas dasar uraian yang telah dijelaskan tersebut, penulis tertarik untuk mengambil pokok bahasan skripsi dengan judul “Analisis Perbandingan Algoritma Ant Colony Optimization System Dengan Algoritma Genetika Untuk Mencari Langkah Optimal Dalam Penyelesaian Permainan Sudoku.”

1.2 Perumusan Masalah

Bagaimana menganalisis perbandingan algoritma ant colony optimization system dengan algoritma genetika pada permainan sudoku.

1.3 Maksud dan Tujuan

Berdasarkan permasalahan yang diteliti, maka maksud dari penelitian ini adalah menerapkan algoritma Ant Colony Optimization System dan algoritma genetika pada permainan Sudoku.

Sedangkan tujuan yang diharapkan akan dicapai dalam penelitian ini adalah sebagai berikut:

1. Mendapatkan solusi dalam penyelesaikan masalah pada permainan Sudoku.

2. Mengetahui performansi dalam kecepatan dan ketepatan dari perbandingan algoritma Ant Colony Optimization System dan algoritma genetika untuk mencari langkah optimal pada penyelesaian permainan Sudoku.

1.4 Batasan Masalah

Agar pembahasan menjadi terarah, maka permasalahan dibatasi terhadap masalah-masalah berikut :

(14)

2. Bahasa pemrograman yang digunakan adalah C Sharp.

3. Algoritma yang digunakan adalah algoritma Ant Colony Optimization

(ACO) System dan algoritma genetika.

4. Perbandingan yang dilakukan yaitu performansi dalam kecepatan dan ketepatan.

5. Pemodelan dan perancangan sistem menggunakan pemodelan berbasis objek dengan tools UML (Unified Modeling Language).

6. Perangkat lunak yang digunakan yang digunakan untuk membangun aplikasi ini adalah Microsoft Visual Studio.

1.5 Metodologi Penelitian

Metodologi penelitian yang digunakan adalah metodologi penelitian kuantitatif.

1.5.1 Metode Pengumpulan Data

Metode pengumpulan data yang digunakan dalam penelitian ini adalah studi literatur. Studi literatur merupakan pengumpulan data dengan cara mengumpulkan literatur, jurnal, paper dan pencarian data yang bersumber dari internet berkaitan dengan aplikasi yang akan dibangun.

1.5.2 Metode Pembangunan Perangkat Lunak

(15)

Gambar 1 Waterfall[1]

1. Analisis Kebutuhan

Tahap analisis kebutuhan ini yaitu untuk memahami sistem yang ada pada permainan Sudoku serta mendefinisikan permasalahan sistemnya dan selanjutnya untuk menentukan kebutuhan sistem secara garis besar.

2. Desain Sistem

Tahap desain sistem ini yaitu untuk memberikan gambaran umum kepada pengguna mengenai permainan Sudoku yang akan dibangun dan rancang bangun yang lengkap tentang sistem permainan Sudoku yang akan dikembangkan.

3. Penulisan Kode Program

(16)

4. Pengujian Program

Tahap pengujian program ini dilakukan untuk mendapatkan serta memastikan bahwa permainan Sudoku yang dibangun sesuai dengan kebutuhan yang telah dideskripsikan.

5. Penerapan Program

Tahap pemeliharaan program ini permainan Sudoku sudah diserahkan kepada pengguna dan dilakukan evaluasi terhadap sistem yang baru untuk mengetahui apakah sistem telah memenuhi tujuan yang ingin dicapai. Hasil evaluasi ini dimungkinkan untuk melakukan perubahan – perubahan yang diperlukan terhadap sistem agar sistem senantiasa dapat digunakan dengan baik.

1.6 Sistematika Penulisan

Sistematika penulisan laporan akhir penelitian ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini adalah sebagai berikut :

BAB 1 PENDAHULUAN

Bab ini berisi penjelasan mengenai latar belakang masalah, identifikasi masalah, maksud dan tujuan, batasan masalah, metodologi penelitian serta sistematika penulisan.

BAB 2 LANDASAN TEORI

Membahas berbagai konsep dasar dan teori-teori yang berkaitan dengan topik penelitian yang dilakukan dan hal-hal yang berguna dalam proses analisis permasalahan serta tinjauan terhadap penelitian-penelitian serupa yang telah pernah dilakukan sebelumnya termasuk sintesisnya.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

(17)

software, brainware, diagram pembuatan sistem dan UML (Unified Modeling Language).

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Merupakan tahapan yang dilakukan dalam penelitian dalam menjelaskan implementasi, tampilan antarmuka, menu yang tersedia pada sistem, dan pengujian terhadap sistem.

BAB 5 KESIMPULAN DAN SARAN

(18)

7

BAB 2

LANDASAN TEORI

2.1 Sudoku

Sudoku merupakan permainan teka-teki silang angka, dimana setiap baris dan kolom harus diisi dengan angka-angka dengan aturan tertentu. Sudoku adalah teka-teki penempatan angka yang didasarkan pada logika matematika. Sudoku terdiri dari kotak-kotak kecil yang membentuk baris dan kolom seperti halnya teka-teki silang (TTS).

Sudoku terdiri dari kisi persegi yang disebut grid berukuran 9x9 (9 baris x 9 kolom) yang dibagi menjadi sembilan bagian yang disebut subgrid berukuran 3x3. Teka-teki Sudoku menyediakan beberapa angka pada posisi acak sebagai patokan untuk menyelesaikan keseluruhan teka-teki tersebut. Kotak yang kosong harus diisi dengan angka unik dari 1 sampai 9 yang masing-masing hanya muncul sekali dalam setiap baris, kolom, dan persegi 3x3.

2.2 Artificial Intelligence (AI) 2.2.1 Definisi AI

Sebagian kalangan menerjemahkan Artificial Intelligence sebagai kecerdasan buatan, kecerdasan artifisial, intelijensia artifisial, atau intelejensia buatan. Istilah Artificial Intelligence sengaja tidak diterjemahkan ke bahasa Indonesia karena istilah tersebut sudah sangat akrab bagi orang Indonesia. Begitu juga dengan singkatan istilah tersebut, yaitu AI, sudah sangat melekat di berbagai media ilmiah maupun non ilmiah.

(19)

1. Thinking humanly : the cognitive modeling approach

Pendekatan ini dilakukan dengan dua cara sebagai berikut :

1.1Melalui introspeksi : mencoba menangkap pemikiran-pemikiran kita sendiri pada saat kita berpikir. Tetapi, seorang psikolog barat

mengatakan “how do you know that you understand?” Bagaimana

anda tahu bahwa anda mengerti? Karena pada saat anda menyadari pemikiran anda. Sehingga definisi ini terkesan mengada-ngada dan tidak mungkin dilakukan.

1.2Melalui eksperimen-eksperimen psikologi. 2. Acting humanly : the Turing test approach

Pada tahun 1950, Alan Turing merancang suatu ujian bagi komputer berintelijensia untuk menguji apakah komputer tersebut mampu mengelabui seorang manusia yang menginterogasinya melalui teletype

(komunikasi berbasis teks jarak jauh). Jika interrogator tidak dapat membedakan yang diinterogasi adalah manusia atau komputer, maka komputer berintelijensia tersebut lolos dari Turning test. Komputer tersebut perlu memiliki kemampuan : Natural Language Processing,

Knowledge Representation, Automated Reasoning, Machine Learning,

Computer Vision, Robotics. Turing test sengaja menghindari interaksi fisik antara interrogator dan komputer karena simulasi fisik manusia tidak memerlukan intelijensia.

3. Thinking rationally : the laws of thought approach

Terdapat dua masalah dalam pendekatan ini, yaitu :

3.1Tidak mudah untuk membuat pengetahuan informal dan menyatakan pengetahuan tersebut ke dalam formal term yang diperlukan oleh notasi logika, khususnya ketika pengetahuan tersebut memiliki kepastian kurang dari 100%.

3.2Terdapat perbedaan besar antara dapat memecahkan masalah

“dalam prinsip” dan memecahkannya “dalam dunia nyata”.

(20)

Membuat inferensi yang logis merupakan bagian dari suatu rational agent. Hal ini disebabkan satu-satunya cara untuk melakukan aksi secara rasional adalah dengan menalar secara logis. Dengan menalar secara logis, maka bisa didapatkan kesimpulan bahwa aksi yang diberikan akan mencapai tujuan atau tidak. Jika mencapai tujuan, maka agent dapat melakukan aksi berdasarkan kesimpulan tersebut.

Thinking humanly dan acting humanly adalah dua definisi dalam arti yang sangat luas. Sampai saat ini, pemikiran manusia yang diluar rasio, yakni refleks dan intuitif (berhubungan dengan perasaan), belum dapat ditirukan sepenuhnya oleh komputer. Dengan demikian, kedua definisi ini dirasa kurang tepat untuk saat ini. Jika kita menggunakan definisi ini, maka banyak produk komputasi cerdas saat ini yang tidak layak disebut sebagai produk AI.

Definisi thinking rationally terasa lebih sempit daripada acting rationally. Oleh karena itu, definisi AI yang paling tepat untuk saat ini adalah acting rationally dengan pendekatan rational agent. Hal ini berdasarkan pemikiran bahwa komputer bisa melakukan penalaran secara logis dan juga bisa melakukan aksi secara rasional berdasarkan hasil penalaran tersebut.

2.2.2 Teknik Pemecahan Masalah AI

1. Searching

Terdapat beberapa langkah dalam teknik searching atau pencarian ini. Langkah pertama yang harus dilakukan adalah mendefinisikan ruang masalah untuk suatu masalah yang dihadapi. Ruang masalah ini dapat digambarkan sebagai himpunan keadaan (state) atau bisa juga sebagai himpunan rute dari keadaan awal (initial state) menuju keadaan tujuan (goal state). Langkah kedua adalah mendefinisikan aturan produksi yang digunakan untuk mengubah suatu state ke state lainnya. Langkah terakhir adalah memilih metode pencarian yang tepatsehingga dapat menemukan solusi terbaik dengan usaha yang minimal.

(21)

1.1Blind/Un-informed Search

1.1.1 Breadth-First Search (BFS) 1.1.2 Depth-First Search (DFS) 1.1.3 Depth-Limited Search (DLS) 1.1.4 Uniform Cost Search (USC) 1.1.5 Iterative-Deepening Search (IDS) 1.1.6 Bi-Directional Search (BDS) 1.2Metode Pencarian Heuristik

1.2.1 Generate-and-Test (Bangkitkan-dan-Uji) 1.2.2 Hill Climbing (Pendakian Bukit)

1.2.3 Simulated Annealing (SA)

1.2.4 Best-First Search (Pencarian Terbaik Terlebih Dahulu)

1.2.5 Greedy Best-First Search

1.2.6 A* (A star atau A bintang) 1.2.7 Iterative Deepening A* (IDA*)

1.2.8 Simplified Memory-Bounded A* (SMA*) 1.2.9 Bi-directional A* (BDA*)

1.2.10 Modified Bi-directional A* (MBDA*) 1.2.11 Dinamic Weighting A* (DWA*) 2. Reasoning

Teknik reasoning atau penalaran merupakan teknik penyelesaian masalah dengan cara mempresentasikan masalah kedalam basis pengetahuan (knowledge base) menggunakan logic atau bahasa formal (bahasa yang dipahami komputer).

3. Planning

(22)

4. Learning

Pada ketiga teknik sebelumnya, kita harus mengetahui aturan yang berlaku untuk sistem yang akan kita bangun. Tetapi pada masalah tertentu, terkadang kita tidak bisa mendefinisikan aturan secara benar dan lengkap karena data-data yang kita dapatkan tidak lengkap. Melalui suatu teknik yang disebut learning, kita bisa secara otomatis menemukan aturan yang diharapkan bisa berlaku umum untuk data-data yang belum kita ketahui.[2]

2.2.3 Algoritma Ant Colony Optimization (ACO) System

Ant Colony Optimization (ACO) diadopsi dari perilaku koloni semut yang dikenal sebagai sistem semut. Semut mampu mengindera lingkungannya yang kompleks untuk mencari makanan dan kemudian kembali ke sarangnya dengan meninggalkan zat Pheromone pada rute-rute yang mereka lalui.

Pheromone adalah zat kimia yang berasal dari kelenjar endokrin dan digunakan oleh makhluk hidup untuk mengenali sesama jenis, individu lain, kelompok, dan untuk membantu proses reproduksi. Berbeda dengan hormon,

Pheromone menyebar ke luar tubuh dan hanya dapat mempengaruhi dan dikenali oleh individu lain yang sejenis (satu spesies).

Proses peninggalan Pheromone ini dikenal sebagai stigmery, yaitu sebuah proses memodifikasi lingkungan yang tidak hanya bertujuan untuk mengingat jalan pulang ke sarang, tetapi juga memungkinkan para semut berkomunikasi dengan koloninya.

Seiring waktu, bagaimanapun juga jejak Pheromone akan menguap dan akan mengurangi kekuatan daya tariknya. Lebih cepat setiap semut pulang pergi melalui rute tersebut, maka Pheromone yang menguap lebih sedikit. Begitu pula sebaliknya jika semut lebih lama pulang pergi melalui rute tersebut, maka

(23)

2.2.3.1Cara kerja menemukan rute terpendek dalam ACO

Secara jelasnya cara kerja semut menemukan rute terpendek dalam ACO adalah sebagai berikut : Secara alamiah semut mampu menemukan rute terpendek dalam perjalanan dari sarang ke tempat-tempat sumber makanan. Koloni semut dapat menemukan rute terpendek antara sarang dan sumber makanan berdasarkan jejak kaki pada lintasan yang telah dilalui. Semakin banyak semut yang melalui suatu lintasan, maka akan semakin jelas bekas jejak kakinya. Hal ini akan menyebabkan lintasan yang dilalui semut dalam jumlah sedikit, semakin lama akan semakin berkurang kepadatan semut yang melewatinya, atau bahkan akan tidak dilewati sama sekali. Sebaliknya lintasan yang dilalui semut dalam jumlah banyak, semakin lama akan semakin bertambah kepadatan semut yang melewatinya, atau bahkan semua semut akan melalui lintasan tersebut.

Gambar 3.1 Perjalanan semut dari sarang ke sumber makanan

(24)

dua kelompok lagi. Sebagian melalui jalan atas dan sebagian melalui jalan bawah. Hal ini juga berlaku pada kelompok semut R. Gambar 3.1.b dan gambar 3.1.c menunjukkan bahwa kelompok semut berjalan pada kecepatan yang sama dengan meninggalkan Pheromone (jejak kaki semut) di jalan yang telah dilalui.

Pheromone yang ditinggalkan oleh semut - semut yang melalui jalan atas telah mengalami banyak penguapan karena semut yang melalui jalan atas berjumlah lebih sedikit dari pada jalan yang di bawah. Hal ini dikarenakan jarak yang ditempuh lebih panjang daripada jalan bawah. Sedangkan Pheromone yang berada di jalan bawah, penguapannya cenderung lebih lama. Karena semut yang melalui jalan bawah lebih banyak daripada semut yang melalui jalan atas. Gambar 3.1.d menunjukkan bahwa semut-semut yang lain pada akhirnya memutuskan untuk melewati jalan bawah karena Pheromone yang ditinggalkan masih banyak. Sedangkan Pheromone pada jalan atas sudah banyak menguap sehingga semut-semut tidak memilih jalan atas tersebut. Semakin banyak semut-semut yang melalui jalan bawah maka semakin banyak semut yang mengikutinya.

Demikian juga dengan jalan atas, semakin sedikit semut yang melalui jalan atas, maka Pheromone yang ditinggalkan semakin berkurang bahkan hilang. Dari sinilah kemudian terpilihlah rute terpendek antara sarang dan sumber makanan.[4]

2.2.4 Algoritma Genetika

Algoritma genetika adalah algoritma pencarian (search algorithm) yang menggunakan prinsip seleksi alam dalam ilmu genetika untuk mengembangkan solusi terhadap permasalahan. Algoritma Genetika merupakan kelas algoritma pencarian stokastik berdasarkan evolusi biologi.

(25)

Ide dasar algoritma genetika adalah mengelola suatu populasi individu yang merepresentasikan kandidat solusi sebuah permasalahan. Secara umum algoritma genetika memiliki lima komponen dasar yaitu:

1. Representasi genetik dari solusi-solusi masalah. 2. Cara membentuk populasi awal dari solusi-solusi.

3. Fungsi evaluasi yang me-rate (rating) solusi-solusi berdasarkan fitness

mereka.

4. Operator-operator genetik yang merubah komposisi genetik dari offspring

selama reproduksi.

5. Nilai-nilai untuk parameter algoritma genetika.

Algoritma me-maintain populasi individu-individu untuk setiap generasi. Masing-masing individu menyatakan solusi yang potensial untuk masalah yang dihadapi. Masing-masing individu di-evaluasi untuk memberi ukuran fitness-nya. Nilai fitness adalah nilai yang menunjukkan drajat ketangguhan kromosom dalam beradaptasi terhadap masalah.

Salah satu aplikasi algoritma genetika adalah pada permasalahan optimasi, yaitu mendapatkan suatu nilai solusi optimal terhadap suatu permasalahan yang mempunyai banyak kemungkinan solusi. Daya tarik algoritma genetika terletak pada kesederhanaan dan pada kemampuan untuk mencari solusi yang baik dan cepat untuk masalah yang kompleks.

2.2.4.1 Kelebihan Algoritma Genetika

Beberapa hal yang termasuk kelebihan dari Algoritma Genetika adalah sebagai berikut:

1. Mengoptimalkan dengan variabel kontinu atau diskrit. 2. Tidak memerlukan informasi derivatif.

3. Bersamaan pencarian dari sebuah sampling yang luas pada permukaan biaya.

4. Berkaitan dengan sejumlah besar variable.

(26)

6. Mengoptimalkan permukaan variable dengan biaya yang sangat kompleks (GA bisa melompat dari minimum lokal).

7. Memberikan daftar variable yang optimal, bukan hanya solusi tunggal. 8. Dapat menyandikan variable sehingga optimasi dilakukan dengan

mengkodekan variable.

9. Bekerja dengan data numerik yang dihasilkan, data eksperimen, atau analitis fungsi.

Algoritma genetika berangkat dari himpunan solusi yang dihasilkan secara acak yang disebut populasi. Sedangkan setiap individu dalam populasi disebut kromosom yang merupakan representasi dari solusi dan masing-masing dievaluasi tingkat ketanggguhannya (fitness) oleh fungsi yang telah ditentukan. Melalui proses seleksi alam atas operator genetik, gen-gen dari dua kromosom (disebut

parent) diharapkan akan menghasilkan kromosom baru dengan tingkat fitness

yang lebih tinggi sebagai generasi baru atau keturunan (offspring) berikutnya. Kromosom-kromosom tersebut akan mengalami iterasi yang disebut generasi (generation). Pada setiap generasi, kromosom dievaluasi berdasarkan nilai fungsi

fitness. Setelah beberapa generasi maka algoritma genetika akan konvergen dapat kromosom terbaik, yang merupakan solusi optima.

2.2.4.2 Struktur Umum Algoritma Genetika

Algoritma genetika memberikan suatu pilihan bagi penentuan nilai parameter dengan meniru cara reproduksi genetik, pembentukan kromosom baru serta seleksi alami seperti terjadi pada mahluk hidup.

(27)

Gambar 2.2 Struktur Umum Algoritma Genetika

Inisialisasi populasi awal dilakukan untuk menghasilkan solusi awal dari suatu permasalahan algoritma genetika. Inisialisasi ini dilakukan secara acak sebanyak jumlah kromosom/populasi yang diinginkan. Selanjutnya dihitung nilai

fitness dan seterusnya dilakukan seleksi dengan menggunakan metode roda

(28)

2.2.4.3 Karakteristik Algoritma Genetika

Goldberg (1989) mengemukakan bahwa algoritma genetika mempunyai karakteristik-karakteristik yang perlu diketahui sehingga dapat terbedakan dari prosedur pencarian atau optimasi yang lain yaitu:

1. AG bekerja dengan pengkodean dari himpunan solusi permasalahan berdasarkan parameter yang telah ditetapkan dan bukan parameter itu sendiri. Sebagai contoh untuk mendapatkan minimum dari fungsi f(x)=y=x4+2x3+5, AG tidak secara langsung mencari nilai x atau y, tetapi terlebih dahulu merepresentasikan x dalam bentuk string biner.

2. AG melakukan pencarian pada sebuah populasi dari sejumlah individu-individu yang merupakan solusi permasalahan bukan hanya dari sebuah individu.

3. AG merupakan informasi fungsi objektif (fitness), sebagai cara untuk mengevaluasi individu yang mempunyai solusi terbaik, bukan turunan dari suatu fungsi.

4. AG menggunakan aturan-aturan transisi peluang, bukan aturan-aturan deterministik.

Parameter yang digunakan pada algoritma genetika adalah:

1. Fungsi fitness (fungsi tujuan) yang dimiliki oleh masing-masing individu untuk menentukan tingkat kesesuaian individu tersebut dengan kriteria yang ingin dicapai.

2. Populasi jumlah individu yang dilibatkan pada setiap generasi. 3. Probabilitas terjadinya persilangan (crossover) pada suatu generasi. 4. Probabilitas terjadinya mutasi pada setiap individu.

5. Jumlah generasi yang akan dibentuk yang menentukan lama dari penerapan AG.

Sebagaimana halnya proses evolusi di alam, suatu algoritma genetika yang sederhana umumnya terdiri dari tiga operator yaitu : operator reproduksi, operator

(29)

2.2.4.4 Langkah-langkah Algoritma Genetika

Struktur umum dari suatu algoritma genetika dapat didefinisikan dengan langkah-langkah sebagai berikut:

1. Pengkodean

Pengkodean disini meliputi pengkodean gen dan kromosom. 2. Inisisalisasi populasi awal

Membangkitkan sejumlah kromosom (sesuai dengan ukuran populasi) untuk dijadikan anggota populasi awal. Populasi itu sendiri terdiri dari sejumlah kromosom yang merepresentasikan solusi yang diinginkan. 3. Evaluasi nilai fitness

Setiap kromosom pada populasi dihitung nilai fitness-nya berdasarkan fungsi fitness. Nilai fitness suatu kromosom menggambarkan kualitas kromosom dalam populasi tersebut. Proses ini akan mengevaluasi setiap populasi dengan menghitung nilai fitness setiap kromosom dan mengevaluasinya sampai terpenuhi kriteria berhenti.

4. Pembentukan kromosom baru a. Seleksi

Memilih sejumlah kromosom yang akan menjadi kromosom calon

parent. b. Crossover

Mengkombinasikan dua kromosom parent (induk) berdasar nilai probabilitas crossover-nya untuk menghasilkan offspring.

c. Mutasi

Mengubah sejumlah gen berdasar nilai probabilitas mutasinya untuk menghasilkan kromosom baru.

d. Update Generasi

Membaharui kromosom yang terdapat dalam populasi. e. Pengecekan faktor pemberhenti

(30)

jumlah generasi maksimum yang diizinkan, terdapat suatu individu yang telah memiliki fitness tertentu yang diharapkan, keberagaman populasi telah mencapai tingkat minimum yang diizinkan, dalam beberapa generasi tertentu, tidak ada peningkatan nilai fitness yang diharapkan.

Sebelum algoritma genetika dilakukan, ada dua hal penting yang harus dilakukan yaitu pendefinisian kromosom yang merupakan suatu solusi yang masih berbentuk simbol dan fungsi fitness atau fungsi obyektif. Dua hal ini berperan penting dalam algoritma genetika untuk menyelesaikan suatu masalah.[5]

2.3 Tools Analisis

2.3.1 Pemrograman Berorientasi Objek atau Object Oriented Programming

(OOP)

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 penerapan prinsip-prinsip pengelolaan kompleksitas. Metode berorientasi objek meliputi rangkaian aktivitas analisis berorientasi objek, perancangan berorientasi objek, pemrograman berorientasi objek, dan pengujian berorientasi objek.

Pada saat ini, metode berorientasi objek banyak dipilih karena metodologi lama banyak menimbulkan masalah seperti adanya kesulitan pada saat mentransformasi 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 pada saat ini sangat beragam (aplikasi bisnis, real-time, utility, dan sebagainya) dengan

(31)

Keuntungan menggunakan metodologi berorientasi objek adalah sebagai berikut :

1. Meningkatkan Produktivitas

Karena kelas dan objek yang ditemukan dalam suatu masalah dapat dipakai ulang untuk masalah lainnya yang melibatkan objek tersebut (reusable).

2. Kecepatan Pengembangan

Karena sistem yang dibangun dengan baik dan benar pada saat analisis dan perancangan akan menyebabkan berkurangnya kesalahan pada saat pengkodean.

3. Kemudahan Pemeliharaan

Karena dengan model objek, pola-pola yang cenderung tetap dan stabil dapat dipisahkan dengan pola-pola yang mungkin sering berubah-ubah. 4. Adanya Konsistensi

Karena sifat pewarisan dan penggunaan notasi yang sama pada saat analisis, perancangan maupun pengkodean.

5. Meningkatkan Kualitas Perangkat Lunak

Karena pendekatan pengembangan lebih dekat dengan dunia nyatadan adanya konsistensi pada saat pengembangannya, perangkat lunak yang dihasilkan akan mampu memenuhi kebutuhan pemakai serta mempunyai sedikit kesalahan.

Saat ini sudah banyak bahasa pemrograman berorientasi objek. Banyak orang berfikir bahwa pemrograman berorientasi objek identik dengan bahasa java. Memang bahasa java merupakan bahasa yang paling konsisten dalam mengimplementasikan paradigma pemrograman berorientasi objek. Namun sebenarnya bahasa pemrograman yang mendukung pemrograman berorientasi objek tidak hanya bahasa java.

2.3.2 Unified Modeling Language (UML)

(32)

dibangun dengan menggunakan teknik pemrograman berorientasi objek, yaitu

Unified Modeling Language (UML). UML muncul karena adanya kebutuhan pemodelan visual untuk menspesifikasikan, menggambarkan, membangun, dan dokumentasi dari sistem perangkat lunak. UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram dan teks-teks pendukung.

UML hanya berfungsi untuk melakukan pemodelan. Jadi penggunaan UML tidak terbatas pada metodologi tertentu, meskipun pada kenyataanya UML paling banyak digunakan pada metodologi berorientasi objek.

Seperti banyak kita ketahui bahwa banyak hal di dunia informasi yang tidak dapat dibakukan, semua tergantung kebutuhan, lingkungan, dan konteksnya. Begitu juga dengan perkembangan penggunaan UML bergantung pada level abstraksi penggunanya. Jadi, belum tentu pandangan yang berbeda dalam penggunaan UML adalah suatu yang salah, tapi perlu ditelaah dimanakah UML digunakan dan hal apa yang ingin divisualkan. Secara analogi jika dengan bahasa yang kita gunakan sehari-hari, belum tentu penyampaian bahasa dengan puisi adalah hal yang salah. Sistem informasi bukanlah ilmu pasti, maka jika ada banyak perbedaan dan interpretasi di dalam bidang sistem informasi merupakan hal yang sangat wajar.

(33)

Gambar 2.3 Diagram UML

Berikut ini penjelasan singkat dari pembagian kategori tersebut.

1. Structure diagrams yaitu kumpulan diagram yang digunakan untuk menggambarkan suatu struktur statis dari sistem yang dimodelkan.

(34)

3. Interaction diagrams yaitu kumpulan diagram yang digunakan untuk menggambarkan interaksi sistem dengan sistem lain maupun interaksi antar subsistem pada suatu sistem.[6]

2.3.3 C#(C Sharp)

C# (C sharp) merupakan sebuah bahasa pemrograman yang berorientasi objek yang dikembangkan oleh Microsoft sebagai bagian dari inisiatif kerangka .NET Framework. Bahasa pemrograman ini dibuat berbasiskan bahasa C++ yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya (seperti Java, Delphi, Visual Basic, dan lain-lain) dengan beberapa penyederhanaan. Menurut standar ECMA-334 C#

Language Specification, nama C# terdiri atas sebuah huruf Latin C (U+0043) yang diikuti oleh tanda pagar yang menandakan angka # (U+0023). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam keyboard standar.

1. Kesederhanaannya

Pointer telah „dihilangkan‟ dari C#. (diijinkan mengakses tetapi diberi

tanda “unsafe”) Operasi-operasi yang „tidak aman‟ seperti misalnya akses

memori langsung sudah tidak diizinkan. Tidak ada lagi penggunaan

operator “::” atau “->” seperti pada pendahulunya. Karena berada dalam

lingkungan .NET, maka C# memiliki turunan manajemen memori otomatis dan Garbage Collection. Dukungan tipe data primitif yang lebih banyak seperti misalnya Integer, Floats, dan sebagainya. Nilai integer 0 dan 1 tidak diterima lagi sebagai alternatif nilai Boolean. Nilai Boolean

adalah murni true atau false. 2. Modern

(35)

web service yang dapat dipanggil dari aplikasi apa saja dan platform apa saja melalui internet.

3. Object Oriented

C# mendukung enkapsulasi, inheritance, polymorphism, dan interfaces

secara penuh. (int, float, double) bukanlah merupakan object dalam bahasa Java, tetapi C# memperkenalkan struktur (struct) yang memungkinkan tipe-tipe primitif dapat menjadi object.

4. Type Safe

Pada C#, kita tidak dapat melakukan hal-hal yang „tidak aman‟ seperti misalnya mengkonversi nilai variable bertipe double ke boolean. Kompiler secara otomatis akan mengkonversi setiap variable bertipe

Value dengan angka Nol, dan setiap variable bertipe Reference dengan nilai null. Indeks array selalu dari Nol dan batasannya selalu diperhatikan. Tipe-tipe yang menghasilkan nilai overflow dapat dievaluasi.

5. Interoperability

C# menyertakan dukungan bawaan pada COM dan aplikasi berbasis

windows. Mengizinkan penggunaan pointer dengan batasan-batasan. User

sekarang tidak lagi secara eksplisit mengimplementasikan inteface COM yang tidak diketahui, fitur-fitur seperti itu sudah ada pada C#. C# mengizinkan user untuk menggunakan pointer sebagai blok kode yang bersifat unsafe. Komponen yang dibuat oleh VB.NET atau bahasa pemrograman lain yang mendukung .NET dapat langsung digunakan oleh C#.

6. Scalable and Updateable

.NET memperkenalkan assembly yang merupakan piranti yang menggambarkan dirinya sendiri melalui suatu manifest. Manifest

(36)

copy-kan file yang baru. Proses update komponen software hampir dapat dilakukan tanpa kesulitan sama sekali.[7]

2.3.4 Microsoft Visual Studio

Visual Studio adalah program aplikasi keluaran dari Microsoft dimana dalam program editing tersebut di install maka bahasa pemrograman seperti VB.NET, C++.NET, C#.NET sudah tertera dengan pemrograman tersebut kita bisa men-design program dan megkodekan program teresebut sesuai keinginan kita. Sedangkan C#.NET bahasa pemrograman yang sudah menyatu dalam paket aplikasi Visual studio dimana bahasa prmrograman tersebut berbasis Dot NET.[8]

(37)
(38)

27

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem merupakan penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya yang dimaksudkan untuk mengidentifikasi dan mengevaluasi segala permasalahan dan hambatan yang terjadi serta kebutuhan yang diharapkan dapat menjadi acuan untuk diusulkannya perbaikan-perbaikan.

Untuk dapat melakukan analisis sistem maka dilakukan beberapa langkah yaitu sebagai berikut :

1. Analisis Masalah 2. Analisis Algoritma

3. Analisis Kebutuhan Non-Fungsional 4. Analisis Kebutuhan Fungsional

3.1.1 Analisis Masalah

(39)

Gamber 3.1 Sudoku

Sudoku terdiri dari kisi persegi yang disebut grid berukuran 9x9 (9 baris x 9 kolom) yang dibagi menjadi sembilan bagian yang disebut subgrid berukuran 3x3. Teka-teki Sudoku menyediakan beberapa angka pada posisi acak sebagai patokan untuk menyelesaikan keseluruhan teka-teki tersebut. Kotak yang kosong harus diisi dengan angka unik dari 1 sampai 9 yang masing-masing hanya muncul sekali dalam setiap baris, kolom, dan persegi 3x3.

Permainan Sudoku ini jika diselesaikan secara manual akan memakan waktu yang cukup lama, maka untuk menyelesaikan permainan Sudoku dapat menggunakan algoritma ant colony system dan algoritma genetika. Pada bab 3 ini akan dilakukan analisis algoritma ant colony system dan algoritma genetika untuk mendapatkan solusi dalam penyelesaian masalah pada permainan Sudoku serta untuk mengetahui performasi kedua algoritma tersebut dalam menyelesaikan permainan Sudoku.

3.1.2 Analisis Algoritma

3.1.2.1 Analisis Algoritma Genetika

1. Pembentukan Kromosom

(40)

kosong pada puzzle. Pada penelitian ini dibatasi dengan 50 kotak kosong pada

puzzle maka panjang kromosomnya adalah 50. Representasi kromosom yang digunakan adalah deretan bilangan bulat. Nilai untuk masing-masing gen pada kromosom diambil secara acak dari angka 1 sampai 9.

Gambar 3.2 Sudoku dengan 50 kotak kosong

2. Inisialisasi

Proses inisialisasi dilakukan dengan cara memberikan nilai gen-gen awal dengan nilai acak dari angka 1 sampai 9. Setelah diketahui panjang kromosomnya adalah 50 dan ditentukan jumlah populasinya adalah 10.

Tabel 3.1 Inisialisasi

Kromosom Gen

1 1,4,1,2,4,5,6,3,3,4,8,9,7,3,8,1,6,7,7,9,1,4,1,2,4,5,6,3,3,4,8,9,7,3,8,1,6,7,7,9,8,9,7,3 ,8,1,4,1,2,4

2 1,3,5,7,4,3,7,6,1,4,3,1,2,9,4,2,2,2,2,5,9,9,1,7,5,9,7,6,1,1,5,9,3,6,9,4,7,6,5,2,3,1,2,9 ,4,2,2,2,2,5

3 6,7,6,7,9,5,7,1,9,8,6,7,4,9,6,3,9,5,1,7,8,9,1,7,5,9,7,6,7,6,1,1,3,6,9,4,7,2,5,2,5,9,7,6 ,7,6,1,1,3,6

(41)

5 9,9,1,7,5,9,7,6,1,1,5,9,3,6,9,4,7,6,5,2,1,1,6,7,9,5,7,1,9,9,2,7,4,9,6,3,1,1,3,6,8,9,1,7 ,5,9,7,6,7,6

6 1,5,9,3,6,9,4,7,6,5,2,1,1,6,7,9,5,7,1,9,9,2,7,9,2,7,4,9,6,3,1,5,9,3,6,9,4,7,6,5,2,1,1,6 ,7,9,5,7,1,9

7 1,2,6,9,5,8,3,3,8,2,7,4,4,8,5,2,6,1,8,5,6,4,7,8,4,1,3,4,3,9,5,7,1,7,3,6,5,4,6,4,3,1,7,5 ,2,9,7,4,1,8

8 6,1,4,2,9,9,8,3,7,7,4,5,2,2,8,9,2,4,5,4,5,2,2,8,9,2,4,5,7,8,6,1,4,2,6,1,4,2,9,1,1,1,9,8 ,3,7,7,4,5,2

9 2,5,9,9,1,7,5,9,7,6,1,1,5,9,3,6,9,4,7,6,5,4,7,6,5,2,1,1,6,7,9,5,7,2,8,6,1,4,2,9,9,8,3,7 ,2,4,4,8,9,1

10 7,9,1,4,1,2,4,5,6,3,1,5,9,3,6,9,4,7,9,5,9,3,6,9,4,7,6,5,2,6,1,4,2,9,9,8,3,7,7,4,5,2,2,8 ,9,2,4,5,4,9

3. Nilai Fitness

Setelah kromosom tebentuk, langkah selanjutnya adalah mencari nilai

fitness. Langkah pertama yaitu masukan gen-gen yang telah terbentuk kedalam kromosom, mulai dari kromosom 1 sampai kromosom 10.

Gambar 3.3 Sudoku dengan masukan gen-gen kromosom 1

(42)

Gambar 3.4 Contoh gen dikatakan error

Pada Gambar 3.4 bisa dilihat angka 7 yang berwarna merah merupakan gen error karena pada baris yang sama terdapat angka yang sama dan dalam region juga terdapat angka yang sama. Angka 6 yang berwarna merah merupakan gen error karena pada kolom yang sama terdapat angka yang sama dan dalam region juga terdapat angka yang sama.

Pada Gambar 3.3, setelah dimasukan gen-gen dari kromosom 1 didapatkan 47 angka yang berwarna merah yaitu merupakan gen-gen error. Nilai fitness dapat dicari dengan panjang kromosom dikurangi dengan jumlah gen error kemudian dibagi dengan panjang kromosom.

Fitness = panjang kromosom – jumlah gen error

Kromosom[1] Fitness = 50 – 47 = 3

Baris

Ko

lo

m

(43)

Gambar 3.5 Sudoku dengan masukan gen-gen kromosom 2 dan 3

Kromosom[2] Fitness = 50 – 46 = 4 Kromosom[3] Fitness = 50 – 47 = 3

Gambar 3.6 Sudoku dengan masukan gen-gen kromosom 4 dan 5

(44)

Gambar 3.7 Sudoku dengan masukan gen-gen kromosom 6 dan 7

Kromosom[6] Fitness = 50 – 45 = 5 Kromosom[7] Fitness = 50 – 3 = 47

Gambar 3.8 Sudoku dengan masukan gen-gen kromosom 8 dan 9

(45)

Gambar 3.9 Sudoku dengan masukan gen-gen kromosom 10

Kromosom[10] Fitness = 50 – 47 = 3

Solusi dengan nilai fitness sempurna (optimal) yaitu nilai fitness sama dengan panjang kromosom, dalam artian tidak memiliki gen error.

4. Seleksi

Metode seleksi yang digunakan adalah metode Roulette-Wheel yang membuat kromosom-kromosom dengan nilai fitness tinggi memiliki kemungkinan terpilih yang tinggi pula.

Probabilitas keterpilihan setiap kromosom ditentukan dengan cara membagi nilai fitness kromosom tersebut dengan total nilai fitness. Untuk itu, yang terlebih dahulu harus dihitung adalah total nilai fitness. Kemudian dilakukan pembagian masing-masing nilai fitness dengan total fitness tersebut. Nilai tersebut adalah probabilitas setiap kromosom yang berkisar antara nol dan satu.

(46)

Tabel 3.2 Probabilitas Seleksi Untuk Setiap Kromosom

Kromosom Fitness Probabilitas Nilai Probabilitas

K1 3 3/84 0.036

K2 4 4/84 0.048

K3 3 3/84 0.036

K4 8 8/84 0.095

K5 2 2/84 0.024

K6 5 5/84 0.060

K7 47 47/84 0.560

K8 5 5/84 0.060

K9 4 4/84 0.048

K10 3 3/84 0.036

Total 84 1 1

Gambar 3.10 Ilustrasi metode seleksi roulette-wheel

Misalkan bilangan acak yang dibangkitkan dengan jangkauan nilai dari 0 sampai 1 adalah 0,5. Kemudian nilai acak tersebut dibandingkan dengan nilai probabilitas masing-masing kromosom. Kromosom yang memiliki nilai probabilitas lebih besar atau sama dengan nilai acak yang dibangkitkan yaitu 0,5

K1 K2 K3

K4

K5

K6

K7 K8

(47)

akan terpilih. Pada Tabel 3.2 nilai probabilitas yang lebih besar dari 0.5 adalah kromosom 7 yang bernilai 0,56.

5. Crossover

Setelah melakukan proses seleksi, maka hasil tersebut akan digunakan dalam proses crossover. Metode crossover atau pindah silang yang digunakan adalah pindah silang dengan satu titik. Posisi crossover dipilih bilangan random

dengan batasan dari 1 sampai N (N = panjang kromosom). Pertukaran gen kemudian dilakukan pada kedua kromosom mulai titik gen tertentu sampai akhir kromosom. Misalkan bilangan random yang dilipih adalah 32.

1,2,6,9,5,8,3,3,8,2,7,4,4,8,5,2,6,1,8,5,6,4,7,8,4,1,3,4,3,9,5,7,1,7,3,6,5,4,6,4,3,1,7,5,2,9,7,4,1,8

2,5,9,9,1,7,5,9,7,6,1,1,5,9,3,6,9,4,7,6,5,4,7,6,5,2,1,1,6,7,9,5,7,2,8,6,1,4,2,9,9,8,3,7,2,4,4,8,9,1

1,2,6,9,5,8,3,3,8,2,7,4,4,8,5,2,6,1,8,5,6,4,7,8,4,1,3,4,3,9,5,5,7,2,8,6,1,4,2,9,9,8,3,7,2,4,4,8,9,1

2,5,9,9,1,7,5,9,7,6,1,1,5,9,3,6,9,4,7,6,5,4,7,6,5,2,1,1,6,7,9,7,1,7,3,6,5,4,6,4,3,1,7,5,2,9,7,4,1,8

6. Mutasi

Mutasi dilakukan satu titik, yaitu dengan mengganti nilai gen suatu kromosom dengan suatu nilai yang dipilih secara acak dari titik-titik yang ada.

1,2,6,9,5,8,3,3,8,2,7,4,4,8,5,2,6,1,8,5,6,4,7,8,4,1,3,4,3,9,5,5,7,2,8,6,1,4,2,9,9,8,3,7,2,4,4,8,9,1

1,2,6,9,5,8,3,3,8,2,7,4,4,8,5,2,6,1,8,5,6,4,7,8,4,1,3,4,3,9,5,5,9,2,8,6,1,4,2,9,9,8,3,7,2,4,4,8,9,1

Langkah-langkah tersebut dilakukan terus hingga mendapatkan nilai

(48)

Gambar 3.11 Hasil akhir

Pseudocode algoritma genetika adalah sebagai berikut : Tabel 3.3 Pseudocode Algoritma Genetika

1

Algoritma_Genetika

{ I.S. : Kondisi awal puzzle Sudoku (puzzle belum selesai) } { F.S. : Puzzle Sudoku selesai (hasil akhir didapatkan) }

Kamus:

i,j,m,n,p,gen_error,iterasi,total_fitness,fitness,bilCross,bilCross2,bilMut : integer bilSel,tmpSel : real

array_K = array [1..10,1..50] of integer K : array_K //kromosom

array_S = array [1..9,1..9] of integer S : array_S //kotak pada sudoku 9x9 array_tmpS = array [1..9,1..9] of integer tmpS : array_tmpS //penyimpanan sementara array_fitnessK = array [1..10] of integer fitnessK : array_fitnessS //nilai fitness array_tmpSeleksi = array [1..9,1..9] of integer tmpSeleksi : array_tmpSeleksi //nilai fitness array_tmpK = array [1..9,1..9] of integer

tmpK : array_tmpK //penyimpanan sementara crossover Algoritma:

for i  1 to 10 do for j  1 to 50 do

(49)

2

//membandingkan dengan baris, kolom, dan region if m = 1 then tmpS[m,n] = tmpS[3,3] then

gen_error  gen_error + 1 endif

endif . .

//bandingkan dari n=2 hingga n=9 .

(50)

8

//bandingkan dari m=2 hingga m=9 .

total_fitness  total_fitness + fitnessK[p] i  i + 1

if (fitnessK[p]/total_fitness) >= bilSel then if (fitnessK[p]/total_fitness) > tmpSel then

for i  1 to 9 do for j  1 to 9 do

tmpSeleksi[i,j]  tmpS[i,j] endfor

bilCross  random(1..50) //posisi awal crossover for i  1 to 10 do

bilCross2  billCross for j  to 50 do

bilMut  random(1..50) //posisi mutasi for i  1 to 10 do

for j  to 50 do if j = bilMut then

(51)

20

until (fitness = 50 or iterasi = 1000) //hasil akhir

3.1.2.2 Analisis Algoritma Ant Colony Optimization (ACO) System

Mengingat keberhasilan ACO system saat memecahkan Travelling Salesman Problem (TSP), maka masuk akal jika ACO system digunakan untuk memecahkan puzzle Sudoku. Pertama merepresentasikan setiap kotak Sudoku dalam 9x9 grid, dapat menggunakan koordinat (x,y) seperti pada kota-kota di TSP dan kemudian memperluas grid dengan menambahkan sumbu z sehingga menjadi (x,y,z). Sumbu z dapat direpresentasikan sebagai value atau nilai (z,y,value).

Dengan demikian akan menghasilkan 729 node “piece set”. Menggunakan

permutasi dengan panjang 81 dari piece set yang dapat direpresentasikan menjari

(52)

Gambar 3.12 Sudoku dengan titik (x,y)

Pada Gambar 3.16 merupakan titik-titik (x,y) mulai dari (1,1) hingga (9,9) yaitu memiliki 81 titik. Pada setiap titik dapat dimasukan nilai dengan memiliki 9 kemungkinan yaitu angka 1 sampa 9. Sudoku memiliki 81 titik dan setiap titik memiliki 9 kemungkinan, maka terdapat 729 kemungkinan.

(53)

Setiap individu semut mengoperasikan tabu search, dapat menempuh banyak node tanpa melanggar aturan permainan. Tabu search sendiri merupakan sebuah metode optimasi yang berbasis pada local search. Setelah tabu list berisi semua node, semut akan menghitung jumlah feromon yang dibuang sepanjang jalan dan mendistribusikannya. Jumlah feromon disimpan pada setiap sisi jalur untuk memberikan petunjuk. Gen-gen pada setiap node akan ditemukan dengan membandingkan angka yang ada pada kolom, baris, dan region yang sama.

Tabel 3.4 Gen-gen pada setiap node

(54)

4,4 3,4,6,8,9 9,1 4,5,7

4,5 1,3,8 9,2 2,4

4,6 1,4,6,9 9,3 2,4,5,9

4,7 1,3,4 9,4 4,7

4,8 1,4,9 9,6 1,4,7

5,3 3,4,8 9,7 1

5,4 3,4,8 9,9 8

Node yang memiliki gen dengan jumlah 1 akan dipilih, sehingga hasilnya adalah sebagai berikut:

Gambar 3.14 Sudoku dengan node yang terpilih (1,1)

Setelah dipilih 1 node maka gen-gen pada setiap node akan berubah dan berikut merupakan perubahan gen-gen pada setiap node:

Tabel 3.5 Gen-gen pada setiap node setelah dipilih 1 node

Node (x,y) Gen (z atau value) Node (x,y) Gen (z atau value)

5,6 1,4

1,3 2,3,5,8 5,7 1,3,4

(55)

1,6 2,6,9 6,3 3,4

1,7 3,5,6 6,4 3,4,7,9

1,8 2,5,8 6,5 5

1,9 3 6,6 1,4,7,9

2,1 3,4 6,8 1,4,9

2,5 8 7,1 7

2,6 2 7,2 3,4,6

2,7 7 7,7 4,5,6

2,8 2,4,8 7,8 4,5

3,1 4,5 7,9 4,6

3,2 2,4,8 8,2 3,4,6

3,3 2,4,5,8 8,3 3,4,9

3,8 2,4,5,8 8,4 3,4

3,9 6 8,5 1

4,2 1,3,4,8 8,9 4,6,9

4,4 3,4,6,8,9 9,1 4,5,7

4,5 1,3,8 9,2 2,4

4,6 1,4,6,9 9,3 2,4,5,9

4,7 1,3,4 9,4 4,7

4,8 1,4,9 9,6 1,4,7

5,3 3,4,8 9,7 1

5,4 3,4,8 9,9 8

(56)

Gambar 3.15 Sudoku dengan node yang terpilih (1,9)

Tabel 3.6 Gen-gen pada setiap node setelah dipilih 1 node

Node (x,y) Gen (z atau value) Node (x,y) Gen (z atau value)

5,6 1,4

1,3 2,5,8 5,7 1,3,4

1,4 6,8,9 6,2 1,3,4

1,6 2,6,9 6,3 3,4

1,7 5,6 6,4 3,4,7,9

1,8 2,5,8 6,5 5

6,6 1,4,7,9

2,1 3 6,8 1,4,9

2,5 8 7,1 7

2,6 2 7,2 3,4,6

2,7 7 7,7 4,5,6

2,8 2,4,8 7,8 4,5

3,1 4,5 7,9 4,6

3,2 2,4,8 8,2 3,4,6

(57)

3,8 2,4,5,8 8,4 3,4

3,9 6 8,5 1

4,2 1,3,4,8 8,9 4,6,9

4,4 3,4,6,8,9 9,1 4,5,7

4,5 1,3,8 9,2 2,4

4,6 1,4,6,9 9,3 2,4,5,9

4,7 1,3,4 9,4 4,7

4,8 1,4,9 9,6 1,4,7

5,3 3,4,8 9,7 1

5,4 3,4,8 9,9 8

Proses tersebut akan dilakukan terus menerus hingga puzzle terpenuhi. Setelah melalui tahap-tahap tersebut, maka hasilnya adalah sebagai berikut :

(58)

Pseudocode algoritma ant colony optimization system adalah sebagai berikut:

Tabel 3.7 Pseudocode ACO System

1

{ I.S. : Kondisi awal puzzle Sudoku (puzzle belum selesai) } { F.S. : Puzzle Sudoku selesai (hasil akhir didapatkan) }

Kamus:

m,n,x,y,z : integer

array_B = array [1..9,1..9,1..9] of integer B : array_B //bilangan untuk inisialisasi array_S = array [1..9,1..9] of integer S : array_S //kotak pada sudoku 9x9 array_tmpS = array [1..9,1..9] of integer tmpS : array_tmpS //penyimpanan sementara

Algoritma:

(59)

8

//bandingkan dari y=2 hingga y=9 .

. endif . .

//bandingkan dari x=2 hingga x=9 .

//nilai 0 ada delapan, nilai selain 0 ada 1. (0,0,0,0,0,4,0,0,0) for z  1 to 9 do

3.1.3 Analisis Kebutuhan Non-Fungsional

(60)

fungsionalnya yaitu meliputi analisis kebutuhan perangkat keras, analisis kebutuhan perangkat lunak, dan analisis pengguna.

3.1.3.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:

1. Processor 2.1GHz

2. VGA 1GB

3. RAM 4GB

4. Harddisk 320GB

5. Resolusi Layar 1366 x 768 6. Keyboard dan Mouse standar

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

1. Processor 1GHz

2. VGA 256MB

3. RAM 512GB

4. Harddisk 100MB

3.1.3.2 Analisis Kebutuhan Perangkat Lunak

(61)

Berikut ini merupakan spesifikasi perangkat lunak yang digunakan dalam membangun aplikasi ini, yaitu:

1. Sistem Operasi Microsoft Window 7 2. Microsoft Visual Studio

Berikut ini merupakan spesifikasi perangkat lunak yang digunakan dalam menjalankan aplikasi ini, yaitu:

1. Sistem Operasi Microsoft Window XP

3.1.3.3 Analisis Kebutuhan Pengguna

Selain dibutuhkannya perangkat lunak dan perangkat keras, user atau penguna adalah bagian yang sangat penting untuk dapat menerapkan aplikasi ini. Analisis pengguna diperlukan untuk dapat mengetahui sasaran calon pengguna yang dapat menggunakan aplikasi. Pada penelitian ini pembangunan aplikasi ditujukan untuk pengujian implementasi algoritma sehingga pengguna disini disarankan memiliki karakteristik sebagai berikut:

1. Bisa mengoperasikan komputer dengan sistem operasi windows.

2. Mengerti mengenai konsep algoritma Ant Colony Optimization (ACO) System dan algoritma genetika.

3.1.4 Analisis Kebutuhan Fungsional

Analisis kebutuhan fungsional menyangkut analisis sistem yang dilakukan yaitu dengan menggunakan UML. Adapun tahapan analisis sistem menggunakan UML adalah melalui use case diagram, activity diagram, sequence diagram, dan

class diagram.

3.1.4.1 Use Case Diagram

(62)

Gambar 3.17 Use Case Diagram

3.1.4.1.1 Definisi Aktor

Definisi aktor berfungsi untuk menjelaskan aktor yang terdapat pada use case diagram. Definisi aktor dapat dilihat pada tabel berikut:

Tabel 3.8 Definisi Aktor

Aktor Deskripsi

User Pengguna sistem

3.1.4.1.2 Definisi Use Case

Definisi use case menjelaskan tentang fungsi use case yang terdapat pada

use case diagram. Definisi use case dapa dilihat pada tabel berikut: Tabel 3.9 Definisi Use Case

No Use Case Deskripsi

1 New Game Fungsional untuk memulai permainan

2 Input Value Fungsional untuk melakukan input nilai pada cell atau kotak kosong dalam permainan Sudoku

3 Algoritma Genetika Fungsional untuk pencarian solusi atau untuk

menyelesaikan permainan Sudoku menggunakan

System

User

New Game

Solve Menggunakan Algoritma Genetika

(63)

algoritma genetika

4 Algoritma Ant Colony

Optimization System

Fungsional untuk pencarian solusi atau untuk

menyelesaikan permainan Sudoku menggunakan

algoritma ant colony optimization system

3.1.4.1.3 Skenario Use Case

Skenario pada diagram use case berisi tentang alur kejadian (flow of event)

use case utama dengan menjelaskan urutan interaksi antara aktor dan use case

tersebut dari awal sampai akhir.

1. Skenario Use Case New Game

Skenario use case ini menjelaskan interaksi antara aktor, yaitu user

dengan use caseNew Game yang dijelaskan pada tabel berikut:

Tabel 3.10 Skenario Use Case New Game

Identifikasi

Nomor 1

Nama New Game

Tujuan Memulai permainan

Deskripsi Fungsional untuk memulai permainan

Aktor User

Skenario Utama

Kondisi Awal User berada di tampilan awal permainan Sudoku

Aksi Aktor Reaksi Sistem

1. Memilih menu New Game

2. Melakukan proses pembangkitan puzzle 3. Menghasilkan puzzle baru

4. Menampilkan kondisi awal permainan

(64)

2. Skenario Use Case Input Value

Skenario use case ini menjelaskan interaksi antara aktor, yaitu user

dengan use caseInput Value yang dijelaskan pada tabel berikut: Tabel 3.11 Skenario Use Case Input Value

Identifikasi

Nomor 2

Nama Input Value

Tujuan Mengisi nilai pada kotak kosong

Deskripsi Fungsional untuk melakukan input nilai pada kotak kosong dalam permainan Sudoku

Aktor User

Skenario Utama

Kondisi Awal User berada di tampilan awal permainan Sudoku

Aksi Aktor Reaksi Sistem

1. Melakukan input nilai pada kotak kosong

2. Menampilkan nilai yang telah dimasukan oleh user

Kondisi Akhir Aplikasi menampilkan nilai yang telah dimasukan oleh user

3. Skenario Use Case Algoritma Genetika

Skenario use case ini menjelaskan interaksi antara aktor, yaitu user

dengan use case Algoritma Genetika yang dijelaskan pada tabel berikut: Tabel 3.12 Skenario Use Case Algoritma Genetika

Identifikasi

Nomor 3

Nama Algoritma Genetika

Tujuan Mencari solusi menggunakan algoritma genetika

(65)

Aktor User

Skenario Utama

Kondisi Awal User berada di tampilan awal permainan Sudoku

Aksi Aktor Reaksi Sistem

1. Memilih tombol Genetika

2. Input bilangan 50 bilangan acak dari 1 hingga 9

3. Inisisalisasi kromosom 4. Evaluasi nilai fitness

5. Melakukan seleksi (roulette wheel) 6. Melakukan crossover

7. Melakukan mutasi 8. Menampilkan hasil

Kondisi Akhir Aplikasi menampilkan hasil (puzzle Sudoku diselesaikan)

4. Skenario Use Case Algoritma Ant Colony Optimization System

Skenario use case ini menjelaskan interaksi antara aktor, yaitu user

dengan use case Algoritma Ant Colony Optimization System yang dijelaskan pada tabel berikut:

Tabel 3.13 Skenario Use Case Algoritma Ant Colony Optimization System

Identifikasi

Nomor 4

Nama Algoritma Ant Colony Optimization System

Tujuan Mencari solusi menggunakan algoritma ant colony optimization system

Deskripsi Fungsional untuk mencari solusi permainan Sudoku dengan menggunakan algoritma ant colony optimization system

Aktor User

Skenario Utama

Kondisi Awal User berada di tampilan awal permainan Sudoku

Aksi Aktor Reaksi Sistem

(66)

2. Input bilangan dari 1 hingga 9

3. Menentukan posisi dan nilai awal setiap

node

4. Membandingkan nilai dari node dengan baris, kolom, dan region

5. Simpan nilai 6. Menampilkan hasil

Kondisi Akhir Aplikasi menampilkan hasil (puzzle Sudoku diselesaikan)

3.1.4.2 Activity Diagram

Activity diagram berisi penjelasan lebih lengkap mengenai urutan suatu proses yang terjadi antara pengguna dan sistem. Aktivitas pertama selalu dimulai dari pengguna, kemudian akan mendapat respon dari sistem yang nantinya akan menampilkan akhir dari proses tersebut.

1. Activity Diagram New Game

Berikut ini merupakan diagram yang menunjukan alur aksi pada aktivitas

New Game yang dapat dilihat pada gambar di bawah ini.

Gambar 3.18 Activity Diagram New Game

User Sistem

Memilih Menu New Game

Melakukan Proses Pembangkitan Puzzle

(67)

2. Activity Diagram Input Value

Berikut ini merupakan diagram yang menunjukan alur aksi pada aktivitas

Input Value yang dapat dilihat pada gambar di bawah ini.

Gambar 3.19 Activity Diagram Input Value

User Sistem

Melakukan Input Nilai Pada Kotak Kosong

(68)

3. Activity Diagram Algoritma Genetika

Berikut ini merupakan diagram yang menunjukan alur aksi pada aktivitas Algoritma Genetika yang dapat dilihat pada gambar di bawah ini.

Gambar 3.20 Activity Diagram Algoritma Genetika

User Sistem

Memilih Tombol Genetika Input 50 bilangan acak dari 1 hinga 9

Inisialisasi : Kromosom=[1..50], Populasi=10

Evaluasi fitness : fitness=jumlah kromosom-jumlah gen error

Seleksi (roullete wheel)

Crossover

Mutasi

(69)

Gambar 3.21 Subactivity Seleksi System

Menghitung total fitness

Pembangkitan nilai acak antara 0 hingga 1

Menghitung nilai probabilitas : fitness / total fitness

Membandingkan nilai probabilitas dengan nilai acak

Simpan di variable smentara

(70)

Gambar 3.22 Subactivity Crossover

Gambar 3.23 Subactivity Mutasi

System

Menentukan posisi awal : bilangan acak dari 1 hingga panjang kromosom(N)

Pertukaran gen 2 kromosom : dari posisi awal hingga N

Menghasilkan kromosom baru

System

Menentukan posisi : bilangan acak dari 1 hingga panjang kromosom(N)

Mengganti gen dengan gen baru : bilangan acak dari 1 hingga 9

(71)

4. Activity Diagram Algoritma Ant Colony Optimization System

Berikut ini merupakan diagram yang menunjukan alur aksi pada aktivitas Algoritma Ant Colony Optimization System yang dapat dilihat pada gambar di bawah ini.

Gambar 3.24 Activity Diagram Algoritma Ant Colony Optimization System

User Sistem

Memilih Tombol ACO System Inisialisasi node (x,y)

Pengecekan nilai pada setiap node

Inisialisasi nilai (1,2,3,4,5,6,7,8,9) untuk node dengan value kosong

Simpan nilai : (x,y)=value

Perbandingan nilai dengan baris, kolom, dan region

Nilai setiap node kosong yang sudah dibandingkan diketahui

nilai berjumlah 1

puzzle terpenuhi Pengecekan nilai apakah pada 1 node memiliki 1 nilai

nilai lebih dari 1

(72)

3.1.4.3 Class Diagram

Class diagram menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem.

Gambar 3.25 Class Diagram

3.1.4.4 Sequence Diagram

(73)

1. Sequence Diagram New Game

Gambar 3.26 Sequence Diagram New Game

2. Sequence Diagram Input Value

Gambar 3.27 Sequence Diagram Input Value

: User

Form1 SudokuGame SudokuControl SudokuCell

1 : pilih New Game()

2 : button5_click()

3 : NewGame()

4 : sudokuControl1.Load()

5 : SudokuControl_Paint()

: User

Form1 SudokuControl SudokuCell

1 : Input Value()

2 : sudokuControl1.Load()

(74)

3. Sequence Diagram Algoritma Genetika

Gambar 3.28 Sequence Diagram Algoritma Genetika

4. Sequence Diagram Algoritma ACO System

Gambar 3.29 Sequence Diagram Algoritma ACO System

: User

Form1 SudokuGame SudokuControl SudokuSolvStep SudokuCell

1 : pilih Genetika()

2 : button2_Click()

3 : Solve()

4 : SudokuSolveStep() 5 : sudokuControl1_Load()

6 : SudokuControl_Paint()

: User

Form1 SudokuGame SudokuControl SudokuSolvStep SudokuCell

1 : pilih ACO System()

2 : button2_Click()

3 : Solve()

4 : SudokuSolveStep() 5 : sudokuControl1_Load()

(75)

3.2 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 Struktur Menu 2. Perancangan Antarmuka 3. Jaringan Semantik 4. Perancangan Method

3.2.1 Perancangan Struktur Menu

Perancangan Struktur menu adalah bagian dari perancangan sistem yang gambarannya disusun berstruktur, dapat berfungsi sebagai navigasi halaman-halaman yang ada dalam aplikasi yang dibangun. Perancangan struktur pada aplikasi ini adalah sebagai berikut:

Main Menu

New Game Solve

Genetika ACO System

Gambar 3.30 Struktur Menu

3.2.2 Perancangan Antarmuka

(76)

T01

Puzzle Sudoku

New Game Solve : ACO System

New Game Resolusi Layar : 812x560 pixel Deskripsi : Tampilan Utama Aplikasi

Gambar 3.31 Tampilan Utama Aplikasi (ACO System)

T01 Resolusi Layar : 630x400 pixel Deskripsi : Tampilan Utama Aplikasi

Gambar

Gambar 2.3 Diagram UML
Tabel 3.13 Skenario Use Case Algoritma Ant Colony Optimization System
Gambar 3.18 Activity Diagram New Game
Gambar 3.19 Activity Diagram Input Value
+7

Referensi

Dokumen terkait

Berdasar hasil perhitungan Z-score pada tabel perhitungan Z-score bank umum swasta nasional devisa tahun 2010 (lampiran), terdapat 6 bank atau 29% bank yang berada dalam kondisi

Memahami makna dalam wacana lisan interpersonal dan transaksional, secara formal maupun informal, dalam bentuk mendengarkan permintaan dan perintah yang berkaitan dengan

Dalam PPIP, jumlah yang diterima oleh peserta pada saat pensiun tergantung pada jumlah iuran dari pemberi kerja, atau iuran peserta dan hasil usaha. Kewajiban dari

Bagi Penyedia Jasa atau Pemilik Kapal yang sedang menjalani pemeriksaan oleh instansi yang terkait, antara lain pihak kepolisian, TNI, Bea Cukai, Perpajakan, atas dugaan

a. Bagian pertama mencakup identitas responden dan penarikan kesimpulan dilakukan dengan melihat jumlah persentase jawaban. Hasil pengolahan data kemudian disajikan dalam

Neuron memiliki bagian-bagian yang sama seperti sel yang lain akan tetapi memiliki kemampuan yang istimewa yaitu kemampuan mentransmisikan sinyal dan

Teguh Widodo.,M.Sc.,Apt, selaku Sekretaris Program Studi Profesi Apoteker Universitas Katolik Widya Mandala Surabaya dan Pembimbing II Praktek Kerja

Jenis data ada dua yaitu data primer yang diperoleh langsung dari responden meliputi: data sisa makanan, keadaan psikis, penampilan makanan dan rasa makanan yang