Sistem Simulasi Penjadwalan Kuliah Dengan Menggunakan Algoritma Genetik

(1)

SKRIPSI

REYNOLD LUMBAN TOBING 050803027

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2010


(2)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

REYNOLD LUMBAN TOBING 050803027

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2010


(3)

PERSETUJUAN

Judul : SISTEM SIMULASI PENJADWALAN

KULIAH DENGAN MENGGUNAKAN ALGORITMA GENETIK

Kategori : SKRIPSI

Nomor Induk Mahasiswa : 050803027

Program Studi : SARJANA (S1) MATEMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU

PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, Januari 2010 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Syahriol Sitorus, S.Si, M.IT Drs. Sawaluddin, M.IT NIP.19710310 199703 1 004 NIP.19591231 199802 1 001

Diketahui/ Disetujui oleh

Departemen Matematika FMIPA USU

Dr. Saib Suwilo, M.Sc. NIP.19640109 198803 1 004


(4)

PERNYATAAN

SISTEM SIMULASI PENJADWALAN KULIAH DENGAN MENGGUNAKAN ALGORITMA GENETIK

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Januari 2010

REYNOLD LUMBAN TOBING 050803027


(5)

PENGHARGAAN

Puji dan syukur kehadirat Tuhan Yesus Kristus atas semua yang telah diberikan sehingga penulis dapat menyelesaikan tulisan ini. Terpujilah Tuhan.

Ucapan terimakasih saya sampaikan kepada Drs. Sawaluddin, M.IT dan Syahriol Sitorus, S.Si, M.IT selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan kepada penulis dalam menyelesaikan tulisan ini. Kepada prof. Dr. Herman Mawengkang dan Drs. James P. Marbun, M.Kom selaku dosen penguji. Ucapan terimakasih juga penulis tujukan kepada Ketua dan Sekretaris Departemen Matematika FMIPA USU Dr. Saib Suwilo, M.Sc dan Drs. Henry Rani Sitepu, M.Si, kepada Dra. Normalina Napitupulu, M.Sc selaku dosen pengajar Algoritma Genetik yang telah memberikan masukan untuk penyelesaian tulisan ini serta seluruh Dosen dan staf pengajar Departemen Matematika FMIPA USU.

Terima kasih yang teristimewa buat orang tua penulis, Ayahanda D. Lumban Tobing dan Ibunda T. br Sinaga yang penuh kasih sayang dan merupakan kekuatan penulis dalam setiap langkah kecil penulis dan telah mendidik penulis selama ini, juga kepada Adinda Alberd Lumban Tobing dan Anggita Christiara Lumban Tobing yang selama ini menjadi motivasi penulis dalam menyelesaikan skripsi ini beserta segenap keluarga yang telah banyak memberikan motivasi dan nasehat kepada saya. Terima kasih juga kepada rekan-rekan medanLinux Community Wardi, S.Si, Erwin Sitanggang, S.Kom, Muhfi Asbin Sagala, Irwan Daniel, Palti Pandiangan, S.Kom dkk, kawan-kawan Open Solaris User Grup Medan Ainul Hizriadi, Jogi Silalhi dkk, dan kawan-kawan di Webmedia Training Center Eko Purwanto, Speedy Learning Center Divi Handoko, teman-teman Cisco Networking Academy Masril, Ali Asman, Ichsan Hakim, semua Management dan semua ruang lingkup kerja PESADA Dina Lumbantobing, Berliana Purba, Vitri Siregar, Juni Ribka dkk, kawan-kawan di BPC dan PK GMKI FMIPA USU Medan, juga kepada teman-teman seperjuangan di Matematika (Golden Generation) stambuk 2005 terkhusus sahabat penulis Meilinda Siahaan di Matematika bidang Komputasi 2005, Wenny Helena Simamora dan Zivora Veronika Sihombing, tidak lupa teman-teman kost Doli Sipahutar, Efraim Parapat, Vanal Simamora, dan Dedi Lumban Tobing dan semua yang tidak dapat disebutkan satu-persatu yang mau membantu penulis baik dalam waktu, tenaga dan pemikiran dalam pengerjaan skripsi ini. Akhirnya, terima kasih buat semua yang telah memberi dukungan kepada penulis. Tuhan memberkati.


(6)

ABSTRAK

Penjadwalan kegiatan kuliah dalam suatu kampus adalah hal yang rumit. Permasalahan yang sering disebut dengan University Timetabling Problems (UTP) ini, selain dilihat dari sisi mahasiswa juga harus dilihat dari sisi dosen, yaitu kemungkinan-kemungkinan dosen akan mengajar lebih dari satu mata kuliah yang ada. Sebab ada kemungkinan jumlah mata kuliah dan jumlah dosen tidak sebanding, sehingga harus dipikirkan juga solusi agar dosen tidak mengampu dua mata kuliah berbeda pada hari dan jam yang sama. Selain itu, harus dipertimbangkan juga ketersediaan kelas sehingga kegiatan belajar dapat dilaksanakan. Tulisan ini membahas tentang salah satu metode simulasi yang dapat digunakan untuk menyelesaikan permasalahan tersebut, yaitu dengan menggunakan pendekatan Algoritma Genetik yang merupakan pendekatan komputasional untuk menyelesaikan masalah yang dimodelkan dengan proses evolusi biologis.


(7)

UNIVERSITY TIMETABLING SIMULATION SYSTEM WITH GENETIC ALGORITHM

ABSTRACT

Studying activity scheduling in a college is a very complicated thing. Problems which is commonly called University Timetabling Problems (UTP), not only seen from the student’s view but also from the lecturer that there are some possibilities the lecturers would teach more than one subject. Because the number of subjects and lecturers may be not comparable, so we have to think about the way out that the lecturer will not teach the different subject at the same time and the same day. Besides that, the avability of study rooms must be considered so the study activity can be done. This minithesis examines about one of the simulation methods which can be used to solve the problem by using Genetic Algorithm approach. This also means a computational approaching which can be used to solve the problem using a evolution biological process as a sample.


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar xi

Bab 1 PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Perumusan Masalah 3

1.3 Pembatasan Masalah 3

1.4 Tujuan Penelitian 4

1.5 Tinjauan Pustaka 4

1.6 Manfaat Penelitian 5

1.7 Diagram Konsepsi 5

1.8 Metodologi Penelitian 6

Bab 2 LANDASAN TEORI 9 2.1 Pengertian Algoritma Genetik 9

2.2 Struktur Umum Algoritma Genetik 10 2.3 Pengkodean 13 2.4 Operator Genetik 14

2.4.1 Seleksi 15

2.4.2 Crossover 16 2.4.3 Mutasi 17 2.4.4 Parameter Genetik 20

2.5 Uraian Singkat Java 2 Standard Edition 21 2.5.1 Mengenal Java 2 Standard Edition 21

2.5.1.1 Java 2 Software Development Kit 22

2.5.1.2 Pemrograman Berorientasi Objek 23 2.5.2 Java Class - Library 24 2.5.3 Komponen dan Tipe Data dalam J2SE 25 2.5.3.1 Keyword dalam Java 25 2.5.3.2 Tipe Data dalam Java 26 Bab 3 PEMBAHASAN 27 3.1 Analisis 27 3.1.1 Identifikasi Masalah 27 3.1.2 Analisis Algoritma Genetik Pada Penjadwalan 28


(9)

3.1.2.2 EvaluasiPenalty Kromosom 31

3.1.2.3 Proses Regenerasi 32

3.1.2.4 Pengujian 33

3.1.3 Mapping Algoritma Genetik 33

3.1.4 Aliran Informasi 39

3.1.4.1 Context Diagram 39

3.1.4.2 Data Flow Diagram(DFD) Level 0 39 3.1.4.3 Data Flow Diagram(DFD) Level 1 40

3.1.5 Pemodelan Data 44

3.2 Perancangan 47

3.2.1 Lingkungan Imlementasi 47

3.2.2 Perancangan Antarmuka 47

3.2.3 Perancangan Proses 49

Bab 4 PERANCANGAN SISTEM 59

4.1 Hasil Perancangan Sistem 59

4.2 Hasil Algoritma Genetik 64

4.3 Evaluasi Algoritma Genetik 65

Bab 5 KESIMPULAN DAN SARAN 66

5.1 Kesimpulan 66

5.2 Saran 67

DAFTAR PUSTAKA 68

LAMPIRAN A.LISTING PROGRAM FORM STARTUP 70


(10)

DAFTAR TABEL

Halaman

Tabel 2.1 ContohCrossover 1-titik 16

Tabel 2.2 ContohCrossover 2-titik 17

Tabel 2.3 ContohCrossover seragam 17

Tabel 2.4 Contoh Mutasi pada pengkodean biner 18 Tabel 2.5 Contoh Mutasi pada pengkodean permutasi 18 Tabel 2.6 Tabel Package yang terdapat dalam J2SE 24

Tabel 2.7 Keyword dalam Java 25

Tabel 2.8 Tipe Data dalam Java 26

Tabel 3.1 Matriks Dosen PengajarAvailable 30

Tabel 3.2 Matriks Kelas Mata Kuliah 30

Tabel 3.3 Matriks RuangAvailable 30

Tabel 3.4 BobotPenalty Setiap GolonganPenalty 32 Tabel 3.5 BobotPenalty Setiap Prioritas 32 Tabel 3.6 Deskripsi Proses Pendataan Jurusan 50 Tabel 3.7 Deskripsi Proses Pendataan Kelas 50 Tabel 3.8 Deskripsi Proses Setting Tahun Jadwal 50 Tabel 3.9 Deskripsi Proses Penentuan Durasi Kuliah 51 Tabel 3.10 Deskripsi Proses Pendataan Mata Kuliah 51 Tabel 3.11 Deskripsi Proses Penempatan Mata Kuliah 51 Tabel 3.12 Deskripsi Proses Penentuan Hari Kuliah 52 Tabel 3.13 Deskripsi Proses Penentuan Jam Kuliah 52 Tabel 3.14 Deskripsi Proses WaktuNot Available 52 Tabel 3.15 Deskripsi Proses Pendataan Ruang Kuliah 53 Tabel 3.16 Deskripsi Proses Waktu RuangNot Available 53 Tabel 3.17 Deskripsi Proses Pendataan Dosen 53 Tabel 3.18 Deskripsi Proses Penempatan Dosen 53 Tabel 3.19 Deskripsi Proses Waktu Dosen Not Available 54 Tabel 3.20 Deskripsi Proses Penyusunan Jadwal 54

Tabel 3.21 Deskripsi Data Jurusan 55

Tabel 3.22 Deskripsi Data Kelas 55

Tabel 3.23 Deskripsi Data Dosen 55

Tabel 3.24 Deskripsi Data Pengajar 55

Tabel 3.25 Deskripsi Data Not_Dosen 56

Tabel 3.26 Deskripsi Data Mata Kuliah 56

Tabel 3.27 Deskripsi Data dt_Matakuliah 56

Tabel 3.28 Deskripsi Data SKS 56

Tabel 3.29 Deskripsi Data Kuliah 56

Tabel 3.30 Deskripsi Data Hari 57

Tabel 3.31 Deskripsi Data Jam 57

Tabel 3.32 Deskripsi Data Not_Hari 57

Tabel 3.33 Deskripsi Data Ruang 57


(11)

Tabel 3.35 Deskripsi Data Jadwal GA 58


(12)

DAFTAR GAMBAR

Halaman

Gambar 1.1 Diagram Konsepsi 5

Gambar 2.1 Diagram Alir Algoritma Genetik 11

Gambar 2.2 Tool-Tool Dasar JDK 23

Gambar 3.1 Algoritma Penyelesaian Jadwal Kuliah 31

Gambar 3.2 Algoritma Penjadwalan Kuliah 34

Gambar 3.3 IlustrasiPointer Penjadwalan Kuliah 36

Gambar 3.4 Persilangan Individu 38

Gambar 3.5 Mutasi Individu 38

