Anda di halaman 1dari 11

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.

Anda mungkin juga menyukai