Latar Belakang Masalah Terjadinya duplikasi Allele setelah melewati phase Crossover. Mempercepat kromosom untuk mencapai solusi.

BAB III ANALISIS DAN PERANCANGAN

3.1. Latar Belakang Masalah

Sebagian besar proses penjadwalan kuliah di PGSD Universitas Sanata Dharma masih menggunakan cara manual. Program penjadwalan yang ada untuk penjadwalan tidak mampu dalam menyusun data matakuliah di PGSD yang banyak. Jika digunakan, sistem tidak menghasilkan jadwal bahkan sering terjadi crash dalam aplikasinya. Apabila masih menggunakan cara manual akan berdampak pada pekerjaan lain selain penjadwalan matakuliah, misalnya waktu yang dibutuhkan dalam menyusun jadwal timing. Dalam proses pembuatan jadwal kuliah akan menyangkut penempatan matakuliah yang ditawarkan pada hari, ruang, dan jam tertentu. Permasalahan yang dihadapi adalah bagaimana menyusun jadwal matakuliah dengan mempertimbangkan hari, jam dan ruangan yang tepat sehingga tidak terjadi bentrok antar kelas dan matakuliah yang ditawarkan. Selain itu, sistem juga mempertimbangkan dosen yang mengajar sehingga tidak ada hari dan jam yang sama untuk 1 dosen mengajar lebih dari 1 matakuliah. Dalam penyusunan jadwal dapat dilakukan dengan cara manual namun dalam proses pengerjaannya akan mengalami banyak hamabtan terutama dalam hal ketelitian dan permasalahan waktu.

3.2. Analisis Permasalahan

Masalah yang akan dibahas melalui tulisan ini adalah bagaimana sebuah Prodi dapat mengatur jadwal mata kuliah tanpa bentrok sehingga dapat digunakan selama 1 semester. Masalah penjadwalan merupakan masalah yang klasik. Hingga saat ini telah berkembang banyak metode yang dapat digunakan untuk menyelesaikan masalah tersebut. Umumnya masalah ini sangat sulit untuk diselesaikan karena suatu proses penjadwalan diperlukan hard constraint dan soft constraint. Hard Constraint disebut juga Hard Requirement, merupakan salah satu kebutuhan dari suatu penjadwalan yang jika kebutuhan ini dilanggar, maka akan mengakibatkan penjadwalan yang dibentuk tidak dapat digunakan. Hard Constraint merupakan prioritas utama yang harus dipenuhi dalam menyusun jadwal kuliah. Hard Requirement dapat dijabarkan sebagai berikut : 1. Satu ruang hanya dapat digunakan oleh satu matakuliah di hari dan jam tertentu. 2. Satu dosen hanya dapat mengajar satu matakuliah di hari dan jam yang sama. 3. Matakuliah untuk satu semester tertentu tidak boleh berada di jam yang sama kecuali untuk matakuliah yang sama dan dosen berbeda. 4. Jumlah matakuliah di dalam satu semester yang sama tidak boleh lebih dari 3 di hari yang sama. 5. Dosen mengajar dalam sehari tidak boleh lebih dari 3 matakuliah. Soft Constraint disebut juga Soft Requirement merupakan salah satu persyaratan dalam penjadwalan jika syarat ini tidak dipenuhi, penjadwalan dapat terus dilakukan. Soft requirements umumnya merupakan kebijakan – kebijakan yang sudah diputuskan oleh prodi. Contoh soft constrains adalah : 1. Dosen luar dapat memilih jam mengajar yang diinginkan.

3.2.1. Analisis Algoritma Genetika Pada Penjadwalan