Gambar 3.6 Context Diagram 39

Gambar 3.7 Data Flow Diagram (DFD) Level 0 40 Gambar 3.8 DFD Level 1 Proses Pendataan Kelas dan Jurusan 41 Gambar 3.9 DFD Level 1 Proses 2 Pendataan Kurikulum 41 Gambar 3.10 DFD Level 1 Proses 3 Waktu Perkuliahan 42 Gambar 3.11 DFD Level 1 Proses 4 Pendataan Ruang Kuliah 42 Gambar 3.12 DFD Level 1 Proses 5 Pendataan Pengajar 43 Gambar 3.13 DFD Level 1 Proses 6 Penyusunan Jadwal Kuliah 43 Gambar 3.14 Entity Relationship Database (ERD) 45

Gambar 3.15 Skema Diagram 46

Gambar 3.16 Diagram Alir Program Simulasi Penjadwalan Kuliah 48 Gambar 3.17 Flowchart Program Simulasi Penjadwalan Kuliah 49 Gambar 4.1 Menjalankan Program dari Konsole Linux 59 Gambar 4.2 Halaman Startup dan Konfigurasi 60

Gambar 4.3 Form Utama 60

Gambar 4.4 Form Simulasi Jadwal berdasarkan Personal 61 Gambar 4.5 Form Simulasi Jadwal berdasarkan Mata Kuliah 62 Gambar 4.6 Form Simulasi Jadwal berdasarkan Ruangan 62 Gambar 4.7 Form Simulasi Jadwal dengan Algoritma Genetik 63 Gambar 4.8 Form Simulasi Jadwal dengan Algoritma Genetika untuk Hasil

Capaian 100% 63


(13)

adalah karuni a besar dari TanganM u.

Skr i psi i ni kupersembahkan teri sti mewa untuk

Ayahanda dan I bunda terci nta yang selalu ada di hati dan

di seti ap langkah keci lku

dan Adek-adekku tersayang Alberd L umban Tobi ng dan

Anggi ta Chri sti ara L umban Tobi ng

Januari 2010

Reynold L umban Tobi ng


(14)

ABSTRAK

Penjadwalan kegiatan kuliah dalam suatu kampus adalah hal yang rumit. Permasalahan yang sering disebut dengan University Timetabling Problems (UTP) ini, selain dilihat dari sisi mahasiswa juga harus dilihat dari sisi dosen, yaitu kemungkinan-kemungkinan dosen akan mengajar lebih dari satu mata kuliah yang ada. Sebab ada kemungkinan jumlah mata kuliah dan jumlah dosen tidak sebanding, sehingga harus dipikirkan juga solusi agar dosen tidak mengampu dua mata kuliah berbeda pada hari dan jam yang sama. Selain itu, harus dipertimbangkan juga ketersediaan kelas sehingga kegiatan belajar dapat dilaksanakan. Tulisan ini membahas tentang salah satu metode simulasi yang dapat digunakan untuk menyelesaikan permasalahan tersebut, yaitu dengan menggunakan pendekatan Algoritma Genetik yang merupakan pendekatan komputasional untuk menyelesaikan masalah yang dimodelkan dengan proses evolusi biologis.


(15)

UNIVERSITY TIMETABLING SIMULATION SYSTEM WITH GENETIC ALGORITHM

ABSTRACT

Studying activity scheduling in a college is a very complicated thing. Problems which is commonly called University Timetabling Problems (UTP), not only seen from the student’s view but also from the lecturer that there are some possibilities the lecturers would teach more than one subject. Because the number of subjects and lecturers may be not comparable, so we have to think about the way out that the lecturer will not teach the different subject at the same time and the same day. Besides that, the avability of study rooms must be considered so the study activity can be done. This minithesis examines about one of the simulation methods which can be used to solve the problem by using Genetic Algorithm approach. This also means a computational approaching which can be used to solve the problem using a evolution biological process as a sample.


(16)

PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi yang pesat memberikan banyak kemudahan dalam penyelesaian masalah dan pencapaian hasil kerja yang memuaskan bagi kehidupan manusia. Salah satu teknologi itu adalah teknologi komputer. Keberadaan komputer sampai saat ini telah mengalami berbagai kemajuan. Kemampuan komputer untuk melakukan suatu pekerjaan atau tugas pun semakin baik. Jika dahulu komputer digunakan untuk memproses data secara sederhana, maka saat ini penggunaan komputer sudah sangat luas pengaruh dan manfaatnya meliputi segala aspek kehidupan manusia.

Salah satu aspek kehidupan itu sendiri dimana penggunaan komputer saat ini digunakan untuk membuat aplikasi komputasi untuk dalam masalah penjadwalan, yang dalam hal ini yaitu dalam penjadwalan kuliah. Melaksanakan pekerjaan secara efektif dan efisien agar tujuan tercapai merupakan hal yang penting dalam masalah penjadwalan. Oleh karena itu pemahaman mengenai konsep penjadwalan sangat penting, sehingga para pelaksana mengetahui kapan waktu harus memulai suatu pekerjaan dan kapan waktu mengakhirinya.

Penjadwalan kegiatan belajar mengajar dalam suatu kampus adalah hal yang rumit. Permasalahan yang sering disebut dengan University Timetabling Problems (UTP) ini. Selain dilihat dari sisi mahasiswa, juga harus dilihat dari sisi dosen, yaitu kemungkinan-kemungkinan dosen akan mengampu lebih dari satu mata kuliah yang ada, sebab ada kemungkinan jumlah mata kuliah dan jumlah dosen tidak sebanding, sehingga harus dipikirkan juga solusi agar dosen


(17)

tidak mengajar dua mata kuliah berbeda pada hari dan jam yang sama. Selain itu, harus dipertimbangkan juga ketersediaan kelas sehingga kegiatan perkuliahan dapat dilaksanakan.

Salah satu metode simulasi yang dapat digunakan untuk menyelesaikan permasalahan tersebut adalah dengan menggunakan pendekatan algoritma genetik. Algoritma genetik merupakan pendekatan komputasional untuk menyelesaikan masalah yang dimodelkan dengan proses evolusi biologis. Diharapkan dengan digunakannya algoritma genetik akan diperoleh optimasi penjadwalan yaitu kondisi dimana terjadi kombinasi terbaik untuk pasangan mata kuliah dan dosen pengajar secara keseluruhan, tidak ada permasalahan bentrokan jadwal pada sisi mahasiswa, serta ketersediaan ruang yang cukup dan sesuai secara fasilitas untuk seluruh mata kuliah yang ada.

Pada penelitian ini, sistem simulasi penjadwalan dibuat dengan melibatkan parameter-paramenter terdiri atas mata kuliah, slot waktu dengan sejumlah batasan (hari dan jam), mahasiswa, dosen, ruangan dan kapasitasnya, dan syarat (constraint) tertentu. Memasukkan parameter mahasiswa, dan mengaturnya supaya bentrokan pada mahasiswa seminimal mungkin. Juga menghidari mahasiswa kuliah lebih dari 3 mata kuliah dalam sehari. Maka melalui penelitian ini penulis mencoba mengusulkan beberapa alternatif pilihan dari jadwal yang dihasilkan dan mengusulkan perubahan (seminimal mungkin) jika masih terjadi bentrokan jadwal. Terdapat berbagai aspek yang berkaitan dalam penjadwalan tersebut yang harus dilibatkan dalam pertimbangan di antaranya :

1. Terdapat jadwal-jadwal di mana dosen yang bersangkutan tidak bisa mengajar.

2. Tidak boleh adanya jadwal kuliah yang beririsan dengan jadwal kuliah angkatan sebelumnya maupun sesudahnya, sehingga mahasiswa dapat mengambil mata kuliah angkatan sebelumnya maupun sesudahnya. 3. Distribusi jadwal perkuliahan diharapkan dapat merata tiap harinya


(18)

4. Pekerjaan penjadwalan mata kuliah ini akan semakin berat jika melibatkan semakin banyak kelas per-angkatannya.

Di samping aspek-aspek di atas, dalam penyusunan sistem simulasi jadwal kuliah ini pun terdapat sangat banyak kemungkinan yang selayaknya dicoba untuk menemukan penjadwalan yang terbaik. Karena itu dibutuhkan metode optimasi dengan menggunakan algoritma genetik yang dapat diterapkan untuk mengerjakan sistem simulasi penjadwalan kuliah ini.

1.2 Perumusan Masalah

Permasalahan yang terdapat dalam penelitian ini adalah sebagai berikut:

1. Bagaimana membangun sistem simulasi penjadwalan kuliah yang dapat meminimalkan bentrokan sehingga diperoleh suatu sistem simulasi penjawalan kuliah.

2. Bagaimana kinerja algoritma genetik dalam penjadwalan kuliah sehingga diperoleh suatu sistem simulasi penjadwalan kuliah yang baik dan optimal.

1.3 Pembatasan Masalah

Agar pembahasan penelitian ini lebih terarah maka diberikan batasan-batasan masalah yang akan dibahas. Yang menjadi batasan masalah pada penelitian ini adalah :

1. Semua parameter danrestriction yang telah ditentukan dapat diinput. 2. Pemecahan permasalahan dengan metode algoritma genetik.

3. Perancangan aplikasi panjadwalan berbasis desktop.

4. Berbasis Client Server dan tetap memperhatikan sistem keamanan database.


(19)

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah penerapan algoritma genetik untuk menghasilkan sistem simulasi penjadwalan kuliah. Jadwal yang dihasilkan dapat meminimalkan bentrokan seminimal mungkin, sehingga dapat lebih memudahkan penggunanya dalam mendapatkan solusi untuk penanganan penjadwalan kuliah.

1.5 Tinjauan Pustaka

Sebagai pendukung teori dalam penulisan studi ini, penulis menggunakan beberapa buku dan jurnal, antara lain :

Michael Negnevitsky (2005). Secara umum, proses dari algoritma genetik ini berisi step-step procedural sekuensial yang memproses sebuah populasi kromosom buatan (artificial) menjadi populasi baru lainnya. Algoritma ini menggunakan proses seleksi natural dan teknik-teknik yang terinspirasi dari teori genetik, yaitu:crossover dan mutasi.

William B. Langdon (2000). Kekuatan algoritma genetik dalam menemukan solusi optimal telah direkomendasikan dalam berbagai bidang aplikasi seperti finansial, pengolahan citra, pengontrol pipa gas dan penjadwalan produksi. Dan belakangan ini pemanfaatan algoritma genetik semakin meluas di banyak program aplikasi lain sepertigame programming dantext mining.

Rimcharoen (2006). Algoritma genetik menggambarkan populasi seperti sebuah probabilitas distribusi dari kumpulan solusi, oleh karena itu tidak semua populasi perlu untuk disimpan. Dalam setiap generasi, algoritma genetik menghasilkan individu-individu berdasarkan pada probabilitas yang dispesifikasikan dalam probability vector. Individu-individu tersebut akan dievaluasikan dan probability vector akan berubah berdasarkan individu yang terbaik. Algoritma genetik mempunyai keuntungan dalam menggunakan


(20)

memori yang sedikit dan mencapai kualitas yang sebanding dan mempunyai hasil dengan jumlah yang hampir sama dengan yang dihasilkan oleh Basic Genetik Algorithm.

1.6 Manfaat Penelitian

Manfaat yang dapat diambil dari penelitian ini adalah:

1. Memperkaya literatur dalam bidang sistem simulasi penjadwalan kuliah khususnya dengan menggunakan algoritma genetik.

2. Dapat dijadikan sebagai dasar atau pedoman untuk pengembangan sistem simulasi penjadwalan kuliah tingkat lanjut.

1.7 Diagram Konsepsi

Disini penulis menggambarkan diagram konsepsi dari tahapan algoritma genetik terhadap sistem simulasi penjadwalan kuliah:

Gambar 1.1 Diagram Konsepsi Analisa Algoritma Genetik

Implementasi J2SE

Proses Input Data

Generate dengan Program


