Anda di halaman 1dari 120

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

Optimum Lokal
Optimum Lokal

x
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 f i / f dengan f i adalah fungsi evaluasi dengan kromsom i dan 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 153264798
Kromosom B 856723149
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

+
do until
x /
do until do until
5 y
(+x (/5y)) ( do_until step wall )
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

A
B 37,5%
12,5%
E
C
12,5%
25% D
12,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) 123456879
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.

+ * + *

x / - 2 x / - 2

5 y 3 + 3 + 5 y

z 9 z 9

(+x(/5y)) (*-(3(+z9)2) (+x(/3(+z9))) (*(-5y)2)


Kromosom Kromosom
Keturunan 1 Keturunan 2
orangtua 1 orangtua 2
Gambar 3.18 Contoh perkawinan silang 1-titik pada pengkodean pohon

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 10010111


Kromosom sesudah mutasi 10010011
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 123456897


Kromosom sesudah mutasi 183456297
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.

++

xx -/

55 yy

(+x(/5y)) (+x(-5y))
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
MMS 1601, MMS 1651, MMS 1901, MMS 1911, MMS 1101, MMS 1202, MMS 1107,
I
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.

∑X
f , c ,t
fctr ≤ 1, untuk setiap c (kelas mata kuliah)

2. Tidak ada dosen yang mengajar 2 kelas berbeda pada waktu yang sama.

∑X
t ,c,r
fctr ≤ 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.

∑X
f ,t , r
fctr X fc ' tr ≤ 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

PSTUDI DOSEN HARI


KODEPSD ID_DOSEN ID_HARI
NAMAPSD NAMA_DOSEN NAMA_HARI

MATA_KULIAH

JENIS_RUANG ID_MATA_KULIAH WAKTU_X_DOSEN


KODE_MATA_KULIAH
ID_JNS_RUANG NAMA ID_DOSEN
KET_JNS_RUANG SKS ID_HARI
ID_JNS_RUANG ID_WAKTU

RUANG
ID_RUANG WAKTU (JAM KE-)
NAMA_RUANG KELAS_MTKULIAH
KAPSITAS ID_WAKTU
ID_JNS_RUANG ID_KELAS KET_WAKTU
ID_MATA_KULIAH
KELAS (A,B,…)
SEMESTER ID_DOSEN
SKS_WAKTU
ID_SEM JML_PESERTA
KET_SEM

KODE_PAKET PAKET_MTKUL
KODE_P KODE_P
PSTUDI ID_MTKUL
SEMESTER
ID_SEM

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


Seleksi Terbaik Median Terjelek Mean Stand. Dev.
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 4.8795
0.0019 0.0016 0.0019 0.0016 0.0018 0.0016 0.0019 0.0016 E-05 0
Roda Roulette 6.9006
0.0023 0.0018 0.002 0.0017 0.0019 0.0016 0.0021 0.0017 0.0001 6E-05
96

SELEKSI TURNAMEN, RANGKING DAN


ROULETTE

0.008
0.007
0.006
rata-rata fitness

0.005
0.004
0.003
0.002
0.001
0

108
120
132
144
156
168
180
192
12
24
36
48
60
72
84
96
0

generasi

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 6.9006 5.3452
0.0019 0.0016 0.0018 0.0015 0.0017 0.0015 0.0018 0.0015 6E-05 2E-05

PERKAWINAN SILANG BANYAK TITIK DAN


REKOMBINASI

0.008
0.007
0.006
rata-rata fitness

0.005
0.004
0.003
0.002
0.001
0
108
120
132
144
156
168
180
192
12
24
36
48
60
72
84
96
0

generasi

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.008
0.007
0.006
rata-rata fitness

0.005
0.004
0.003
0.002
0.001
0

108
120
132
144
156
168
180
192
12
24
36
48
60
72
84
96
0

generasi

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 Mean Maks Mean Maks Mean Maks Mean
Fit. Fit Fit. Fit Fit. Fit Fit. 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

0.01
0.009
0.008
0.007
rata-rata fitness

0.006
0.005
0.004
0.003
0.002
0.001
0
109
121
133
145
157
169
181
193
13
25
37
49
61
73
85
97
1

generasi

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.