Untuk menyusun sebuah jadwal dengan menggunakan Algoritma Genetika, hal yang harus dilakukan adalah merepresentasikan mata kuliah kedalam bentuk yang dimengerti oleh Algoritma Genetika. Dalam Genetika terdapat kata kunci Gen, Allele, Kromosom, dan Populasi. Jika diterapkan ke dalam penjadwalan matakuliah maka : Tabel 3. 1 Tabel Penerapan Algoritma Genetika dalam Penjadwalan Kata Kunci Definisi Gen Gen mewakili hari, jam, dan ruang tertentu untuk kelas kuliah tersebut. Allele Representasi dari Kelas Matakuliah. Kromosom Kumpulan dari Gen. Dengan kata lain, Kromosom adalah Jadwal matakuliah selama seminggu. Populasi Kumpulan dari Jadwal matakuliah. Proses yang dapat dilakukan adalah membangun populasi awal, evaluasi fitness, seleksi, crossover, dan mutasi.Secara umum Diagram Flowchart algoritma genetika yang akan diterapkan pada penjadwalan matakuliah adalah : Start Populasi Awal Evaluasi Fitness Mutasi Crossover Seleksi Kriteria Berhenti Terpenuhi? Hasil jadwal Selesai Gambar 3. 1 Flowchart Algoritma Genetika

3.2.1.1. Perancangan Populasi Awal Penjadwalan