(21)

Penjelasan Diagram Konsepsi 1. Analisa Algoritma Genetik.

Pada tahapan ini akan dianalisa bagaimana alur proses dari algoritma Genetik, dimana mendefenisikan gen, kromosom, individu dan populasi untuk setiap parameter untuk membuat simulasi penjadwalan kuliah. 2. Implementasi J2SE

Pada tahap ini adalah implementasi pada program J2SE. Sesuai dengan tahap analisa diawal yang pertama kali dibuat dengan membuat defenisi dari masing-masing parameter dari genetik. Sehingga dapat diimplementasikan dalam bentuk program penjadwalan kuliah.

3. ProsesInput Data

Pada tahapan ini merupakan proses input data dari semua parameter-parameter penjadwalan sehingga bisa diolah dalam program yang telah diimplementasikan.

4. Generate dengan Program

Pada tahap ini merupakan proses pembentukan jadwal kuliah dengan Generate semua data input yang telah dimasukkan, sehingga dapat dihasilkan jadwal kuliah.

5. Analisa HasilGenerate

Dalam tahapan ini merupakan analisa hasilGenerate program yang telah dijalankan, dimana akan dilihat hasilnya telah optimal atau belum. Sehingga akan meng-generate ulang apabila hasil dari jadwal yang sebelumnya belum optimal.

1.8 Metodologi Penelitian

Dalam melakukan penelitian ini, penulis menggunakan beberapa metode penelitian, antara lain:


(22)

Penulisan ini dimulai dengan studi kepustakaan yaitu dengan membaca buku-buku, jurnal-jurnal dan bahan-bahan referensi dari internet untuk memperoleh pengertian dan pengetahuan mengenai algoritma genetik, artificial intelligence, analisis dan perancangan sistem, penjadwalan, perancangan, dan pemrograman Java 2 Standard Edition.

2. Analisis

Pada tahap ini dilakukan pengumpulan fakta-fakta yang mendukung perancangan sistem simulasi penjadwalan kuliah dengan mengadakan konsultasi dengan dosen pembimbing maupun dosen yang berkemampuan di bidang ini dan membandingkan dengan yang ada pada buku penuntun, mendaftarkan semua ruangan yang bisa dipakai, membuat slot waktu untuk masing-masing ruangan, mendefinisikan gen atau kromosom atau individu dan populasi, membuat algoritma dan flowchart, merancang sistem database dan proses jadwal kuliah, meliputi:

a. Membuat ERD (Entity Relationship Diagram) untuk menggambarkan hubungan entitas.

b. Membuat skema diagram. c. MembuatContext Diagram.

d. Membuat DFD (Data Flow Diagram) level 0 dan level 1 untuk menggambarkan proses-proses yang terjadi dalam sistem penjadwalan kuliah.

3. Perancangan dan Implementasi

Perancangan dan implementasi sistem simulasi penjadwalan kuliah berdasarkan metode yang digunakan dalam algoritma genetik dengan menggunakan bahasa pemrograman Java 2 Standard Edition (J2SE) dan MySQL 5.1.30 untuk sistem databasenya.

4. Pengujian

Pada tahap ini sistem simulasi yang sudah dirancang diuji oleh pemakai dan membandingkan solusi pada sistem dengan pemikiran dosen pembimbing maupun dosen yang berkemampuan di bidang ini.


(23)

5. Penyusunan laporan dan kesimpulan akhir.

Menyusun laporan hasil analisa simulasi ke dalam format penulisan tugas akhir dengan disertai kesimpulan akhir.


(24)

LANDASAN TEORI

2.1 Pengertian Algoritma Genetik

Algoritma ini ditemukan di Universitas Michigan, Amerika Serikat oleh John Holland (1975) melalui sebuah penelitian dan dipopulerkan oleh salah satu muridnya, David Goldberg (1989). Dimana mendefenisikan algoritma genetik ini sebagai metode algoritma pencarian berdasarkan pada mekanisme seleksi alam dan genetik alam.

Algoritma genetik adalah algoritma yang berusaha menerapkan pemahaman mengenai evolusi alamiah pada tugas-tugas pemecahan-masalah (problem solving). Pendekatan yang diambil oleh algoritma ini adalah dengan menggabungkan secara acak berbagai pilihan solusi terbaik di dalam suatu kumpulan untuk mendapatkan generasi solusi terbaik berikutnya yaitu pada suatu kondisi yang memaksimalkan kecocokannya atau lazim disebut fitness. Generasi ini akan merepresentasikan perbaikan-perbaikan pada populasi awalnya. Dengan melakukan proses ini secara berulang, algoritma ini diharapkan dapat mensimulasikan proses evolusioner.

Pada akhirnya, akan didapatkan solusi-solusi yang paling tepat bagi permasalahan yang dihadapi. Untuk menggunakan algoritma genetik, solusi permasalahan direpresentasikan sebagai khromosom. Tiga aspek yang penting untuk penggunaan algoritma genetik:

1. Defenisi fungsifitness

2. Defenisi dan implementasi representasi genetik 3. Defenisi dan implementasi operasi genetik


(25)

Jika ketiga aspek di atas telah didefinisikan, algoritma genetik akan bekerja dengan baik. Tentu saja, algoritma genetik bukanlah solusi terbaik untuk memecahkan segala masalah. Sebagai contoh, metode tradisional telah diatur untuk untuk mencari penyelesaian dari fungsi analitisconvex yang “berperilaku baik” yang variabelnya sedikit. Pada kasus-kasus ini, metode berbasis kalkulus lebih unggul dari algoritma genetik karena metode ini dengan cepat menemukan solusi minimum ketika algoritma genetik masih menganalisa bobot dari populasi awal.

Untuk problem-problem ini pengguna harus mengakui fakta dari pengalaman ini dan memakai metode tradisional yang lebih cepat tersebut. Akan tetapi, banyak persoalan realistis yang berada di luar golongan ini. Selain itu, untuk persoalan yang tidak terlalu rumit, banyak cara yang lebih cepat dari algoritma genetik. Jumlah besar dari populasi solusi, yang merupakan keunggulan dari algoritma genetik, juga harus mengakui kekurangannya dalam dalam kecepatan pada sekumpulan komputer yang dipasang secara seri-fitness function dari tiap solusi harus dievaluasi. Namun, bila tersedia komputer-komputer yang paralel, tiap prosesor dapat mengevaluasi fungsi yang terpisah pada saat yang bersamaan. Karena itulah, algoritma genetik sangat cocok untuk perhitungan yang paralel.

2.2 Struktur Umum Algoritma Genetik

Algoritma genetik memberikan suatu pilihan bagi penentuan nilai parameter dengan meniru cara reproduksi genetik, pembentukan kromosom baru serta seleksi alami seperti yang terjadi pada makhluk hidup. Algoritma Genetik secara umum dapat diilustrasikan dalam diagram alir berikut ini:


(26)

Tidak

Ya

Gambar 2.1 Diagram Alir Algoritma Genetik

Golberg (1989) mengemukakan bahwa algoritma genetik mempunyai karakteristik-karakteristik yang perlu diketahui sehingga dapat terbedakan dari prosedur pencarian atau optimasi yang lain, yaitu:

1. Algoritma genetik dengan pengkodean dari himpunan solusi permasalahan berdasarkan parameter yang telah ditetapkan dean bukan parameter itu sendiri.

2. Algoritma genetik pencarian pada sebuah solusi dari sejumlah individu-individu yang merupakan solusi permasalahan bukan hanya dari sebuah individu.

3. Algoritma genetik informasi fungsi objektif (fitness), sebagai cara untuk mengevaluasi individu yang mempunyai solusi terbaik, bukan turunan dari suatu fungsi.

4. Algoritma genetik menggunakan aturan-aturan transisi peluang, bukan aturan-aturan deterministik.

Skema Pengkodean

Inisialisasi Populasi

Fungsi Objektif

Generasi Tua/ lama

Seleksi

Perkawinan Silang (Crossover)

Mutasi

Generasi Baru

Fungsi Objektif

Kondisi Terminasi


(27)

Variabel dan parameter yang digunakan pada algoritma genetik adalah: 1. Fungsifitness (fungsi tujuan) yang dimiliki oleh masing-masing individu

untuk menentukan tingkat kesesuaian individu tersebut dengan criteria yang ingin dicapai.

2. Populasi jumlah individu yang dilibatkan pada setiap generasi. 3. Probabilitas terjadinya persilangan (crossover) pada suatu generasi. 4. Probabilitas terjadinya mutasi pada setiap individu.

5. Jumlah generasi yang akan dibentuk yang menentukan lama penerapan algoritma genetik.

Secara umum struktur dari suatu algoritma genetik dapat mendefenisikan dengan langkah-langkah sebagai berikut:

1. Membangkitkan populasi awal

Populasi awal ini dibangkitkan secara random sehingga didapatkan solusi awal. Populasi itu sendiri terdiri atas sejumlah kromosom yang merepresentasikan solusi yang diinginkan.

2. Membentuk generasi baru

Untuk membentuk generasi baru, digunakan operator reproduksi/ seleksi, crossover dan mutasi. Proses ini dilakukan berulang-ulang sehingga didapatkan jumlah kromosom yang cukup untuk membentuk generasi baru dimana generasi baru ini merupakan representasi dari solusi baru. Generasi baru ini dikenal denga istilah anak (offspring).

3. Evaluasi solusi

Pada tiap generasi, kromosom akan melalui proses evaluasi dengan menggunakan alat ukur yang dinamakan fitness. Nilai fitness suatu kromosom menggambarkan kualitas kromosom dalam populasi tersebut. Proses ini akan mengevaluasi setiap populasi dengan menghitung nilai fitness setiap kromosom dan mengevaluasinya sampai terpenuhi kriteria berhenti. Bila kriteria berhenti belum terpenuhi maka akan dibentuk lagi generasi baru dengan mengulangi langkah 2. Beberapa kriteria berhenti sering digunakan antara lain: berhenti pada generasi tertentu, berhenti setelah dalam beberapa generasi berturut-turut didapatkan nilai fitness


(28)

tertinggi tidak berubah, berhenti dalamn generasi tidak didapatkan nilai fitness yang lebih tinggi.

Fungsifitness tersebut sebagai berikut:

(2.1)

dimana:

Dari persamaan diatas nilai fitness ditentukan oleh nilaipenalty.Penalty tersebut menunjukkan jumlah pelanggaran kendala pada suatu kromosom. Semakin tinggi nilai fitness akan semakin besar kemungkinan kromosom tersebut terpilih ke generasi berikutnya. Jadi nilai penalty berbanding terbalik dengan nilaifitness, semakin kecil nilai penalty (jumlah pelanggaran) semakin besar nilaifitnessnya.

Jadi fungsifitness:

(2.2)

Keterangan:

Bp : Bobot Pelanggaran Np : Indikator Pelanggaran

2.3 Pengkodean

Pengkodean adalah suatu teknik untuk menyatakan populasi awal sebagai calon solusi suatu masalah ke dalam suatu kromosom sebagai suatu kunci pokok persoalan ketika menggunakan algoritma genetik.

Berdasarkan jenis symbol yang digunakan sebagai nilai suatu gen, metode pengkodean dapat diklasifikasikan sebagai berikut:

1

1

Fitness

Penalti

=

+

penalti=

∑ ∑

Bp Np

1

1

Fitness

Bp

Np

=

+

∑ ∑


(29)

1. Pengkodean biner merupakan cara pengkodean yang paling umum digunakan karena adalah yang pertama kali digunakan dalam algoritma genetik oleh Holland. Keuntungan pengkodean ini adalah sederhana untuk diciptakan dan mudah dimanipulasi. Pengkodean biner memberikan banyak kemungkinan untuk kromosom walaupun dengan jumlah nilai-nilai yang mungkin terjadi pada suatu gen yang sedikit (0 dan 1). Di pihak lain, pengkodean biner sering tidak sesuai untuk banyak masalah dan kadang pengoreksian harus dilakukan setelah operasi crossover dan mutasi.

