Special Interest Group: Computer Science AI Advanced Search 1 of 11
Masalah Graph Bisection
Bagaimana membagi sebuah graph menjadi dua buah sub graph sama besar (jumlah node-nya sama atau berbeda satu) yang meminimasi jumlah busur terpotong? Mungkinkah menggunakan algoritma: Breadth First Search (BFS)? Depth First Search (DFS)? A*? Memilih satu solusi terbaik dari semua solusi yang ada? Pada graph di atas (terdiri dari 6 node), ruang solusinya adalah: 3 C 6 = 6! / (3! (6-3)!) = 20 Bagaimana jika graph-nya terdiri dari 1000 node? 500 C 1000 = 1000! / (500! (1000-500)!) = ? 2 4 1 3 6 5 Special Interest Group: Computer Science AI Advanced Search 2 of 11 Genetic Algorithm Algoritma pencarian yang didasarkan pada mekanisme seleksi alamiah dan genetika alamiah [Goldberg, D.E., Genetic Algorithms in Search, Optimization and Machine Learning, Addison Wesley Publishing Co., 1989] GA dimulai dengan serangkaian solusi awal (kromosom), yang disebut populasi. Populasi ini akan ber-evolusi menjadi populasi yang berbeda melalui serangkaian iterasi. Pada akhir iterasi, GA mengembalikan anggota populasi yang terbaik sebagai solusi untuk masalah tersebut. Operator-operator GA 1. Pindah Silang (cross over) Pindah Silang Satu Titik (titik potong ditentukan secara random) Pindah Silang Dua Titik (titik potong ditentukan secara random) 1 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 Titik Potong 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 Child 1 Child 2 Parent 1 Parent 2 1 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 Titik Potong 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 Child 1 Child 2 Parent 1 Parent 2 Special Interest Group: Computer Science AI Advanced Search 3 of 11 2. Mutasi Mutasi diperlukan untuk mengembalikan informasi bit yang hilang akibat cross over Mutasi diterapkan dengan probabilitas sangat kecil Mutasi yang terlalu sering akan menghasilkan individu yang lemah karena konfigurasi bit pada kromosom yang unggul akan dirusak. Algoritma Genetika Sederhana Random populasi awal Repeat Pilih parent1 dan parent2 dari populasi; Offspring = crossover(parent1,parent2); If Mutable then Mutation(offspring); If Suited(offspring) then Replace(population,offspring); Until stopping condition; Laporkan solusi terbaik; 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 Special Interest Group: Computer Science AI Advanced Search 4 of 11 Kembali ke masalah Graph Bisection Penyelesaian dengan GA Pembagian 6 node pada graph di atas, menjadi dua sub graph, dapat direpresentasikan menggunakan kromosom, seperti gambar di bawah ini. Indeks (1 sampai 6) menyatakan nomor node yang ada pada graph. Angka 0 menyatakan node-node yang menjadi sub graph I, dan angka 1 menyatakan node-node yang menjadi sub graph II. Satu kromosom di bawah ini menyatakan satu solusi. 2 4 1 3 6 5 L1 {1,2,3} {4,5,6} Cut 3 edges L3 {1,3,6} {2,4,5} Cut 4 edges L2 {1,2,4} {3,5,6} Cut 3 edges L4 {1,5,6} {2,3,4} Cut 5 edges 0 0 0 1 1 1 1 2 3 4 5 6 nomor node pada graph Ingat: satu kromosom menyatakan satu solusi. Special Interest Group: Computer Science AI Advanced Search 5 of 11 Perhatikan Algoritma Genetika Sederhana! Misalkan jumlah populasi awal = 4. Proses random menghasilkan 4 kromosom sbb: Repeat Misalkan terpilih dua parent sbb: Misalkan crossover 1 ttitik menghasilkan dua offspring sbb: Misalkan mutable bernilai False Suited(offspring) bernilai True karena Offspring 1 mempunyai nilai fitness yang lebih besar daripada kromosom 4 yang bernilai fitness 1/5. Sehingga Offspring 1 dapat menggantikan kromosom 4. Sedangkan Offspring 2 (dengan nilai fitness 1/5) tidak menggantikan kromosom pada populasi awal. Until stopping condition (Misalkan stopping condition bernilai True, maka GA akan memilih kromosom bernilai fitness terbesar sebagai solusi, yaitu: Sehingga solusinya adalah: sub graph I = {1,3,4} dan sub graph II = {2,5,6} dengan jumlah busur terpotong adalah 2. Parent 1 Parent 2 0 1 0 1 1 0 0 0 1 0 1 1 f = 1/4 f = 1/3 Offspring 1 Offspring 2 0 0 1 1 1 0 0 1 0 0 1 1 f = 1/2 f = 1/5 0 0 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 2 3 4 5 6 f = 1/3 0 1 0 1 1 0 f = 1/4 f = 1/3 f = 1/5 Kromosom 1 Kromosom 2 Kromosom 3 Kromosom 4 0 1 0 0 1 1 f = 1/2 Special Interest Group: Computer Science AI Advanced Search 6 of 11 Skema Pemilihan Orang Tua Pimilihan orang tua didasarkan pada proportional selection scheme, yaitu: Setiap kromosom dipilih sebagai parent berdasarkan suatu probabilitas yang proporsional terhadap nilai fitness masing-masing. Salah satu teknik yang sering digunakan adalah Roulette Wheel. Kromosom Nilai Fitness K1 0.6 K2 0.2 K3 0.6 K4 0.2 K5 0.8 K6 0.2 K7 0.2 K8 0.2 K9 0.2 Jumlah 3.2 Penentuan fungsi fitness bergantung pada masalah yang akan dioptimasi. Skema Penggantian Individu dalam Populasi 1. Selalu mengganti anggota populasi yang memiliki nilai fitness terkecil. 2. Membandingkan anak dengan kedua orang tua (preselection). Apabila anak memiliki nilai fitness yang lebih baik daripada salah satu atau kedua orang tua, anak menggantikan orang tua yang memiliki nilai fitness terendah sebagai anggota populasi. Skema ini dapat menjaga keanekaragaman yang lebih baik dibanding skema sebelumnya. Dengan mengganti orang tua yang memiliki Hamming Distance (beda bit) yang lebih sedikit, penggantian tersebut dapat diharapkan tidak cepat menghilangkan keragaman. 1 2 3 4 5 6 7 8 9 Special Interest Group: Computer Science AI Advanced Search 7 of 11 Kriteria Penghentian 1. Mengambil suatu nilai sebagai batas iterasi. Apabila batas iterasi tersebut dicapai, iterasi dihentikan dan solusi terbaik pada populasi dilaporkan sebagai solusi terbaik pencarian. 2. Menghitung kegagalan penggantian anggota populasi yang terjadi secara berurutan sampai jumlah tertentu. Hal ini berarti bahwa anggota-anggota populasi adalah kemungkinan-kemungkinan solusi yang terbaik dari semua kemungkinan solusi pada ruang pencarian yang ada. Sehingga iterasi lanjutan yang dilakukan tidak akan banyak membantu lebih jauh untuk mendapatkan solusi yang lebih baik. Special Interest Group: Computer Science AI Advanced Search 8 of 11 Masalah Penjadwalan Kuliah Di gedung B STTTelkom terdapat 32 ruang kuliah: 8 ruangan di lantai I, 8 ruangan di lantai II, dan 16 ruangan di lantai III. Dari tiga jurusan dan program diploma dan penjenjangan, setiap semester terdapat 400 sampai 500 kelas kuliah yang harus ditentukan jadwal kuliah dan ruangannya dalam satu minggu (Senin sampai Sabtu). Hari Senin sampai Kamis dan hari Sabtu, jam kuliah adalah 07.00-15.00 (8 jam). Hari Jumat, jam kuliah adalah 07.00-11.00 dan 13.00-15.00 (6 jam). Status dosen dibedakan menjadi dua, yakni dosen Tetap dan dosen Luar Biasa (LB). Seorang dosen mungkin mengajar lebih dari satu kelas kuliah. Rancanglah suatu sistem untuk membuat jadwal kuliah yang seoptimal mungkin menggunakan algoritma genetika. Aturan-aturan yang berlaku adalah sebagai berikut: a. Tidak boleh terjadi bentrok, baik waktu maupun ruangan, untuk dosen dan/atau kelas kuliah yang sama. b. Dosen Tetap maupun dosen LB yang mempunyai jabatan akademik boleh meminta jadwal kuliah, dengan aturan bahwa dosen dengan jabatan akademik Lektor dan Guru Besar lebih diprioritaskan tiga kali lebih besar dibanding dosen berjabatan Asisten Ahli. c. Jadwal kuliah untuk dosen Tetap, diutamakan hari Senin sampai Kamis dengan nilai prioritas empat kali lebih besar dibanding hari Jumat dan Sabtu. Sedangkan untuk dosen LB, diutamakan hari Jumat dan Sabtu dengan nilai prioritas empat kali lebih besar dibanding hari Senin sampai Kamis. Kecuali, atas permintaan dosen yang bersangkutan (lihat aturan b di atas). d. Ruang kuliah yang besar (lantai I dan lantai II) diutamakan untuk kelas kuliah yang jumlah mahasiswanya lebih dari 30 orang. Nilai prioritasnya adalah empat kali lebih besar dibanding kelas kuliah yang jumlah mahasiswanya kurang dari 30 orang. Special Interest Group: Computer Science AI Advanced Search 9 of 11 Langkah-langkah penyelesaian masalah menggunakan GA adalah sbb: 1. Ada banyak cara untuk merepresentasikan jadwal kuliah ke dalam suatu kromosom. Salah satunya adalah sebagai berikut: Diketahui: Jumlah ruangan = 32 ruangan Kelas kuliah = 400 sampai 500 Jumlah jam kuliah (Senin sampai Sabtu) = 8 x 5 + 6 = 46 jam Ingat: satu kromosom merepresentasikan satu solusi. Sehingga satu kromosom merupakan satu jadwal kuliah untuk semua kelas kuliah. Setiap gen terdiri dari 46 slot waktu (1 slot = 1 jam). Untuk 32 ruangan, terdapat 1472 slot waktu (32 ruangan x 46 jam). Misalkan terdapat 500 kelas kuliah, maka angka yang dapat diisikan pada slot 1 sampai 1472 adalah angka 1 sampai 500. Angka-angka tersebut menyatakan nomor kelas kuliah yang menghubungkannya dengan basis data kelas kuliah (Kode MK, Kode Kelas, Jumlah Mahasiswa, Kode Dosen, Status Dosen, Jabatan Akademik Dosen, dsb). Sehingga struktur kromosomnya adalah sbb: 2. Ada banyak cara untuk menentukan rumus fungsi fitness. Untuk menghasilkan fungsi fitness yang adil, kita perlu mempelajari syarat- syarat yang ada sehingga kita dapat menentukan nilai prioritas dari syarat-syarat tersebut. Dari empat syarat yang ada pada soal, kita dapat menentukan urutan dan nilai prioritasnya sebagai berikut: Syarat Nilai prioritas Alasan Tidak bentrok 24 Tidak bentrok tentunya lebih utama dibandingkan harus memenuhi permintaan Lektor atau Guru Besar. Misal nilai prioritasnya dua kali lebih besar. Anggaplah bahwa ketiga syarat yang lain punya nilai prioritas yang sama. Perm. L/GB 12 Perm. AA 4 Ruang Kuliah 4 Status Dosen 4 Special Interest Group: Computer Science AI Advanced Search 10 of 11 Misalkan: JBTK = Jumlah jadwal yang BenTroK dikali nilai prioritas (24). JTGB = Jumlah jadwal yang Tidak sesuai permintaan Guru Besar dikali 12. JTLK = Jumlah jadwal yang Tidak sesuai permintaan LeKtor dikali 4. JTSR = Jumlah jadwal yang Tidak Sesuai Ruangan dikali 4. JTSS = Jumlah jadwal yang Tidak Sesuai Status dosen Tetap atau LB dikali 4. Fungsi fitness digunakan untuk menghitung ke-optimalan suatu jadwal kuliah terhadap batasan yang diberikan. Umumnya, semakin besar nilai fitness, semakin optimal jadwal yang dihasilkan. Sehingga, kita dapat menuliskan rumus fungsi fitness sebagai berikut: F fitness = 24000 (JBTK + JTGB + JTLK + JTSR + JTSS) dimana 24000 didapat dari: (500) x (24+12+4+4+4). Artinya: jika tidak ada batasan yang dilanggar, maka nilai fitness-nya adalah 24000. Dan jika semua batasan dilanggar, maka nilai fitness-nya adalah 0. Contoh: Setelah dilakukan pengecekan semua gen dalam suatu kromosom terhadap basis data yang ada, didapatkan informasi bahwa terdapat: satu jadwal yang tidak sesuai untuk Guru Besar, dua jadwal tidak sesuai ruangannya (kelas kuliah lebih dari 30 mhs dijadwalkan di lantai III), satu jadwal tidak sesuai status dosen (dosen Tetap mengajar hari Sabtu). Maka nilai fitness dari kromosom tersebut adalah: F fitness = 24000 ((0x24) + (1x12) + (0x4) + (2x4) + (1x4)) F fitness = 24000 (0 + 12 + 0 + 8 + 4) F fitness = 23052 Nilai fitness kromosom tersebut tergolong sangat tinggi, yang hanya sedikit melanggar persyaratan yang ada. Tetapi, jika jadwal kuliah seluruh kelas kuliah tidak memenuhi persyaratan yang ada, maka nilai fitness-nya sama dengan 0. Special Interest Group: Computer Science AI Advanced Search 11 of 11 3. Menemukan parameter GA yang optimal dengan cara sbb: Populasi awal Perlu dibuat sebuah fungsi pembangkitan populasi awal yang dapat memenuhi persyaratan-persyaratan di atas. Misalnya, gen yang merepresentasikan ruangan kecil hanya diisi dengan kelas kuliah kecil (kurang dari 30 mahasiswa). Sehingga populasi awal merupakan kromosom-kromosom unggul dengan nilai fitness tinggi. Kemudian dibuat beberapa percobaan untuk jumlah kromosom berbeda pada populasi awal. Misal 50, 75, atau 100 kromosom. Kemudian dilakukan beberapa kali running, mana yang memberikan kromosom dengan rata-rata nilai fitness paling tinggi yang berarti menghasilkan jadwal paling optimal. Cross Over dan Mutasi Karena jumlah gen hanya 32, maka bisa dicoba menggunakan 1 sampai 3 titik potong. Kemudian dianalisis, berapa titik potong yang memberikan grafik kenaikan nilai fitness paling tajam. Hal yang sama dilakukan juga untuk menentukan probabilitas crosover, misal dengan 0.6, 0.7, 0.8, dan 0.9, serta probabilitas mutasi, misal dengan 0,001, 0.005, dan 0,01. GA sangat sesuai untuk: Masalah kombinatorial yang mempunyai ruang solusi besar yang jika menggunakan algoritma lain memerlukan resource sangat besar. Solusi yang diinginkan tidak harus yang paling optimal karena GA tidak dapat menjamin solusi optimal. Sistem real time dengan batasan waktu tertentu. Hal ini karena GA dapat memberikan solusi pada setiap iterasi, sehingga GA dapat dihentikan setiap saat yang diinginkan. Contoh masalah kombinatorial Cutting stock problem Misalnya: pengoptimalan pemotongan beberapa ukuran bahan (seperti kaca, kulit, atau kain) untuk memenuhi beberapa jenis ukuran permintaan. Pemotongan bahan dikatakan optimal jika dapat memenuhi semua permintaan dan menyisakan bahan paling sedikit. Packing List Problem Misalnya: pengoptimalan pengepakan beberapa jenis barang ke dalam beberapa jenis wadah dengan batasa-batasan tertentu. Pengepakan barang dikatakan optimal jika membutuhkan wadah sangat sedikit dan memenuhi semua batasan yang ada.