Penjadwalan matakuliah terdiri dari komponen mata kuliah, dosen, hari, jam, dan ruang. Yang akan dijadikan model kromosom adalah komponen mata kuliah, hari, jam dan ruang. Pembentukan populasi awal penjadwalan matakuliah adalah N kromosom, dengan N merupakan kandidat banyaknya matakuliah. Setiap gen dalam kromosom mewakili satu kuliah. Populasi awal dibangkitkan secara random untuk selanjutnya dilakukan proses evaluasi setiap kromosomnya. Panjang 1 kromosom adalah N gen, dimana N merupakan hasil perkalian antara jumlah hari, jumlah ruang, dan jumlah waktu. Pemetaan kromosom akan menerapkan time slot pada jam matakuliah. Setiap time slot terdiri dari 3 jam matakuliah. Berikut tabel penjelasan pengelompokan jam : Tabel 3. 2 Tabel Pengelompokan Jam Pada Tabel 3.2 menjelaskan deskripsi singkat mengenai pengelompokan waktu dalam 1 hari. Jika setiap ruang yang dipakai adalah 12 jam pelajaran, maka pemetaan Ruang dalam kromosom adalah 4 untuk setiap Ruangnya. Jika digambarkan pemetaan ruang yang dikaitkan dengan waktu akan menjadi sebagai berikut : Gambar 3. 2 Pemetaan Ruang dalam Kromosom Gambar 3.2 Setiap 1 time slot waktu akan direpresentasikan dengan 1 Gen. Gen merupakan kandidat Kelas kuliah tertentu. Pemetaan untuk menentukan panjang sebuah Kromosom adalah dengan menggunakan rumus berikut : Ngen = H R W 3 Keterangan : Ngen = jumlah gen dalam 1 kromosom H = jumlah hari dalam perkuliahan R = jumlah ruang dalam perkuliahan W = jumlah waktu dalam perkuliahan Berdasarkan data yang diperoleh, Prodi PGSG Universitas Sanata Dharma menerapkan jadwal dengan 156 Kelas kuliah, 5 hari, 14 ruang teori, dan 12 waktu jam untuk perkuliahan semester Ganjil Tahun Akademik 20132014. Maka jumlah gen yang terbentuk untuk 1 kromosom adalah : Ngen = 5 14 12 3 = 280 Dalam perancangan sistem, Ngen merupakan representasi dari panjang 1 kromosom. Kromosom tersebut merupakan jadwal matakuliah di PGSD selama 1 minggu. Setiap Gen nya memiliki makna Hari, Ruang dan Jam tertentu. Kelas kuliah merupakan komponen penting dalam penyusunan jadwal matakuliah. Kombinasi Matakuliah dan Dosen akan membentuk sebuah Kelas Kuliah. Kelas Kuliah akan berbeda setiap semesternya. Data Matakuliah ditawarkan oleh PGSD terdapat pada Tabel 5.1, data dosen pengampu terdapat pada Tabel 5.2, dan data ruang yang dipakai terdapat pada Tabel 5.3. Data Kelas Kuliah PGSD berdasarkan data Semester Ganjil Tahun Ajaran 20142015 terdapat pada Tabel 5.4. Tabel Kelas Kuliah terdiri dari kode kelas kuliah, kode matakuliah, kode dosen pengampu dan kelas. Data tersebut akan diimplementasikan ke dalam Algoritma Genetika. Dalam menyusun tabel kelas kuliah ke dalam kromosom, masing-masing kelas kuliah akan ditempatkan secara random index Gen nya. Hal ini berarti setiap kelas kuliah memiliki index slot Gen yang berbeda. Index Gen yang tidak ditempati oleh kelas kuliah manapun akan dikodekan dengan 0, yang berarti tidak ada kelas kuliah di hari, jam, dan ruang tersebut. Pemetaan kromosom yang terbentuk dan digabungkan dengan kelas kuliah dapat diilustrasikan sebagai berikut : Gambar 3. 3 Ilustrasi Pemetaan Kromosom 1 Berikut pemetaan Kromosom secara keseluruhan dengan menggabungkan Hari, Ruang, Dan Waktu dalam seminggu waktu kuliah: Gambar 3. 4 Pemetaan Kromosom 2 Berikut sebagian penjelasan pemetaan Kromosom Gambar 3.4 :  Gen[0]  Kelas Kuliah ke 2 PDW 2106 – Logika, Semester 1,Kelas B, Dosen Pengampu G. Ari Nugraha, S.J., M.A. Hari Senin, Ruang 1, Time Slot 1 Jam 07.00-09-59.  Gen[67]  Kelas Kuliah ke 17 PDW 2122 - Bahasa dan Sastra Indonesia, Semester 1, Kelas B, Dosen Pengampu Apri Damai SK, S.S., M.Pd. Hari Selasa, Ruang 3, Time Slot 4 Jam 16.00-18.59.  Gen[234]  Tidak ada kelas kuliah di hari Jumat, Ruang 3, Time Slot 3 13.00-15.59. Populasi merupakan kumpulan dari kromosom. Dengan kata lain, populasi merupakan kumpulan dari jadwal matakuliah. Dalam perancangan program, 1 populasi terdiri dari 4 kromosom. Jika digambarkan maka rancangan populasi yang dibangun untuk Iterasi 1 populasi awal adalah : Gambar 3. 5 Pemetaan Populasi Membangun populasi awal juga mempertimbangkan aturan soft constraint yang berlaku. Pada saat membangun populasi awal, kelas kuliah permintaan akan dimasukkan terlebih dahulu ke dalam sistem sesuai dengan Hari, Ruang, dan Waktu yang sesuai dengan permintaan. kemudian kelas kuliah lainnya akan dimasukkan secara random. Berikut algoritma ProsesRandom. method prosesRandom 1. Buat variabel r bertipe random. 2. Buat variabel hari bertipe int. Set nilai dengan 5. 3. Buat variabel waktu bertipe int. Set nilai dengan 12. 4. Buat variabel matkul bertipe int set dengan panjang kelas kuliah. 5. Buat Gen bernama data sepanjang hariruangwaktu3. 6. Buat variabel boolean bernama cek yang berfungsi untuk mengecek apakah kelas kuliah telah berada di dalam kromosom atau tidak. 7. Buat variabel N bertipe int set dengan matkul. 8. Untuk i = 0 hingga panjang data lakukan langkah 9. 9. Buat gen kosong baru set matakuliah sama dengan kosong dan hari ruang waktu sesuai dengan lokasi gen. 10. Untuk i = 0 hingga matkul lakukan langkah 11. 11. Set seluruh cek dengan false. Menandakan matakuliah belum berada di dalam kromosom. 12. Untuk i = 0 hingga panjang data permintaan lakukan langkah 13-15 13. Masukkan seluruh kelas kuliah ke Gen yang sesuai dengan permintaan Hari, Ruang, dan Waktu. 14. Set cek kelaskuliah permintaan dengan true. Menandakan matakuliah telah ada di dalam kromosom. 15. Kurangi N sebanyak matakuliah permintaan. 16. Buat variabel index bertipe int set dengan 0. 17. Ketika N tidak sama dengan 0. Lakukan langkah 18-22 18. Buat variabel tangkap bertipe int set dengan nilai acak panjang data. 19. Cek apakah cek ke index sama dengan true. Jika ya, maka penambahan nilai index dengan 1. Jika tidak, lakukan langkah 20-22. 20. Cek apakah slot gen posisi tangkap kosong. Jika ya, masukkan kelasMatakuliah ke dalam Gen. 21. Tambahkan nilai index dengan 1. 22. Kurangi nilai N dengan 1. 23. Kembalikan data sebagai nilai balik. 24. Selesai. Gambar 3. 6 Algoritma prosesRandom