2. Pengkodean bilang riil adalah suatu pengkodean bilangan dalam bentuk riil. Masalah optimalisasi fungsi dan optimalisasi kendala lebih tepat jika diselesaikan dengan pengkodean bilangan riil karena struktur topologi ruang genotif untuk pengkodean bilangan riil identik dengan ruang fenotifnya, sehingga mudah membentuk operator genetik yang efektif dengan cara memakai teknik yang dapat digunakan yang berasal dari metode konvensional.

3. Pengkodean bilangan bulat adalah metode yang mengkodekan bilangan dalam bentuk bilangan bulat. Pengkodean ini baik digunakan untuk masalah optimisasi kombinatorial.

4. Pengkodean struktur data adalah model pengkodean yang menggunakan struktur data. Pengkodean ini digunakan untuk masalah kehidupan yang lebih kompleks seperti perencanaan jalur robot, dan masalah pewarnaan Graph.

2.4 Operator Genetik

Algoritma genetik merupakan proses pencarian yang heuristik dan acak sehingga penekanan pemilihan operator yang digunakan sangat menentukan keberhasilan algoritma genetik dalam menemukan solusi optimum suatu masalah yang diberikan. Hal yang harus diperhatikan adalah menghindari terjadinya konvergensi premature, yaitu mencapai solusi optimum yang belum waktunya, dalam arti bahwa solusi yang diperoleh adalah hasil optimum lokal.


(30)

Operator genetik yang digunakan setelah proses evaluasi tahap pertama membentuk populasi baru dari generasi sekarang. Operator-operator tersebut adalah operator seleksi,crossover dan mutasi.

2.4.1 Seleksi

Seleksi bertujuan memberikan kesempatan reproduksi yang lebih besar bagi anggota populasi yang paling fit. Langkah pertama dalam seleksi ini adalah pencarian nilaifitness. Masing-masing individu dalam suatu wadah seleksi akan menerima probabilitas reproduksi yang tergantung pada nilai objektif dirinya sendiri terhadap nilai objektif dari semua individu dalam wadah seleksi tersebut. Nilaifitness inilah yang nantinya akan digunakan pada tahap seleksi berikutnya (Kusumadewi, 2003).

Kemampuan algoritma genetik untuk memproduksi kromosom yang lebih baik secara progresif tergantung pada penekanan selektif (selective pressure) yang diterapkan ke populasi. Penekanan selektif dapat diterapkan dalam dua cara. Cara pertama adalah membuat lebih banyak kromosom anak yang dipelihara dalam populasi dan memilih hanya kromosom-kromosom terbaik bagi generasi berikut. Walaupun orang tua dipilih secara acak, metode ini akan terus menghasilkan kromosom yang lebih baik berhubungan dengan penekanan selektif yang diterapkan pada individu anak tersebut.

Cara lain menerapkan penekanan selektif adalah memilih orang tua yang lebih baik ketika membuat keturunan baru. Dengan metode ini, hanya kromosom sebanyak yang dipelihara dalam populasi yang perlu dibuat bagi generasi berikutnya. Walaupun penekanan selektif tidak diterapkan ke level keturunan, metode ini akan terus menghasilkan kromosom yang lebih baik, karena adanya penekanan selektif yang diterapkan ke orangtua.


(31)

Ada beberapa metode untuk memilih kromosom yang sering digunakan antara lain adalah seleksi roda rolet (roulette wheel selection), seleksi ranking (rank selection) dam seleksi turnamen (tournament selection).

Dalam penelitian ini, metode yang digunakan adalah seleksi roda rolet (roulette wheel selection). Pada seleksi ini, orang tua dipilih berdasarkan fitness mereka. Lebih baik kualitas suatu kromosom, lebih besar peluangnya untuk terpilih. Probabilitas suatu individu terpilih untuk crossover sebanding dengan fitness-nya. Cara penyeleksian ini merupakan peniruan dari permainan roda rolet.

2.4.2Crossover

Crossover (perkawinan silang) bertujuan menambah keanekaragaman string dalam populasi dengan penyilangan antar-string yang diperoleh dari sebelumnya. Beberapa jeniscrossover tersebut adalah:

1. Crossover 1-titik

Padacrossover dilakukan dengan memisahkan suatu string menjadi dua bagian dan selanjutnya salah satu bagian dipertukarkan dengan salah satu bagian dari string yang lain yang telah dipisahkan dengan cara yang sama. Proses yang demikian dinamakan operator crossover satu titik seperti diperlihatkan pada gambar berikut:

Tabel 2.1 ContohCrossover 1-titik Kromosom Orangtua 1 11001011 Kromosom Orangtua 2 11011111

Keturunan 11001111

2. Crossover 2-titik

Proses crossover ini dilakukan dengan memilih dua titik crossover. Kromosom keturunan kemudian dibentuk dengan barisan bit dari awal kromosom sampai titikcrossover pertama disalin dari orangtua pertama,


(32)

bagian dari titik crossover pertama dan kedua disalin dari orangtua kedua, kemudian selebihnya disalin dari orangtua pertama lagi.

Tabel 2.2 ContohCrossover 2-titik Kromosom Orangtua 1 11001011 Kromosom Orangtua 2 11011111

Keturunan 11011111

3. Crossover seragam

Crossover seragam manghasilkan kromosom keturunan dengan menyalin bit-bit secara acak dari kedua orangtuanya.

Tabel 2.3 ContohCrossover seragam Kromosom Orangtua 1 11001011 Kromosom Orangtua 2 11011111

Keturunan 11011111

2.4.3 Mutasi

Mutasi merupakan proses mengubah nilai dari satu atau beberapa gen dalam suatu kromosom. Operasi crossover yang dilakukan pada kromosom dengan tujuan untuk memperoleh kromosom-kromosom baru sebagai kandidat solusi pada generasi mendatang denga fitness yang lebih baik, dan lama-kelamaan menuju solusi optimum yang diinginkan. Akan tetapi, untuk mencapai hal ini, penekanan selektif juga memegang peranan yang penting. Jika dalam proses pemilihan kromosom-kromosom cenderung pada kromosom yang memiliki fitness yang tinggi saja, konvergensi premature, yaitu mencapai solusi yang optimal lokal sangat mudah terjadi

Untuk menghindari konvergensi premature tersebut dan tetap menjaga perbedaan (diversity) kromosom-kromosom dalam populasi, selain melakukan penekanan selektif yang lebih efisien, operator mutasi juga dapat digunakan.


(33)

Proses mutasi dalam system biologi berlangsung dengan mengubah isi allele gen pada suatu locus dengan allele yang lain. Proses mutasi ini bersifat acak sehingga tidak selalu menjamin bahwa setelah proses mutasi akan diperoleh kromosom denganfitness yang lebih baik.

Operator mutasi merupakan operasi yang menyangkut satu kromosom tertentu. Beberapa cara operasi mutasi diterapkan dalam algoritma genetik menurut jenis pengkodean terhadapphenotype, antara lain:

1. Mutasi dalam Pengkodean Biner

Mutasi pada pengkodean biner merupakan operasi yang sangat sederhana. Proses yang dilakukan adalah menginversi nilai bit pada posisi tertentu yang terpilih secara acak (atau menggunakan skema tertentu) pada kromosom, yang disebutinverse bit.

Tabel 2.4 Contoh Mutasi pada pengkodean biner Kromosom sebelum mutasi 1 0 0 1 01 1 1 Kromosom setelah mutasi 1 0 0 1 00 1 1

2. Mutasi dalam Pengkodean Permutasi

Proses mutasi yang dilakukan dalam pengkodean biner dengan mengubah langsung bit-bit pada kromosom tidak dapat dilakukan pada pengkodean permutasi karena konsistensi urutan permutasi harus diperhatikan. Salah satu cara yang dapat dilakukan adalah dengan memilih dua posisi (locus) dari kromosom dan kemudian nilainya saling dipertukarkan.

Tabel 2.5 Contoh Mutasi pada pengkodean permutasi Kromosom sebelum mutasi 1 23 4 6 5 87 9 Kromosom setelah mutasi 1 27 4 6 5 83 9

3. Mutasi dalam Pengkodean Nilai

Mutasi pada pengkodean nilai hampir sama dengan yang dilakukan pada pengkodean biner, tetapi yang dilakukan bukan menginversi nilai bit.


(34)

Penerapannya bergantung pada jenis nilai yang digunakan. Sebagai contoh untuk nilai riil, proses mutasi dapat dilakukan seperti yang dilakukan pada pengkodean permutasi, dengan saling mempertukarkan nilai dua gen pada kromosom.

4. Mutasi dalam Pengkodean Pohon

Mutasi dalam pengkodean pohon dapat dilakukan antara lain dengan cara mengubah operator (+, -, *, /) atau nilai yang terkandung pada suatu verteks pohon yang dipilih. Atau, dapat juga dilakukan dengan memilih dua verteks dari pohon dan saling mempertukarkan operator atau nilainya.

Tidak setiap gen selalu dimutasi tetapi mutasi dikontrol dengan probabilitas tertentu yang disebut dengan mutation rate (probabilitas mutasi) dengan notasiPm. Jenis operator mutasi antara lain:

1. Mutasi Terarah

Mutasi terarah tergantung dari informasi gen. Informasi gen tersebut berupa nilai pelanggaran gen (violation gen). Ini berarti bahwa setiap gen mempunyai peluang yang berbeda untuk terjadi mutasi. Gen yang mempunyai nilai pelanggaran yang lebih besar maka gen tersebut mempunyai peluang untuk terjadi mutasi. Mutasi ini menghubungkan nilai pelanggaran relatif (nilai pelanggaran suatu gen dibagi dengan nilai pelanggaran total suatu kromosom) dengan probabilitas terjadinya mutasi dari suatu gen pada kromosom. Hubungan tersebut dinyatakan secara matematis sebagai berikut:

(2.3)

(2.4)

Keterangan persamaan:

nr(i) : nilai pelanggaran relative gen ke-i ntotal : nilai pelanggaran total kromosom

( )

( )

1

total

n i

nr i

n

=

+

2

( )

(1

( ))


(35)

pm(i) : probabilitas mutasi gen ke-i pm : probabilitas mutasi

2. Mutasi Biasa

Mutasi biasa tidak tergantung dari informasi gen. Setiap gen mempunyai peluang yang sama untu terjadi mutasi.

2.4.4 Parameter Genetik

Pengoperasian algoritma genetik dibutuhkan 4 parameter (Juniawati, 2003) yaitu:

1. Probabilitas Persilangan (Crossover Probability)

Menunjukkan kemungkinan crossover terjadi antara 2 kromosom. Jika tidak terjadi crossover maka keturunannya akan sama persis dengan kromosom orangtua, tetapi tidak berarti generasi yang baru akan sama persis dengan generasi yang lama. Jika probabilitas crossover 100% maka semua keturunannya dihasilkan dari crossover. Crossover dilakukan dengan harapan bahwa kromosom yang baru akan lebih baik. 2. Probabilitas Mutasi (Mutation Probability)

Menunjukkan kemungkinan mutasi terjadi pada gen-gen yag menyusun sebuah kromosom. Jika tidak terjadi mutasi maka keturunan yang dihasilkan setelah crossover tidak berubah. Jika terjadi mutasi bagian kromosom akan berubah. Jika probabilitas 100%, semua kromosom dimutasi. Jika probabilitasnya 0%, tidak ada yang mengalami mutasi. 3. Jumlah Individu

Menunjukkan jumlah kromosom yang terdapat dalam populasi (dalam satu generasi). Jika hanya sedikit kromosom dalam populasi maka algoritma genetik akan mempunyai sedikit variasi kemungkinan untuk melakukan crossover antara orangtua karena hanya sebagian kecil dari search space yang dipakai. Sebaliknya jika terlalu banyak maka algoritma genetik akan berjalan lambat.


(36)

4. Jumlah Populasi

