View
72
Download
0
Embed Size (px)
DESCRIPTION
Algoritma Genetika
Citation preview
SKRIPSI
PENYELESAIAN MASALAH PENJADWALAN MATA KULIAH
DI FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
DENGAN MENGGUNAKAN ALGORITMA GENETIKA
Justina Adamanti 98/120059/PA/07197
Departemen Pendidikan Nasional
Universitas Gadjah Mada
Fakultas Matematika dan Ilmu Pengetahuan Alam
Jogjakarta
2002
SKRIPSI
SOLVING LECTURE TIMETABLING PROBLEM
AT THE FACULTY OF MATHEMATICS AND NATURAL SCIENCES
GADJAH MADA UNIVERSITY USING GENETIC ALGORITHM
Justina Adamanti 98/120059/PA/07197
Departement of National Education
Gadjah Mada University
Faculty of Mathematics and Natural Sciences
Jogjakarta
2002
SKRIPSI
PENYELESAIAN MASALAH PENJADWALAN MATA KULIAH
DI FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
DENGAN MENGGUNAKAN ALGORITMA GENETIKA
Justina Adamanti 98/120059/PA/07197
Sebagai salah satu syarat untuk memperoleh derajat sarjana S1 Program Studi Ilmu Komputer pada Jurusan Matematika
Departemen Pendidikan Nasional
Universitas Gadjah Mada
Fakultas Matematika dan Ilmu Pengetahuan Alam
Jogjakarta
2002
i
PENGESAHAN
PENYELESAIAN MASALAH PENJADWALAN MATA KULIAH
DI FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
DENGAN MENGGUNAKAN ALGORITMA GENETIKA
Justina Adamanti 98/120059/PA/07197
Dinyatakan lulus ujian skripsi oleh tim penguji pada tanggal 14 Oktober 2002
Tim Penguji
Drs. Ign. Purnomo, M.Kom. Pembimbing
Drs. Yusuf, M.A.
Dr. Drs. Retantyo Wardoyo, M.Sc.
Drs. Sri Mulyana, M.Kom.
Drs. Widodo Pr., M.Sc.E.E.
ii
“You don’t need to be the best,
but just do the best you can do”
Kupersembahkan untuk
Tingki Wingki ☺
iii
KATA PENGANTAR
Dengan memanjatkan puji dan syukur kepada Tuhan Yang Maha Esa,
akhirnya skripsi dengan judul PENYELESAIAN MASALAH PENJADWALAN
MATA KULIAH DI FAKULTAS MATEMATIKA DAN ILMU
PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA DENGAN
MENGGUNAKAN ALGORITMA GENETIKA ini dapat diselesaikan. Skripsi
ini disusun untuk memenuhi salah satu syarat untuk memperoleh gelar Sarjana
Komputer di Fakultas Matematika dan Pengetahuan Alam Universitas Gadjah
Mada Yogyakarta.
Penulis menyadari bahwa tanpa bantuan dari berbagai pihak, kiranya sulit
untuk menyelesaikan penulisan skripsi ini. Karenanya dengan penuh kerendahan
hati, penulis mengucapkan terima kasih dan penghargaan setinggi-tingginya
kepada:
1. Bapak, Mama, Gati dan Nyo atas segala dukungan yang diberikan selama ini.
2. Drs. Ign. Purnomo,M.Kom, selaku dosen pembimbing yang telah memberikan
bimbingan dan pengarahan sejak persiapan hingga tersusunnya skripsi ini.
3. Drs. Sri Mulyana, M.Kom, selaku dosen wali dan dosen penguji.
4. Drs. Yusuf, M.A., Dr. Drs. Retantyo Wardoyo, M.Sc., dan Drs. Widodo Pr.,
M.Sc.E.E. selaku dosen penguji.
5. Dr. Kusminarto atas bantuan data dan wawancara mengenai proses pembuatan
jadwal kuliah setiap semester.
iv
6. Herman, B.Sc., kepala bagian pengajaran FMIPA dan Nurochman, S.Si,
M.Kom., atas bantuan data penjadwalan Fakultas MIPA.
7. Drs. Y. Suyanto, M.Ikom., Drs. Bambang Prastowo, M.Sc., beserta seluruh
dosen dan staf UPT Puskom yang telah banyak membimbing dan membantu
saya selama bergabung sebagai programmer di UPT Komputer Universitas
Gadjah Mada.
8. Seluruh dosen Ilmu Komputer yang telah banyak membagikan ilmunya
kepada saya selama saya belajar disini.
9. Teman-teman angkatan 98 Ilmu Komputer; Adit Miauw, Jessi Jessot, Tommy
Gon, Fery Wu, Boaz Jr., Topan Jombret, Eko Haryadi, Antoni, Poni, Jeeny,
Yenny, Bambang, Babun, Faizal, Bebek, Dedi, Aga, Johana ‘Joshua’, Epi,
Muji Njet, Eko SW, Ochie, Rustam, Yoga, Aina dan semua teman FMIPA
yang tidak terdaftar disini.
10. Teman-teman seperjuangan di Puskom sejak jaman kuda hingga saat terakhir
disana: Mas Wahyu, Mas Bayu, Mas Yoga, Mas Asnawai, Mas Yoyok, Mas
Suryo, Mas Arlin, Mbak Rini, Mas Caiq, Mas Sidu, Krishna, Awal, Edi, Tris.
11. Eka, Ning Jret, Kak Linda, Pipit beserta semua pihak yang telah banyak
membantu yang tidak dapat penulis sebutkan satu persatu.
Penulis menyadari sepenuhnya bahwa skripsi ini masih sangat jauh dari
sempurna, namun besar harapan penulis semoga sumbangsih yang sedikit ini
dapat memberikan manfaat terutama bagi perkembangan ilmu pengetahuan serta
berguna bagi penelitian selanjutnya.
v
Jogjakarta, Oktober 2002
Penulis
vi
DAFTAR ISI
Lembar Judul ..................................................................................................... i
Lembar Pengesahan ........................................................................................... ii
Lembar Persembahan ......................................................................................... iii
Kata Pengantar ................................................................................................... iv
Daftar Isi ............................................................................................................ vii
Daftar Tabel ....................................................................................................... x
Daftar Gambar .................................................................................................... xi
Intisari ................................................................................................................ xiv
BAB I PENDAHULUAN .................................................................................. 1
1.1 Latar Belakang Masalah .................................................................. 1
1.2 Rumusan Masalah ............................................................................ 5
1.3 Batasan Masalah .............................................................................. 5
1.4 Manfaat Penelitian ........................................................................... 6
1.5 Tujuan Penelitian ............................................................................. 6
1.6 Sistematika Penulisan ...................................................................... 7
BAB II TINJAUAN PUSTAKA ........................................................................ 9
BAB III DASAR TEORI ................................................................................... 11
3.1 Latar Belakang Biologi .................................................................... 11
3.2 Algoritma Genetika .......................................................................... 13
3.3 Pengkodean ...................................................................................... 16
3.3.1 Pengkodean biner (binary encoding) ................................ 16
vii
3.3.2 Pengkodean permutasi (permutation encoding) ............... 17
3.3.3 Pengkodean nilai (value encoding) ................................... 18
3.3.4 Pengkodean pohon (tree encoding) .................................. 19
3.4 Operator dalam Algoritma Genetika ................................................ 23
3.4.1 Seleksi ............................................................................... 23
3.4.2 Perkawinan silang ............................................................. 28
3.4.3 Mutasi ............................................................................... 33
3.5 Update Generasi ............................................................................... 36
3.6 Parameter dalam Algoritma Genetika .............................................. 37
BAB IV URAIAN PERMASALAHAN
DAN PENDEKATAN PENYELESAIAN ............................................ 41
4.1 Sekilas Tentang Sistem Penjadwalan Mata Kuliah di
Lingkungan Fakultas MIPA ....................................................... 41
4.1.1 Mekanisme penjadwalan di Fakultas MIPA ..................... 42
4.1.2 Karakteristik komponen utama ......................................... 43
4.1.3 Atauran umum penjadwalan ............................................. 46
4.1.4 Aturan khusus penjadwalan di Fakultas MIPA ................ 48
4.2 Model Matematika ........................................................................... 51
4.2.1 Aturan yang harus dilaksanakan ....................................... 53
BAB V METODOLOGI PENELITIAN ............................................................ 54
5.1 Bahan dan Sumber Data ................................................................... 54
5.2 Alat ................................................................................................... 54
5.3 Parameter Penelitian ........................................................................ 54
viii
5.4 Cara Penelitian ................................................................................. 55
BAB VI HASIL PENELITIAN DAN PEMBAHASAN ................................... 57
6.1 Model Genetika ................................................................................ 57
6.2 Model Program Komputer ............................................................... 60
6.2.1 Penggunaan data dan penjelasan struktur basis data ........ 60
6.2.2 Asumsi .............................................................................. 63
6.2.3 Representasi dan pengkodean kromosom
dalam program .................................................................. 65
6.2.4 Fungsi obyektif/ fungsi fitness .......................................... 66
6.2.5 Parameter algoritma genetika dalam program .................. 74
6.2.6 Pembagian ruang ............................................................... 82
6.2.7 Deskripsi program ............................................................. 83
6.2.8 Penerapan program pada penjadwalan kuliah di FMIPA . 93
BAB VII PENUTUP .......................................................................................... 102
7.1 Kesimpulan ...................................................................................... 102
7.2 Saran ................................................................................................ 103
DAFTAR PUSTAKA ........................................................................................ 104
LAMPIRAN CONTOH HASIL PROGRAM .................................................... 105
LAMPIRAN DATA PENDUKUNG ................................................................. 119
ix
DAFTAR TABEL
Tabel 4.1 Daftar jurusan dan program studi di Fakultas MIPA ......................... 41
Tabel 4.2 Contoh dosen dan mata kuliah yang diampunya ............................... 43
Tabel 4.3 Contoh paket mata kuliah .................................................................. 44
Tabel 4.4 Daftar jam kuliah ............................................................................... 45
Tabel 4.5 Ruang dan kapasitasnya ..................................................................... 45
Tabel 4.6 Contoh penjadwalan mata kuliah ....................................................... 46
Tabel 6.1 Nilai pinalti untuk masing-masing aturan .......................................... 66
Tabel 6.2 Kombinasi default parameter genetika .............................................. 94
Tabel 6.3 Hasil uji seleksi turnamen, rangking dan roda roulette ..................... 95
Tabel 6.4 Statistika seleksi turnamen, rangking dan roda roulette .................... 95
Tabel 6.5 Hasil uji perkawinan silang banyak titik dan rekombinasi ................ 97
Tabel 6.6 Statistika perkawinan silang .............................................................. 97
Tabel 6.7 Hasil uji elitsm dan tanpa elitsm ........................................................ 98
Tabel 6.8 Statistika elitsm dan tanpa elitsm ....................................................... 98
Tabel 6.9 Hasil uji jumlah populasi 20, 40, 60 dan 100 .................................... 100
Tabel 6.10 Statistika jumlah populasi 20, 40, 60 dan 100 ................................. 100
x
DAFTAR GAMBAR
Gambar 3.1 Ruang pencarian x dengan fungsi optimum f(x) ............................ 14
Gambar 3.2 Contoh kromosom dengan pengkodean biner ................................ 16
Gambar 3.3 Contoh kromosom dengan pengkodean permutasi ........................ 17
Gambar 3.4 Contoh kromosom dengan pengkodean nilai ................................. 18
Gambar 3.5 Contoh kromosom dengan pengkodean pohon .............................. 20
Gambar 3.6 Contoh populasi dengan 5 kromosom beserta fitnessnya .............. 24
Gambar 3.7 Probabilitas terpilihnya suatu kromosom dalam roda roulette ....... 24
Gambar 3.8 Keadaan sebelum dirangking ......................................................... 27
Gambar 3.9 Keadaan setelah dirangking ........................................................... 27
Gambar 3.10 Contoh perkawinan silang 1-titik pada pengkodean biner ........... 29
Gambar 3.11 Contoh perkawinan silang 2-titik pada pengkodean biner ........... 30
Gambar 3.12 Contoh perkawinan silang seragam pada pengkodean biner ....... 30
Gambar 3.13 Contoh perkawinan silang aritmatika pada pengkodean biner .... 30
Gambar 3.14 Contoh perkawinan silang rekombinasi pada pengkodean
biner ................................................................................................................... 31
Gambar 3.15 Contoh perkawinan silang 1-titik pada pengkodean permutasi ... 32
Gambar 3.16 Contoh perkawinan silang 1-titik pada pengkodean nilai bilangan
bulat .................................................................................................................... 32
Gambar 3.17 Contoh perkawinan silang 2-titik pada pengkodean nilai bilangan
bulat .................................................................................................................... 32
Gambar 3.18 Contoh perkawinan silang 1-titik pada pengkodean pohon ......... 33
xi
Gambar 3.19 Contoh mutasi pada pengkodean biner ........................................ 34
Gambar 3.20 Contoh mutasi pada pengkodean permutasi ................................. 35
Gambar 3.21 Contoh mutasi pada pengkodean nilai riil dengan nilai yang
ditambahkan atau dikurangkan dengan 0,10 ...................................................... 35
Gambar 3.22 Contoh kromosom sebelum dan sesudah mutasi dengan
pengkodean pohon ............................................................................................. 36
Gambar 6.1 Model kromosom dengan komponen dosen, mata kuliah ,
ruang dan waktu ................................................................................................. 58
Gambar 6.2 Model Fase I ................................................................................... 60
Gambar 6.3 Model Fase II ................................................................................. 60
Gambar 6.4 Skema basis data ............................................................................ 63
Gambar 6.5 Tampilan utama program ............................................................... 83
Gambar 6.6 Form login ...................................................................................... 84
Gambar 6.7 Form input semester aktif ............................................................... 86
Gambar 6.8 Form input data program studi ....................................................... 86
Gambar 6.9 Form input jenis ruangan ............................................................... 87
Gambar 6.10 Form input data ruangan .............................................................. 87
Gambar 6.11 Form input data mata kuliah ........................................................ 88
Gambar 6.12 Form input data dosen .................................................................. 88
Gambar 6.13 Form input waktu kesediaan dosen .............................................. 89
Gambar 6.14 Form input data hari dan jam kuliah ............................................ 89
Gambar 6.15 Form input data jenis paket mata kuliah ...................................... 90
Gambar 6.16 Form input data isi paket mata kuliah .......................................... 90
xii
Gambar 6.17 Form input data penjadwalan kuliah ............................................ 91
Gambar 6.18 Form konfigurasi parameter genetika .......................................... 91
Gambar 6.19 Form konfigurasi tampilan file log .............................................. 92
Gambar 6.20 Form proses penjadwalan dengan algoritma genetika ................. 93
Gambar 6.21 Grafik perbandingan seleksi turnamen, rangking
dan roda roulette ................................................................................................ 96
Gambar 6.22 Grafik perbandingan perkawinan silang banyak titik dan
rekombinasi ........................................................................................................ 97
Gambar 6.23 Grafik perbandingan elitsm dan tanpa elitsm .............................. 99
Gambar 6.24 Grafik perbandingan jumlah populasi .......................................... 100
xiii
INTISARI
PENYELESAIAN MASALAH PENJADWALAN MATA KULIAH
DI FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
DENGAN MENGGUNAKAN ALGORITMA GENETIKA
Justina Adamanti 98/120059/PA/07197
Penyusunan jadwal kuliah setiap semester adalah suatu pekerjaan yang sangat rumit karena harus mengkombinasikan antara mata kuliah yang ditawarkan, waktu kesediaan dosen, ruangan, paket mata kuliah yang diambil oleh mahasiswa dan dilengkapi dengan sejumlah aturan yang harus dilaksanakan. Pembuatan jadwal baru sangat menyita waktu, sedangkan masih banyak pekerjaan lain yang juga harus diselesaikan. Oleh karena itu tak jarang bagian pengajaran fakultas menggunakan jadwal terdahulu.
Masalah penjadwalan kuliah merupakan salah satu masalah NP-complete, yaitu masalah yang susah untuk dicari penyelesaiannya tetapi jika ditemukan suatu solusi akan sangat mudah mengecek kebenarannya.
Algoritma genetika adalah salah satu algoritma heuristik yang dapat dipergunakan untuk menyelesaikan masalah NP-complete. Penggunaan algoritma genetika untuk menyelesaikan seputar masalah penjadwalan telah banyak dipergunakan oleh para peneliti bidang ini. Salah satunya adalah penyelesaian masalah penjadwalan mata kuliah yang lengkap dengan semua aturannya yang dikerjakan oleh Ho Sung C. Lee sebagai tesisnya di Universitas Ateneo, Filipina. Pada skripsi ini, penulis mencoba menyelesaikan masalah penjadwalan mata kuliah menggunakan model yang juga dipergunakan oleh Ho Sung C. Lee, tetapi dengan beberapa modifikasi pada implementasinya sebagai penyesuaian dengan sistem perkuliahan di Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada pada khususnya dan sistem perkuliahan di Indonesia pada umumnya.
xiv
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Pengertian jadwal menurut kamus besar bahasa Indonesia adalah
pembagian waktu berdasarkan rencana pengaturan urutan kerja; daftar atau tabel
kegiatan atau rencana kegiatan dengan pembagian waktu pelaksanaan yang
terperinci, sedangkan pengertian penjadwalan adalah proses, cara, perbuatan
menjadwalkan atau memasukkan dalam jadwal. Menurut Heizer dan Render,
1996 (Lee,2000) penjadwalan berhubungan dengan alokasi yang memuaskan
antara sumber daya dan waktu untuk mencapai kelancaran tugas organisasi .
Universitas adalah perguruan tinggi yang terdiri atas sejumlah fakultas
yang menyelenggarakan pendidikan ilmiah dan/atau profesional dalam sejumlah
disiplin ilmu tertentu. Pelaksanaan semua kegiatan di universitas memerlukan
banyak tenaga kerja, sedangkan pada kenyataannya jumlah tenaga yang ada
terbatas karena berbagai alasan, salah satunya adalah kebijakan jumlah pegawai.
Oleh karena itu banyak sekali kegiatan yang harus dijadwalkan untuk mengurangi
konflik yang tidak seharusnya terjadi dan efisiensi dari tenaga kerja yang
jumlahnya terbatas.
Beberapa contoh kegiatan di universitas yang memerlukan penjadwalan
antara lain penjadwalan proses penerimaan mahasiswa baru, penjadwalan rapat
pejabat universitas dan fakultas, penjadwalan pelatihan keahlian tertentu bagi
pegawai universitas, penjadwalan proses herregistrasi mahasiswa lama,
1
2
penjadwalan dan pembagian lokasi mahasiswa pada kegiatan KKN (Kuliah Kerja
Nyata), penjadwalan mata kuliah dan ujian di setiap fakultas dan sejumlah
masalah penjadwalan yang lain.
Penjadwalan yang diteliti pada penelitian ini akan berkisar pada masalah
penjadwalan kegiatan utama akademik universitas, atau secara sederhananya
kegiatan mengajar dan menguji mahasiswa. Ada 2 macam masalah penjadwalan
yang bisa dibuat dari kegiatan mengajar dan menguji, yaitu masalah penjadwalan
mata kuliah dan masalah penjadwalan ujian mata kuliah. Keduanya adalah hal
yang hampir sama, setidaknya pada komponen-komponen utama pendukungnya.
Masalah penjadwalan yang dipilih lebih spesifik untuk diselesaikan pada
penelitian kali ini adalah masalah penjadwalan mata kuliah.
Penjadwalan mata kuliah (lecture timetabling) adalah masalah
menempatkan waktu dan ruangan kepada sejumlah kuliah, tutorial, dan kegiatan
akademik sejenis, dengan memperhatikan sejumlah aturan yang berhubungan
dengan kapasitas dan lokasi dari ruangan yang tersedia, waktu bebas yang
diperlukan dan sejumlah aturan lain yang berkaitan dengan toleransi untuk dosen,
dan hubungan antara mata kuliah khusus (Ross, 1994).
Komponen-komponen utama dari penjadwalan mata kuliah adalah dosen,
mahasiswa, mata kuliah yang ditawarkan, waktu dan ruangan kelas. Hasil dari
proses penjadwalan mata kuliah merupakan pengelompokan komponen-
komponen utama secara bersama-sama dengan memperhatikan aturan-aturan yang
telah ditetapkan dalam penjadwalan mata kuliah (Lee,2000).
3
Masalah penjadwalan mata kuliah menjadi sangat kompleks dan tergolong
masalah NP-complete ketika melibatkan puluhan bahkan ratusan dosen,
mahasiswa, ruangan dan mata kuliah yang ditawarkan karena semakin banyak
kombinasi dari komponen yang mungkin terjadi, dimana dalam pemilihan
kombinasi harus diperhatikan aturan-aturan yang telah ditetapkan dalam
pembuatan jadwal.
Masalah NP-complete (nondeterministic polynomial) adalah masalah yang
sangat sulit ditemukan solusinya (intractable problem), yang tidak dapat
diselesaikan dengan waktu polinomial, tetapi jika suatu solusi untuk satu masalah
NP-complete ditemukan, misalnya dengan ditemukannya suatu algoritma waktu
polinomial (polynomial-time algorithm), maka untuk semua masalah yang
tergolong NP-complete lainnya juga dapat dicari solusinya dengan
mentransformasikan algoritma tersebut ke masalah NP-complete yang lain
(Oskar, 1999).
Umumnya masalah penjadwalan mata kuliah diselesaikan dengan
membuat tabel jadwal secara manual, cara ini membutuhkan waktu yang lama
untuk menyelesaikannya dan seringkali semakin banyak jumlah anggota
komponen yang terlibat maka semakin banyak aturan penjadwalan yang tidak
dapat dipenuhi. Cara lain adalah dengan menggunakan penjadwalan yang telah
dipergunakan tahun atau semester sebelumnya dengan beberapa modifikasi sesuai
keadaan dan anggota komponen yang baru.
Algoritma genetika merupakan salah satu jenis utama dari algoritma
evolusioner (evolutionary algorithm) yang diinspirasi oleh teori evolusi dalam
4
konsep biologi oleh Darwin, dimana di dalam proses evolusi dapat terjadi
perkawinan silang (cross over) dan mutasi (mutation). Algoritma genetika dimulai
dengan memilih himpunan penyelesaian, digambarkan dengan kromosom, yang
disebut dengan populasi. Solusi dari satu populasi diambil untuk membentuk
populasi baru, dimana pemilihannya tergantung dari fitness terbaiknya. Hal ini
dimotivasi dengan harapan bahwa populasi yang baru akan lebih baik
dibandingkan populasi terdahulu. Proses ini dilakukan berulang-ulang hingga
kondisi tertentu terpenuhi.
Algoritma genetika biasanya digunakan untuk menyelesaikan masalah
kombinatorial dan NP-complete yang tergolong sulit. Algoritma ini telah
diterapkan dalam berbagai masalah sain dan teknik, menurut Mitchell dan Forrest,
1993 (Oskar, 1999) antara lain pada masalah optimation, automatic programming,
machime and robot learning, economic models, immune system models,
ecological models, population genetic models, interaction between evolution and
learning, models of social systems, serta masalah-masalah yang berkisar pada
penyelesaian masalah (problem solving) dan permodelan (modelling).
Pada penelitian mengenai penyelesaian masalah penjadwalan mata kuliah
kali ini penulis memilih menggunakan algoritma genetika karena ketertarikan
sebagai sesuatu yang baru, dimana algoritma ini berbeda dengan algoritma yang
biasa digunakan. Keunikannya adalah mengikuti pola evolusi makhluk hidup dan
sering menggunakan bilangan-bilangan yang dihasilkan secara random. Dari
bilangan-bilangan yang dihasilkan secara random, tetapi sesuai aturan-aturan yang
5
ada, dapat dihasilkan suatu solusi yang sama atau mendekati target yang ingin
dicapai.
Bahasa pemrograman yang akan digunakan untuk mengembangkan
program adalah Delphi dengan basis data Interbase. Alasan penulis menggunakan
bahasa Delphi karena merupakan bahasa prosedural, sehingga dapat dengan
mudah memecah bagian-bagian proses algoritma genetik menjadi prosedur-
prosedur, sedangkan basis data Interbase karena Delphi mendukung penggunaan
basis data tersebut dan memberikan sejumlah kemudahan.
1.2 Rumusan Masalah
Dari uraian di atas dapat dirumuskan masalah yang diteliti, yaitu
menyelesaikan masalah pembuatan jadwal mata kuliah di Fakultas Matematika
dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada, dengan menggunakan
algoritma genetika.
1.3 Batasan Masalah
Masalah penjadwalan yang diteliti adalah penjadwalan mata kuliah, yaitu
penempatan dosen dan kelas kuliah dan hanya akan digunakan untuk
menyelesaikan masalah penjadwalan pada strata S1 reguler di Fakultas
Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada. Kasus yang
diambil adalah penjadwalan mata kuliah dengan situasi dan kondisi semester
genap, tahun akademik 2001/2002.
6
1.4 Manfaat Penelitian
Hasil penelitian diharapkan dapat memberi manfaat yang berarti bagi
Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada, bagi
penulis dan bagi ilmu pengetahuan pada umumnya.
Bagi Fakultas MIPA, program yang dihasilkan diharap dapat
dikembangkan lebih lanjut untuk membantu menyelesaikan masalah penjadwalan
mata kuliah secara komputerisasi.
Bagi penulis, dapat mempelajari, memahami dan menerapkan algoritma
genetika untuk menyelesaikan masalah penjadwalan kuliah.
Bagi ilmu pengetahuan di Indonesia, penelitian ini diharapkan dapat
memberikan alternatif penyelesaian secara komputerisasi masalah penjadwalan
mata kuliah di tingkat perguruan tinggi yang diterapkan pada sistem perkuliahan
Indonesia yang pada gilirannya akan memperluas cakrawala penggunaan
algoritma genetika di Indonesia.
1.5 Tujuan Penelitian
Tujuan dari penelitian yang akan dilakukan adalah:
1. Membuat model genetika untuk masalah penjadwalan mata kuliah.
2. Membuat algoritma genetika untuk penyelesaian penjadwalan mata kuliah.
3. Membuat program penjadwalan kuliah sebagai bentuk penerapan dari
algoritma genetika yang diteliti.
4. Menerapkan program penjadwalan kuliah pada data penjadwalan kuliah di
Fakultas Matematika dan Ilmu Pengetahuan Alam.
7
1.6 Sistematika Penulisan
Untuk lebih memperjelas penyampaian materi dari penulisan penelitian
ini, maka penulisan akan dibagi menjadi beberapa bab.
Bab pertama, Pendahuluan. Bab ini menjelaskan tentang latar belakang
pemilihan materi, perumusan masalah, batasan masalah, manfaat penelitian,
tujuan penelitian serta sistematika penulisan penelitian ini.
Bab kedua, Tinjauan Pustaka. Bab ini menyajikan penelitian sejenis yang
dilakukan oleh pihak lain.
Bab ketiga, Landasan Teori. Bab ini memberikan dasar teori tentang
algoritma genetika yang digunakan untuk menyelesaikan masalah.
Bab keempat, Uraian Permasalahan dan Pendekatan Penyelesaian. Bab ini
berisi tentang sistem penjadwalan di Fakultas Matematika dan Ilmu Pengetahuan
Alam, komponen utama, aturan-aturan yang digunakan dan model matematika
dari masalah penjadwalan mata kuliah.
Bab kelima, Metodologi Penelitian. Bab ini berisi keterangan bahan dan
sumber data, alat dan tools, parameter penelitian yang digunakan, dan cara
penelitian dilakukan.
Bab keenam, Hasil Penelitian dan Pembahsan. Bab ini merupakan inti dari
penulisan penelitian ini karena berisi hasil dan pembahasan dari penelitian yang
dilakukan.
Bab ketujuh, Penutup. Bab ini berisi kesimpulan dari uraian yang telah
disampaikan dari bab-bab sebelumnya serta saran-saran dari penulis untuk
8
penelitian dan pengembangan penyelesaian masalah penjadwalan dengan
algoritma genetika selanjutnya.
BAB II
TINJAUAN PUSTAKA
Penyelesaian masalah penjadwalan kuliah dengan algoritma genetika juga
telah dilakukan oleh banyak pihak, diantaranya adalah Penjadwalan kuliah di
Ateneo de Manila University dibuat oleh Ho sung C. Lee, yang juga merupakan
tesisnya untuk memperoleh gelar master pada matematika terapan. Kekhasan dari
algoritma genetika yang disajikan oleh Lee adalah pemisahan kromosom menjadi
2 bagian untuk mengurangi kompleksitas komputasi yang dilakukan. Bagian
pertama menyelesaikan masalah penempatan waktu untuk mata kuliah yang ada,
dimana setiap mata kuliah telah memiliki dosen pengampu, dan bagian kedua
menyelesaikan masalah penempatan ruangan bagi setiap mata kuliah. Hal serupa
juga diterapkan pada penelitian yang telah dilakukan oleh penulis.
Penelitian mengenai penyelesaian masalah penjadwalan kuliah dengan
algoritma genetika juga pernah dilakukan di jurusan teknik elektronika, Fakultas
Teknik Industri, Institut Teknologi Surabaya, oleh Achmad Basuki, Mochammad
Sahal dan Mauridhi Heri Purnomo. Selain penjadwalan kuliah mereka juga
menyelesaikan masalah penjadwalan ujian. Model yang digunakan dalam
pembuatan jadwal adalah timetable, yaitu satu jadwal jadi adalah satu individu,
kromosom dari individu adalah susunan jadwal berdasarkan hari, jam dan ruang
sedangkan gen adalah satu hari, satu jam, satu mata kuliah dan satu dosen.
Sebagian besar ide dasar dalam penelitian ini akan diambil dari tesis Ho
Sung C. Lee dengan beberapa perubahan agar dapat diterapkan pada sistem
9
10
perkuliahan di Fakultas Matematika dan Ilmu Pengetahuan Alam, UGM, yaitu
menggunakan sistem perhitungan SKS dan penempatan yang pasti bagi setiap
mahasiswa pada suatu kelas mata kuliah, misalnya seorang mahasiswa yang
mendapat kelas A untuk mata kuliah kalkulus, maka ia harus mengikuti kuliah di
kelas A, bukan di kelas yang lain.
BAB III
DASAR TEORI
Algoritma genetika merupakan algoritma heuristik atau pendekatan yang
menerapkan proses seleksi alam dan evolusi yang dikemukakan oleh Charles
Darwin. Algoritma genetik pertama kali diperkenalkan oleh John Holland pada
tahun 1960-an dan pengembangan lebih lanjut dilakukan oleh Holland bersama
murid-murid dan rekan sekerjanya di Universitas Michigan pada tahun 1960-an
dan 1970-an.
Sebagai ide dasar heuristik, algoritma genetika dimulai dengan
sekumpulan solusi yang direpresentasikan dengan kromosom, disebut populasi.
Semua solusi dari satu populasi diambil dan digunakan untuk membentuk
populasi baru. Hal ini dimotivasi dengan harapan populasi baru akan lebih baik
daripada populasi lama. Solusi terpilih yang merupakan orangtua pembentuk
keturunan (offspring), dipilih berdasarkan lingkungannya atau nilai fitness,
semakin baik maka semakin besar kesempatan yang dimiliki untuk bertahan dan
bereproduksi. Hal ini dilakukan berulang kali hingga memenuhi beberapa kondisi
penghentian, misalnya jumlah generasi atau tercapainya hasil yang dicari.
3.1 Latar Belakang Biologi
Setiap makhluk hidup terdiri atas banyak sel. Di dalam setiap sel terdapat
sekumpulan kromosom yang sama. Kromosom merupakan sederetan DNA
(Deoxyribonucleid acid) yang berperan sebagai pembentuk individu secara
11
12
keseluruhan. Setiap kromosom terdiri dari banyak gen yang merupakan blok-blok
DNA. Setiap gen berperan menyandikan suatu protein tertentu, atau dapat
dikatakan bahwa setiap gen berperan menyandikan suatu karakteristik (bentuk-
bentuk tubuh dan juga aturan perkembangan dari makhluk hidup), misalnya warna
mata. Kemungkinan dari karakteristik disebut allele. Setiap gen memiliki posisi
pada kromosom yang disebut locus.
Genome1 adalah kumpulan lengkap dari semua materi genetik (semua
kromosom) atau sekumpulan gen-gen. Kumpulan dari gen-gen tertentu dalam
genome disebut genotype. Phenotype suatu organisme adalah bentuk fisiknya,
hasil perkembangan dari genotype. Morphogenesis adalah proses dari
mendekodekan suatu genotype dan membentuk phenotype yang sesuai.
Istilah mutasi digunakan untuk menggambarkan sembarang proses yang
menyebabkan perubahan pada nilai gen, sedangkan istilah rekombinasi digunakan
untuk menggambarkan proses yang mengambil 2 atau lebih genotype, dan
memproduksi genotype baru dengan mencampurkan gen-gen yang dipilih. Dalam
sistem biologi, bentuk rekombinasi yang sering digunakan adalah perkawinan
silang (crossover). Proses ini memotong kromosom pada titik p, kemudian
mengawinkan bagian-bagian tersebut untuk membentuk kromosom baru. Operasi
ini sering disebut perkawinan silang 1-titik, selain itu juga terdapat perkawinan
silang 2-titik hingga orde yang lebih tinggi.
1 Dalam peristilahan algoritma genetika, istilah genome dan kromosom dianggap sinonim
13
Proses lain dalam sistem alam yang juga berhubungan dengan genetika
adalah inversi2 (inversion) yang memberikan jalan bagi gen-gen yang “baik”
untuk berpindah lebih dekat sesamanya. Ini meningkatkan probabilitas bahwa
gen-gen yang “baik” tersebut akan ditransmisikan bersama ke generasi
mendatang.
3.2 Algoritma Genetika
Algoritma genetika dapat didefinsikan sebagai suatu model dari machine
learning yang menurunkan kelakuannya dari beberapa mekanisme evolusi di
alam, dari suatu populasi yang merupakan representasi abstrak dari kandidat
solusi bagi suatu masalah optimisasi yang diseleksi, dikombinasi, dimutasi dan
kemudian dihilangkan atau dipertahankan, berdasarkan fitness relatifnya.
Sifat dari algoritma genetika adalah mencari kemungkinan-kemungkinan
dari kandidat solusi untuk mendapatkan suatu solusi yang optimal bagi
penyelesaian masalah. Ruang cakupan dari semua solusi yang layak (feasible)
yaitu obyek-obyek diantara solusi yang sesuai dinamakan ruang pencarian (search
space). Tiap titik dalam ruang pencarian merepresentasikan satu solusi yang layak
yang dapat ditandai dengan nilai fitness yang sesuai dengan masalah. Solusi yang
dicari dalam algoritma genetika adalah titik (1 atau lebih) di antara solusi yang
layak dalam ruang pencarian. Sifat dari pencarian inilah yang menyebabkan
algoritma genetika baik diterapkan untuk menyelesaikan masalah NP-complete.
2 Proses inversi dalam algoritma genetika sudah jarang digunakan karena mahalnya komputasi
14
Dalam ruang pencarian, hal yang harus dipikirkan sehubungan dengan
penggunaan algoritma genetika untuk masalah optimisasi adalah bahwa algoritma
genetika harus dapat melakukan eksploitasi titik-titik solusi dalam ruang
pencarian yang telah diperoleh kemudian mengevaluasinya, dan mengeksplorasi
titik-titik baru dalam ruang pencarian, sedangkan eksploarsi penting untuk
menghindari terperangkapnya pencarian dalam optimum lokal (local optima),
yaitu titik-titik dalam ruang pencarian yang optimum pada bagian ruang pencarian
tertentu saja, sedangkan dalam optimisasi, hasil yang diharapkan adalah optimum
global (global optima), yaitu titik-titik yang paling optimum dalam seluruh ruang
pencarian (Oskar, 1999).
f(x)
x
Optimum
Optimum Lokal Optimum Lokal
Gambar 3.1 Ruang pencarian x dengan fungsi optimum f(x) Terdapat satu titik optimum global dan tiga titik optimum lokal
Istilah fungsi evaluasi dan fungsi fitness sering saling dipertukarkan
penggunaannya. Akan tetapi, adalah berguna untuk membedakan kedua fungsi
tersebut dalam algoritma genetika. Fungsi evaluasi, atau fungsi obyektif,
merupakan suatu pengukuran performansi terhadap sekumpulan parameter
15
tertentu. Fungsi fitness mentransformasikan pengukuran performansi tersebut
dalam suatu alokasi kesempatan bereproduksi. Evaluasi terhadap suatu barisan
yang menyatakan sekumpulan parameter tertentu adalah independen dari evaluasi
terhadap barisan-barisan lain. Fitness suatu barisan selalu didefinisikan
berdasarkan anggota-anggota lain dalam populasi. Secara umum fitness
didefinisikan ff i / dengan adalah fungsi evaluasi dengan kromsom i dan if f
adalah evaluasi rata-rata dari semua kromosom dalam populasi.
Secara sederhana, proses algoritma genetika adalah sebagai berikut:
1. [Mulai] Membangun populasi random sebanyak n kromosom (sesuai dengan
masalahnya)
2. [Fitness] Evaluasi setiap fitness f(x) dari setiap kromosom x pada populasi
3. [Populasi baru] Membuat populasi baru dengan mengulang langkah-langkah
berikut sampai populasi lengkap.
1. [Seleksi] Pilih 2 kromosom orangtua dari populasi berdasarkan
fitnessnya (semakin besar fitnessnya semakin besar kemungkinannya
untuk terpilih)
2. [Perkawinan silang] Sesuai dengan besarnya kemungkinan
perkawinan silang, orangtua terpilih disilangkan untuk membentuk
anak. Jika tidak ada perkawinan silang, maka anak merupakan salinan
dari orangtuanya.
3. [Mutasi] Sesuai dengan besarnya kemungkinan mutasi, anak dimutasi
pada setiap lokus (posisi pada kromosom).
4. [Penerimaan] Tempatkan anak baru pada populasi baru.
16
4. [Ganti] Gunakan populasi yang baru dibentuk untuk proses algoritma
selanjutnya.
5. [Tes] Jika kondisi akhir terpenuhi, berhenti, dan hasilnya adalah solusi terbaik
dari populasi saat itu.
6. [Ulangi] Ke nomer 2.
3.3 Pengkodean
Pengkodean adalah cara untuk merepresentasikan masalah kedalam bentuk
kromosom. Ada beberapa cara pengkodean dan pemilihannya tergantung dari
masalah yang akan diselesaikan. Berikut ini adalah beberapa jenis pengkodean
yang sering digunakan
3.3.1 Pengkodean biner (binary encoding)
Pengkodean biner adalah pengkodean yang paling umum digunakan
karena algoritma genetika awalnya menggunakan pengkodean ini. Pada
pengkodean biner setiap kromosom merupakan barisan bit 0 atau 1, seperti dapat
dilihat pada gambar berikut ini :
Kromosom A 101100101100101011100101
Kromosom B 111111100000110000011111
Gambar 3.2 Contoh kromosom dengan pengkodean biner
Pengkodean biner memberikan banyak kemungkinan kromosom meskipun
hanya memiliki jumlah allele yang sedikit, 1 atau 0. Tetapi pengkodean ini sering
17
tidak sesuai untuk beberapa masalah dan kadang harus dilakukan pengkoreksian
setelah perkawinan silang dan mutasi.
Contoh masalah yang sesuai menggunakan pengkodean biner adalah
masalah ransel (knapsack), dimana terdapat beberapa jenis benda dengan ukuran
dan berat yang berbeda sedangkan kapasitas ransel terbatas. Permasalahannya
adalah memilih sejumlah barang untuk memaksimumkan nilai dari barang-barang
tersebut di dalam ransel, tetapi total ukuran barang-barang tersebut tidak melebihi
dari ukuran ransel itu sendiri. Masalah ransel ini dapat dienkodekan dengan
barisan bit, dimana jumlah bit menyatakan jumlah barang yang ada, sehingga
setiap bit berhubungan dengan setiap benda yang ada di dalam ransel. Bit 1 berarti
benda ada di dalam ransel sedangkan 0 berarti benda tidak berada di dalam ransel.
3.3.2 Pengkodean permutasi (permutation encoding)
Pengkodean permutasi digunakan dalam masalah yang memerlukan
pengurutan data (ordering problem), seperti masalah wiraniaga (travelling
salesman problem), atau masalah pengurutan tugas (task ordering problem). Pada
pengkodean ini setiap kromosom merupakan barisan angka yang
merepresentasikan angka pada urutan.
Kromosom A 1 5 3 2 6 4 7 9 8
Kromosom B 8 5 6 7 2 3 1 4 9
Gambar 3.3 Contoh kromosom dengan pengkodean permutasi
18
Pengkodean permutasi hanya berguna pada masalah pengurutan.
Perkawinan silang dan mutasi yang dilakukan pada pengkodean ini harus
menghasilkan kromosom yang memiliki konsistensi urutan.
Contoh masalah yang dapat diselesaikan dengan pengkodean ini adalah
masalah wiraniaga. Terdapat sejumlah kota dan jarak diantara semua kota itu.
Seorang wiraniaga harus mengunjungi semua kota itu, tetapi sebisa mungkin dia
tidak perlu melakukan terlalu banyak perjalanan, sehingga harus ditemukan urutan
kota yang akan dikunjungi dengan jumlah total jarak yang minimal. Masalah ini
dapat dienkodekan dengan pengkodean permutasi dimana setiap angka dalam
kromosom mewakili setiap kota yang harus dikunjungi dalam urutan.
3.3.3 Pengkodean nilai (value encoding)
Pengkodean nilai dapat digunakan pada masalah yang mempunyai nilai
yang rumit, dimana nilai yang dienkodekan langsung merupakan representasi dari
masalah. Contohnya adalah pengkodean data yang menggunakan angka riil yang
akan menjadi susah jika menggunakan pengkodean biner karena setiap angka riil
tidak dapat direpresentasikan secara tepat hanya dalam bentuk bit 1 atau 0.
Kromosom A 1.2324, 5.3243, 0.4556, 2.3293, 2.4545
Kromosom B A, B, D, J, E, I, F, J, D, H, D, I, E, R, J
Kromosom C (back), (back), (right), (forward), (left)
Gambar 3.4 Contoh kromosom dengan pengkodean nilai
19
Dalam pengkodean nilai, setiap kromosom merupakan barisan dari
beberapa nilai. Nilai bisa berupa apa saja, seperti bilangan biasa, bilangan riil,
karakter sampai dengan obyek-obyek yang rumit.
Pengkodean nilai sangat baik untuk beberapa masalah khusus, dilain sisi
perkawinan silang dan mutasi yang diperlukan untuk pengkodean ini seringkali
memerlukan pengembangan tersendiri yang lebih spesifik pada masalah.
Contoh masalah yang menggunakan pengkodean ini adalah masalah
pencarian bobot pada jaringan saraf (neural network). Terdapat sebuah jaringan
saraf dengan arsitekturnya. Permasalahnya adalah mencari bobot masukan dari
neuron-neuron untuk melatih jaringan supaya memberikan keluaran yang
diinginkan. Masalah ini dapat dienkodekan menggunakan pengkodean nilai
bilangan riil, dengan gen-gen dalam genome menyatakan korespondensi bobot-
bobot pada masukan untuk jaringan saraf.
3.3.4 Pengkodean pohon (tree encoding)
Pengkodean pohon lebih banyak digunakan untuk menyusun program atau
ekspresi, bagi pemrograman genetika (genetic programming).
Dalam pengkodean pohon, setiap kromosom merupakan pohon dari
sejumlah obyek, seperti fungsi atau perintah di dalam bahasa pemrograman.
Pengkodean pohon sangat baik bagi penyusunan program. Bahasa pemrograman
LISP sering digunakan untuk melakukan pengkodean pohon, karena program di
dalamnya dapat direpresentasikan ke dalam bentuk ini dan dapat dengan mudah
20
dilakukan parse menjadi sebuah pohon, sehingga perkawinan silang dan mutasi
dapat dilakukan relatif lebih mudah.
Contoh masalah yang direpresentasikan dengan pengkodean pohon adalah
masalah mencari fungsi berdasarkan nilai-nilai yang diberikan. Diberikan
beberapa nilai masukan dan keluaran. Permasalahannya adalah mencari fungsi
yang akan memberikan nilai keluaran terbaik (dekat dengan yang diinginkan)
untuk semua masukan. Masalah ini dapat dienkodekan ke dalam pengkodean
pohon dengan kromosom merupakan fungsi-fungsi yang dinyatakan dalam pohon.
Kromosom A Kromosom B
( + x ( / 5 y ) ) ( do_until step wall )
+ do until
x /
5 y do until do until
Gambar 3.5 Contoh kromosom dengan pengkodean pohon
Beberapa kriteria yang ditemukan untuk memutuskan apakah suatu
pengkodean genetik adalah efisien dan dapat diharapkan hasilnya antara lain
(Oskar, 1999) :
1. Kelengkapan (completeness)
Suatu pengkodean dikatakan lengkap jika setiap titik dalam ruang
pencarian dapat dienkodekan (Goldberg, 1989 dalam Oskar, 1999). Keadaan
ini menjamin semua solusi dapat diakses oleh algoritma genetik. Misal dalam
21
masalah penjadwalan, pengkodean harus mampu mengenkodekan semua
kemungkinan pilihan hari dan jam kuliah.
2. Ketertutupan (closure)
Suatu pengkodean genetik adalah tertutup jika semua individu yang
dihasilkan oleh penerapan operator genetik dapat dienkodekan ke phenotype
yang valid (Goldberg, 1989 dalam Oskar, 1999), yang tentu didapat dari
orangtua yang sudah merupakan individu yang valid.
Jika keadaan ini dipenuhi, ruang pencarian dapat dijaga tetap
minimum. Tidak ada titik dalam ruang pencarian yang tidak menyatakan
solusi yang valid dapat diakses oleh algoritma genetik. Ini akan menghindari
waktu yang terbuang bagi algoritma genetik untuk mencari bagian dari ruang
pencarian yang tidak berisi solusi valid. Misal dalam masalah penjadwalan,
kemungkina penggunaan ruang tetap dijaga meskipun pemilihan hari dan jam
kuliah dilakukan secara acak untuk menghindari terjadinya jadwal yang tidak
mungkin, dimana penggunaan ruang dengan kapasitas tertentu pada waktu
yang sama lebih banyak dari jumlah ruang dengan kapasitas tertentu yang
tersedia.
3. Kedekatan (proximity)
Kriteria ini dipenuhi jika pengkodean yang digunakan untuk
peningkatan perlahan dari parameter dapat dijamin.
4. Skema pendek (short schemata)
Kriteria ini dipenuhi jika parameter-parameter masalah yang
berdekatan sesamanya, juga dikodekan berdekatan sesamanya dalam barisan
22
genotype. Parameter relatif berdekatan antara sesamanya jika mereka
menyelesaikan bagian tertentu masalah bersamaan. Kriteria ini tidak selalu
dapat dijamin, yang kadang memerlukan peninjauan lebih dalam dari masalah.
Namun adalah sangat bermanfaat meletakkan blok bngunan berdekatan
bersamaan dalan genotype.
5. Kemampatan (compactness)
Pengkodean genetik adalah mampat jika panjang dari genotype adalah
minimum (Gruan, 1994 dalam Oskar, 1999). Kemampatan dapat digunakan
juga sebagai suatu pengukuran. Lebih pendek pengkodean genetik suatu solusi
(genotype), lebih sedikit langkah dari algoritma genetik yang harus dilakukan
untuk mencari solusi, dengan demikian lebih cepat suatu solusi dapat dicapai.
6. Non-isomorphism
Pengkodean genetik memenuhi kriteria ini jika setiap genotype
merepresentasikan solusi yang unik (phenotype).
Aspek dari penghindaran isomorphism telah tercakup dalam kriteria
kemampatan. Jika banyak genotype yang berbeda mengenkodekan phenotype
yang sama, berarti pengkodeannya tidak mampat. Selanjutnya, kesempatan
untuk menghasilkan keturunan yang jelek meningkat sebagai hasil dari
mengkombinasikan dua individu, yang mempunyai pengkodean genetik
sepenuhnya berbeda, membawa pada kehilangan informasi yang berharga
untuk keduanya.
23
7. Modularitas
Pengkodean genetik adalah modular, ketika solusi parsial (modul/ blok
bangunan) ditulis hanya sekali dan suatu mekanisme tersedia sehingga mereka
dapat direferensikan untuk sembarang titik dalam pengkodean. (Gruan, 1994
dalam Oskar, 1999).
3.4 Operator dalam Algoritma Genetika
Operator-operator pada algoritma genetika yang sering digunakan adalah
seleksi, perkawinan silang dan mutasi. Semua operator tersebut memegang
peranan penting bagi keberhasilan algoritma genetika dalam menyelesaikan
masalah.
Pemilihan jenis operator yang akan digunakan tergantung dari masalah
yang akan diselesaikan. Hal yang harus diperhatikan adalah menghindari
terjadinya konvergensi prematur, yaitu mencapai solusi optimum yang belum
waktunya, dalam arti bahwa solusi yang diperoleh adalah solusi optimum lokal.
Selain itu, untuk menjamin bahwa seluruh ruang pencarian dapat dijangkau oleh
alogritma genetika, perbedaan (diversity) diantara kromosom dalam populasi
merupakan hal yang penting.
3.4.1 Seleksi
Seleksi merupakan proses pemilihan individu/ kromosom dari generasi
lama untuk dijadikan orangtua yang akan saling dikawin silang untuk membentuk
individu baru di generasi baru. Yang menjadi permasalahan adalah bagaimana
24
cara memilih kromosom untuk dijadikan orangtua. Berdasarkan teori evolusi
Darwin, kromosom yang terbaik seharusnya dapat bertahan hidup dan membentuk
keturunan baru. Ada beberapa jenis metode seleksi, berikut ini adalah beberapa
metode seleksi yang sering digunakan.
3.4.1.1 Seleksi roda roulette (roulette wheel selection)
Pada metode seleksi ini, orangtua dipilih berdasarkan nilai fitnessnya,
semakin baik nilai fitnessnya maka semakin besar kemungkinannya untuk terpilih.
Diandaikan semua kromosom diletakkan pada sebuah roda roulette, besarnya
kemungkinan bagi setiap kromosom adalah tergantung dari nilai fitnessnya seperti
pada contoh berikut :
Kromosom Fitness
A 15
B 5
C 10
D 5
E 5
Gambar 3.6 Contoh populasi dengan 5 kromosom beserta fitnessnya
B
12,5%
D
12,5%
C
25%
E
12,5%
A
37,5%
Gambar 3.7 Probabilitas terpilihnya suatu kromosom dalam roda roulette
25
Probabilitas masing-masing individu merupakan hasil pembagian antara
fitness masing-masing individu dengan total fitness dalam populasi. Dari contoh
di atas, kromosom A memiliki probabilitas 37,5% untuk terpilih sebagai orangtua
pembentuk keturunan baru pada setiap pemilihan kromosom (setiap roda diputar).
Secara algoritma, seleksi roda roulette dapat dituliskan sebagai berikut:
begin
// jumlahkan fitness semua kromosom dari populasi P
S = sumfitness(P);
// bangkit bilangan acak dari 0 sampai S
r = generaterandom(0,S);
// jumlahkan fitness populasi dari 0 sampai s,
// jika s > r maka populasi tersebut dipilih
s = 0;
t = 1;
while s < r do
s = s + fitness(kromosom, t);
t = t +1;
end while;
return kromosom(t);
end
Skema seleksi dengan roda roulette ini adalah berdasarkan skala fitness
(fitness scale). Karena terpilihnya suatu kromosom dalam populasi untuk dapat
berkembang biak adalah sebanding dengan fitnessnya, maka akan terjadi semacam
tradeoff antara ekplorasi dan ekplotasi jika terdapat satu atau kelompok kecil
kromosom yang mempunyai fitness yang baik yaitu antara mengeksplorasi
bagian-bagian baru dalam ruang pencarian, atau terus mengeksplotasi informasi
yang telah diperoleh. Kecenderungan kromosom yang baik untuk terpelihara terus
26
dapat membawa ke hasil optimum lokal atau konvergensi dini (premature
convergence) ke suatu hasil yang bukan optimum global. Sebaliknya jika semua
kromosom dalam populasi mempunyai fitness yang hampir sama, maka seleksi ini
akan menjadi seleksi yang bersifat acak.
3.4.1.2 Seleksi rangking (rank selection)
Metode seleksi roda roulette akan memiliki masalah ketika terdapat
perbedaan fitness yang jauh. Sebagai contoh, jika fitness kromosom terbaik
adalah 90 % dari semua roda roulette dapat menyebabkan kromosom yang lain
memiliki kesempatan yang sangat kecil untuk dapat terpilih.
Seleksi ranking terlebih dahulu merangking atau mengurutkan kromosom
di dalam populasi berdasarkan fitnessnya kemudian memberi nilai fitness baru
berdasarkan urutannya. Kromosom dengan fitness terburuk akan memiliki fitness
baru bernilai 1, terburuk kedua bernilai 2 dan seterusnya, sehingga kromosom
yang memiliki fitness terbaik akan memiliki nilai fitness N, dimana N adalah
jumlah kromosom di dalam populasi.
Sebagai ilustrasi dapat dilihat pada gambar berikut yang juga merupakan
contoh dari metode seleksi roda roulette tadi :
27
Kromosom Fitness
A 15
B 5
C 10
D 5
E 5
Gambar 3.8 Keadaan sebelum dirangking
Kromosom Fitness Fitness Baru
B 5 1
D 5 2
E 5 3
C 10 4
A 15 5
Gambar 3.9 Keadaan setelah dirangking
Setelah proses pengurutan dan pemberian nilai fitness baru, setiap
kromosom akan memiliki kesempatan yang lebih adil untuk terpilih. Tetapi
metode ini dapat menyebabkan konvergensi menjadi lambat, karena kromosom
terbaik tidak terlalu berbeda dengan yang lainnya.
3.4.1.3 Seleksi turnamen (tournament selection)
Seleksi turnamen merupakan variasi antara seleksi roda roulette dan
seleksi rangking. Sejumlah k kromosom tertentu dari populasi beranggota n
kromosom (k ≤ n) dipilih secara acak dengan probabilitas yang sama. Dari k
kromosom yang terpilih kemudian akan dipilih satu kromosom dengan fitness
terbaik, yang diperoleh dari hasil pengurutan rangking fitness semua kromosom
terpilih. Perbedaannya dengan seleksi roda roulette adalah pemilihan kromosom
28
yang akan digunakan untuk berkembang biak tidak berdasarkan skala fitness dari
populasi.
Untuk k = 1, seleksi turnamen akan menjadi sama dengan seleksi secara
acak karena hanya melibatkan satu kromosom. Untuk k = 2, maka akan dipilih
dua kromosom dari populasi secara acak, kemudian akan dipilih salah satu
berdasarkan nilai fitnessnya. Biasanya yang sering digunakan adalah k = 2,
tergantung dari jumlah kromosom yang tedapat di dalam populasi.
3.4.2 Perkawinan silang
Operator perkawinan silang digunakan untuk membentuk keturunan baru
berdasarkan orangtua terpilih. Operator ini paling dominan dalam algoritma
genetika dibandingkan dengan operator mutasi. Jumlah kromosom yang terlibat
adalah 2 kromosom.
Perkawinan silang dilakukan dengan harapan kromosom-kromosom baru
akan mempunyai bagian baik dari kromosom-kromosom lama dan tidak menutup
kemungkinan menjadi kromosom-kromosom yang lebih baik Berikut ini akan
dibahas beberapa jenis variasi perkawinan silang dalam algoritma genetika
sehubungan dengan jenis pengkodean kromosom yang digunakan.
3.4.2.1 Perkawinan silang untuk pengkodean biner
Pengkodean biner merupakan jenis pengkodean yang paling sederhana
sehingga banyak variasi operasi perkawinan silang dapat dilakukan. Beberapa
jenis perkawinan silang tersebut adalah :
29
3.4.2.1.1 Perkawinan silang 1-titik
Proses perkawinan silang 1-titik dimulai dengan pemilihan 1 titik pada
barisan bit kromosom secara acak sebagai titik perkawinan silang. Kromosom
baru akan dibentuk dengan cara menyalin barisan bit orangtua pertama dari bit
pertama sampai titik perkawinan silang, sedangkan sisanya disalin dari orangtua
kedua.
Kromosom orangtua 1 11001011
Kromosom orangtua 2 11011111
Keturunan 11001111
Gambar 3.10 Contoh perkawinan silang 1-titik pada pengkodean biner
3.4.2.1.2 Perkawinan silang 2-titik
Proses perkawinan silang 2-titik diawali dengan pemilihan 2 titik
perkawinan silang dari barisan bit kromosom secara acak. Kromosom baru akan
dibentuk dengan cara menyalin barisan bit kromosom orangtua pertama dari bit
pertama sampai dengan titik perkawinan silang pertama dan dari titik perkawinan
silang kedua sampai dengan bit terakhir, sedangkan sisanya, yaitu dari titik
perkawinan silang pertama sampai titik perkawinan silang kedua disalin dari
orangtua kedua.
30
Kromosom orangtua 1 11001011
Kromosom orangtua 2 11011111
Keturunan 11011111
Gambar 3.11 Contoh perkawinan silang 2-titik pada pengkodean biner
3.4.2.1.3 Perkawinan silang seragam
Perkawinan silang seragam menghasilkan kromosom baru dengan cara
menyalin bit-bit secara acak dari kedua orangtuanya.
Kromosom orangtua 1 11001011
Kromosom orangtua 2 11011111
Keturunan 11011111
Gambar 3.12 Contoh perkawinan silang seragam pada pengkodean biner
3.4.2.1.4 Perkawinan silang aritmatik
Kromosom baru dihasilkan dari operasi aritmatika yang dilakukan
terhadap kedua orangtuanya.
Kromosom orangtua 1 11001011
Kromosom orangtua 2 11011111
Keturunan (AND) 11001011
Gambar 3.13 Contoh perkawinan silang aritmatika pada pengkodean biner
31
3.4.2.1.5 Perkawinan silang rekombinasi
Versi paling sederhana dari rekombinasi adalah memilih secara acak dari
semua nilai gen yang terdapat pada kedua orangtua untuk setiap gen pada anak.
Berikut adalah contoh dari perkawinan silang rekombinasi:
Kromosom orangtua 1 15 9 12 14
Kromosom orangtua 2 13 4 16 2
Keturunan 1 15 4 16 14
Keturunan 2 14 9 12 1
Gambar 3.14 Contoh perkawinan silang rekombinasi pada pengkodean biner
3.4.2.2 Perkawinan silang untuk pengkodean permutasi
Pada pengkodean permutasi, jenis perkawinan silang yang sering
dipergunakan adalah perkawinan silang 1-titik karena kesederhanaan prosesnya
dapat menjaga konsistensi urutan nilai pada kromosom. Jenis perkawinan silang
yang terdapat pada pengkodean biner tidak dapat dipergunakan pada pengkodean
ini karena tidak dapat menjamin terjaganya konsistensi urutan nilai pada
kromosom.
Proses perkawinan silang 1-titik dimulai dengan pemilihan satu titik
perkawinan silang. Dari permutasi pertama sampai dengan titik perkawinan silang
disalin dari orang tua pertama, sedangkan sisanya didapatkan dengan cara melihat
satu persatu nilai pada orang tua kedua, jika belum ada pada kromosom
keturunan, maka nilai tersebut ditambahkan.
32
Kromosom orangtua 1 1 2 3 4 5 6 7 8 9
Kromosom orangtua 2 4 5 3 6 8 9 7 2 1
Keturunan (AND) 1 2 3 4 5 6 8 7 9
Gambar 3.15 Contoh perkawinan silang 1-titik pada pengkodean permutasi
3.4.2.3 Perkawinan silang untuk pengkodean nilai
Semua metode perkawinan silang yang terdapat pada pengkodean biner
dapat diterapkan pada pengkodean nilai karena tidak perlu memperhatikan urutan
seperti pada pengkodean permutasi. Berikut adalah contoh perkawinan silang
pada pengkodean nilai:
Kromosom orangtua 1 10 39 45 12 89 34 1 3 90 48 23 72 25 37
Kromosom orangtua 2 43 13 2 66 49 56 10 89 53 20 75 99 4 8
Keturunan 10 39 45 12 89 34 10 89 53 20 75 99 4 8
Gambar 3.16 Contoh perkawinan silang 1-titik pada pengkodean nilai bilangan bulat
Kromosom orangtua 1 10 39 45 12 89 34 1 3 90 48 23 72 25 37
Kromosom orangtua 2 43 13 2 66 49 56 10 89 53 20 75 99 4 8
Keturunan 10 39 45 66 49 56 10 89 90 48 23 72 25 37
Gambar 3.17 Contoh perkawinan silang 2-titik pada pengkodean nilai bilangan bulat
3.4.2.4 Perkawinan silang untuk pengkodean pohon
Proses perkawinan silang pada pengkodean pohon dimulai dengan
pemilihan satu titik perkawinan silang pada kedua orangtua, kemudian bagian dari
33
orangtua yang berada di bawah titik perkawinan silang dipertukarkan untuk
menghasilkan anak baru.
Gambar 3.18 Contoh perkawinan silang 1-titik pada pengkodean pohon
( + x ( / 5 y ) ) ( * - ( 3 ( + z 9 ) 2 ) ( + x ( / 3 ( + z 9 ) ) ) ( * ( - 5 y ) 2 )
Kromosom
orangtua 1
Kromosom
orangtua 2 Keturunan 1 Keturunan 2
*
- 2
5 y
+
x /
3
9 z
+
+
x /
5 y
- 2
3
9
+
z
*
3.4.3 Mutasi
Mutasi merupakan proses mengubah nilai dari 1 atau beberapa gen dalam
suatu kromosom. Tujuannya adalah untuk membantu mempercepat terjadinya
perbedaan diantara semua kromosom dalam populasi sehingga pencarian dapat
menjelajah keseluruh ruang pencarian, tetapi mutasi tidak boleh terlalu sering
dilakukan karena akan membuat algoritma genetika berubah menjadi pencarian
acak.
Proses mutasi dalam biologi adalah mengubah isi allele gen pada suatu
locus dengan nilai allele yang lain. Proses mutasi dilakukan secara acak, sehingga
tidak selalu menjamin bahwa setelah proses mutasi akan diperoleh kromosom
dengan fitness yang lebih baik dibandingkan dengan sebelum mutasi. Oleh karena
34
itu terjadi kontraversi dalam penerapannya pada algoritma genetika. Mutasi
seringkali tetap dipergunakan hanya saja dengan probabilitas mutasi yang kecil.
Tentang probabilitas perkawinan silang dan mutasi akan dijelaskan pada bagian
berikut pada bab ini.
Operator mutasi merupakan operasi pada suatu kromosom tertentu.
Berikut adalah beberapa cara mutasi yang sering diterapkan dalam algoritma
genetika menurut jenis pengkodean kromosomnya :
3.4.3.1 Mutasi pada pengkodean biner
Mutasi dalam pengkodean biner merupakan operasi yang sangat
sederhana. Bit pada kromosom yang terpilih secara acak (atau menggunakan
skema tertentu) diinversi nilainya, diubah nilainya menjadi lawannya.
Kromosom sebelum mutasi 1 0 0 1 0 1 1 1
Kromosom sesudah mutasi 1 0 0 1 0 0 1 1
Gambar 3.19 Contoh mutasi pada pengkodean biner
3.4.3.2 Mutasi pada pengkodean permutasi
Proses mutasi pada pengkodean biner tidak dapat diterapkan pada
pengkodean permutasi karena konsistensi urutan permutasi harus selalu
diperhatikan. Salah satu cara yang dapat dilakukan adalah dengan memilih dua
posisi (locus) pada kromosom dan kemudian saling dipertukarkan
35
Kromosom sebelum mutasi 1 2 3 4 5 6 8 9 7
Kromosom sesudah mutasi 1 8 3 4 5 6 2 9 7
Gambar 3.20 Contoh mutasi pada pengkodean permutasi
3.4.3.3 Mutasi pada pengkodean nilai
Proses mutasi pada pengkodean biner dapat diterapkan pada pengkodean
nilai karena tidak perlu menjaga konsistensi adanya urutan pada kromosom.
Tetapi yang dilakukan bukanlah menginversi bit, melainkan tergantung dari jenis
nilai yang dipergunakan. Misalnya nilai yang berupa bilangan riil dimutasi dengan
cara saling menukar nilai dua gen yang terdapata pada kromosom, tetapi cara ini
tidak memberikan manfaat untuk menjamin adanya perbedaan dalam populasi,
semua kromosom dengan mudah memiliki nilai yang sama dan akhirnya terjadi
konvergensi prematur. Cara lain yang lebih baik adalah dengan memilih
sembarang posisi gen pada kromosom, kemudian ditambahkan atau dikurangkan
dengan suatu nilai kecil tertentu yang diambil secara acak. Cara ini juga berlaku
pengkodean dengan bilangan bulat. Selain itu cara mutasi lain yang relevan dapat
digunakan.
Kromosom sebelum mutasi 1,43 1,09 4,51 9,11 6,94
Kromosom sesudah mutasi 1,43 1,19 4,51 9,01 6,94
Gambar 3.21 Contoh mutasi pada pengkodean nilai riil dengan nilai yang ditambahkan atau dikurangkan dengan 0,10
3.4.3.4 Mutasi pada pengkodean pohon
Mutasi dapat dilakukan antara lain dengan mengubah operator (+, -, *, /)
atau nilai yang terkandung pada suatu verteks pohon yang dipilih. Atau dapat juga
36
dilakukan pemilihan dua verteks dari pohon dan saling mempertukarkan operator
atau nilainya.
( + x ( / 5 y ) ) ( + x ( - 5 y ) )
xx /-
55 yy
++
Gambar 3.22 Contoh kromosom sebelum dan sesudah mutasi dengan pengkodean pohon
3.5 Update Generasi
Setelah proses seleksi, perkawinan silang dan mutasi yang dilakukan
terhadap suatu populasi, proses berikutnya adalah pemilihan kromosom untuk
membentuk generasi baru yang disebut update generasi. Dalam algoritma genetik
Holland, proses update yang dilakukan adalah update secara generasi
(generational update), yaitu menggantikan keseluruhan kromosom pada generasi
sebelumnya dengan kromosom-kromosom yang didapat dari hasil seleksi,
perkawinan silang dan mutasi. Penekanan selektif pada skema update ini
seluruhnya berasal dari orangtua.
Selain itu terdapat skema update secra kontinu (continuous update) yang
mengizinkan orangtua dan anak untuk bercampur dalam satu generasi. Mulanya
dipilih k orangtua secara acak, kemudian dibuat anak sebanyak k dengan memilih
orangtua tersebut secara seragam. Kromosom pada populasi baru merupakan
pemilihan kromosom antara orangtua terpilih dan anak yang dihasilkan
37
berdasarkan fitnessnya. Dengan cara ini penekanan selektif berasal seluruhnya
dari pemilihan terhadap yang bertahan hidup (survivor).
Skema update lainnya adalah steady-state update, dimana dilakukan
pemilihan dua orangtua dari populasi yang kemudian digunakan untuk
membentuk 1 (atau 2) anak. Hasilnya digunakan untuk menggantikan :
1. Orangtuanya
2. Kromosom terjelek dalam populasi
3. Kromosom tertua dalam populasi
Suatu strategi bantuan yang baik untuk digunakan dengan skema
continous update adalah elitism, yang berarti mempertahankan kromosom-
kromosom baik dalam populasi lama dengan menyertakannya lagi pada populasi
baru. Sejumlah kromosom terbaik pada populasi lama dapat hilang karena proses
perkawinan silang dan mutasi. Secara teori, elitism dapat meningkatkan
kemampuan dari algoritma genetika karena mempertahankan kromosom yang
baik dari populasi lama, tetapi kadangkala hal itu justru dapat menyebabkan
konvergensi prematur karena nilai fitness terjebak pada optimum lokal.
3.6 Parameter dalam Algoritma Genetika
Dua parameter dasar yang penting dari algoritma genetika adalah
probabilitas perkawinan silang dan probabilitas mutasi.
Probabilitas perkawinan silang menyatakan seberapa sering proses
perkawinan silang akan terjadi diantara 2 kromosom orangtua. Jika tidak terjadi
perkawinan silang, keturunan merupakan salinan mutlak dari orangtuanya. Jika
38
terjadi perkawinan silang, keturunan dibuat dari bagian-bagian kromosom
orangtua. Jika probabilitas perkawinan silang 100%, maka keseluruhan keturunan
dibuat dengan perkawinan silang. Jika probabilitas perkawinan silang 0%, maka
seluruh generasi baru dibuat dari salinan kromosom-kromosom dari populasi
lama, tetapi ini tidak berarti bahwa generasi baru sama dengan yang lama karena
adanya penekanan selektif. Meskipun perkawinan silang bertujuan untuk
mendapatkan kromosom yang memiliki bagian baik dari orangtuanya atau bahkan
menjadi lebih baik dari orangtuanya, ada baiknya juga jika kita membiarkan
beberapa bagian dari populasi untuk bertahan ke generasi berikutnya.
Dari hasil penelitian yang sudah dilakukan oleh praktisi algoritma genetika
terbukti bahwa angka probabilitas perkawinan silang sebaiknya cukup tinggi,
yaitu antara 80% sampai 95% untuk memberikan hasil yang baik. Untuk beberapa
masalah tertentu probabilitas perkawinan silang 60% memeberikan hasil yang
lebih baik (Obitko, 1998).
Probabilitas mutasi menyatakan seberapa sering bagian-bagian kromosom
akan dimutasikan. Jika tidak ada mutasi, keturunan diambil/ disalin langsung
setelah perkawinan silang tanpa perubahan. Jika mutasi dilakukan, bagian-bagian
keromosom diubah. Jika probabilitas mutasi 100%, semua kromosom diubah. Jika
probabilitas mutasi 0%, tidak ada yang diubah. Probabilitas mutasi dalan
algoritma genetika seharusnya diberi nilai yang kecil. Umumnya probabilitas
mutasi diset untuk mendapatkan rata-rata satu mutasi per kromosom, yaitu angka/
allele = 1/ (panjang kromosom). Dari hasil yang sudah pernah dicoba ternyata
angka probabilitas terbaik adalah antara 0,5% sampai 1%. Mutasi diperlukan
39
untuk menjaga perbedaan kromosom dalam populasi, untuk menghindari
terjadinya konvergensi prematur.
Parameter lain yang juga ikut menentukan efisiensi kinerja algoritma
genetika adalah ukuran populasi yaitu banyakknya kromosom dalam satu populasi
atau satu generasi. Jika terlalu sedikit kromosom dalam populasi, algoritma
genetika mempunyai kemungkinan yang sedikit untuk melakukan perkawinan
silang dan hanya sebagian kecil dari ruang pencarian yang dieksplorasi.
Sebaliknya, jika terlalu banyak jumlah kromosom, algoritma genetika cenderung
lambat dalam menemukan solusi. Ukuran populasi yang sering digunakan oleh
peneliti yang sudah ada adalah antara 20 sampai 30, tetapi kadang ukuran 50
sampai 100 dilaporkan baik. Beberapa penelitian menujukkan bahwa menambah
jumlah populasi tidak akan terlalu berguna karena tidak mempercepat
penyelesaian masalah. Riset juga menunjukkan bahwa ukuran populasi yang
terbaik ditentukan dari jenis pengkodean, artinya, jika terdapat ukuran kromosom
32 bit, ukuran populasi seharusnya juga 32, begitu pula jika ukuran kromosom 16
bit, maka ukuran populasi adalah 16 (Obitko, 1998).
Penekanan selektif dilakukan dengan memilih jenis seleksi yang sesuai.
Umumnya jenis seleksi roda roulette sering digunakan, tetapi kadang seleksi
rangking dilaporkan lebih baik. Terdapat juga beberapa metode lebih lanjut yang
dapat mengubah parameter seleksi yang digunakan selama ekseskusi algoritma
genetika. Prinsip elitism disarankan untuk digunakan jika tidak digunakan metode
lain untuk menyimpan solusi terbaik pada suatu populasi ke populasi berikutnya.
Sebaikya juga dicoba seleksi steady state untuk proses update populasi.
40
Terakhir adalah jenis pengkodean, perkawinan silang dan mutasi. Jenis
pengkodean dipilih berdasarkan pada masalah dan juga ukuran instance-nya.
Begitu pula untuk pemilihan jenis operator perkawinan silang dan mutasi.
BAB IV
URAIAN PERMASALAHAN
DAN PENDEKATAN PENYELESAIAN
4.1 Sekilas Tentang Sistem Penjadwalan Mata Kuliah di Lingkungan
Fakultas MIPA
Fakultas matematika dan ilmu pengetahuan alam memiliki 3 jurusan, yaitu
jurusan matematika, jurusan kimia dan jurusan fisika. Program studi yang ada di
masing-masing jurusan adalah sebagai berikut:
Tabel 4.1 Daftar jurusan dan program studi di Fakultas MIPA
Jurusan Program studi
Matematika D3 Komputer dan Sistem Informasi
D3 Rekam Medis
S1 Ilmu Komputer
S1 Matematika
S1 Statistika
S1 Ilmu Komputer Ekstensi
S2 Ilmu Komputer
S2 Matematika
Fisika D3 Elektronika dan Instrumentasi
S1 Elektronika dan Instrumentasi
S1 Fisika
S1 Geofisika
S2 Fisika
Kimia S1 Kimia
S1 Kimia Ekstensi
S2 Kimia
41
42
Semua program studi memulai proses belajar dan mengajarnya pada jam
07.00 pagi sampai dengan jam 17.00 sore, kecuali program studi S1 Ilmu
Komputer program ekstensi yang menggunakan jam malam dan S1 Kimia
program ekstensi yang mulai pada jam 12.00 siang.
4.1.1 Mekanisme penjadwalan di Fakultas MIPA
Penjadwalan mata kuliah dilakukan oleh bagian akademik, dibawah
pengawasan langsung dari Wakil Dekan I. Berikut ini adalah mekanisme
penyusunan jadwal yang dilakukan di Fakultas MIPA berdasarkan hasil
wawancara dengan Dr. Kusminarto, Wakil Dekan I.
Proses penyusunan penjadwalan mata kuliah di Fakultas MIPA diawali
dengan penyusunan program kurikulum untuk mata kuliah wajib dan mata kuliah
pilihan setiap semester di masing-masing program studi, setelah itu diusulkan
nama dosen yang akan mengajar matakuliah yang ditawarkan. Jika suatu jurusan
mewajibkan mahasiswanya mengambil mata kuliah milik jurusan lain, maka
jurusan akan meminta dosen dari jurusan penyelenggara mata kuliah atau
menitipkan mahasiswanya pada kelas di jurusan penyelenggara mata kuliah.
Jumlah kelas untuk suatu mata kuliah diputuskan berdasarkan peminat tahun lalu
jika kurikulum masih sama, dan berdasarkan perkiraan jika kurikulumnya baru.
Selanjutnya daftar mata kuliah dan dosen dari program studi dirapatkan
pada masing-masing jurusan. Hal-hal yang dibahas pada rapat itu antara lain
masalah mata kuliah dan penugasan dosen untuk jurusan itu sendiri, jurusan lain
dan fakultas lain. Sebagai salah satu fakultas ilmu dasar, Fakultas MIPA
berkewajiban menugaskan dosen-dosennya untuk memberikan kuliah di fakultas
43
lain yang menyelenggarakan ilmu dasar seperti fisika dasar, kimia dasar dan
kalkulus. Hasil dari rapat masing-masing jurusan diserahkan kepada fakultas dan
selanjutnya digunakan untuk menyusun jadwal kuliah.
Proses pertama yang dilakukan di fakultas adalah menyusun penjadwalan
waktu untuk semua mata kuliah berdasarkan kesediaan waktu yang diberikan oleh
dosen. Pembagian ruangan untuk mata kuliah dilakukan setelah proses pengisian
kartu rencana studi oleh mahasiswa, karena pemilihan ruangan memerlukan data
jumlah peminat mata kuliah.
4.1.2 Karakteristik komponen utama
Untuk memahami aturan-aturan yang akan digunakan, pada bagian ini
akan dijelaskan karakteristik dari masing-masing variabel yang merupakan
komponen utama dari sistem penjadwalan yang digunakan di Fakultas MIPA
dengan menggunakan contoh.
Komponen yang pertama adalah dosen dan mata kuliah. Pemberian tugas
mengajar suatu mata kuliah kepada seorang dosen dilakukan di luar penjadwalan.
Sebagai contoh Sri Mulyana, Drs,. M.Kom mengampu 2 mata kuliah yaitu MMS-
1801 dan MMS-2702.
Tabel 4.2 Contoh dosen dan mata kuliah yang diampunya Dosen Mata kuliah yang diampu
Sri Mulyana, Drs., M.Kom MMS-1801, MMS-2702
Heri Pratomo, Drs., M.Kom MMS-2802, MMS-4803
Ign. Purnomo, Drs., M.Kom MMS-2602, MMS-2805
Y. Suyanto, Drs., M.Kom MMS-2806
44
Komponen berikutnya adalah mahasiswa, sebagai peserta kelas mata
kuliah. Mahasiswa disarankan untuk mengambil paket mata kuliah setiap semester
jika nilai indeks prestasinya memenuhi syarat dan jika belum mengambil mata
kuliah itu. Selain itu mahasiswa diperbolehkan mengambil mata kuliah lain jika
memenuhi persyaratan tertentu seperti jumlah total sks yang boleh diambil dan
telah mengikuti mata kuliah prasyarat untuk mata kuliah yang akan diambil.
Berikut adalah contoh beberapa paket mata kuliah yang harus diambil oleh
mahasiswa program studi ilmu komputer :
Tabel 4.3 Contoh paket mata kuliah Semester Mata kuliah wajib
I MMS 1601, MMS 1651, MMS 1901, MMS 1911, MMS 1101, MMS 1202, MMS 1107,
UNU 1010
II MMS 1801, MMS 1851, MMS 1701, MMS 1702, MMS 1912, MMS 1102, UNU 1
III MMS 2801, MMS 2601, MMS 2701, MMS 2703, MMS 2753, MMS 2401
IV MMS 2802, MMS 2702, MMS 2602, MMS 2803, MMS 2853, MMS 2603
V MMS 3601, MMS 3801, MMS 3701, MMS 3802, MMS 3852, MMS 3605, MMS 3921
VI MMS 3603, MMS 3602, MMS 3652, MMS 3803, MMS 3
Komponen utama yang juga memiliki peranan penting adalah satuan
waktu kuliah, yaitu durasi waktu per jam kuliah. Satuan waktu yang digunakan di
Fakultas MIPA adalah 50 menit per jam kuliah yang berbobot 1 SKS. Berikut
adalah daftar urutan satuan waktu yang digunakan:
45
Tabel 4.4 Daftar jam kuliah Jam kuliah Waktu Jam kuliah Waktu
1 07.00-07.50 6 12.00-12.50
2 08.00-08.50 7 13.00-13.50
3 09.00-09.50 8 14.00-14.50
4 10.00-10.50 9 15.00-15.50
5 11.00-11.50 10 16.00-16.50
Komponen terakhir adalah ruangan, sebagai tempat penyelenggaraan
kuliah. Semua ruang kuliah di Fakultas MIPA dapat digunakan pada semua jam
kuliah yang ada. Kapasitas masing-masing ruangan berbeda-beda tergantung dari
besarnya ruangan. Berikut adalah contoh ruang dan kapasitas maksimalnya:
Tabel 4.5 Ruang dan kapasitasnya Nama Ruangan Kapasitas Maks
B1.02 150
K1 100
K3 80
K4 80
K5 80
Kombinasi semua komponen utama membentuk penjadwalan mata kuliah.
Penjadwalan mata kuliah dikatakan optimal jika semua aturan yang ditentukan
dapat terpenuhi. Berikut adalah contoh penjadwalan mata kuliah yang dibentuk
dari kombinasi komponen-komponen utama:
46
Tabel 4.6 Contoh penjadwalan mata kuliah Mata kuliah Hari Jam Ruang Dosen
MFS-3600 Senin 6 K6 Abdul Ro’uf, Drs., M.Ikom
MMS-4604 Sabtu 8 U2.05 Agfianto E P, Drs., M.Si.
MMS-3603 Rabu 6 M2.14 Agus Harjoko, Dr
MMS-3202 Kamis 2 K3 Al. Sutjiana, Drs., M.Sc
MMS-2702 Rabu 5 S2.04 Azhari, Drs., MT
4.1.3 Aturan umum penjadwalan
1. Jadwal kuliah yang dihasilkan hanya baik bagi periode waktu tertentu, dalam
hal ini semester, setelah itu komponen-komponen penyusunnya bisa
mengalami perubahan sehingga jadwal yang lalu tidak dapat dipergunakan
lagi.
Keadaan dari semua komponen utama sangat mempengaruhi proses
penyusunan jadwal kuliah, oleh karena itu jadwal hanya dibuat untuk satu
periode proses belajar dan mengajar, yaitu satu semester. Sebagai contoh,
peserta kelas mata kuliah tertentu setiap semester bisa bertambah atau
berkurang sehingga mempengaruhi pemilihan ruangan yang digunakan.
Contoh lain adalah pergantian dosen yang mengampu mata kuliah, mengajar
mata kuliah yang sama setiap semester bisa membuat dosen merasa bosan,
meskipun mata kuliah itu adalah spesialisasinya. Untuk mengatasi hal itu
biasanya diadakan pertukaran mata kuliah yang diampu diantara sesama
dosen. Meskipun demikian, kebanyakan dosen menginginkan tidak ada
perubahan jadwal untuk semester berikutnya jika tidak ada perubahan
kurikulum, mengingat mereka juga bekerja pada pihak lain selain mengajar.
47
2. Jadwal kuliah merupakan kombinasi yang mungkin dari komponen-komponen
utama, yaitu dosen, ruang, waktu, dan mahasiswa pada suatu kelas mata
kuliah tertentu. Ketidaklengkapan dari komponen utama menyebabkan jadwal
tidak dapat digunakan.
Sebuah kelas mata kuliah tidak mungkin diselenggarakan jika tidak
ada dosen yang mengampu, tidak ada alokasi waktu, tidak disediakan ruang
kuliah, atau tidak ada mahasiswa yang mengambil mata kuliah itu.
3. Dua kelas mata kuliah yang berbeda tidak dapat berada pada ruang dan
waktu yang sama.
Tidak mungkin ada dua kelas mata kuliah yang berbeda
diselenggarakan bersamaan di sebuah ruangan.
4. Tidak ada dosen yang mengajar dua kelas mata kuliah yang berbeda pada
waktu yang sama.
5. Tidak ada mahasiswa yang menghadiri dua kelas mata kuliah yang berbeda
pada waktu yang sama.
6. Ada batasan yang pasti pada kesediaan ruangan dan waktu.
Ruangan yang dimiliki jumlahnya tetap sepanjang 1 semester, tidak
berubah-ubah jumlahnya.
48
4.1.4 Aturan khusus penjadwalan di Fakultas MIPA
1. Jadwal kuliah yang disusun hanya berlaku untuk 1 semester, bisa semester
ganjil, semester genap atau semester pendek.
2. Dosen ditempatkan pada kelas mata kuliah yang diampunya sebelum jadwal
dibuat, suatu mata kuliah ditawarkan hanya jika ada dosen yang bisa
mengampunya.
Jika mata kuliah yang tidak mendapatkan dosen adalah mata kuliah
wajib, maka akan dicarikan dosen, sebab mata kuliah itu tetap harus
diselenggarakan, sedangkan jika yang tidak mendapatkan dosen adalah mata
kuliah pilihan, maka mata kuliah itu tidak akan ditawarkan.
3. Satu matakuliah dapat diampu lebih dari seorang dosen.
Kadangkala ada mata kuliah khusus yang membutuhkan 2 atau 3 orang
dosen, disebut teaching team, untuk bergantian mengajar karena berbagai
alasan tertentu. Hal ini sering terjadi pada jurusan fisika dan kimia
4. Waktu kuliah dalam sehari dimulai dari jam 07.00 sampai 17.00. Lama setiap
satuan waktu kuliah adalah 50 menit, dalam jangka waktu 1 hari terdapat 10
slot waktu, maka dalam 6 hari (hari aktif dalam 1 minggu)terdapat 60 slot
waktu.
Kelas kuliah yang diselenggarakan pada jam kuliah diatas selanjutnya
disebut sebagai kelas biasa.
49
5. Maksimal waktu dosen sekali mengajar adalah 2 satuan waktu.
Durasi waktu selama 2 satuan waktu adalah 100 menit, ini merupakan
durasi waktu yang cukup lama bagi seorang dosen untuk menyampaikan
materi kuliah. Waktu untuk sekali mengajar perlu dibatasi sebab jika dosen
merasa kelelahan akan tidak baik bagi kesehatannya dan menurunkan kualitas
materi yang disampaikan.
6. Sebaiknya ada waktu istirahat bagi dosen minimal 1 satuan waktu diantara 2
kelas yang berbeda.
Hal ini perlu diperhatikan agar tidak menurunkan kualitas materi yang
akan disampaikan pada kelas mata kuliah berikutnya. Namun pada prakteknya
aturan ini tidak dapat dilakukan mengingat keterbatasan waktu, sedikitnya
jumlah dosen dan banyaknya mata kuliah yang diselenggarakan. Lagipula
dosen memiliki waktu istirahat minimal 10 menit diantara jam kuliah.
Misalnya seorang dosen mengajar selama 2 satuan waktu, yaitu 100 menit,
pada jam ke-1 dan ke-2, kemudian ia juga harus mengajar pada jam ke-3 yang
dimulai tepat pukul 09.00, padahal 100 menit sejak jam 07.00 berakhir pada
jam 08.40, sehingga ia memiliki waktu istirahat selama 20 menit.
50
7. Mata kuliah yang merupakan 1 paket bagi mahasiswa setiap semester, tidak
boleh diselenggarakan pada hari dan jam yang sama.
Biasanya mahasiswa baru semester 1 dan 2, beberapa diantaranya
diwajibkan untuk mengambil mata kuliah paket, sehingga mata kuliah yang
merupakan 1 paket tidak boleh konflik pada waktu penyelenggaraannya.
8. Mata kuliah wajib tingkat semester berdekatan tidak boleh diselenggarakan
pada saat yang bersamaan.
Sebagai contoh mata kuliah wajib semester 1 tidak boleh konflik
dengan mata kuliah wajib semester 3, tetapi boleh konflik dengan mata kuliah
wajib semester 5, sedangkan mata kuliah wajib semester 2 tidak boleh konflik
dengan mata kuliah wajib semester 4, tetapi boleh konflik dengan mata kuliah
wajib semester 6. Hal ini dilakukan mengingat banyak mahasiswa yang
memilih untuk mengambil mata kuliah wajib semester berikutnya daripada
mata kuliah pilihan.
9. Dosen tidak boleh mengajar lebih dari 11 SKS, dengan toleransi 12 SKS,
pada strata 1 reguler.
Aturan ini dibuat berdasarkan jumlah jam kerja efektif pegawai di
Indonesia, yaitu 40 jam per minggu.
51
10. Kelas pararel tidak wajib untuk diselenggarakan bersamaan
Kelas pararel adalah kelompok kelas mata kuliah yang sama, misalnya
mata kuliah kimia dasar terdiri dari kelas A, B dan C. Idealnya kelas pararel
diselenggarakan bersamaan untuk mempermudah pemantauan kesamaan
materi yang diberikan oleh masing-masing dosen, tetapi karena kesediaan
waktu dari dosen berbeda-beda, maka jam penyelenggaraan masing-masing
kelas menjadi berbeda-beda.
11. Penyelenggaraan 1 mata kuliah sama yang dipecah menjadi 2 pertemuan
tidak boleh dalam hari yang sama.
Mata kuliah yang memiliki bobot 3 sks biasanya dipisah menjadi 2
pertemuan dengan pembagian bobot 2 sks dan 1 sks.
4.2. Model Matematika
Pada bagian ini aturan-aturan yang telah dijabarkan sebelumnya akan
dirumuskan secara matematis menjadi fungsi obyektif, dengan mendeklarasikan
semua komponen utama sebagai variabel input.
Mahasiswa tidak perlu diikutkan dalam perumusan fungsi obyektif karena
mahasiswa bebas memilih mata kuliah yang diikutinya dalam suatu semester.
Kalaupun ada paket mata kuliah biasanya hanya diambil lengkap oleh mahasiswa
baru semester 1, sedangkan mahasiswa lama seringkali tidak mengambil lengkap
paket mata kuliah semester yang ditempuhnya karena berbagai alasan, salah
52
satunya karena IP semester sebelumnya tidak mencukupi atau belum menempuh
mata kuliah prasyaratnya.
Dengan penyederhanaan di atas, maka variabel yang tersisa adalah dosen,
kelas mata kuliah, waktu dan ruang kuliah. Adapun yang menjadi variabel input
terkontrol adalah jumlah dosen, jumlah kelas mata kuliah yang ditawarkan,
jumlah waktu yang ditawarkan dan jumlah ruang yang dapat dipergunakan,
sedangkan yang merupakan variabel input tidak terkontrol adalah jumlah
mahasiswa peminat masing-masing kelas mata kuliah yang ditawarkan.
Untuk merumuskannya menjadi fungsi obyektif maka harus didefinisikan
perpotongan yang mungkin dari keempat komponen itu. Xfctr sebagai variabel
bernilai biner yang akan bernilai 1 jika dosen f ditempatkan pada kelas mata
kuliah c pada periode waktu t di ruangan r dan bernilai 0 jika sebaliknya.
Fungsi obyektif yang akan dirumuskan adalah
1. Meminimalkan konflik waktu dan ruangan untuk kelas mata kuliah, yaitu 2
kelas berbeda tidak bisa berada pada ruang dan waktu yang sama.
2. Meminimalkan konflik pada dosen pengajar, yaitu tidak ada dosen yang
mengajar 2 kelas berbeda pada waktu yang sama.
3. Meminimalkan konflik waktu antara paket mata kuliah wajib, yaitu tidak ada
mahasiswa yang dapat menghadiri 2 kelas berbeda pada waktu yang sama.
Selanjutnya dari seluruh aturan yang telah didefiniskan tadi akan
dibedakan menjadi aturan yang harus dilaksanakan dan aturan yang tidak tidak
harus dilaksanakan, kadangkala dapat diabaikan. Untuk aturan yang tidak harus
dilaksanakan akan diberikan nilai pinalti sehingga akan meminimalkan nilainya.
53
4.2.1 Aturan yang harus dilaksanakan:
1. 2 kelas berbeda tidak bisa berada pada ruang dan waktu yang sama.
∑ ≤tcf
fctrX,,
1, untuk setiap c (kelas mata kuliah)
2. Tidak ada dosen yang mengajar 2 kelas berbeda pada waktu yang sama.
∑ ≤rct
fctrX,,
1 , untuk setiap f (dosen)
3. Tidak ada mahasiswa yang dapat menghadiri 2 kelas berbeda pada waktu yang
sama. Aturan ini digunakan untuk kasus mata kuliah paket, dimana mata
kuliah yang berada dalam 1 paket harus diselenggarakan pada waktu yang
berbeda.
∑ ≤rtf
trfcfctr XX,,
0' , untuk setiap c dan c’ yang dilarang.
BAB V
METODOLOGI PENELITIAN
5.1 Bahan dan Sumber Data
Data yang dipergunakan untuk menyusun jadwal kuliah diambil dari
bagian akademik Fakultas Matematika dan Ilmu Pengetahuan Alam. Adapun data-
data tersebut meliputi data daftar ruang kuliah beserta kapasitas maksimumnya,
daftar dosen pengajar dari jurusan matematika, fisika dan kimia, daftar tugas
dosen mengajar, daftar satuan waktu kuliah, daftar kesediaan waktu dosen, daftar
mata kuliah yang ditawarkan oleh jurusan matematika, fisika dan kimia, daftar
mata kuliah wajib setiap semester untuk mahasiswa matematika, fisika dan kimia
dan yang terakhir adalah daftar perkiraan mahasiswa yang mengikuti mata kuliah.
5.2 Alat
Perangkat keras yang dipergunakan dalam penelitian ini adalah komputer
dengan spesifikasi sebagai berikut Prosesor AMD Athlon 900 MHz, memori 112
MB, hard disk 15 GB dan VGA 4 MB. Sedangkan perangkat lunak yang
dipergunakan dalam penelitian adalah sistem operasi Windows 2000, Borland
Delphi 6 dan Interbase 5.5.
5.3 Parameter Penelitian
1. Tersusunnya model penjadwalan kuliah
2. Tersusunnya algoritma penjadwalan kuliah.
54
55
3. Jadi tidaknya program penjadwalan kuliah
4. Dapat tidaknya dipecahkan masalah tumbukan diantara komponen-komponen
utama
a. Tumbukan antar mata kuliah suatu program studi dalam 1 semester
b. Tumbukan antar mata kuliah suatu program studi antara semester
berseberangan, misalnya antara semester 1 dan 3 dan antara semester 3
dan 5 .
c. Tumbukan jam mengajar bagi seorang dosen
d. Tumbukan antara kesediaan waktu dosen dan jam mengajar.
e. Tumbukan antara matakuliah yang diselenggarakan lebih dari satu kali
pertemuan.
f. Tumbukan pengunaan ruangan pada waktu yang sama
5. Jadi tidaknya jadwal kuliah
5.4 Cara Penelitian
1. Mengembangkan model penjadwalan kuliah dengan menggunakan algoritma
genetika.
2. Menyusun algoritma penjadwalan kuliah dengan menggunakan algoritma
genetika.
3. Menyusun program penjadwalan dengan menggunakan algoritma genetika
4. Menerapkan program pada sistem penjadwalan di Fakultas Matematika dan
Ilmu Pengetahuan Alam
56
5. Membandingkan hasil dengan berbagai kombinasi paremeter algoritma
genetika
BAB VI
HASIL PENELITIAN DAN PEMBAHASAN
6.1. Model Genetika
Pengkodean yang akan digunakan adalah pengkodean nilai bukan
pengkodean biner karena penggunaan barisan bit dapat membuat komputasi
menjadi lebih kompleks, dimana suatu barisan bit yang panjang memerlukan
penyambungan serta pengkodean ulang untuk mendapatkan nilai sebenarnya dari
aturan yang direpresentasikan.
Sebelum model kromosom dibuat akan dilakukan penyederhanaan
variabel representasi pembentuk model kromosom, yang merupakan komponen
utama penjadwalan kuliah. Penghilangan salah satu variabel dapat dilakukan jika
aturan yang bersangkutan dengan variabel itu dapat diarahkan ke variabel lain.
Mahasiswa tidak diikutkan dalam model yang akan dibuat karena
mahasiswa diasumsikan dapat memilih mata kuliah yang akan diambil secara
bebas. Masalah yang mungkin muncul bagi mahasiswa adalah masalah mata
kuliah paket, bagaimana agar mata kuliah yang berada dalam 1 paket tidak akan
bertabrakan dalam jam diselenggarakannya, sehingga mahasiswa dapat
mengambil semua mata kuliah paket dalam 1 semester yang diikutinya. Masalah
ini bila diarahkan ke variabel mata kuliah dan waktu akan menjadi mata kuliah
wajib dalam 1 paket tidak boleh diselenggarakan pada waktu yang sama.
Dosen juga tidak perlu diikutkan dalam permodelan kromosom, karena
pemberian tugas mengajar suatu mata kuliah telah dilakukan sebelumnya. Secara
57
58
sederhananya, jika tidak ada dosen yang mengajar suatu mata kuliah, maka mata
kuliah itu tidak akan ditawarkan. Beberapa aturan yang berhubungan dengan
dosen bisa diarahkan ke variabel mata kuliah, misalnya aturan bahwa dosen tidak
dapat mengajar 2 mata kuliah berbeda pada jam yang sama, dapat diubah menjadi
semua kelas yang diajar oleh dosen yang sama harus berbeda semua alokasi
waktunya.
Variabel yang tersisa adalah mata kuliah, waktu dan ruang, maka
kromosom yang dibuat akan memiliki 3 segmen. Mata kuliah disusun berurutan
dalam kromosom karena semua mata kuliah harus mendapatkan alokasi waktu
dan ruang. Urutannya adalah berdasarkan dosen yang mengampu dengan tujuan
untuk mempermudah pengecekan aturan yang berhubungan dengan dosen.
Panjang kromosom adalah 2N, dimana N adalah jumlah mata kuliah yang
ditawarkan, panjangnya menjadi 2N karena untuk setiap mata kuliah akan
dialokasikan ruang dan waktu, sehingga ilustrasi kromosomnya adalah sebagai
berikut:
Dosen 1 Dosen 2 Dosen 3
Kelas 1 Kelas 2 Kelas 3 Kelas 4 Kelas 5 Kelas 6
R1 T1 R2 T2 R3 T3 R4 T4 R5 T5 R6 T6
Gambar 6.1 Model kromosom dengan komponen dosen, mata kuliah , ruang dan waktu
Dalam satu satuan waktu kuliah hanya boleh ada sebanyak R mata kuliah
yang dijadwalkan, dimana R adalah jumlah ruangan, supaya semua kelas mata
kuliah yang sedang diselenggarakan mendapatkan ruangan.
59
Aturan lain yang harus dilaksanakan adalah tidak menempatkan dua atau
lebih mata kuliah pada jam dan ruangan yang sama, tetapi karena algoritma
genetika merupakan pendekatan random, maka akan memerlukan banyak iterasi
untuk menemukan susunan kombinasi yang tepat antara variabel dosen, waktu
dan ruangan yang tidak saling konflik.
Oleh karena jumlah ruangan tidak akan berubah sejalan dengan waktu dan
banyaknya iterasi yang diperlukan untuk menemukan kombinasi yang tepat agar
semua aturan terpenuhi, maka model kromosom diatas akan disederhanakan
menjadi 2 fase. Fase pertama akan menempatkan mata kuliah hanya pada slot
waktu yang ada, yang perlu diperhatikan disini adalah tidak menempatkan kelas
mata kuliah lebih dari jumlah ruang yang tersedia dalam satu satuan waktu yang
sama, dan fase kedua akan menempatkan mata kuliah yang telah mendapatkan
slot waktu pada ruangan yang sesuai. Penyelesaian fase pertama akan dilakukan
terlebih dahulu mengingat bayaknya aturan yang berhubungan dengan variabel
waktu.
Penyederhanaan model kromosom dengan membaginya menjadi 2 fase
akan membuat masalah terselesaikan lebih cepat karena pencarian kombinasi
yang tidak konflik antara penggunaan ruang dan waktu tidak dilakukan secara
bersamaan melainkan dalam fase yang berbeda. Selain itu pemisahan ini sesuai
dengan proses pembuatan jadwal kuliah yang dilakukan di FMIPA, yaitu
pembagian alokasi waktu dilakukan terlebih dahulu sebelum proses pengisian
kartu rencana studi dan melakukan proses pembagian alokasi ruangan setelah itu.
60
Setelah dibagi menjadi 2 fase, model kromosom memiliki panjang N,
dimana N adalah jumlah kelas kuliah yang harus dijadwalkan dalam suatu
semeter. Ilustrasi kromosom menjadi seperti berikut:
Dosen 1 Dosen 2 Dosen 3
Kelas 1 Kelas2 Kelas 3 Kelas 4 Kelas 5 Kelas 6
T1 T3 T2 T1 T4 T3
Gambar 6.2 Model Fase I
T1 T2 T3 T4 Kelas 1 Kelas 4 Kelas 3 Kelas 2 Kelas 6 Kelas 5 R1 R4 R3 R2 R4 R1
Gambar 6.3 Model Fase II
Fase pertama akan diselesaikan dengan algoritma genetika, sedangkan fase kedua
diselesaikan dengan pemrograman biasa.
6.2 Model Program Komputer
Model program komputer adalah pengembangan model genetika menjadi
program yang dapat dipergunakan untuk menyelesaikan masalah penjadwalan
mata kuliah.
6.2.1 Penggunaan data dan penjelasan struktur basis data
Sesuai dengan representasi kromosom yang terdiri dari 2 bagian, yaitu
penempatan slot waktu dan penempatan ruangan, maka data yang diinput terdiri
dari 2 bagian juga, yaitu untuk keperluan slot waktu dan keperluan ruangan.
61
Keperluan slot waktu meliputi daftar urutan waktu penyelenggaraaan
kuliah, daftar waktu kesediaan dosen, dan aturan-aturan yang harus dilaksanakan.
Data kapasitas maksimum dari ruangan tergolong data untuk keperluan slot waktu
karena pada saat yang sama hanya ada sejumlah tertentu mata kuliah dengan
peserta tertentu sebanyak maksimal sejumlah kelas yang dapat menampung
seluruh peserta.
6.2.1.1 Data untuk keperluan slot waktu
Data yang diperlukan adalah daftar penugasan dosen, yaitu daftar dosen
pengampu mata kuliah tertentu. Berdasarkan data yang dikumpulkan dari bagian
pengajaran FMIPA pada semester genap tahun akademik 2001/2002, penelitian
ini akan menggunakan data sebanyak 128 orang dosen, 157 mata kuliah, dan data
10 slot waktu dalam setiap harinya, sehingga dalam 6 hari ada sebanyak 60 slot
waktu. Selain itu juga terdapat data kesanggupan waktu dosen untuk mengajar
dan data ruangan sebanyak 23 ruangan beserta kapasitas maksimumnya.
6.2.1.2 Data untuk keperluan ruang
Ada 2 aturan yang harus dilaksanakan berhubungan dengan ruangan, yang
pertama jumlah ruangan adalah tetap. Aturan itu dapat diubah kearah aturan slot
waktu menjadi kelas mata kuliah yang diselenggarakan secara bersama-sama
tidak lebih dari R kelas, dimana R adalah jumlah ruangan. Aturan yang kedua
adalah pemilihan kelas disesuaikan antara jumlah peminat mata kuliah dan
kapasitas maksimum dari kelas. Jika diubah menjadi aturan slot waktu, maka
akan menjadi kelas mata kuliah yang memerlukan ruangan berkapasitas X hanya
62
dapat diselenggarakan sebanyak n kelas dalam waktu bersamaan, dimana n adalah
jumlah kelas yang dapat menampung mahasiswa sebanyak X. Sebagai contoh,
jika kelas dengan peserta 100 orang dapat ditampung di kelas berkapasitas 100
dan 150, dan terdapat x kelas berkapasitas maksimal 100 mahasiswa dan y kelas
berkapasitas maksimal 150 mahasiswa, maka mata kuliah yang memiliki peserta
sebanyak 100 mahasiswa hanya dapat diselenggarakan sebanyak x+y kelas secara
bersamaan. Untuk mempermudah keperluan pengecekan dan pembagian ruangan
diperlukan juga data jenis ruangan seperti kelas biasa dan laboratorium.
6.2.1.3 Rancangan Basis Data
Komponen-komponen utama yang dilibatkan dalam proses penjadwalan
adalah dosen, kelas mata kuliah, waktu dan ruang kuliah. Item-item pokok yang
dikembangkan dari komponen utama adalah sebagai berikut:
63
KODE_P PSTUDI SEMESTER ID_SEM
KODE_PAKET
KODE_P ID_MTKUL
PAKET_MTKUL
ID_SEM KET_SEM
SEMESTER
ID_KELAS ID_MATA_KULIAH KELAS (A,B,…) ID_DOSEN SKS_WAKTU JML_PESERTA
KELAS_MTKULIAH
ID_JNS_RUANG KET_JNS_RUANG
JENIS_RUANG ID_MATA_KULIAH KODE_MATA_KULIAH NAMA SKS ID_JNS_RUANG
MATA_KULIAH
ID_WAKTU KET_WAKTU
WAKTU (JAM KE-) ID_RUANG NAMA_RUANG KAPSITAS ID_JNS_RUANG
RUANG
ID_DOSEN ID_HARI ID_WAKTU
WAKTU_X_DOSEN
ID_HARI NAMA_HARI
HARI
ID_DOSEN NAMA_DOSEN
DOSEN
KODEPSD NAMAPSD
PSTUDI
Gambar 6.4 Skema basis data
6.2.2 Asumsi
Terdapat beberapa hal yang membatasi program yang dibuat oleh penulis
untuk menyelesaikan masalah penjadwalan mata kuliah ini, yaitu :
1. Matakuliah yang tidak berasal dari fakultas bersangkutan (dalam hal ini
FMIPA) tidak diikutkan dalam penjadwalan. Semua matakuliah itu dianggap
dapat menyesuaikan waktu pada sisa waktu yang tersedia. Pada penjadwalan
yang telah dilakukan saat ini, pembuat jadwal matakuliah dari fakultas lain
adalah fakultas pemilik matakuliah tersebut, misalnya matakuliah Pancasila
yang berasal dari Fakultas ISIPOL.
64
2. Matakuliah yang bukan merupakan kegiatan belajar dan mengajar di kelas
atau laboratorium tidak diikutkan dalam penjadwalan, misalnya matakuliah
kerja lapangan dan tugas akhir.
3. Tidak semua matakuliah praktikum diikutkan dalam penjadwalan. Matakuliah
praktikum yang diikutkan penjadwalan hanya yang memiliki kejelasan
penggunaan laboratorium dan kapasitas laboratorium sesuai dengan jumlah
peserta. Dalam penjadwalan yang telah dilakukan di FMIPA saat ini seringkali
praktikum menggunakan laboratorium dengan kapasitas yang lebih kecil
dibandingkan dengan peserta, hal ini disebabkan oleh kurangnya prasarana.
Alasan lain adalah kesulitan mencari data penjadwalan yang lengkap, selain
itu data penjadwalan sebenarnya hanya dijadikan contoh data yang
dipergunakan untuk menunjukkan bahwa masalah penjadwalan kuliah harian
dapat diselesaikan dengan algoritma genetika.
4. Matakuliah yang diajar lebih dari satu dosen dapat ditangani jika ada
pembagian tugas dalam satuan sks. Sebagai contoh adalah matakuliah
basisdata yang diampu oleh Drs. Ignatius Purnomo, M.Kom pada pertemuan
berbobot 2 sks dan Sigit P.,S.Si yang mengampu pertemuan berbobot 1 sks.
5. Waktu jam perkuliahan yang dijadwalkan adalah sebanyak 6 hari, dari hari
Senin hingga Sabtu, dan 10 jam kuliah.
65
6.2.3 Representasi dan Pengkodean Kromosom dalam Program
Kromosom dalam program untuk menyelesaikan masalah penjadwalan
kuliah direpresentasikan dalam bentuk larikan multidimensi (multidimensional
array) dengan tipe data record yang dipergunakan untuk menyimpan semua data
pendukung proses penjadwalan. Karena kromosom merupakan barisan dari gen,
maka panjang larik adalah sebanyak gen yang ada.
Data pendukung yang disimpan dalam record adalah id kelas, id
matakuliah, dosen, jumlah sks, jumlah peserta, paket, jenis ruangan, waktu yang
terdiri dari kombinasi antara hari dan jam, dan informasi yang berhubungan
dengan ruangan seperti kapasitas ruangan yang digunakan dan nama ruang yang
digunakan.
Field waktu adalah field utama yang merupakan representasi kromosom.
Barisan gen dalam kromosom merupakan urutan matakuliah yang akan
dijadwalkan yang diurutkan berdasarkan dosen pengajarnya dengan tujuan untuk
mempermudah sejumlah pengecekan aturan yang harus dilakukan pada saat
penghitungan nilai fitness.
Pengkodean yang dipergunakan adalah pengkodean nilai karena gen
merupakan kombinasi antara hari dan jam kuliah sehingga lebih mudah jika
langsung digunakan nilai-nilai untuk hari dan jam kuliah dibandingkan jika harus
mengkonversikannya ke dalam bit jika menggunakan pengkodean biner. Adapun
nilai-nilai dinyatakan dalam bilangan integer 1 sampai dengan 6 untuk mewakili
hari Senin sampai dengan Sabtu dan 1 sampai dengan 10 untuk mewakili jam
kuliah pertama sampai kesepuluh.
66
6.2.4 Fungsi obyektif/ fungsi fitness
Setiap aturan yang dipergunakan dalam penjadwalan kuliah diberi nilai
pinalti, dimana semakin wajib dilaksanakan maka nilai pinalti yang diberikan
semakin besar. Untuk memaksimalkan model algoritma genetika yang digunakan,
fungsi fitness yang dipergunakan adalah (Lee, 2000):
Fitness = 1/(1+(aturan1*pinalti1+aturan2*pinalti2+…))
Fungsi fitness ini selain digunakan oleh Lee, juga digunakan oleh Ross, 1994
(Lee, 2000).
Dari fungsi fitness yang digunakan dapat dilihat bahwa semakin sedikit
aturan yang dilanggar, maka semakin besar nilai fitnessnya. Jadwal sempurna
akan memiliki nilai fitness 1, karena nilai total pinalti dari aturan yang dilanggar
adalah 0. Berikut ini adalah aturan yang dipergunakan dalam penjadwalan beserta
nilai pinalti yang diberikan:
Tabel 6.1 Nilai pinalti untuk masing-masing aturan Aturan Nilai Pinalti
Kesediaan waktu dosen 1
Konflik waktu dosen 3
Tabrakan matakuliah satu semester 3
Tabrakan matakuliah semester berseberangan 2
Tabrakan matakuliah sama yang dipecah 3
Berikut akan dijelaskan satu persatu aturan yang harus dilaksanakan pada
penyusunan jadwal kuliah:
67
6.2.4.1 Dosen hanya dapat mengajar sesuai kesediaan waktunya
Pemberian slot waktu untuk suatu mata kuliah harus sesuai dengan
kesediaan waktu dosen yang mengampunya, oleh sebab itu suatu matakuliah tidak
boleh dijadwalkan pada suatu slot waktu dimana dosen pengampunya tidak dapat
mengajar.
Setiap gen akan dibandingkan dengan gen lain yang memiliki Id dosen
sama, hal ini menjadi mudah mengingat gen-gen di dalam kromosom diurutkan
sesuai dengan Id dosen. Berikut ini adalah algoritma sederhana untuk sebuah
kromosom dengan satu Id dosen, vHari sebagai satu hari terlarang dan vJam
sebagai satu jam terlarang:
begin
result = 0;
for i = 0 to JmlGen-1 do
if kromosom[i].hari = vHari then
if kromosom[i].jam = vJam then result = result+1;
end;
6.2.4.2 Konflik antar slot waktu dosen pengajar
Tidak mungkin ada seorang dosen yang mengajar lebih dari 1 mata kuliah
pada saat bersamaan, oleh sebab itu semua mata kuliah yang diampu oleh dosen
yang sama harus dijadwalkan pada waktu yang berbeda-beda. Pengecekan
dilakukan dengan cara membandingkan setiap gen dengan gen lain yang memiliki
Id dosen sama.
Jenis tabrakan waktu dosen ada tiga macam. Jika terdapat 2 mata kuliah A
dan B, dimana masing-masing memiliki lebih dari 1 sks, maka mata kuliah A bisa
68
bertabrakan pada jam pertama dengan mata kuliah B, dimulai pada jam yang sama
atau bertabrakan pada jam lebih dari jam pertama dengan mata kuliah B. Berikut
adalah algoritma pembandingan diantara gen :
begin
result = 0;
for i = 1 to jmlDosenSama-1 do
begin
ptj1 = kromosom[i];
for j = i+1 to jmlDosenSama do
begin
ptj2 = kromosom[j];
if ptj1.hari = ptj2.hari then
begin
if ptj1.jam < ptj2.jam then
begin
if ptj2.jam < ptj1.jam + ptj1.sks then result = result +1;
end
else if ptj1.jam = ptj2.jam then result = result +1
else if ptj1.jam > ptj2.jam then
begin
if ptj1.jam < ptj2.jam + ptj2.sks then result = result +1;
end;
end;
end;
end;
end;
69
6.2.4.3 Mata kuliah wajib dalam 1 semester tidak boleh bertabrakan jam
kuliahnya
Seorang mahasiswa biasanya mengambil matakuliah yang merupakan satu
paket semester pada panduan kurikulum, oleh sebab itu semua matakuliah yang
memiliki kategori semester yang sama untuk masing-masing program studi tidak
boleh dijadwalkan pada saat yang bersamaan sehingga mahasiswa dapat
mengambil semua matakuliah tersebut.
Pengecekan tabrakan waktu antar matakuliah wajib dalam satu semester
per program studi menjadi sama secara teknis dengan pengecekan tabrakan waktu
dosen pada penjelasan sebelum ini karena semua gen terlebih dahulu diurutkan
sesuai dengan paket matakuliahnya dengan menggunakan algoritma bubble sort.
Metode bubble sort dipilih karena kesederhanaannya dalam implementasi.
Berikut adalah algoritma pengecekan tabrakan matakuliah wajib dalam
satu semester :
begin
result = 0;
for i = 1 to jmlDosenSama-1 do
begin
ptj1 = kromosom[i];
for j = i+1 to jmlDosenSama do
begin
ptj2 = kromosom[j];
if (ptj1.hari = ptj2.hari) and (ptj1.id_mtkul <> ptj2.id_mtkul) then
begin
if ptj1.jam < ptj2.jam then
begin
70
if ptj2.jam < ptj1.jam + ptj1.sks then result = result +1;
end
else if ptj1.jam = ptj2.jam then result = result +1
else if ptj1.jam > ptj2.jam then
begin
if ptj1.jam < ptj2.jam + ptj2.sks then result = result +1;
end;
end;
end;
end;
end;
6.2.4.4 Mata kuliah wajib semester berseberangan tidak boleh bertabrakan
jam kuliahnya.
Sebagai contoh adalah matakuliah yang terdapat pada semester satu untuk
program studi ilmu komputer tidak boleh bertabrakan jadwal kuliah dengan
matakuliah yang terdapat pada semester tiga untuk program studi ilmu komputer,
tetapi boleh bertabrakan jadwal kuliah dengan matakuliah yang terdapat pada
semester lima untuk program studi ilmu komputer. Hal itu dilakukan agar
mahasiswa yang memenuhi persyaratan dapat dengan leluasa memilih matakuliah
pada semester di atas semester dimana seharusnya ia berada.
Pengecekan dilakukan dengan cara membandingkan semua gen di dalam
paket pertama dengan semua gen yang terdapat pada paket kedua. Berikut adalah
algoritma yang digunakan :
begin
result = 0;
for i=1 to jmlPaket1 do
71
begin
ptj1= kromosom[i];
for j=1 to jmlPaket2 do
begin
ptj2 = kromosom[j];
if ptj1.hari= ptj2.hari then
begin
if ptj1.jam < ptj2.jam then
begin
if ptj2.jam < ptj1.jam + ptj1.sks then result = result +1;
end
else if ptj1.jam = ptj2.jam then result = result +1
else if ptj1.jam > ptj2.jam then
begin
if ptj1.jam < ptj2.jam + ptj2.sks then result = result +1;
end;
end;
end;
end;
end;
6.2.4.5 Matakuliah sama yang dipecah lebih dari satu kali pertemuan tidak
boleh diselenggarakan dalam hari yang sama
Pemecahan pelaksanaan perkuliahan untuk matakuliah berbobot lebih dari
2 sks bertujuan untuk memaksimalkan proses belajar dan mengajar, karena jika
diselenggarakan dalam sekali pertemuan bisa menyebabkan kelelahan bagi dosen
dan mahasiswa. Sebagai contoh matakuliah sistem operasi terdiri dari 3 sks dan
dipecah menjadi 2 kali pertemuan, masing-masing 1 dan 2 sks.
72
Pengecekan dilakukan dengan cara membandingkan semua gen yang
memiliki id dosen sama. Berikut adalah algoritma yang dipergunakan untuk
menyelesaikan masalah hari yang sama bagi suatu mata kuliah yang
diselenggarakan lebih dari sekali :
begin
result = 0;
for i=0 to jmlDosenSama –1 do
begin
ptj1 = kromosom[i];
for j =i+1 to JmlDosenSama do
begin
ptj2 = kromosom[j];
if ptj1.idkul = ptj2.idkul then
if ptj1.hari = ptj2.hari then result = result+1;
end;
end;
end;
Selain itu masih terdapat satu aturan yang berhubungan dengan pembagian
ruangan tetapi kepadanya tidak diberikan nilai pinalti karena masalah pembagian
ruangan tidak diselesaikan dengan algoritma genetika meskipun di dalam program
dilakukan secara bersamaan dengan proses algoritma genetika. Pengecekan
kesediaan ruangan selalu dilakukan pada titik-titik tertentu untuk menghindari
terjadinya jadwal yang tidak mungkin, yaitu jadwal yang membutuhkan ruangan
lebih dari jumlah ruangan yang ada pada saat bersamaan. Berikut adalah
penjelasan aturan pengecekan ruangan secara detail:
73
6.2.4.6 Ruangan yang digunakan
Penggunaan ruangan berdasarkan kapasitas harus selalu dicek agar setiap
kelas kuliah pasti mendapatkan ruangan. Data mengenai ruangan disimpan dalam
variabel bertipe larik multidimensi berupa record seluas jumlah jenis ruang dikali
jumlah kromosom. Field yang ada antara lain field jenis ruangan misalnya ruang
kuliah biasa, laboratorium komputer dan laboratorium kimia, field kapasitas
maksimum, field jumlah ruangan, field nama ruang dan field dipakai yang
merupakan larik seluas jumlah hari dikali jumlah jam kuliah yang digunakan
untuk menandai penggunaan ruangan. Field dipakai diisi nomer gen yang
menggunakan ruangan tersebut dan diinisialisasi –1 pada semua posisi yang
menandakan bahwa ruangan tersebut belum diberikan kepada suatu kelas mata
kuliah.
Berdasarkan jenis ruangan yang dipakai, misalnya kelas biasa atau
laboratorium, pengecekan ruangan dimulai dengan membandingkan kapasitas
ruang dan jumlah peserta. Setelah mendapatkan ruang yang sesuai dilanjutkan
dengan mengecek apakah ruangan dapat dipergunakan selama sejumlah sks mata
kuliah itu. Berikut adalah algoritma pengecekan ruangan untuk suatu jenis
ruangan :
begin
result = false;
for i=1 to jmlRuang do
begin
if ruang[i].kapMax >= peserta then
if ruang[i].dipakai[hari,jam] = -1 then
begin
74
// cek sks
k = 1;
if sks = 1 then result = true
else
while k < sks do
begin
if ruang[i].dipakai[hari,jam] + k = -1 then result = true
else
begin
result = false;
break;
end;
end;
end;
end;
end;
6.2.5 Parameter algoritma genetika dalam program
Ada banyak variasi dari operator algoritma genetika yang dapat diterapkan
pada program karena jenis pengkodean nilai memungkinkan semua variasi
operator pada pengkodean biner untuk diterapkan. Meskipun demikian, tidak
berarti bahwa semua operator akan memberikan hasil yang sama dalam hal
terbentuknya jadwal dan kecepatan menyelesaikan masalah. Masalah
perbandingan unjuk kerja masing-masing operator akan dijabarkan pada sub bab
berikutnya. Berikut ini adalah penjelasan dari semua operator yang terdapat pada
program:
75
6.2.5.1 Seleksi
Operator seleksi memegang peranan penting dalam algoritma genetika
sebagai proses pemilihan orangtua yang digunakan untuk menghasilkan individu
baru. Tiga jenis seleksi yang disediakan dalam program adalah seleksi roda
roulette, rangking dan turnamen. Berikut adalah penjelasan dari masing-masing
metode seleksi tersebut:
6.2.5.1.1 Seleksi roda roulette
Pemilihan orangtua didasarkan pada nilai fitnessnya, semakin baik nilai
fitnessnya, maka semakin besar kemungkinannya untuk terpilih. Algoritma yang
dipergunakan dalam seleksi roda roulette adalah sebagai berikut:
begin
//jumlahkan fitness semua kromosom dari populasi P
S = sumfitness(P);
//bangkit bilangan acak dari 0 sampai S
r = generaterandom(0,S);
//jumlahkan fitness populasi dari 0 sampai s, jika s > r maka populasi tersebut
dipilih
s = 0;
t = 1;
while s < r do
s = s + fitness(kromosom, t);
t = t +1;
end while;
return kromosom(t);
end;
76
6.2.5.1.2 Seleksi rangking
Seleksi rangking memberikan nilai fitness baru untuk masing-masing
kromosom berdasarkan rangking fitnessnya. Kromosom dengan fitness terburuk
akan memiliki nilai fitness baru sebesar 1, sedangkan kromsom dengan fitness
terbaik akan memiliki nilai fitness sebesar N, dimana N adalah jumlah kromosom
dalam populasi. Algoritma yang digunakan dalam seleksi rangking adalah sebagai
berikut:
begin
//urutkan kromosom didalam populasi berdasarkan nilai fitnessnya
SortAscending(P);
//jumlahkan fitness semua kromosom dari populasi P
S = sumfitness(P);
//bangkit bilangan acak dari 0 sampai S
r = generaterandom(0,S);
//jumlahkan fitness populasi dari 0 sampai s, jika s > r maka populasi tersebut
dipilih
s = 0;
t = 1;
while s < r do
s = s + fitness(kromosom, t);
t = t +1;
end while;
return kromosom(t);
end
6.2.5.1.3 Seleksi turnamen
Seleksi turnamen merupakan variasi antara seleksi roda roulette dan
seleksi rangking. Sejumlah kromosom dipilih secara acak, kemudian dirangking
77
untuk diambil yang terbaik nilai fitnessnya. Algoritma yang digunakan dalam
seleksi turnamen adalah:
begin
// acak k kromosom dari populasi
// dengan anggapan bahwa bilangan acak yang dibangkitkan unik
// setiap kromosom yang dipilih dimasukkan dalam populasi sementara
// Ptemp
for i = 1 to k
r = random(1, populationSize);
Ptemp(i) = Population(r);
end for
// kembalikan kromosom dengan fitness dari k kromosom tersebut
return BestFitness(PTemp);
end;
6.2.5.2 Perkawinan silang
Setelah operator seleksi menghasilkan orang tua pembentuk generasi baru,
operator berikutnya adalah perkawinan silang, yaitu cara mengkombinasikan gen-
gen yang terdapat pada orang tua untuk menghasilkan keturunan baru. Semua
variasi perkawinan silang yang terdapat pada pengkodean biner dapat diterapkan,
tetapi tidak semuanya memberikan hasil yang optimal. Variasi perkawinan silang
yang digunakan pada program adalah perkawinan silang banyak titik dan
perkawinan silang rekombinasi. Setiap proses perkawinan silang akan
menghasilkan dua keturunan baru. Berikut adalah penjelasan lebih lanjut dari
kedua variasi perkawinan silang tersebut:
78
6.2.5.2.1 Perkawinan silang banyak titik
Perkawinan silang banyak titik dilakukan dengan cara menukar nilai gen
pada posisi gen yang sama dari kedua orang tua. Berikut adalah algoritma
perkawinan silang banyak titik:
genXOver: jumlah gen yang tekena proses perkawinan silang
index: larik integer yang digunakan untuk memberi tanda gen yang telah
dikawinsilangkan agar tidak terkena proses perkawinan silang lagi. Panjang larik
adalah sesuai dengan jumlah gen dalam satu kromosom
xOverRate: persentase terjadinya perkawinan silang dalam suatu kromosom
begin
//inisialisasi offspring sama dengan parent
child = parent;
genXOver = round(jmlGen * xOverRate);
for i = 1 to genXOver do
begin
repeat
repeat
gen = random(1,jmlGen);
until index[gen] =0
until parent[gen].jam + child.sks –1 <= 10;
index[gen] = 0;
child[gen] = parent[gen];
end;
end;
79
6.2.5.2.2 Perkawinan silang rekombinasi
Perkawinan silang rekombinasi dilakukan dengan cara menyalin nilai gen
orangtua yang terpilih secara acak ke gen keturunan baru. Berikut adalah
algoritma untuk rekombinasi :
begin
//inisialisasi offspring sama dengan parent
child = parent;
genXOver = round (jmlGen * xOverRate);
for i = 1 to genXOver do
begin
repeat
gen_child = rendom(1, jmlGen);
until index[gen_child] = 0;
index[gen_child] = 0;
// pilih gen orangtua
repeat
gen_parent = random(1, jmlGen);
until parent[gen_parent].jam + child.sks –1 <= 10;
child[gen_child] = parent[gen_parent];
end;
end;
6.2.5.3 Mutasi
Mutasi dilakukan untuk mencegah terjadinya konvergensi prematur.
Diantara dua kromosom baru yang merupakan hasil perkawinan silang dipilih
salah satu secara acak untuk dimutasi, kemudian berdasarkan persen mutasi,
sejumlah gen yang dipilih secara acak diganti nilainya secara random, dimana
nilai random hari adalah Senin, Selasa, Rabu, Kamis, Jumat dan Sabtu, sedangkan
80
nilai random jam adalah antara jam ke-1 sampai jam ke-10. Berikut adalah
algoritma yang digunakan untuk mutasi:
begin
gen = random(1, jmlGen);
repeat
child[gen].hari = random (6)+1;
child[gen].jam = random(10)+1;
until child[gen].jam + child[gen].sks –1 <= 10
end;
6.2.5.4 Update generasi
Update generasi yang dipergunakan adalah update secara kontinu yang
memperbolehkan orangtua dan anak bercampur menjadi satu, dengan strategi
bantuan elitsm. Sejumlah kromosom yang memiliki nilai fitness terbaik disalin ke
generasi baru sebanyak yang diinginkan, kemudian dilanjutkan dengan proses
pembentukan anak. Dua kromosom orangtua dipilih untuk menghasilkan dua anak
baru yang kemudian ditempatkan ke generasi baru. Proses pembentukan anak
dilakukan terus sampai jumlah polulasi dalam generasi baru lengkap.
Menurut Lee(2000), ide elitism terdengar sebagai ide yang bagus pada
sistem yang kecil, yang relatif memerlukan sedikit iterasi untuk menerapkannya.
Tetapi, sejalan dengan makin kompleksnya sistem, maka jumlah iterasi yang
diperlukan juga semakin banyak, elitism dapat menghalangi eksplorasi terhadap
individu baru yang seharusnya tidak terjadi. Hal ini dapat menyebabkan
konvergensi yang berbahaya. Untuk membandingkan banyaknya generasi yang
diperlukan dalam pembuatan jadwal, parameter elitsm pada program dapat
81
dipergunakan atau tidak. Berikut adalah algoritma update generasi yang terdapat
pada program :
begin
//bangkitkan suatu populasi acak pop berukuran s
GeneratePopulation(pop,s);
//hitung nilai fitness dari kromosom-kromosom dalam populasi
CalculteFitness(pop);
//buat populasi baru sementara NewPop
CreateNewPopulation(newPop);
//lakukan iterasi generasi sebanyak numGeneration
for i = 0 to numGeneration do
begin
// kromosom yang baik dipindah ke populasi baru (elitsm)
Survivor(newPop, pop);
// lakukan seleksi, perkawinan silang dan mutasi
i = jml_Survivor;
while i < (Jml_Kr) do
begin
// lakukan seleksi induk, kromosom1 dan kromosom2 yang harus
// berbeda
repeat
selection(kromosom1, kromosom2);
until kromosom1 <> kromosom2;
// lakukan perkawinan silang antara kromosom1 dan kromosom 2
// hasil masukkan ke newPop
Xover(newPop, kromosom1, kromosom2);
// lakukan mutasi terhadap populasi baru
mutation(newPop);
// variabel i nilainya dinaikkan 2 karena setiap seleksi
// menghasilkan 2 keturunan
82
inc(i,2);
end;
// salin populasi baru ke populasi lama
pop = newPop;
// hitung fitness
calculateFiness(pop);
// cek apakah fitness sudah maksimal
if MaxFitness(pop) = 1 then break;
end;
end;
6.2.6 Pembagian ruangan
Pembagian ruangan dilakukan bersamaan dengan proses pembuatan
jadwal, dimana selalu dilakukan pengecekan ruangan pada semua titik yang
memungkinkan perubahan penggunaan ruangan. Selain itu matrik ruangan telah
memuat data ruangan secara lengkap, sehingga pada saat pengecekan ruangan
juga langsung dilakukan pembagian alokasi ruangan.
Program yang ditulis oleh penulis akan menjadi berbeda dengan yang
ditulis oleh Lee, dimana proses pembagian ruangan juga menggunakan algoritma
genetika, sedangkan pada program yang ditulis oleh penulis tidak, karena adanya
proses pengecekan ruangan memungkinkan setiap ruangan yang digunakan
langsung ditandai, sehingga masalah ruangan telah terselesaikan bersamaan
dengan terselesaikannya masalah penyusunan penjadwalan mata kuliah.
83
6.2.7 Deskripsi program
Tampilan utama program dapat dilihat pada gambar 6.5 berikut ini:
Gambar 6.5 Tampilan utama program
Penggunaan aplikasi dimulai dengan login ke server basisdata, yaitu
interbase dengan cara menginputkan nama pengguna dan password pada form
login. Form login dapat dilihat pada gambar 6.6 berikut ini:
84
Gambar 6.6 Form login
Aplikasi penjadwalan mata kuliah memiliki sejumlah menu utama yang
merupakan input dan konfigurasi program, berikut ini adalah penjelasan fungsi
dari masing-masing sub menu :
1. Utama
A. Login : untuk login ke server basisdata
B. Semester : untuk konfigurasi semester aktif
C. LogOut : untuk logout dari aplikasi
D. Keluar : untuk mengakhiri penggunaan aplikasi
2. Data
A. Data dasar
a. Program studi : untuk nama input program studi
b. Jenis ruangan : untuk input jenis ruangan yang ada
c. Ruangan : untuk input data nama ruang beserta kapasitasnya
d. Mata kuliah : untuk input data mata kuliah beserta sksnya
e. Dosen : untuk input data nama dosen pengajar
f. Waktu dosen : untuk input waktu kesediaan dosen
85
g. Hari dan jam kuliah : untuk input hari dan jam kuliah
B. Data paket
a. Kode paket : untuk input jenis paket mata kuliah
b. Paket mata kuliah : untuk input isi paket mata kuliah
C. Data jadwal
a. Kelas mata kuliah : untuk input data kombinasi antara dosen,
mata kuliah dan jumlah peserta yang akan digunakan untuk
penajdwalan
3. GA
A. Proses : untuk menjalankan proses algoritma genetika penjadwalan
B. Parameter : untuk konfigurasi parameter algoritma genetika
C. File log : untuk konfigurasi yang ditampilkan di file log
6.2.7.1 Input data
Program memerlukan beberapa input data komponen utama penjadwalan
yang meliputi semester, program studi, ruangan, mata kuliah, dosen, waktu
kesediaan dosen, paket mata kuliah dan kombinasi data dasar yang akan
dijadwalkan. Gambar 6.7 sampai dengan gambar 6.17 adalah gambar dari semua
form input yang ada pada program:
86
Gambar 6.7 Form input semester aktif
Gambar 6.8 Form input data program studi
87
Gambar 6.9 Form input jenis ruangan
Gambar 6.10 Form input data ruangan
88
Gambar 6.11 Form input data mata kuliah
Gambar 6.12 Form input data dosen
89
Gambar 6.13 Form input waktu kesediaan dosen
Gambar 6.14 Form input data hari dan jam kuliah
90
Gambar 6.15 Form input data jenis paket mata kuliah
Gambar 6.16 Form input data isi paket mata kuliah
91
Gambar 6.17 Form input data penjadwalan kuliah
6.2.7.2 Konfigurasi
Hal-hal yang perlu untuk dikonfigurasi adalah kombinasi penggunaan
parameter algoritma genetika dan data-data yang hendak ditampilkan pada file
log. Gambar 6.18 dan 6.19 berikut adalah form konfigurasi parameter algoritma
genetika dan form konfigurasi file log :
Gambar 6.18 Form konfigurasi parameter genetika
92
Gambar 6.19 Form konfigurasi tampilan file log
6.2.7.3 Proses algoritma genetika dan hasil
Proses pembuatan jadwal mata kuliah dijalankan melalui tombol proses,
sedangkan 2 tombol yang lain berfungi untuk menyimpan file log dan merubah
jadwal yang telah menjadi dokumen.
Pada gambar terlihat terdapat grid data kromosom dan gen penjadwalan
yang selalu berubah dari generasi ke generasi, selain itu juga terdapat grid hasil
akhir dan log.
93
Gambar 6.20 Form proses penjadwalan dengan algoritma genetika
6.2.8 Penerapan program pada penjadwalan kuliah di F MIPA.
Program akan digunakan untuk menyelesaikan masalah penjadwalan
dengan berbagai kombinasi parameter algoritma genetika. Besar masalah yang
harus diselesaikan adalah penjadwalan sebanyak 313 kelas mata kuliah yang
masing-masing diwakili oleh sebuah gen. Secara default program memiliki
kombinasi parameter sebagai berikut:
94
Tabel 6.2 Kombinasi default parameter genetika Jumlah populasi 60
Jumlah generasi 200
Seleksi Turnamen, n = 3
Perkawinan silang Banyak titik
Persen perkawinan silang 0,7
Persen mutasi 0,1
Elitsm Tidak ada
Parameter-parameter di atas akan diganti nilainya untuk tujuan pembandingan.
6.2.8.1 Cara membandingkan
Tujuan dari pembandingan adalah untuk mendapatkan kombinasi
parameter genetika yang memberikan hasil terbaik. Hasil terbaik adalah hasil
yang didapatkan melalui jumlah generasi paling sedikit dan waktu tercepat.
Sedangkan kombinasi parameter genetika terbaik adalah kombinasi yang
mengalami konvergensi tercepat dan memiliki hasil konsisten selama beberapa
kali percobaan.
Dalam menilai hasil terbaik lebih diutamakan membandingkan jumlah
generasi yang dibutuhkan untuk mendapatkan nilai fitness = 1, yang berarti tidak
terjadi konflik pada jadwal, daripada waktu yang diperlukan untuk mendapatkan
hasil tersebut. Alasannya adalah waktu eksekusi program menjadi lebih lama
dikarenakan adanya pengecekan ruangan dan hal-hal lain yang berhubungan
dengan tampilan program, selain itu jumlah generasi berbanding lurus dengan
waktu yang diperlukan sehingga dapat diwakili dengan jumlah generasi saja.
95
Cara pembandingan yang dipergunakan adalah dengan menjalankan
program sebanyak 7 kali untuk setiap kombinasi parameter genetika untuk
mendapatkan hasil terbaik, median, terjelek, rata-rata (mean) dan standar
deviasinya. Program akan terhenti jika mencapai jadwal sempurna yaitu nilai
fitness 1 atau pada jumlah generasi tertentu, dalam percobaan ini jumlah generasi
dibatasi sebanyak 200 generasi.
6.2.8.2 Seleksi
Tabel 6.3 Hasil uji seleksi turnamen, rangking dan roda roulette Turnamen Rangking Roda Roulette
Maks Fit. Mean Fit Maks Fit. Mean Fit Maks Fit. Mean Fit 1. 0,0109 0,0076 0,0019 0,0016 0,0021 0,0016 2. 0,0084 0,0061 0,0019 0,0016 0,0023 0,0018 3. 0,0078 0,0060 0,0019 0,0016 0,0020 0,0017 4. 0,0081 0,0061 0,0019 0,0016 0,0020 0,0017 5. 0,0090 0,0071 0,0018 0,0016 0,0020 0,0017 6. 0,0100 0,0070 0,0019 0,0016 0,0021 0,0017 7. 0,0079 0,0061 0,0018 0,0016 0,0019 0,0016
Tabel 6.4 Statistika seleksi turnamen, rangking dan roda roulette Terbaik Median Terjelek Mean Stand. Dev. Seleksi
Maks Mean Maks Mean Maks Mean Maks Mean Maks Mean Turnamen 0.0109 0.0076 0.0084 0.0061 0.0078 0.006 0.0089 0.0066 0.0012 0.0006
Rangking 0.0019 0.0016 0.0019 0.0016 0.0018 0.0016 0.0019 0.0016
4.8795E-05 0
Roda Roulette 0.0023 0.0018 0.002 0.0017 0.0019 0.0016 0.0021 0.0017 0.0001
6.90066E-05
96
SELEKSI TURNAMEN, RANGKING DAN ROULETTE
00.0010.0020.0030.004
0.0050.0060.0070.008
0 12 24 36 48 60 72 84 96 108
120
132
144
156
168
180
192
generasi
rata
-rat
a fit
ness
turnamen rangking roulette
Gambar 6.21 Grafik perbandingan seleksi turnamen, rangking dan roda roulette
Dari tabel statistika dan grafik dapat disimpulkan bahwa metode seleksi
turnamen adalah metode seleksi yang paling baik dan dapat mencapai jadwal
sempurna, sedangkan metode seleksi rangking dan roda roulette tidak bekerja
dengan maksimal, dimana konvergensi terjadi sangat lambat dan membutuhkan
banyak generasi. Salah satu penyebab terjadinya hal ini karena metode seleksi
rangking dan roda roulette cenderung memenangkan individu dengan fitness
tinggi untuk menjadi orangtua pembentuk individu baru, sehingga tidak semua
individu tereksplorasi.
97
6.2.8.3 Perkawinan silang
Tabel 6.5 Hasil uji perkawinan silang banyak titik dan rekombinasi Banyak Titik Rekombinasi
Maks Fit. Mean Fit Maks Fit. Mean Fit 1. 0,0109 0,0076 0,0019 0,0016 2. 0,0084 0,0061 0,0019 0,0016 3. 0,0078 0,0060 0,0018 0,0015 4. 0,0081 0,0061 0,0018 0,0015 5. 0,0090 0,0071 0,0017 0,0015 6. 0,0100 0,0070 0,0018 0,0015 7. 0,0079 0,0061 0,0018 0,0016
Tabel 6.6 Statistika perkawinan silang Terbaik Median Terjelek Mean Stand. Dev.
Maks Mean Maks Mean Maks Mean Maks Mean Maks Mean Banyak Titik 0.0109 0.0076 0.0084 0.0061 0.0078 0.006 0.0089 0.0066 0.0012 0.0006
Rekombinasi 0.0019 0.0016 0.0018 0.0015 0.0017 0.0015 0.0018 0.0015
6.90066E-05
5.34522E-05
PERKAWINAN SILANG BANYAK TITIK DAN REKOMBINASI
00.0010.0020.0030.0040.0050.0060.0070.008
0 12 24 36 48 60 72 84 96 108
120
132
144
156
168
180
192
generasi
rata
-rat
a fit
ness
Banyak titik Rekombinasi
Gambar 6.22 Grafik perbandingan perkawinan silang banyak titik dan rekombinasi
Dari data statistika dan grafik dapat diambil kesimpulan bahwa
perkawinan silang dengan metode rekombinasi tidak berbuat banyak untuk
98
menyelesaikan penjadwalan, padahal pada model yang dikembangkan oleh Lee
metode rekombinasi memberikan hasil yang baik. Hal ini disebabkan oleh adanya
perbedaan sistem perkuliahan yang berlaku di Ateneo University dan sistem
perkuliahan di Indonesia pada umumnya, dimana pada model yang dikembangkan
Lee setiap gen pada sistem perkuliahan di Ateneo University jika diberi bobot
sesuai sks dianggap 1, sedangkan untuk setiap gen pada sistem perkuliahan
Indonesia memiliki bobot sks yang bermacam-macam, bisa 1, 2 atau 3 bahkan
lebih. Penerapan rekombinasi pada kromosom yang memiliki bobot sks setiap gen
berbeda-beda ternyata membuat pencarian menjadi proses random murni atau
dengan kata lain terjadi konvergensi prematur.
6.2.8.4 Elitsm
Tabel 6.7 Hasil uji elitsm dan tanpa elitsm Tanpa Elitsm Dengan Elitsm
Maks Fit. Mean Fit Maks Fit. Mean Fit 1. 0,0109 0,0076 0,0081 0,0069 2. 0,0084 0,0061 0,0081 0,0068 3. 0,0078 0,0060 0,0085 0,0071 4. 0,0081 0,0061 0,0073 0,0063 5. 0,0090 0,0071 0,0089 0,0076 6. 0,0100 0,0070 0,0063 0,0055 7. 0,0079 0,0061 0,0093 0,0075
Tabel 6.8 Statistika elitsm dan tanpa elitsm Terbaik Median Terjelek Mean Stand. Dev. Maks Mean Maks Mean Maks Mean Maks Mean Maks Mean Tanpa elitsm 0.0109 0.0076 0.0084 0.0061 0.0078 0.006 0.0089 0.0066 0.0012 0.0006
Dgn. Elitsm 0.0093 0.0075 0.0081 0.0069 0.0063 0.0055 0.0081 0.0068 0.0010 0.0007
99
ELITSM DAN NON ELITSM
0
0.001
0.002
0.003
0.004
0.005
0.006
0.007
0.008
0 12 24 36 48 60 72 84 96 108
120
132
144
156
168
180
192
generasi
rata
-rat
a fit
ness
elitsm non elitsm
Gambar 6.23 Grafik perbandingan elitsm dan tanpa elitsm
Dari data rata-rata keseluruhan dan standar deviasi yang terdapat pada
tabel statistika dapat diambil kesimpulan bahwa penyelesaian tanpa elitsm tidak
terlalu berbeda dibandingkan jika menggunakan elitsm. Dari grafik dapat dilihat
bahwa elitsm meningkatkan rata-rata fitness lebih cepat pada generasi awal, tetapi
pada akhirnya menjadi tidak terlalu berbeda dengan yang tidak menggunakan
elitsm, bahkan pada beberapa titik, tanpa menggunakan elitsm dapat memiliki
rata-rata fitness yang lebih baik.
100
6.2.8.5 Jumlah populasi
Tabel 6.9 Hasil uji jumlah populasi 20, 40, 60 dan 100 20 40 60 100
Maks Fit.
Mean Fit
Maks Fit.
Mean Fit
Maks Fit.
Mean Fit
Maks Fit.
Mean Fit
1. 0,0058 0,0050 0,0075 0,0060 0,0109 0,0076 0,0159 0,0095 2. 0,0049 0,0043 0,0080 0,0061 0,0084 0,0061 0,0130 0,0087 3. 0,0051 0,0049 0,0063 0,0051 0,0078 0,0060 0,0145 0,0091 4. 0,0048 0,0042 0,0083 0,0065 0,0081 0,0061 0,0128 0,0079 5. 0,0048 0,0042 0.0070 0,0057 0,0090 0,0071 0,0127 0,0090 6. 0,0051 0,0043 0,0064 0,0053 0,0100 0,0070 0,0118 0,0084 7. 0,0058 0,0050 0,0074 0,0060 0,0079 0,0061 0,0118 0,0076
Tabel 6.10 Statistika jumlah populasi 20, 40, 60 dan 100 Terbaik Median Terjelek Mean Stand. Dev.
Maks Mean Maks Mean Maks Mean Maks Mean Maks Mean Populasi 20 0.0058 0.005 0.0051 0.0043 0.0048 0.0042 0.0052 0.0046 0.0004 0.0004
Populasi 40 0.0083 0.0065 0.0074 0.006 0.0063 0.0051 0.0073 0.0058 0.0008 0.0005
Populasi 60 0.0109 0.0076 0.0084 0.0061 0.0078 0.006 0.0089 0.0066 0.0012 0.0006
Populasi 100 0.0159 0.0095 0.0128 0.0079 0.0118 0.0076 0.0132 0.0086 0.0015 0.0007
POPULASI 20, 40, 60 DAN 100
00.0010.0020.0030.0040.0050.0060.0070.0080.0090.01
1 13 25 37 49 61 73 85 97 109
121
133
145
157
169
181
193
generasi
rata
-rat
a fit
ness
20 40 60 100
Gambar 6.24 Grafik perbandingan jumlah populasi
101
Dari grafik dapat diambil kesimpulan bahwa semakin sedikit jumlah
populasi semakin banyak generasi yang diperlukan untuk mencapai nilai fitness
lebih baik. Hal ini disebabkan banyaknya kemungkinan kombinasi komponen
penjadwalan yang diwakili oleh individu-individu di dalam populasi, sehingga
kemungkinan mencapai nilai fitness lebih baik lebih besar. Peningkatan rata-rata
fitness cenderung lebih lambat pada populasi kecil, seperti yang bisa dilihat pada
nilai standar deviasi yang tidak lebih besar dari populasi besar. Akan tetapi perlu
diketahui bahwa semakin besar jumlah populasi maka semakin lama waktu yang
diperlukan untuk mengevaluasi fitness setiap generasi. Tingkah laku algoritma
genetika berdasarkan besarnya populasi yang diuji diatas terjadi pada kromosom
yang terdiri dari kurang lebih 300 gen, tidak menutup kemungkinan program
dapat bertingkah berbeda pada kromosom dengan jumlah gen yang lebih sedikit
atau lebih banyak.
BAB VII
PENUTUP
7.1 Kesimpulan
Masalah penjadwalan mata kuliah dapat direpresentasikan ke dalam
bentuk kromosom yang merupakan permodelan dari algoritma genetika yang
selanjutnya dapat di buat menjadi sebuah program setelah di susun algoritma yang
merupakan pemenuhan aturan-aturan penjadwalan dan parameter-parameter
algoritma genetika yang dipergunakan.
Program dapat menghasilkan suatu jadwal kuliah tetapi kadang kala tidak
semua aturan yang harus dilaksanakan terpenuhi secara lengkap, sehingga hasil
tersebut belum dapat dipergunakan untuk penjadwalan sesungguhnya dan masih
memerlukan penelitian dan pengembangan lebih lanjut.
Berdasarkan uji banding parameter-parameter algoritma genetika untuk
masalah penjadwalan mata kuliah yang dilakukan, ternyata metode seleksi terbaik
adalah seleksi turnamen, metode perkawinan silang terbaik adalah perkawinan
silang banyak titik, tanpa elitsm umumnya lebih cepat menyelesaikan
penjadwalan dan jumlah populasi yang lebih baik untuk model kromosom
masalah penjadwalan mata kuliah yang memiliki sekitar 300 gen adalah sekitar
100 individu, tetapi tidak lebih cepat dalam waktu dibandingkan dengan jumlah
populasi yang lebih sedikit.
102
103
7.2 Saran
Tidak semua parameter algoritma genetika telah dipergunakan dalam
program penjadwalan kuliah, sehingga tidak menutup kemungkinan ada
parameter lain yang dapat menyelesaikan proses penyusunan jadwal kuliah
dengan lebih baik.
Aturan penjadwalan kuliah yang dipergunakan dalam skripsi ini belumlah
selengkap sesuai dengan aturan penjadwalan yang digunakan Fakultas
Matematika dan Ilmu Pengetahuan Alam, melainkan hanya hal-hal utama yang
mewakili ciri proses penjadwalan kuliah yang dipergunakan oleh universitas di
Indonesia pada umumnya, sehingga program yang dihasilkan hanyalah sebuah
prototipe yang membuktikan bahwa algoritma genetika dapat dipergunakan untuk
menyelesaikan masalah penjadwalan kuliah di tingkat universitas. Oleh sebab itu
tidak menutup kemungkinan untuk pengembangan program lebih lanjut dengan
menyertakan semua aturan agar dapat dipergunakan untuk menyelesaikan proses
penjadwalan kuliah sesungguhnya.
104
DAFTAR PUSTAKA
Heitkoetter, J., Beasley, D., 1998, The Hitch-Hiker’s Guide to Evolutionary Computation, FAQ for comp.ai.genetic.
Lee, H.S.C., 2000, Timetabling Highly Constrained System Via Genetic Algorithm
(tesis), Department of Mathematics, College of Science,University of the Philippines, Diliman, Quezon City
Otbiko, M,. 1998, An Intoduction to Genetic Algorithm,
http://cs.felk.cvut.cz/~xobitko/ga/ Oskar, 1999, Penerapan Algoritma Genetika dalam Penyelesaian Masalah NP-
Complete (skripsi), Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada, Yogyakarta.
Ross, P., Corne, D., Fang, H.L., 1994, Successful Lecture Timetabling with
Evolutionary Algorithm, Departement of Artificial Intelligence, University of Edinburgh, U.K.
Sahal, M., Purnomo, M.H., Basuki, A., 2000, Pembuatan Software Penjadwalan
Kuliah dan Ujian di Jurusan Teknik Elektro FTI-ITS Surabaya dengan Menggunakan Algoritma Genetika (proceeding), KOMMIT 2000, Jakarta
Tim Penyusun Kamus Pusat Pembinaan dan Pengembangan Bahasa Kamus Besar
Bahasa Indonesia, 1997, Kamus Besar Bahasa Indonesia, Departemen Pendidikan dan Kebudayaan, Balai Pustaka, Jakarta.