3.2.1.2. Evaluasi Fitness Pada Penjadwalan

Setelah kromosom terbentuk, langkah selanjutnya adalah menentukan Nilai Fitness untuk masing masing kromosom. Nilai fitness merupakan penentu kromosom tersebut baik atau tidak. Nilai fitness didapat dari banyaknya pelanggaran Hard Constraint yang dilakukan pada 1 kromosom. Diagram Flowchart evaluasi fitness adalah sebagai berikut : Gambar 3. 7 Flowchart Evaluasi Fitness Adapun aturan constraint dan bobot fitness yang diterapkan dalam Prodi PGSG Universitas Sanata Dharma adalah sebagai berikut : Tabel 3. 3 Tabel Aturan Penjadwalan Matakuliah HC Aturan Nilai Fitness 1. Satu ruang hanya dapat digunakan oleh satu matakuliah di hari dan jam tertentu. Pelanggaran = 1 jika terdapat dua matakuliah di ruang, jam, dan hari yang sama. 2. Satu dosen hanya dapat mengajar satu matakuliah di jam yang sama. Pelanggaran = 1 jika ada dua atau lebih matakuliah dosen tersebut berada di jam yang sama. 3. Matakuliah untuk satu semester tertentu tidak boleh berada di jam yang sama kecuali untuk matakuliah yang sama dan dosen berbeda. Pelanggaran = 1 jika ada dua atau lebih matakuliah sama untuk dosen yang sama di jam yang sama. 4. Jumlah matakuliah di dalam satu semester yang sama tidak boleh lebih dari 3 di hari yang sama. Pelanggaran = 1, jika jumlah matakuliah yang berada di hari yang sama berjumlah 3. 5. Dosen mengajar dalam sehari tidak boleh lebih dari 3 matakuliah. Pelanggaran = 1, jika terdapat lebih dari 3 matakuliah dalam sehari yang diampu dosen yang sama Dalam penentuan nilai fitness, kromosom dikatakan optimal atau merupakan sebuah solusi jika nilai fitnessnya sama dengan 0 nol. Pada flowchart akan memulai dengan mengeksekusi semua kromosom. Setiap kromosom akan dieksekusi untuk mencari nilai fitness dengan menjalankan method eksekusiAturan. Method ini merupakan representasi dari kelima aturan Hard Constraint pada Tabel 3.7. Algoritma Method eksekusiAturanKromosom x 1. Membuat variabel bernama parent bertipe Kromosom. 2. Panggil method cekDosen dengan parameter x. Hasilnya disimpan ke dalam parent. 3. Panggil method cekMatakuliah dengan parameter parent. Hasilnya disimpan ke dalam parent. 4. Panggil method cekJumlahMatakuliah dengan parameter parent. Hasilnya disimpan ke dalam parent. 5. Panggil method cekDosenMengajar dengan parameter parent. Hasilnya disimpan ke dalam parent. 6. Kembalikan nilai parent; 7. Selesai. Gambar 3. 8 Algoritma Method eksekusiAturan Method eksekusiAturan merupakan method yang bertujuan untuk mendapatkan nilai fitness total di setiap gen nya. Nilai fitness setiap gen akan ditambahkan berdasarkan kelima aturan hard constrans HC. Method eksekusiAturan hanya mengecek HC 2 hingga HC 5 saja. HC 1 secara otomatis sudah dapat dipenuhi oleh program karena setiap slot gen hanya dapat berisi 0 hingga 1 kelas matakuliah. Pada method eksekusiAturan, kromosom akan dievaluasi tiap gennya. Ada 5 method yang merepresentasikan aturan penjadwalan matakuliah yang berlaku dalam Prodi PGSD Universitas Sanata Dharma. Berikut penjelasan ke 5 method : HC 2 : method cekDosen parameter x bertipe kromosom 1. Buat variabel posisi_jam bertipe array of int dengan panjangnya sesuai dengan jumlah_ruang kuliah. 2. Buat variabel hari bertipe array of String dengan input Hari Senin sampai Jumat. 3. Buat variabel jam bertipe int dengan nilai awal 1. 4. Buat variabel count bertipe int dengan nilai awal 0. 5. Untuk i sama dengan 0 hingga panjang posisi jam, lakukan langkah 6. 6. jika i sama dengan 0 maka set posisi_jam ke i sama dengan 0. Selain itu set posisi_jam ke i bernilai posisi_jam ke [i-1] ditambah 4. 7. Ketika true, maka lakukan langkah 8. 8. Jika Gen ke count pada kromosom x harinya sama dengan hari yang ke 0 senin, maka menambahkan nilai count dengan 1. Selain itu hentikan looping. 9. Untuk i = 1 hingga panjang hari, lakukan langkah 10-22. 10. Untuk b = 0 sampai kurang dari 4 lakukan langkah 11-19. 11. Untuk j = 0 sampai kurang dari jumlah ruang, lakukan langkah 12-17. 12. Untuk k = j +1 hingga jumlah ruang, lakukan langkah 13-17. 13. Buat variabel banding1 dan banding2 bertipe String. Dimana banding1 menyimpan idDosen dari gen ke posisi_jam ke j dan banding 2 menyimpan idDosen dari gen ke posisi_jam ke k. 14. Cek apakah banding1 sama dengan “-”. Jika ya maka program tidak melakukan apapun. jika tidak, lakukan langkah 15. 15. Cek apakah banding1 sama dengan banding2. Jika ya maka lakukan langkah 16-17. 16. Buat variabel fitness_awal bertipe int yang berisi nilai fitness dari data gen ke posisi_jam ke k. 17. Set nilai fitness gen ke posisijam ke k dengan fitness_awal +1; 18. Untuk l = 0 hingga panjang posisi_jam, lakukan langkah 19. 19. Set posisi_jam ke l sama dengan posisi_jam ke l +1. 20. Untuk l = 0 hingga panjang posisi_jam, lakukan langkah 21. 21. Cek apakah l sama dengan 0. Jika ya makan posisi_jam ke l = count. jika tidak maka posisi_jam ke l sama dengan posisi_jam ke l-1 ditambah 4. 22. Set count sama dengan count + count; 23. Kembalikan nilai x. 24. Selesai. Gambar 3. 9 Algoritma HC2 cekDosen HC 3 : method cekMatakuliah parameter x bertipe kromosom 1. Buat variabel array of int posisi_jam sepanjang jumlah_ruang. 2. Buat variabel hari bertipe array of String dengan isian adalah Hari kuliah senin-jumat 3. Buat variabel jam bertipe int set dengan nilai 1. 4. Buat variabel count bertipe int set dengan 0; 5. Untuk i sama dengan 0 hingga panjang posisi jam lakukan langkah 6 6. Cek apakah i sama dengan 0, Jika ya maka set posisi_jam ke i sama dengan 0.Jika tidak maka set posisi_jam ke i sama dengan posisi jam ke i-1 ditambah 4. 7. Ketika true, maka lakukan langkah 8. 8. Cek apakah Hari gen kromosom x ke count sama dengan hari ke 0 hari senin. Jika ya maka count ditambah 1. Jika tidak maka berhenti looping. 9. Untuk i = 1 hingga panjang hari lakukan langkah 10-27 10. Untuk b = 0 hingga 4 lakukan langkah 11-24 11. Untuk j = 0 hingga jumlah_ruang, lakukan langkah 12-21 12. Untuk k = j +1 hingga jumlah_ruang, lakukan langkah 13-21 13. Buat variabel banding1 bertipe String set dengan idMk kromosom x gen ke posisi_jam ke j. 14. Buat variabel banding2 bertipe String set dengan idMk kromosom x gen ke posisi_jam ke k. 15. Buat variabel banding3 bertipe String set dengan semester kromosom x gen ke posisi_jam ke j. 16. Buat variabel banding4 bertipe String set dengan semester kromosom x gen ke posisi_jam ke k. 17. Buat variabel banding7 bertipe String set dengan kelas kromosom x gen ke posisi_jam ke j. 18. Buat variabel banding8 bertipe String set dengan kelas kromosom x gen ke posisi_jam ke k. 19. Cek apakah banding1 sama dengan “-”. Jika ya, maka tidak menjalankan apapun. Jika tidak, lakukan langkah 20-21. 20. Cek apakah banding3 sama dengan banding4, Jika ya cek juga apakah banding7 sama dengan banding8, jika ya maka buat variabel fitness_awal set dengan nilai fitness kromosom x gen ke posisi_jam ke k. 21. Set gen kromosom x data ke posisi_jam ke k dengan nilai_fitness +1. 22. Untuk l = 0 hingga panjang posisi_jam, lakukan langkah 22. 23. Cek apakah l sama dengan 0. Jika ya makan posisi_jam ke l = count. jika tidak maka posisi_jam ke l sama dengan posisi_jam ke l-1 ditambah 4. 24. Set count sama dengan count + count. 25. Untuk l = 0 hingga posisi_jam lakukan langkah 26. 26. Cek apakah l sama dengan 0, jika ya maka posisi_jam ke l sama dengan count. Jika tidak maka posisi_jam ke l sama dengan posisi jam ke l+1 ditambah 4. 27. Set count sama dengan count+count; 28. Kembalikan nilai x. 29. Selesai. Gambar 3. 10 Algoritma HC3 cekMatakuliah HC 4 : method cekJumlahMatakuliahparameter x bertipe kromosom 1. Buat variabel hari bertipe array of hari yang berisi hari senin - jumat. 2. Buat variabel jam bertipe int set dengan nilai 0. 3. Buat variabel count bertipe int set dengan nilai 0. 4. Buat variabel temp_count bertipe int set dengan nilai 0. 5. Buat variabel kel bertipe ListString set dengan nilai null. 6. Membuat kelompok kelas dalam 1 semester kemudian masukkan kelompok kelas ke dalam kel. 7. Ketika true maka lakukan langkah 8. 8. Cek apakah hari di Gen ke count sama dengan hari ke 0 hari senin. Jika ya maka lakukan penambahan count dengan 1. Jika tidak, maka hentikan looping. 9. Set temp_count = count. 10. Untuk i = 0 hingga panjang hari, lakukan langkah 11-24 11. Untuk jam sama dengan jam hingga temp_count, Lakukan langkah 12-20. 12. Buat variabel banding2 bertipe String set dengan semester Data ke jam. 13. Buat variabel banding3 bertipe String set dengan kelas Data ke jam. 14. Untuk j = 0 hingga panjang kel, Lakukan langkah 15-20. 15. Buat variabel banding1 bertipe array String set dengan semester dan kelas yang didapat dari kel. 16. Cek apakah banding1 ke 0 sama dengan banding2 dan banding1 ke 1 sama dengan banding3. Jika ya, maka lakukan langkah 17-20 17. Buat variabel temp bertipe int set dengan banding1 ke2. 18. Set temp sama dengan temp+1. 19. Tambahkan nilai temp dan masukkan ke dalam kel sebagai penunjik banyaknya kelas dengan semester sama dalam 1 hari. 20. Cek apakah temp lebih besar dari 3. Jika ya maka pelanggaran ditambahkan di data ke jam. 21. Untuk j sama dengan 0 hingga panjang kel. Lakukan langkah 22-23. 22. Buat variabel temp. Pisahkan semester dan Kelas yang ada di kel ke j, 23. Set kel ke j dengan temp ke 0 dan temp ke 1 beserta angka 0 sebagai penentu matakuliah semester yang berada dalam sehari. 24. Set temp_count sama dengan temp_count ditambah count. 25. Kembalikan nilai x. 26. Selesai Gambar 3. 11 Algoritma HC4 cekJumlahMatakuliah HC 5 : method cekDosenMengajar parameter x bertipe kromosom 1. Buat variabel hari ebrtippe Array String dengan inputan Hari Senin hingga Jumat. 2. Buat variabel jam bertipe int set dengan 0. 3. Buat variabel count bertipe int set dengan 0. 4. Buat variabel temp_count bertipe int set dengan 0. 5. Buat variabel kel bertipe ListString set dengan null. 6. Set kel dengan idDosen beserta angka 0 untuk semagai penyimpan dosen mengajar dalam sehari. 7. Lakukan looping untuk mencari rentang hari Senin pada kromosom dengan menambahkan count bernilai 1 setiap kali looping. 8. Set temp_count sama dengan count. 9. Untuk i = 0 hingga panjang hari, Lakukan langkah 10-20 10. Untuk jam = jam hingga temp_count lakukan langkah 11-18 11. Buat variabel banding2 bertipe String set dengan idDosen data ke jam. 12. Untuk j = 0 hingga panjang kel Lakukan langkah 13-18 13. Pisahkan kel ke j idDosen dan jumlah dosen mengajar dan masukkan ke dalam variabel banding1 bertipe Array String. 14. Cek apakah banding1 ke 0 sama dengan banding2. Jika ya maka lakukan langkah 15-18 15. buat variabel temp bertipe int. Simpan banding1 ke 1. 16. set temp sama dengan temp +1. 17. Masukkan temp ke dalam kel ke j. Menandakan bahwa idDosen ke j mengajar sebanyak tenp kali dalam seminggu. 18. Cek apakah temp lebih besar dari 3. Jika ya maka tambahkan nilai Pelanggaran ke dalam data ke jam. 19. Untuk j = 0 hingga panjang kel. Lakukan set jumlah dosen mengajar menjadi 0 tiap masing - masing idDosen. 20. Set temp_count sama dengan temp_Count ditambah count yang berfungsi untuk mengecek hari lainnya. 21. Kembalikan nilai x. 22. Selesai. Gambar 3. 12 Algoritma HC5 cekDosenMengajar