Menetukan jumlah populasi atau banyaknya generasi yang dihasilkan, digunakan sebagai batas akhir proses seleksi, persilangan dan mutasi.

2.5 Uraian Singkat Java 2Standard Edition

Untuk mengembangkan program aplikasi ini penulis menggunakan bahasa pemrograman berbasis Java 2Standard Edition. Penulis akan memperkenalkan dari:

1. Mengenal Java 2Standard Edition.

2. Struktur Aplikasi Java 2Standard Edition Development Kit. 3. Beberapa komponen dalam Java yaitu java class-library. 4. Keyword dan tipe data dalam Java 2 Standard Edition.

2.5.1 Mengenal Java 2Standard Edition

Nama Java kebetulan sama dengan pulau tempat tinggal sebagian besar penduduk Indonesia, Jawa. Meskipun demikian, proses kelahirannya tidak ada hubungannya secara fisik dengan Indonesia atau pulau Jawa.

Sejarah kelahiran bahasa Java dimulai pada tahun 1991 ketika Sun Microsystems memulai proyek penelitian yang diberi kode Green. Proyek ini bertujuan untuk membangun system yang memungkinkan komputer berperan dalam peralatan rumah tangga. Bahasa ini sangat berkembang pesat terutama untukweb programming. Dalam beberapa tahun terakhir, Java telah merambah dunia mobile dengan J2ME (Micro Edition: MIDlet, dipakai dalam mobile phone, PDA, smart phone dan sebagainya). Java juga banyak dipakai dalam aplikasiserver dengan J2EE (Enterprise Edition: JSP, servlet). Dalam penelitian ini penulis menggunakan J2SE (Java 2Standard Edition). Yaitu terutama untuk pemrograman aplikasi java dan applet.


(37)

2.5.1.1 Java 2Software Development Kit

Java 2 SDK (Software Development Kit) adalah suatu perangkat lunak yang digunakan untuk manajemen dan membangun berbagai macam aplikasi Java. Java SDK sering juga disingkat dengan JDK (Java Development Kit). Pemrograman windows GUI (Graphical User Interface) adalah interaksi antara pengguna aplikasi dengan aplikasi dilakukan melalui antarmuka yang disebut dengan graphical user interface, yaitu antarmuka grafik yang memudahkan pemakainnya untuk navigasi dengan menggunakan elemenuser interface seperti button,list,input field, komponen activeX dan lainnya.

Pada saat ini aplikasi sistem simulasi ini ditulis padaplatform windows dan dengan menggunakan X-window Unix atau Linux pada Ubuntu 8.04 interface. Diharapkan aplikasi ini akan diimplementasikan juga pada platform yang lain, seperti Apple Machintos,Free BSD dan lainnya.

Aplikasi Java yang dibangun dengan memakai berbagai macam tool dari JDK dapat digambarkan dengan diagram berikut:


(38)

Gambar 2.2Tool-Tool Dasar JDK

2.5.1.2 Pemrograman Berorientasi Objek

Orientasi objek merupakan metode pemrograman modern yang mempunyai kelebihan ketimbang dengan metode konvensional biasa. Salah satu keuntungan pemrograman berorientasi objek adalah Reusability (kemampuan untuk digunakan kembali), yaitu memakai komponen yang sudah pernah dibuat, baik dibuat sendiri maupun yang dibuat oleh pihak lainnya, untuk kemudian mengintegrasikan komponen ini dalam aplikasi yang baru.

EDITOR TEXT Source code (Java)

COMPILER (javac)

GENERATOR DOKUMENTASI

(javadoc : .html) GENERATOR

ARCHIEVE (jar)

DISASSEMBLER (javap)

DEBUGGER (jdb)

GENERATOR HEADER

(javah) INTERPRETER

(java)

APPLET VIEWER Byte-Code


(39)

2.5.2 JavaClass-Library

Java menyediakan library-library standard yang telah di-compile dan dapat langsung dipakai. Dalam library ini terdapat bermacam-macam class yang dikelompokkan ke dalam package-package. Tabel berikut menjelaskan package-package yang tersedia dalam J2SE, yaitu terdiri dari class-class inti yang dipakai dalam pemrograman bahasa java.

Tabel 2.6 TabelPackage yang terdapat dalam J2SE

Package Namapackage Keterangan

Language java.lang Class-class utama merupakan inti dari bahasa java

Utilities java.util Class-class yang mendukung utilitas struktur data

I/O java.io Class-class yang mendukung bermacam-macam tipe input/ output

Text java.text

Class-class yang mendukung lokalisasi untuk penanganan teks, tanggal, bilangan

danmessage

Math java.math

Class-class untuk melakukan perhitungan aritmatikarbitrary-precesion, baik integer

ataufloating point

AWT java.awt

Abstract Windowing Toolkit.Class untuk peracanganuser-interface danevent

-handling

Swing javax.swing

Class untuk membuat berbagai komponen dalam java yang bertingkah laku sama

dengan berbagaiplatform Javax javax Perluasan/extention dari bahasa java Applet java.applet Class-class untuk membuat applet

Beans java.beans Class untuk membuat Java Beans Reflection java.lang,reflect Class untuk memperoleh informasirun-time


(40)

SQL java.sql Class untuk mendukung akses dan pengolahan data dalam database RMI java.rmi Class untuk mendukungdistributed

programming

Networking java.net Class yang mendukung dalam pembangunan aplikasi jaringan Security java.security Class untuk mendukung keamanan

kriptografi

2.5.3Keyword dan Tipe Data dalam J2SE

2.5.3.1Keyword dalam Java

Pemahaman kata-kata kunci ini sangat penting sebab jika peubah-peubah, kelas-kelas, objek-objek, tipe-tipe bentukan, atribut-atribut, metode dan sebagainya, dideklarasikan dengan menggunakan kata-kata kunci yang khas dalam Java, maka interpreter bahasa Java akan langsung melaporkan adanya kesalahan (error). Beberapa kara kunci dalam bahasa Java dalam tabel di bawah ini.

Tabel 2.7 Keyword dalam Java

Data

Declaration Loop Conditional Exception Structure Modifier Miscellaneous boolean byte char double float int long short break continue do for while case else if switch catch finally throw try abstract class default extends implements instance of interface final native new private protected public static synchronized threadsafe transient void false import null package return super this true


(41)

2.5.3.2 Tipe Data dalam Java

Tabel 2.8 Tipe Data dalam Java

Tipe Data Panjang Nilai

byte 8 bit 128 s/d 127

short 16 bit -32768 s/d 32767

int 32 bit -2147483684 s/d 2147483647

long 64 bit -9223372036854775808 s/d

9223372036854775807

float 4 byte -3.4e38 s/d 3.4e38

double 8 byte -1.7e308 s/d 1.7e308

char 16 bit Unicode


(42)

(43)

PEMBAHASAN

3.1 Analisis

Pada subbab ini berisi uraian analisis sistem simulasi penjadwalan kuliah meliputi identifikasi permasalahan untuk mengetahui hal-hal yang menjadi permasalahan dan yang harus diselesaikan untuk menerapkan algoritma genetik dalam proses penjadwalan kuliah sampai pada pemodelan data untuk menentukan rancangan database.

3.1.1 Identifikasi Masalah

Pada algoritma genetik, terlebih dahulu diidentifikasi tentang kendala yang dihadapi dalam sistem. Pada penjadwalan terdapat 2 jenis kendala/ prioritas yang dapat diidentifikasi yaitu kendala yang harus dapat dipenuhi (Hard Constrains) dan kendalan yang tidak harus dipenuhi (Soft Constraints) tetapi kendalan ini tetap diusahakan sedapat mungkin dipenuhi (pelanggaran terhadap kendala dapat diminimalkan). Kendala tersebut muncul karena adanya aturan-aturan yang berfungsi agar entitas yang ada dalam melakukan proses dapat berjalan dengan baik. Entitas tersebut meliputi kuliah, dosen, mahasiswa/ kelas, ruang dan waktu dengan segala keterbatasannya.

1. Hard Constraints

Hard Constraints adalah prioritas umum yang harus dipenuhi dalam menyusun jadwal kuliah. Ada beberapa ketentuan yang harus dilaksanakan dengan pertimbangan bahwa apabila prioritas ini tidak terpenuhi akan menyebabkan kesalahan fatal (tidak fleksibel).


(44)

Prioritas yang termasuk dalamhard constraints meliputi:

a. Tidak boleh ada kuliah yang berjalan bersamaan untuk kelas yang sama.

b. Tidak boleh ada kapasitas ruang kurang dari jumlah mahasiswa yang mengambil mata kuliah tersebut.

c. Satu dosen tidak bias memberikan kuliah di dua tempat atau lebih di tempat yang berbeda pada waktu yang bersamaan

d. Satu ruang kuliah tidak bias digunakan lebih dari satu kuliah dalam waktu yang bersamaan.

e. Tipe ruang kuliah kuliah harus sama dengan tipe kuliah. f. Kelas praktikum dilakukan secara berturut-turut.

g. Pada waktu tertentu tidak diperkenankan adanya kuliah. Misalkan: hari Jumat jam 12.00-14.00, dsb.

h. Durasi perkuliahan dalam 1 minggu dan perhari tidak boleh overlap.

2. Soft Constraints

Soft Constraints ialah prioritas yang tidak dapat terpenuhi, tidak menyebabkan kesalahan yang fatal.

Prioritas yang termasuk dalamSoft Constraints yaitu: a. Kelas teori dilakukan secara berturut-turut.

b. Dosen dapat memilih jam mengajar yang diinginkan.

3.1.2 Analisis Algoritma Genetik Pada Penjadwalan

Penerapan algoritma genetik dalam proses penjadwalan kuliah, ada 5 hal yang penting yang harus dilakukan seperti yang telah disampaikan oleh John Holland dalam Simple Genetik Algorithm yaitu pengkodean kromosom, membangun populasi awal, proses seleksi, proses regenerasi mulai dari persilangan dan mutasi serta proses perulangan regenerasi sampai memperoleh kondisi terpenuhi.


(45)

3.1.2.1 Membangun Populasi Awal

Populasi awal pada umumnya dibangun terdiri dari 2 teknik yaitu sebuah populasi dibangun dari semua informasi constraints dan populasi awal dibangkitkan secara random.

Pada penelitian ini digunakan teknik populasi awal dengan mengambil semua informasi constraints dari pusat data, yang terlebih dahulu setiap informasi constraints tersebut direpresentasikan, kemudian populasi awal dibangun berdasarkan informasi yang ada sebanyak N kromosom, dengan N merupakan banyaknya kuliah dan dapat dikatakan bahwa setiap gen dalam kromosom mewakili suatu kuliah. Populasi awal tersebut kemudian dibangkitkan secara random untuk selanjutnya dilakukan proses evaluasi setiap kromosomnya.

Representasi kromosom tersebut sebagai berikut: 1. Ada 3 informasiconstraints utama yaitu:

a. Dosen pengajaravailable.

b. Mata kuliah yang telah ditetapkan pengajarnya. c. Informasi ruang kuliahavailable.

2. Pada ke-empat informasi diatas dapat direpresentasikan kromosom dalam bentuk matriks sebagai berikut:

a. Dosen Pengajaravailable

Representasi ini menginformasikan waktu dosen pengajar dapat mengajar yang dinotasikan D[i,j] dengan i = hari dan j = jam. Bentuk representasi dalam matriks dapat digambarkan dengan matriks dua dimensi, dengan panjang baris (Hari [N]) = maksimum hari perminggu dan panjang kolom (Jam [N]) = maksimum jam perhari. Matriks tersebut dapat dilihat pada Tabel 3.1.


(46)

Tabel 3.1 Matriks Dosen PengajarAvailable

Jam Hari

0 1 … N

0 D11 D12 … D1N

1 D21 D22 … D2N

… … … … …

N DN1 DN2 … DNN

b. Mata Kuliah

Bentuk representasi dari mata kuliah adalah matriks satu dimensi yang dinotasikan KM[i] dengan i = mata kuliah ke-i. Representasi ini menginformasikan kelas mata kuliah yang telah ditentukan pengajarnya, dengan panjang matriks = banyak mata kuliah. Bentuk matriks satu dimensi mata kuliah ditunjukkan pada Tabel 3.2.

Tabel 3.2 Matriks Kelas Mata Kuliah

0 1 N

Kelas Mata Kuliah KM1 KM2 … KMN

c. Ruang Kuliah

Representasi yang menginformasikan waktu ruang yang dapat digunakan untuk kuliah. Representasi ini dinotasikan R[i,j] dengan i=hari dan j = jam, dengan panjang baris (Hari[N]) = maksimum hari perminggu dan panjang kolom (Jam[N]) = maksimum jam perhari. Bentuk matriks ruang available ditunjukkan pada Tabel 3.3.

Tabel 3.3 Matriks RuangAvailable

Jam Hari

0 1 … N

0 R11 R12 … R1N

1 R21 R22 … R2N

… … … … …


(47)

3. Dari constraints yang ada dapat ditunjukkan matriks penyelesaian penjadwalan kuliah dengan bentuk matriks 3 dimensi, dengan algoritma sebagai berikut (Gambar 3.1)

For tiap ruang; For tiap hari; For tiap jam;

Tempatkan kelas mata kuliahavailable

Gambar 3.1 Algoritma Penyelesaian Jadwal Kuliah

3.1.2.2 EvaluasiPenalty Kromosom

Setiap kromosom pada populasi dievaluasi untuk diketahui nilai penalty (nilai total pelanggaran). Fungsipenalty disusun berdasarkan prioritas yang dihadapi. Pada proses evaluasi ini digunakan model seleksi Roulette Wheel Selection, dengan mengacu nilaifitness ataupenalty.

Proses seleksi yang dilakukan yaitu perhitungan banyaknya pelanggaran (penalty). Adapun proses seleksi perhitungan pelanggaran tersebut sebagai berikut:

1. Banyaknya kelas yang bentrok.

2. Kapasitas ruangan yang terlalu kecil dengan jumlah mahasiswa. 3. Tipe ruangan yang tidak sesuai dengan tipe kuliah.

4. Duplikat dosen mengajar.

5. Waktu perkuliahan tertentunot available.

6. Dosen ditempatkan pada waktu dosennot available 7. Kelas teori ditempatkan tidak berturut-turut.

8. Kelas praktikum ditempatkan tidak berturut-turut.

Berdasarkan hal diatas dapat dihitung total nilaipenalty dengan rumus, penalty = total cost pelanggaran x konstanta beban pelanggaran tersebut. Pada penelitian ini bobotpenalty dari tiap golongan adalah sebagai berikut:


(48)

Tabel 3.4 BobotPenalty Setiap GolonganPenalty

GolPenalty BobotPenalty

Berat 10

Sedang 8

Ringan 1

Dari seluruh prioritas dan bobot penalty diatas, bobot penalty dari masing-masing prioritas dapat dilihat pada Tabel 3.5

Tabel 3.5 BobotPenalty Setiap Prioritas

Penalty Gol Penalty

Duplikat kelas mahasiswa Berat

Ruang terlalu kecil Berat

Tipe ruangan tidak sesuai tipe kuliah Berat

Duplikat dosen Berat

DosenNot Available Sedang

WaktuNot Available Berat

Durasi teori tidak berturut-turut Ringan

Durasi praktek tidak berturut-turut Berat

3.1.2.3 Proses Regenerasi

Proses regenerasi adalah proses perubahan gen-gen generasi sekarang ke gen generasi berikutnya. Proses regenerasi meliputi:

1. Persilangan (Crossover)

Proses yang dilakukan untuk melakukan penukaran bagian kromosom yaitu dengan memilih gen dengan posisi dan panjang kromosom secara random dalam satu kromosom, kemudian dilakukan penataan kembali gen yang tidak terjadicrossover.

Proses persilangan yang digunakan dalam penelitian ini dengan tipaOne Point Crossover.


(49)

2. Mutasi (Mutation)

Proses penukaran gen (mutasi) dalam kromosom yang dipilih dilakukan secara random berdasarkan nilai probabilitas mutasinya. Proses mutasi yang digunakan dalam penelitian ini dengan menggunakan tipe mutasi biasa.

3.1.2.4 Pengujian

Proses algoritma genetik akan terjadi perulangan terus-menerus mulai dari awal sampai proses regenerasi mencapai maksimum. Perulangan tersebut akan berhenti, bila kriteria penghentian telah terpenuhi. Pada umumnya kriteria penghentian ada 2 macam yaitu apabila nilai penalty = 0 atau sudah tidak ada lagi pelanggaran dan banyaknya generasi telah mencapai nilai maksimum.

Dalam penelitian ini digunakan 2 macam kriteria tersebut dalam melakukan penghentian proses regenerasi. Pertimbangan digunakan 2 kriteria tersebut adalah apabila pada proses regenerasi tertentu telah mencapai nilai penalty = 0 maka sistem tidak perlu melakukan proses regenerasi sampai mencapai generasi maksimum karena individu terbaik telah ditemukan, sedangkan bila tidak mencapai nilai penalty = 0 maka proses regenerasi akan mencapai generasi maksimum dengan memilih individu yang mempunyai nilai penalty paling rendah dan ini merupakan individu terbaik dari individu yang berbentuk dari generasi-generasi yang ada.

3.1.3Mapping Algoritma Genetik

Pada proses dalam algoritma genetik dalam penelitian ini adalah mendeskripsikan alur-alur variabel mulai dari awal sampai mendapatkan solusi.


(50)

Algoritma yang digunakan dalam menyelesaikan permasalahan penjadwalan kuliah dapat dilihat pada Gambar 3.2, dengan tujuan utama tetap dengan algoritma genetik.

Menentukan nilai konstanta yang diperlukan……….(1) Inisialisasi database………(2) Inisialisasi penyelesaian dalam bentukpointer………..(3) While regenerasi < max_generasi {

Disposepointer cost_Penalty paling besar………(4) Hitung nilai rata-rataPenalty………...(5) While jml_populasi < max_populasi {

Regenerasi……….(6) }

If cost_Penalty < 1 {

Regenerasi:=max_regenerasi-1………...(7) }

Inc(regenerasi); }

Cetak_penyelesaian

Gambar 3.2 Algoritma Penjadwalan Kuliah

Deskripsi Gambar 3.2:

Ada beberapa asumsi penulis dalam istilah-istilah dalam algoritma genetik: 1. Gen : informasi constraints seperti: ruang, hari, jam, mata kuliah, kelas

mahasiswa, dosen beserta seluruh atributnya.

2. Kromosom : mewakili kelas mata kuliah yang telah ditempatkan yang digambarkan pada matriks 3 dimensi (Matriks[ruang][hari][jam]). 3. Individu : satu individu mewakili seluruh kelas mata kuliah yang terjadi

pada tahun ajaran tersebut, yang memiliki berbagai variasi. Digambarkan pada bentukpointer, dengan satucell pointer merupakan satu individu.


(51)

Berikut ini penjelasan Algoritma Penjadwalan Kuliah 1. Menetukan nilai konstanta yang diperlukan

Berikut ini konstanta yang diperlukan: a. KonstantaPenalty:

Untuk menetukan prioritas Hard Constraints dan Soft Constraints. Nilai konstanta dapat dilihat pada Sub Bab 3.1.2.2, Tabel 3.4 dan Tabel 3.5.

b. Konstanta pendukung

1. Max_populasi : Jumlah maksimum populasi dalam satu generasi.

2. Crossover_rate : Probabilitas persilangan. 3. Mutation_rate : Probabilitas mutasi.

4. Max_regenerasi : Jumlah maksimum regenerasi. 2. Inisialisasi database

Pada prosedur ini merupakan awal pembentukan populasi, dengan mengambil seluruh gen/ informasi dalam database yang terdiri atas mata kuliah, ruang, kelas mahasiswa, waktu dosen dengan semua atributnya, dapat dilihat pada Sub Bab 3.1.2.1 Membangun Populasi Awal.

3. Inisialisasi penyelesaian dalam bentukpointer

Penyelesaian dari setiap generasi akan disimpan dalam pointer dengan bentuk Linked List. Kemudian digunakan sebagai pembanding antar generasi, untuk memilih individu yang terbaik.


(52)

Gambar 3.3 IlustrasiPointer Penjadwalan Kuliah

Penjelasan Gambar 3.3:

a. Pertama kali di deklarasikan alokasi memori pointer new (Temp_pointer).

b. Nilai satu cell pointer berisi informasi seluruh ruang, hari dan jam yang digunakan kuliah dalam satu semester tahun ajaran, dengan seluruh informasi dalam bentuk matriks 3 dimensi yang masih bernilai nol (ruang dan waktu belum ditempatkan mata kuliah tertentu). Proses ini merupakan proses inisialisasipointer.

c. Sebelum masuk kepointer (c) setelahpointer (b) terdapat prosedur-prosedur yang dilalui yaitu:

1. Penempatan tiap ruang, hari, jam terhadap mata kuliah tertentu beserta durasi mata kuliah tersebut.

2. Dihitung nilaipenalty (pelanggaraan) tiap kromosom.

3. Setiap kromosom beserta nilaiPenaltynya dimasukkan ke dalam pointer (c).


(53)

4. Pada awal generasi dialokasikan memori pointer Linked Listkepala dan bagian ekornya new(first) dan new(last), dengan kedua nilai pointer yang sama.

5. Pada generasi selanjutnya digambarkan pada pointer bentuk Linked List yang sebenarnya dengan prinsip LIFO (Last In First Out), tetapi pointer tersebut akan diurutkan berdasarkan nilai Penaltynya mulai dari kepala dengan nilai total Penalty paling kecil samapi bagian ekor dengan nilai Penalty terbesar.Linked List tersebut dapat dilihat pada poin (1) dan (2).

4. Dispose pointer dengancost Penalty terbesar (proses seleksi alam) Pada prosedur ini dilakukan untuk menghilangkan individu dengan penalty terbesar dari tiap generasi. Fungsi dari prosedur ini untuk menghemat memori pointer agar tidak terlalu banyak alokasi memori pointer dan ini merupakan proses seleksi alam, dengan individu yang kurang bagus akan dihapus dengan melihat nilaiPenaltynya.

Banyak individu yang dihilangkan dalam penelitian ini adalah 0,5 x banyaknya individu tiap generasi.

5. Nilai rata-ratapenalty

Prosedur yang digunakan untuk menghitung rata-rata seluruh penalty setelah ada individu yang dihilangkan. Dengan perhitungan:

(3.1)

Keterangan:

Ptot : Totalpenalty seluruh generasi

I : Jumlah individu 6. Regenerasi

Proses regenerasi bentuk pointer seperti pada point 3 inisialisasi penyelesaian dalam bentuk pointer, yaitu pointer tetap diurutkan berdasarkan penalty terkecil. Tetapi sebelum itu dilakukan proses persilangan dan mutasi, serta memastikan jumlah kromosom tiap individu.

tot

P

I


(54)

a. Proses Persilangan

Bentuk individu dalam proses persilangan dapat dimisalkan pada pointer Gambar 3.4

Gambar 3.4 Persilangan Individu b. Proses Mutasi

Misal proses mutasi dapat dilihat padapointer Gambar 3.5

Gambar 3.5 Mutasi Individu

c. Memastikan Jumlah Kromosom Setiap Individu.

Pada proses persilangan dan mutasi sangat rentang adanya kromosom yang hilang karena digantikan kromosom lain maupun kelebihan kromosom (terbentuk kromosom yang kembar). Untuk mengatasi hal tersebut diperlukan proses penyeleksian kembali tiap kromosom dalam individu agar jumlah kromosom sesuai seperti jumlah kromosom pada populasi awal.