3.2.1.3. Proses Regenerasi Pada Penjadwalan

Proses regenerasi adalah proses perubahan gen-gen generasi sekarang ke gen generasi berikutnya. Proses Regenerasi meliputi Seleksi, Crossover, dan Mutasi. 1. Seleksi Seleksi merupakan proses penentuan dua kromosom yang akan menjadi calon kandidat orang tua untuk membentuk kromosom baru. Pada proses seleksi dilakukan model seleksi Roulette Wheel Selection dengan mengacu pada nilai fitness tersebut. Semakin kecil nilai fitnessnya, maka kromosom tersebut dipilih sebagai orang tua untuk populasi selanjutnya. Dalam program akan menggunakan 4 kromosom dalam 1 populasi. Semakin kecil jumlah fitness yang dimiliki kromosom tersebut, maka akan berdampak pada pergeseran kromosom ke slot teratas. Semakin banyak nilai fitness nya maka akan menduduki posisi terendah. Pada proses seleksi akan menentukan 2 Kromosom terbaik untuk dijadikan orang tua. Berikut algoritma mengurutan Kromosom berdasarkan nilai fitnessnya. Gambar 3. 13 Flowchart Roulette Wheel Selection 2. Perkawinan Silang Crossover Crossover merupakan proses penggabungan dua kromosom yang berasal dari dua orang tua terpilih. Hasil dari penggabungan ini akan membentuk kromosom baru. Program aplikasi yang dibuat oleh penulis menggunakan 4 Kromosom dalam 1 populasi dimana kromosom ke-1 dan ke-2 adalah slot yang dikhususkan untuk kandidat orang tua terpilih. Seleksi kromosom berdasarkan seleksi Roulette Wheel Selection. Sedangkan untuk kromosom ke-3 dan ke-4 adalah slot kromosom yang akan digunakan untuk slot kandidat anak. Kromosom anak 3 dan 4 pada iterasi sebelumnya akan digantikan dengan kromosom baru pada iterasi selanjutnya. Proses ini terjadi karena seleksi alam. Untuk kasus Penjadwalan matakuliah prodi PGSD, penulis akan menerapkan One Point Crossover. Berikut algoritma crossover yang diterapkan pada Aplikasi penjadwalan : Gambar 3. 14 Flowchart Crossover Algoritma diatas menjelaskan bahwa setiap kromosom anak kromosom 2 dan 3 merupakan perpaduan gen kedua orang tuanya kromosom 0 dan 1. Pada One Point Crossover, Titik penenentu keturunan adalah point dimana nilai point merupakan setengah dari panjang tiap kromosom. Pada kasus penjadwalam PGSD, nGen pada tiap kromosom adalah 280. Sehingga point setiap kromosom adalah : point = nGen 2 = 280 2 = 140 Sehingga ilustrasi crossover adalah sebagai berikut : Gambar 3. 15 Ilustrasi Crossover Gambar diatas menjelaskan bahwa kromosom parent 2 dan 3 terjadi seleksi alam. Seleksi alam tersebut mengubah nilai allele kelas mata kuliah dari nilai allele parent. Sehingga memungkinkan child memiliki allele dari kedua induk. 3. Mutasi Mutation Mutasi merupakan penukaran gen yang satu ke gen yang lain dalam satu kromosom. Mutasi yang dipakai dalam aplikasi adalah mutasi biasa. Mutasi biasa adalah mutasi yang tidak memperhatikan nilai fitness. Semua gen memiliki probabilitas yang sama untuk dimutasi. Proses Mutasi dilakukan atas berbagai pertimbangan diantaranya :

a. Terjadinya duplikasi Allele setelah melewati phase Crossover.

Pada phase ini. Kromosom anak setelah di crossover akan memungkinkan terjadinya duplikasi terhadap kelas kuliah yang sama. Selain itu kromosom anak juga memungkinkan terjadi hilangnya allele pada satu kromosom. Pada tahap ini, Mutasi berperan untuk menghilangkan allele duplikat kemudian menggantinya dengan allele yang hilang dalam satu kromosom. Proses mengganti allele yang hilang dilakukan dengan cara random slot gen hingga mendapatkan gen yang kosong. Gambar 3. 16 Ilustrasi Mutasi Replace Duplikat

b. Mempercepat kromosom untuk mencapai solusi.

Pada phase ini, mutasi berperan untuk membentuk kromosom sehingga mencapai solusi. Langkah utama yang dilakukan adalah memindahkan nilai Allele pada slot Gen tertentu ke slot Gen lain. Proses perpindahan setiap Genetasi iterasi adalah 1 slot Gen pada setiap kromosom anak.

3.3. Perancangan Proses