d. Individu-individu yang terbentuk ke dalam pointer utama sesuai dengan nilaipenalty masing-masing individu.

7. Melihat Kondisi

Proses setelah regenerasi yaitu mengecek total penalty apakah sudah mencapaipenalty = 0 atau belum, jika sudah mencapai akan keluar dari perulangan, sehingga tidak perlu sampai generasi maksimum, jika tidak proses akan berulang dari point 4.


(55)

3.1.4 Aliran Informasi

Hal yang perlu dilakukan sebelum mendesain sebuah sistem aplikasi diperlukan penggambaran proses-proses yang terjadi dalam sistem yang dapat digambarkan pada Context Diagram dan lebih didetailkan pada Data Flow Diagram (DFD). Sehingga dengan dua macam bagan tersebut dapat menggambarkan secara jelas aliran informasi dalam proses penjadwalan kuliah.

3.1.4.1Context Diagram

Context diagram sistem penjadwalan kuliah dapat dilihat pada gambar di bawah ini (Gambar 3.6):

Gambar 3.6 Context Diagram

3.1.4.2Data Flow Diagram (DFD) Level 0

DFD Level 0 pada sistem penjadwalan kuliah dapat dilihat pada gambar di bawah ini (Gambar 3.7):


(56)

Gambar 3.7 Data Flow Diagram (DFD) Level 0

3.1.4.3 Data Flow Diagram (DFD) Level 1


(57)

Gambar 3.8 DFD Level 1 Proses Pendataan Kelas dan Jurusan

Dari Proses 2: Pendataan Kurikulum

Gambar 3.9 DFD Level 1 Proses 2 Pendataan Kurikulum


(58)

Gambar 3.10 DFD Level 1 Proses 3 Waktu Perkuliahan

Dari Proses 4: Pendataan Ruang Kuliah

Gambar 3.11 DFD Level 1 Proses 4 Pendataan Ruang Kuliah


(59)

Gambar 3.12 DFD Level 1 Proses 5 Pendataan Pengajar

Dari Proses 6: Penyusunan Jadwal Kuliah


(60)

3.1.5 Pemodelan Data

Pemodelan data merupakan bagian yang menggambarkan perancangan dari sudut sumber data yang digunakan untuk membuat tabel database yang ternormalisasi. Pemodelan data ini terdapat 2 penggambaran yaitu Entity Relationship Diagram (ERD) yaitu menggambarkan hubungan relasi antarentitas sebagai langkah agar tabel ternormalisasi pada Gambar 3.14 dan skema diagram yaitu menggambarkan relasi antara tabel yang telah normal pada Gambar 3.15.


(61)

45 Gambar 3.14 Entity Relationship Database (ERD)


(62)

46 Gambar 3.15 Skema Diagram


(63)

3.2 Perancangan

3.2.1 Lingkungan Implementasi

Sistem ini dibangun dengan didukung perangkat keras dan perangkat lunak yang meliputi:

1. Perangkat Keras

Spesifikasi perangkat keras yang digunakan dalam penelitian ini sebagai berikut:

a. Processor Intel Pentium Celeron 1,6 GHz, Package Socket 478 mPGA.

b. Memory DDR2RAM 512 MB sebanyak 1 Keping. c. Hardisk 80 GB.

d. VGA 64 MB.

e. Monitor 14 Inch, Keyboard, Mouse. 2. Perangkat Lunak

a. Sistem Operasi Microsoft Windows XP SP2 dan Linux Ubuntu 8.04. b. JDK version 1.6.0_13 for Java 2 Standard Edition.

c. JCreator Pro LE 4.00.028 dan Netbeans 6.5 d. MySQL Server Versi 5.1.30/ XAMPP-linux-1.7.

3.2.2 Perancangan Antarmuka

Penyusunan program penjadwalan kuliiah secara umum disusun berdasarkan urutan proses/ kerangka pemikiran yang digambarkan pada diagram alir proses Gambar 3.16 dan struktur program dapat dilihat pada hirarki program Gambar 3.17.


(64)

Gambar 3.16 Diagram Alir Program Simulasi Penjadwalan Kuliah

Hirarki Program

Gambaran umum penggunaan program dapat digambarkan pada flowchart program sebagai berikut (Gambar 3.17):


(65)

Gambar 3.17Flowchart Program Simulasi Penjadwalan Kuliah

3.2.3 Perancangan Proses

Berisi deskripsi yang menjelaskan tentang system simulasi penjadwalan kuliah. Perancangan proses ini mengacu pada DFD Level 0 dan Level 1. Deskripsi proses tersebut sebagai berikut:


(66)

Proses 1: Pendataan Jurusan dan Kelas

Tabel 3.6 Deskripsi Proses Pendataan Jurusan Nama Proses Pendataan Jurusan (Proses 1.1) Input ke kd_jurusan, nama

Output ke - Status OK

- Proses input kelas (Proses 1.2)

- Penyusunan jadwal kuliah (Proses 6.1) File Tersimpan Kelas

Deskripsi Input data jurusan

Tabel 3.7 Deskripsi Proses Pendataan Kelas Nama Proses Pendataan Kelas (Proses 1.2)

Input ke kd_kelas, kd_jurusan, kelas, angkatan, kapasitas

Output ke - Status OK

- Proses Pendataan Kurikulum (Proses 2) File Tersimpan Kelas

Deskripsi Input data kelas

Proses 2: Pendataan Kurikulum

Tabel 3.8 Deskripsi Proses Setting Tahun Jadwal Nama Proses Setting Tahun Jadwal (Proses 2.1) Input ke Id, tahun

Output ke - Status OK File Tersimpan Tahun

Deskripsi Untuk menamai tabel jadwalGA sesuai tahun ajaran


(67)

Tabel 3.9 Deskripsi Proses Penentuan Durasi Kuliah Nama Proses Penetuan Durasi Kuliah PerSKS (Proses 2.2) Input ke Tipe, durasi_perSKS

Output ke - Proses pendataan mata kuliah File Tersimpan SKS

Deskripsi Untuk menentukan durasi perkuliahan 1 SKS teori dan praktek

Tabel 3.10 Deskripsi Proses Pendataan Mata Kuliah Nama Proses Pendataan mata kuliah (Proses 2.3)

Input ke kd_mk, nama, semester, TotSKS, TotDurasi kd_mk, kd_dtmk, tipe, SKS, durasi

Output ke - Status OK

- Proses penempatan mata kuliah (Proses 2.4)

- Proses penyusunan jadwal kuliah (Proses 6)

File Tersimpan Mata kuliah, dt_mata kuliah

Deskripsi Input data mata kuliah baik tipe teori maupun praktek.

Tabel 3.11 Deskripsi Proses Penempatan Mata Kuliah Nama Proses Penempatan mata kuliah dengan jurusan

(Proses 2.5) Input ke kd_jurusan, kd_mk Output ke - Status OK

- Proses pendataan pengajar (Proses 5) File Tersimpan Kuliah

Deskripsi Menentukan kurikulum mata kuliah tiap jurusan


(68)

Proses 3: Waktu Perkuliahan

Tabel 3.12 Deskripsi Proses Penentuan Hari Kuliah Nama Proses Penentuan hari kuliah/ minggu (Proses 3.1) Input ke kd_hari, nama

Output ke - Status OK

- Proses waktu tidak dapat kuliah (Proses 3.3)

- Proses pendataan pengajar (Proses 5) - Proses Penyusunan jadwal kuliah

(proses 6) File Tersimpan Hari

Deskripsi Input data hari perkuliahan dalam satu minggu.

Tabel 3.13 Deskripsi Proses Penentuan Jam Kuliah Nama Proses Penentuan jam kuliah/ hari (Proses 3.2) Input ke kd_jam, awal, akhir

Output ke - Status OK

- Proses waktu tidak dapat kuliah (Proses 3.3)

- Proses pendataan pengajar (Proses 5) - Proses Penyusunan jadwal kuliah

(proses 6) File Tersimpan Jam

Deskripsi Input data jam perkuliahan dalam satu hari.

Tabel 3.14 Deskripsi Proses WaktuNot Available

Nama Proses Waktu tidak dapat dipakai kuliah (Proses 3.3) Input ke kd_hari, kd_jam

Output ke - Status OK File Tersimpan Not_hari


(69)

Proses 4: Pendataan Ruang Kuliah

Tabel 3.15 Deskripsi Proses Pendataan Ruang Kuliah Nama Proses Pendataan ruang kuliah (Proses 4.1) Input ke kd_ruang, nama, tipe, kapasitas Output ke - Status OK

- Proses ruang tidak bias dipakai (Proses 4.2)

- Proses Penyusunan jadwal kuliah (proses 6)

File Tersimpan Ruang

Deskripsi Input data ruang perkuliahan.

Tabel 3.16 Deskripsi Proses Waktu RuangNot Available

Nama Proses Waktu ruang tidak dapat dipakai kuliah (Proses 4.2)

Input ke kd_ruang, kd_hari, kd_jam Output ke - Status OK

File Tersimpan Not_ruang

Deskripsi Input data waktu tidak bias dipakai kuliah.

Proses 5: Pendataan Pengajar

Tabel 3.17 Deskripsi Proses Pendataan Dosen Nama Proses Pendataan dosen (Proses 5.1)

Input ke kd_dosen, nip, nama, jk_dosen, alamat, email, phone

Output ke - Status OK

- Proses penempatan dosen (Proses 5.2) - Proses waktu dosen tidak bias mengajar

(Proses 5.3) File Tersimpan Dosen


(70)

Tabel 3.18 Deskripsi Proses Penempatan Dosen Nama Proses Penempatan dosen (Proses 5.2) Input ke kd_dosen, kd_mk

Output ke - Status OK File Tersimpan Pengajar

Deskripsi Penempatan dosen mengajar mata kuliah tertentu.

Tabel 3.19 Deskripsi Proses Waktu Dosen Not Available Nama Proses Waktu dosen tidak bias mengajar (Proses 5.3) Input ke kd_dosen, kd_hari, kd_jam

Output ke - Status OK File Tersimpan Not_dosen

Deskripsi Input data dosen tidak bias mengajar.

Proses 6: Penyusunan Mata Kuliah

Tabel 3.20 Deskripsi Proses Penyusunan Jadwal Nama Proses Penyusunan jadwal kuliah (Proses 6)

Input ke kd_dtmk, kd_kelas, kd_ruang, kd_hari, kd_jam Output ke - Status OK

- Proses jadwal kuliah (Proses 7) - Proses jadwal mengajar (Proses 8) File Tersimpan JadwalGA<semester>

Deskripsi Proses penyusunan jadwal kuliah, dengan file tersimpa <semester> sesuai seting input semester proses 2.1.


(71)

3.2.4 Deskripsi Data

Tabel 3.21 Deskripsi Data Jurusan

Field Jenis Kosong Default

Kd_jurusan Varchar(2) Tidak

Nama Varchar(21) Tidak

Tabel 3.22 Deskripsi Data Kelas

Field Jenis Kosong Default

Kd_kelas Varchar(5) Tidak

Kd_jurusan Varchar(2) Tidak

Kelas Varchar(20) Tidak

Angkatan Varchar(4) Tidak

Kapasitas Int(3) Tidak

Semester Varchar(3) Tidak

Tabel 3.23 Deskripsi Data Dosen

Field Jenis Kosong Default

Kd_dosen Varchar(4) Tidak

NIP Varchar(1) Ya NULL

Nama Varchar(50) Tidak

Jk_dosen Char(1) Ya NULL

Alamat Varchar(100) Ya NULL

Email Varchar(50) Ya NULL

Phone Varchar(30) Ya NULL

Tabel 3.24 Deskripsi Data Pengajar

Field Jenis Kosong Default

Kd_dosen Varchar(4) Tidak


(72)

Tabel 3.25 Deskripsi Data Not_Dosen

Field Jenis Kosong Default

Kd_dosen Varchar(4) Tidak

Kd_hari Char(1) Tidak

Kd_jam Varchar(2) Tidak

Tabel 3.26 Deskripsi Data Mata Kuliah

Field Jenis Kosong Default

Kd_mk Varchar(10) Tidak

Nama Varchar(30) Tidak

Semester Varchar(2) Tidak

TotSKS Int(1) Tidak

TotDurasi Int(2) Tidak

Tabel 3.27 Deskripsi Data dt_Matakuliah

Field Jenis Kosong Default

Kd_mk Varchar(10) Tidak

Kd_dtmk Varchar(11) Tidak

Tipe Varchar(5) Tidak

SKS Int(1) Tidak

Durasi Int(2) Tidak

Tabel 3.28 Deskripsi Data SKS

Field Jenis Kosong Default

Tipe Varchar(5) Tidak

Durasi_perSKS Int(2) Tidak

Tabel 3.29 Deskripsi Data Kuliah

Field Jenis Kosong Default

Kd_jurusan Varchar(2) Tidak


(73)

Tabel 3.30 Deskripsi Data Hari

Field Jenis Kosong Default

Kd_hari Char(1) Tidak

Nama Varchar(10) Tidak

Tabel 3.31 Deskripsi Data Jam

Field Jenis Kosong Default

Kd_jam Varchar(2) Tidak

Awal Time Tidak

Akhir Time Tidak

Tabel 3.32 Deskripsi Data Not_Hari

Field Jenis Kosong Default

Kd_hari Char(1) Tidak

Kd_jam Varchar(2) Tidak

Tabel 3.33 Deskripsi Data Ruang

Field Jenis Kosong Default

Kd_Ruang Varchar(5) Tidak

Nama Varchar(10) Tidak

Tipe Varchar(5) Tidak

Kapasitas Int(3) Tidak

Tabel 3.34 Deskripsi Data Not_Ruang

Field Jenis Kosong Default

Kd_ruang Varchar(5) Tidak

Kd_hari Char(1) Tidak


(74)

Tabel 3.35 Deskripsi Data JadwalGA

Field Jenis Kosong Default

Kd_dtmk Varchar(10) Tidak

Kd_kelas Varchar(5) Tidak

Kd_hari Char(1) Tidak

Kd_ruang Varchar(5) Tidak

Kd_jam Varchar(2) Tidak

Tabel 3.36 Deskripsi Data Tahun

Field Jenis Kosong Default

Id Tinyint(1) Tidak Auto_increament

Tahun Varchar(10) Tidak


(75)

(76)

PERANCANGAN SISTEM

4.1 Hasil Perancangan Sistem

Hasil penelitian ini dapat digambarkan dalam bentuk program simulasi penjadwalan kuliah dengan penyelesaian masalah dengan algoritma genetik dan evaluasi algoritma yang mencakup kelebihan dan kelemahannya.

Berikut beberapa hasil tampilan Sistem Simulasi Penjadwalan Kuliah: 1. Halaman Statup dan Konfigurasi

Program yang dihasilkan diberi nama gstpl – The Swing Timetabling Platform. Halaman startup sebagai halaman yang pertama sekali muncul pada saat program dijalankan, dan sebelum masuk ke form utama maka akan diminta untuk koneksi ke database terlebih dahulu. Tampilan halaman startup ini bisa dilihat pada Gambar 4.2 dan sebelumnya cara menjalankan program dari Konsole Linux pada Gambar 4.1 adalah sebagai berikut:


(77)

Gambar 4.2 Halaman Startup dan Konfigurasi

Form ini digunakan untuk mengatur konfigurasi koneksi program dengan database yang ada di Server. Program ini dapat dikoneksikan dengan protokol database MySQL.

2. Form Utama Sistem Simulasi


(1)

ManualTT calculator = new ManualTT(); int week = TimeFormat.DEFAULT_WEEK;

//String str = JOptionPane.showInputDialog(GSTPLFrame.get(), L.tr("Please enter the week."));

//if(str != null) { week = Integer.parseInt(str) } if(list.size() > 0) {

TimeableStatistic[] stat = calculator.getStatistics(week, list); JPanel panel = new JPanel(new GridLayout(4, 1));

panel.add(new JLabel(L.tr("Gaps") + ": " + stat[1])); panel.add(new JLabel());

panel.add(new JSeparator());

panel.add(new JLabel(L.tr("Collisions") + ": " + stat[0])); GLog.log(GSTPLFrame.get(), panel);

} else { throw new

UnsupportedOperationException(L.tr("You_should_select_some_timeables!")); }

} catch(Exception exc) {

GLog.warn(GSTPLFrame.get(), exc.getMessage()); }

}

private static final String QUITTING = L.tr("Quit_Application"); public void quit() {

if(SwingUtilities.isEventDispatchThread()) { //Avoid running of 'quit' on EDT:

Thread q = new Thread() { @Override

public void run() { quit();

} }; q.start(); return; }

if(TaskProcessor.get().hasActive()) { SwingHelper.showSplash(false);

int ret = JOptionPane.showConfirmDialog(this,

L.tr("You_have_unfinished_tasks._Do_you_really_want_to_quit?")); SwingHelper.showSplash(true);

if(ret != JOptionPane.OK_OPTION) { SwingHelper.showSplash(false); return;


(2)

TaskProcessor.get().finishTask(0); }

SwingHelper.showSplash(true);

SwingHelper.setProgress(QUITTING, 20); FlexHelper.get().save();

SwingHelper.setProgress(QUITTING, 30); SwingHelper.showSplash(false);

saveAppChanges();

SwingHelper.showSplash(true);

if(DBFactory.getDefaultDB().isInited() && DBFactory.getDefaultDB().hasChanges()) { SwingHelper.setProgress(50);

//if user don't want to save we should roll back changes. SwingHelper.showSplash(false);

if(!askUserToSaveDBChanges()) { SwingHelper.showSplash(true); DBFactory.getDefaultDB().rollback(); }

SwingHelper.showSplash(true); SwingHelper.setProgress(70);

//now we need the closing method because of a current TODO in cayenne

//TODO CAYENNE 714: silent save try {

DBFactory.getDefaultDB().closeConnection(); } catch(DBException exc) {

GLog.error(L.tr("Can't_undo_creation_of_temporary_objects!!"), exc);

} }

SwingHelper.setProgress(100); this.setVisible(false);

this.dispose(); System.exit(0); }

public void saveAppChanges() {

if(ApplicationProperties.get().hasChanges()) { int ret =

JOptionPane.showConfirmDialog(null, L.tr("Save_Changes_On_Properties?"),


(3)

if(ret == JOptionPane.YES_OPTION) { ApplicationProperties.get().save(); }

} }

public boolean askUserToSaveDBChanges() { int ret =

JOptionPane.showConfirmDialog(this, L.tr("Save_database_changes?"),

L.tr("Save?_Sure?"), JOptionPane.YES_NO_OPTION); if(ret == JOptionPane.YES_OPTION) {

try {

DBFactory.getDefaultDB().saveChanges(); GLog.log(null, L.tr("Saved_changes!")); } catch(Exception ex) {

GLog.error(L.tr("Can't_save_changes!"), ex); }

return true; }

return ret == JOptionPane.YES_OPTION; }

public static JSplitPane createSplitPane() { JSplitPane split = new JSplitPane(); split.setDividerSize(7);

split.setContinuousLayout(false); split.setOneTouchExpandable(true); return split;

}

public void reexecuteSQLs() { PersonViewer.getList().update(); SubjectViewer.getList().update(); RoomViewer.getList().update(); TIViewer.getList().update(); }

public Viewer getSelectedViewer() { Viewer v = null;

Component comp = FlexHelper.get().getActiveContent(); if(PersonViewer.get().getComponent() == comp) { v = PersonViewer.get();

} else if(SubjectViewer.get().getComponent() == comp) { v = SubjectViewer.get();


(4)

} else if(RoomViewer.get().getComponent() == comp) { v = RoomViewer.get();

} else if(TIViewer.get().getComponent() == comp) { v = TIViewer.get();

} else if(MultiRoomViewer.get().getComponent() == comp) { v = MultiRoomViewer.get();

}

if(v == null) {

comp = FlexHelper.get().getActive();

if(MergeViewer.get().getComponent() == comp) { v = MergeViewer.get();

} else { throw new

UnsupportedOperationException(L.tr("You_didn't_selecte_a_viewer!")); }

} return v; }

public DBList<? extends ITimeable> getSelectedItemsOfList() { DBList<? extends ITimeable> l = null;

Component comp = FlexHelper.get().getActiveContent(); if(PersonViewer.get().getComponent() == comp) { l = PersonViewer.getList();

} else if(SubjectViewer.get().getComponent() == comp) { l = SubjectViewer.getList();

} else if(RoomViewer.get().getComponent() == comp) { l = RoomViewer.getList();

} else if(TIViewer.get().getComponent() == comp) { l = TIViewer.getList();

} return l; }

private void createPanels() {

//we need a GUI logger, if console is absent

TextAreaHandler tah = DBFactory.getDefaultDB().getLogTextArea(); de.peathal.util.GLog.addHandler(tah);

FlexHelper flex = FlexHelper.get(); //we have to create all components first!

flex.create(PersonViewer.get().getComponent(),

FlexHelper.PERSON_VIEWER, L.tr(FlexHelper.PERSON_VIEWER)); flex.create(StatisticPanel.get().getComponent(), FlexHelper.STATISTICS, L.tr(FlexHelper.STATISTICS));


(5)

flex.create(SubjectViewer.get().getComponent(),

FlexHelper.SUBJECT_VIEWER, L.tr(FlexHelper.SUBJECT_VIEWER)); flex.create(RoomViewer.get().getComponent(),

FlexHelper.ROOM_VIEWER, L.tr(FlexHelper.ROOM_VIEWER)); flex.create(TIViewer.get().getComponent(), FlexHelper.TI_VIEWER, L.tr(FlexHelper.TI_VIEWER));

flex.create(MultiRoomViewer.get().getComponent(),

FlexHelper.MULTI_VIEWER, L.tr(FlexHelper.MULTI_VIEWER)); flex.create(MergeViewer.get().getComponent(),

FlexHelper.MERGE_VIEWER, L.tr(FlexHelper.MERGE_VIEWER)); flex.create(ScriptPanel.get().getComponent(),

FlexHelper.SCRIPT_PANEL, L.tr(FlexHelper.SCRIPT_PANEL));

flex.create(new JScrollPane(tah.getComponent()), FlexHelper.LOGGER, L.tr(FlexHelper.LOGGER));

flex.create(memoryUsage, FlexHelper.MEMORY_BUTTON, L.tr(FlexHelper.MEMORY_BUTTON));

flex.create(TaskProcessor.get().getComponent(),

FlexHelper.TASK_PANEL, L.tr(FlexHelper.TASK_PANEL)); }

private JMenuItem createWindowMenu(final String str, int keyComb) { JMenuItem item = new JMenuItem(L.tr(str));

item.addActionListener(new ActionListener() { @Override

public void actionPerformed(ActionEvent e) { FlexHelper.get().setActive(str);

} });

//collides with mydoggy toolwindow default keyboard shortcuts //item.setAccelerator(KeyStroke.getKeyStroke(keyComb, ActionEvent.ALT_MASK));

return item; }


(6)

Reynold Lumban Tobing, lahir di Sampit 24 Agustus 1987 Kabupaten Kotawaringin Timur Kalimantan Tengah. Memulai studi tahun 2005 di Program Sarjana Departemen Matematika Bidang Peminatan Komputasi Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara Medan. Saat ini aktif di berbagai komunitas bidang Open Source seperti medanLinux Community (MLC) dan Open Solaris User Group Medan (OSUG Medan). Bidang yang diminati adalah Genetic Algorithm, Java Programming, Security dan Networking. Telah banyak mengikuti akademi jaringan seperti Cisco Certified Network Associate (CCNA), Mikrotik dan pelatihan – pelatihanOpen Source lainnya. Penulis dapat dihubungi melalui email:reto.tobink@gmail.com