Home
Add Document
Sign In
Register
OPTIMASI PENJADWALAN KULIAH MENGGUNAKAN METODE ALGORITI\1A GENETIKA
Home
OPTIMASI PENJADWALAN KULIAH MENGGUNAKAN METODE ALGORITI\1A GENETIKA
1 OPTIMASI PENJADWALAN KULIAH MENGGUNAKAN METODE ALGORITI\1A GENETIKA RUSDIANA ( ) JURUSAN TEKNIK INFORMATIKA FAI(ULTAS SAINS DAN TEKNOLOGI UNIVERSIT ...
Author:
Suhendra Halim
31 downloads
247 Views
3MB Size
Report
DOWNLOAD PDF
Recommend Documents
Optimasi Penjadwalan Proyek Menggunakan Metode Algoritma Genetika
OPTIMASI PENJADWALAN PERAWAT MENGGUNAKAN ALGORITMA GENETIKA
Optimasi Penjadwalan Ujian Menggunakan Algoritma Genetika
OPTIMASI PENJADWALAN BIMBINGAN BELAJAR MENGGUNAKAN METODE ALGORITMA GENETIKA
PENGEMBANGAN APLIKASI PENJADWALAN KULIAH SEMESTER I MENGGUNAKAN ALGORITMA GENETIKA
PENJADWALAN MATA KULIAH MENGGUNAKAN ALGORITMA GENETIKA DENGAN MEMPERTIMBANGKAN TEAM-TEACHING
PERANCANGAN SISTEM OPTIMASI PENJADWALAN PENGANGKUTAN SAMPAH DI SURABAYA SECARA ADAPTIF MENGGUNAKAN METODE ALGORITMA GENETIKA
SISTEM PENJADWALAN KULIAH DENGAN ALGORITMA GENETIKA
OPTIMASI PENJADWALAN MATA KULIAH DENGAN METODE PARTICLE SWARM OPTIMIZATION
APLIKASI ALGORITMA GENETIKA UNTUK PENJADWALAN MATA KULIAH
PENJADWALAN MATAKULIAH DENGAN MENGGUNAKAN ALGORITMA GENETIKA DAN METODE CONSTRAINT SATISFACTION
PENJADWALAN MATAKULIAH DENGAN MENGGUNAKAN ALGORITMA GENETIKA DAN METODE CONSTRAINT SATISFACTION
Optimasi Kontrol Motor Induksi Menggunakan Metode Fuzzy Dan Algoritma Genetika
PENJADWALAN KAPAL PENYEBERANGAN MENGGUNAKAN ALGORITMA GENETIKA
Optimasi Injeksi Photovoltaic Distributed Generations (PVDG) Menggunakan Metode Algoritma Genetika
OPTIMASI JARINGAN PIPA GAS BER-LOOP MENGGUNAKAN METODE ALGORITME GENETIKA
OPTIMASI PENJADWALAN MATA KULIAH DENGAN ALGORITMA GENETIKA (Studi Kasus di AMIK JTC Semarang)
OPTIMASI PENJADWALAN MATA KULIAH DENGAN MENGGUNAKAN ALGORITMA GENETIKA (STUDI KASUS : PROGRAM STUDI TEKNIK INFORMATIKA) (UNIVERSITAS DARMA PERSADA)
PENERAPAN METODE ALGORITMA GENETIKA UNTUK PENJADWALAN MENGAJAR
OPTIMASI PEMILIHAN ANTIHIPERTENSI MENGGUNAKAN ALGORITMA GENETIKA
PENJADWALAN KULIAH DENGAN MENGGUNAKAN METODE TABU SEARCH TUGAS AKHIR
OPTIMASI PENJADWALAN PELAJARAN MENGGUNAKAN PARTICLE SWARM OPTIMIZATION
OPTIMASI JANGKAUAN JARINGAN 4G MENGGUNAKAN ALGORITMA GENETIKA
OPTIMASI PENEMPATAN BTS DENGAN MENGGUNAKAN ALGORITMA GENETIKA
OPTIMASI PENJADWALAN KULIAH MENGGUNAKAN METODE ALGORITI\1A GENETIKA
RUSDIANA (100091020205)
JURUSAN TEKNIK INFORMATIKA FAI(ULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAl\tl NEGE.RI SYARIF HIDAYATULLAH JAKARTA 2004MI1425 H
OPTIMASI PENJADWALAN l(ULIAH MENGGUNAKAN METODE ALGORITMA GENETII
Oleh:
RUSDIANA
100091020205
Skripsi Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta
JURUSAN TEKNIK INFORMA.TIKA FAI\:ULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGEIU SYAIUF HIDAYATULLAH JAKARTA 2004MI1425 H
OPTIMASI PENJADWALAN KULIAH MENGGUNAKAN METODE
ALGORIT~vlA
GENETIKA
Skripsi Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh:
RUSDIANA (100091020205)
Mengetahui Pembimbing II,
Victor Amrizal, M.Kom
Khodijah lulliyah, S.Kom Mengetahui,
Ketua Jurusan Teknik Informatika
...........
<.._,_..,~~--~~
--~~-~
Ir. Bakri La Katjong MT.M.Kom NIP. 470 035 764
Dengan ini menyatakan bahwa skripsi yang ditulis oleh : Nama
Rusdiana
Nim
100091020205
Program Studi: Tekoik Infommtika Judul Skripsi : Optimasi
Penjadwalan
Kuliah
Menggunakan
AlgoritmaGenetika. Dapat diterima sebagai syarat kelulusan untuk memperoleh gelar Saijana Komputer pada jurusan Teknik Informatika, Fakultas Sains dan Tekoologi Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Jakarta, Juli 2004 Menyetujui, Dosen Pembimbing Pembimbing I,
Pembimbing II,
Victor Amrizal, M.Kom
Khodijah
ulliyah, S.Kom
Mengetahui,
De~,
DR. Syopiansvlaya Putra, M.S1s NIP. 150 317 965
Ketua Jurusan,
<JZy}i.{/L-~-
·-
Ir. Bakri La Katjong, MT. M.Kom NIP. 150 317 958 I /tr~
f
/l
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR ASLI HASIL I(ARYA SENDJRI YSNG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.
Jakarta, Juli 2004
Rusdiana 100091020205
ABSTRAK
RUSDIANA (10001920205), Optimasi Penjadwalan Kuliah Menggunakan Metode Algoritma Genetika. (Di bawah bimbingan VICTOR AMRIZAL, M.Kom dan KHODIJAH HULLIYAH S.Kom).
Pembuatan jadwal kuliah yang selama ini masih bersifat manual mcnggunakan file-file excel dirasakan sangat sulit oleh pihak Fakultas Sains dan Teknologi. Hal ini disebabkan terbatasnya kesiapan waktu mengajar dosen (khususnya dosen luar) dan terbatasnya lokal yang tersedia, yang mengakibatkan adanya jadwal kuliah yang bentrok sehingga menghambat proses belajar mengajar. Untuk mengatasi hal tersebut, penulis melakukan penelitian pada Fakultas Sains dan Teknologi dengan menggunakan metode observasi, metode interview, metode studi pustaka dan metode RAD (Rapid Application
D1~velopment)
untuk
membuat suatu sistem (perangkat lunak) sebagai fasilitas yang membantu dalam pembuatan jadwal kuliah yang diharapkan mampu menempatkan kesiapan mengajar dosen pada lokal yang tersedia secara optimal. Optimalisasi
pembuatan
jadwal
kuliah
tersebut
penulis
lakukan
menggunakan konsep algoritma genetika yang dikembangkan oleh John Holland dari Universitas Michigen (1975), ia mengatakan bahwa "setiap masalah yang berbentuk adaptasi
(alami
maupun
buatan) dapat diformulasikan dalam
terminologi genetika yang merupakan simulasi dari proses evolusi Darwin dan
Operasi Genetika atas kromosom. Konsep algoritma genetika ini, penulis interpretasikan kedalam sebuah bahasa pemrograman Borland Delphi 6.0 dan database paradox melalui proses pembentukan populasi, evaluasi, seleksi, rekombinasi, dan mutasi yang menghasilkan sistem optimasi penjadwalan kuliah.
Kata Kunci : Metode Algoritma Genetika, GAs (Genetic Algoritma Sistem)
KATA PENGANTAR
Assalamu'alaikum Wr. Wb. Segala puji bagi Allah yang telah melimpahkan rahmat, hidayah serta inayahNya sehingga penulis dapat menyelesaikan skripsi ini. Selanjutnya shalawat beserta salam penulis sampaikan kepada Rasulullah SAW, yang telah membawa umatnya dari zaman kebodohan menjadi zaman yang penuh dengan ilmu pengetahuan. Dalarn penyusunan skripsi ini penulis rnenyadari sepenuhnya bahwa penyelesaian skripsi ini tidak akan berhasil dengan baik tanpa bimbingan serta dukungan yang pcnuh kctulusan dari berbagai pihak. Untuk itu penulis ingin mengucapkan terima kasih yang sedalam-dalarnnya kepada: 1. Bapak DR. Syopyansyah Jaya Putra, M.Sis, selaku dekan Fakultas Sains dan Telmologi. 2. Bapak Viktor Amrizal, M.Korn dan Ibu Khodijah Hulliyah, S.Kom, selaku pembimbing skripsi yang secara kooperatif telah rnernberikan bimbingan dan saran-saran yang sangat berharga. 3. Ayahanda Yusuf Arifin dan ibunda Julaeha yang telah rnemberikan dukungan baik rnoril maupun rnateril dalam menyelesaikan skripsi ini. 4. Kakak dan adik tercinta yang telea11 memberikan bantuan, dukungan dan saransaran yang sangat berharga bagi penulis. 5. Naily Ulva Sa'adah, yang telah mernberikan motivasi dan bantuan yang sangat berharga baik moril rnaupun materil.
6. Riza Abdul Aziz dan Ary Adithya, yang telah memberikan bantuan fasilitas clalam mengerjakan skripsi ini. 7. !bu Ovah clan Bapak Gunacli, yang telah memberikan bantuan dalam menyelesaikan skripsi ini. 8. Teman-teman KPA, Anas Dainuri, Alhacli Mustakim, Dedi Ahmad Dinuri, Luthfy Burhanudin, Ujang Husni!, Dadan Luthfi Firdaus, Dade dan Iman yang telah membantu dan mendukung dalam pengerjaan skripsi ini. 9. teman- teman kelas yang tak clapat penulis sebutkan satu persatu yang telah memberikan dukungan dan saran dalam mengerjakan skripsi ini. "Tidak ada gading yang retak'', penulis menyadari bahwa masih perlu penyempumaan dalam skripsi ini. Segala saran dan kritik untuk penyempumaan skripsi ini sangat diharapkan penulis. Akhir kata penulis berharap semoga skripsi ini dapat memberikan manfaat bagi yang membutuhkan. Wassalam Jakarta, Juli 2004
Penulis
DAFTARISI
Halam an Halaman Sampul ................................................................................................. i Halaman Judul ...................................................................................·.................. ii Halaman Persetujuan Pembimbing ..................................................................... iii Halaman Pengesahan .......................................................................................... iv Halaman Pernyataan ............................................................................................ v Abstraksi ............................................................................................................. vi Kata Pengantar .................................................................................................... vii Daftar Isi .............................................................................................................. x Daftar Lampiran .................................................................................................. xv
BAB I PENDAHULUAN .................................................................................. 1 1.1 Latar Belakang .................................................................................. I
1.2 Perumusan Masalah ........................................................................... 2 1.3 Batasan Masalah ................................................................................ 2 1.5 Tujuan dan Manfaat Penelitian ......................................................... 3
1.6 Metode Penelitian .............................................................................. 4 1.6.1 Metode Studi Pusataka ............................................................. 4 1.6.2 Metode Interview ..................................................................... 4 1.6.3 Metode Observasi ..................................................................... 4 1.6.4 Metode Pengembru1gan Sistem ................................................ 4
1.6.4 Metode Pengembangan Sistem ................................................ 4 1.7 Kerangka Pemikiran .......................................................................... 5 1.8 Sistematika Penulisan ....................................................................... 8
BAB II TINJAUAN PUSTAKA ........................................................................ 10 2.1 Pengertian Algoritma Genetika ......................................................... 11 2.1.1 Pembangkitan dan Pengujian ................................................... 11 2.1.2 Pendakian Bukit ....................................................................... 11 2.1.3 Pencarian Terbaik Pertama ...................................................... 12 2.1.4 Simulated Annealing ................................................................ 14 2.2 Struktur Umum Algoritma Genetika ................................................. 15 2.3 Komponen-Komponen Utama Algoritma Genetika ......................... 16 2.3.1 Teknik Penyandian ................................................................... 16 2.3 .2 Prosedur Inisialisasi ................................................................. 17 2.3.3 Fungsi Evaluasi ........................................................................ 17 2.3.4 Seleksi ...................................................................................... 17 2.3.5 Operator Genetika .................................................................... 18 2.3.6 Penentuan Parameter ................................................................ 18 2.4 Seleksi ............................................................................................... 19 2.4. l Rank Based Fitnees .................................................................. 19 2.4.2 Seleksi Roda Roulette .............................................................. 19 2.4.3 Stochastic Universal Sampling ................................................ 20
2.4.4 Seleksi Lokal ............................................................................ 20 2.4.5 Seleksi Dcngan Pemotongan .................................................... 20 2.4.6 Seleksi Dengan Tournament .................................................... 21 2.5 Rekombinasi ...................................................................................... 21 2.5. I Rekombinasi Diskret.. .............................................................. 21 2.5.2 Rekombinasi Menengah ........................................................... 22 2.5.3 Rekombinasi Garis .................................................................. 23 2.5.4 Penyilangan Satu Titik ............................................................. 24 2.5.5 Penyilangan Banyak Titik ........................................................ 24 2.5.6 Penyilangan Seragam ............................................................... 25 2.5.7 Penyilangan Dengan Permutasi.. .............................................. 26 2.6 Alat Perancangan Sistem ................................................................... 26 2.6.1 STD (State Transition Diagram) .............................................. 27 2.6.2 Spesipikasi Proses .................................................................... 29 2.6.3 Struktur Program ...................................................................... 29 2.7 Sekilas Tentang Delphi 6.0 ............................................................... 30 2. 7.1 Sejarah Delphi .......................................................................... 30 2.7.2 Mengenal IDE Delphi .............................................................. 31 2.8 Sekilas Tentang Paradox ................................................................... 36 2.8. I Menu ........................................................................................ 36 2.8.2 Tool Bar ................................................................................... 36
BAB III METODE PENELITIAN ................................................................... 38 3.1 Tahapan Pendekatan Sistem ........................................................... 38 3.2 Tahapan Pengembangan Sistem ..................................................... 39
BAB IV ANALISA DAN PERANCANGAN SISTEM ........................•.•.•..... 41 4.1 Analisa Kebutuhan Sistem ............................................................. 41 4.2 Konsep Penjadwalan Kuliah Menggunakan Algoritma Genetika ........................................................................ 41 4.2.1 Prosedur Inisialisasi ............................................................... 42 4.2.2 Pembangkitan Populasi Awai ............................................... 45 '1.2.3 Evaluasi ................................................................................. 46 4.2.4 Seleksi ................................................................................... 46 4.2.5 Rekombinasi .......................................................................... 47 4.2.6 Mutasi .................................................................................... 48 4.3 Perancangan Sistem ....................................................................... 50 4.3. l Rancangan Proses .................................................................. 50 4.3 .2 Rancangan Basis Data ........................................................... 52 4.3.3 Rancangan Menu ................................................................... 56
BAB V IMPLEMENT ASI ................................................................................ 63 5.1 Sarana-Sarana Pendukung Sistem Penjadwalan Kuliah ................ 63 5 .1.1 Perangkat Keras .................................................................... 63 5.1.2 Perangkat Lunak .................................................................... 63
5.2 Gambaran Dan Fungsi Modul-Modul Program ............................. 64 5.3 Rancangan Modul .......................................................................... 66
BAB VI PENUTUP ............................................................................................ 72 6.1 Kesimpulan .................................................................................... 76 6.2 Saran ............................................................................................... 77 DAFTAR PUSTAKA ......................................................................................... 78 LAMPIRAN ........................................................................................................ 79
DAFTAR LAMPIRAN
A. Lampiran Source Code ................................................................................... 76
1. Modul Data Dosen ..................................................................................... 76 2. Modul Data Mata Kuliah ........................................................................... 80 3. Modul Set Data Lokal ................................................................................. 84 4. Modul Data Kesiapan Mengajar ................................................................ 86 5. Modul Data Kesiapan Waktu Mengajar..................................................... 89 6. Modul Proses Pembuatan Jadwal Kuliah ................................................... 90 7. Modul Jadwal Kuliah ................................................................................. 96
BABI PENDAHULUAN
1.1 Latar Belalrnng
Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta, merupakan salah satu institusi pendidikan tinggi agama 1slam terbesar di Indonesia sejak tahun 1963 yang kemudian berubah statusnya menjadi sebuah universitas pada tahun 2002. Perubahan status ini memunculkan program-program studi baru yang bersifat umum seperti teknik informatika, sistem informasi, agribisnis, MIPA, ekonomi, manajemen, dan lain-lain. Program studi baru tersebut memerlukan dosen-dosen yang berkualitas dalam ha! belajar mengajar, yang saat ini masih menggunakan dosen-dosen dari luar. Adanya dosen-dosen :tuar ini menyebabkan sulitnya menentukan jadwal kuliah yang tepat sesuai dengan kesiapan waktu mereka dan lokal yang tersedia, dimana kesiapan waktu mengajar dosen (dosen luar) dan lokal sangatlah terbatas. Kesulitan menentukan jadwal kuliah tersebut dikarenakan proses pembuatan jadwal kuliah yang masih bersifat manual dalam bentuk arsip dan filefile micro>oft excel. Proses seperti ini sangat membutuhkan ketelitian dan waktu yang banyak, sehingga sering kali terjadi jadwal yang bentrok yang menyebabkan proses belajar mengajar terhan1bat. Untuk mengatasi kesulitan tersebut, salah satu fakultas yang memiliki program studi barn, Fakultas Sains dan Teknologi, merasa pt:rlu dibuatnya sistem
2
yang dapat memudahkan pembuatan jadwal kuliah ym1g secara otomatis menempatkan kesiapan mengajar dosen pada lokal yang tersedia secara optimal. Optimalisasi kesiapan mengajar dosen ini penulis lakukan menggunakmi metode
algoritma genetika yang selmna ini banyak digunakmi untuk menyelesaikmi masalah optimasi, Orvosh dan Davis (1997, 202). Berdasarkan latar belakang permasalahan tersebut, maka dilakukan penelitian terhadap jadwal kuliah Fakultas Sains dm1 Teknologi untuk membuat fasilitas yang mmnpu mengatasi masalah-masalah diatas clengmi mengmnbil judul OPTIMASI PENJADW ALAN KULIAH MENGGUNAKAN
METODE
ALGORITMA GENETIKA.
1.2 Perumusan Masalah Permasalahan penelitian ini di runrnskmi sebagai berikut : a. Bagaimana mernbuat jadwal dosen agar tidak terjadi bentrok. b. Bagaimmia membuat jadwal kuliah ym1g secara otomatis menempatkmi kesiapan mengajar dosen pada lokal yang terseclia secara optimal. c. Bagaimmia menampilkan jadwal kuliah yang clapat dilihat oleh pihak akaclemik, closen, dan mahasiswa.
1.3 Batasan Masalah Berclasm·kan penelitimi yang penulis lakukmi, kenyataarmya, bmiyak sekal i parameter yang harus cligunakmi sehingga penulis merasa kesulitmi clalam
3
mengembangkan sistem ini. Untuk itu penulis batasi p•~ngembangan sistem ini hanya pada optimalisasi kesiapan mengajar dosen untuk shift yang telah ditetapkan.
1.4 Tujuan dan Manfaat Penelitian Tujuan penelitian yang penulis lakukan adalah untuk membuat sistem (perangkat lunak) sebagai fasilitas yang membantu pihak akademik Fakultas Sains dan Teknologi dalam pembuatan jadwal kuliah yang diharapkan dapat ditcrapkan scbagai pengganti sistcm yang selama ini masih manual. Sesuai dcngan pcnnasalahan pcnclitian yang sudah disebutkan, maka manfaat penelitian dapat dirumuskan sebagai berikut: a. Manfaat yang bersifat akademis, yaitu : Memberikan sumbangan ilmiah bagi pengembangan sistem menggunakan metode algoritma genetika. b. Manfaat yang bersifat praktis, yaitu : Membantu memecahkan kesulitankesulitan yang dihadapi dalam pembuatan jadwal kuliah, diantaranya: c. Proses pembuatan jadwal kuliah tidak memerlukan waktu yang banyak (cepat). d. J adwal kuliah tidak ada yang bentrok. e. Kendali lokal dapat dilakukan dengan cepat. f.
Penggunaan lokal yang optimal.
4
1.6 Metodologi Pcnelitian Untuk memperoleh data clan informasi yang cliperlukan, acla beberapa metocle yang penulis lakukan : 1.6.1 Metode Studi Pustaka Yaitu pengumpulan data dan infonnasi dengan ca.ra membaca buku-buku referensi yang dapat dijadikan acuan pembahasan dalam masalah ini. 1.6.2 Metode Interview Koentjaraningrat
(1985:167)
mengartikan
interview sebagai sebuah
tindakan pengumpulan informasi dengan cara mengajukan sejumla11 pertanyaan secara lisan dan dijawab secara lisan pula. Dalam ha! ini penulis mengadakan tanya jawab dengan staff akademik Fakultas Sains dan Teknologi yang mengurusi pembuatanjaclwal kuliah. 1.6.3 Metode Observasi Observasi adalah sebuah metode pengumpulan informasi dengan cara pengamatan atau peninjauan langsung terhaclap obyek penelitian, yaitu mengumpulkan dan menelaah data-datajadwal kuliah yang telah cliterapkan di Fakultas Sains dan Teknologi. 1.6.4 Metode Pengembangan Sistem Pengembangan sistem dalam penelitian ini penulis lakukan menggunakan tiga
tahap
siklus
pengembangan
model
RAD
(Rapid Aplication
Development), Kendal & Kendal (1998, 200), Gambar 1.1.
5
a. Perencanaan Syarat-Syarat Pada tahap
ini
masalah,
tujuan,
dan
syarat-syarat informasi
didcfinisikan dari hasil pcngumpulan data dan informasi dari Fakultas Sains dan Teknologi serta mempelajari proses-proses yang te1jadi dalam pembuatan jadwal kuliah. b. Workshop Desain Pada tahap ini dilakukan perancangan dan kontruksi yang melibatkan pengguna dan penganalisis dalam mendefinisikan proses-proses bisnis yang te1jadi. c. Pelaksanan Pada tahap ini dilakukan pengujian terhadap sistem dan melakukan pengenalan terhadap sistem.
1.7 Kerangka Pcmikiran
Jadwal kuliah terdiri dari 6 variabel yang menentukan yaitu dosen, mata kuliah, hari, shift, semester, dan jurusan. Keenam variabel ini dikombinasikan (inisialisasi) menjadi kesiapan mengajar dosen dan disimpan dalam basis data. Agar kesiapan mengajar dosen dapat secara otomotis dibuat dan ditempatkan pada lokal yang tersedia secara optimal maka semua kesiapan mengajar dosen ini harus melalui proses algoritma genetika yang disebut GAs (Genetic Algorithms
Sistem) yang terdiri dari proses pembangkitan populasi awal, evaluasi, seleksi, rekombinasi, dan mutasi (lihat Gambar 3.1 dibawah ini).
6
Data MataKuliah
Data Dosen
Shift Hari
[
Semester
~
BASIS DATA
=1
Jurusan
Inisialisasi Kesiapan Dosen
Bangki~·ka· · w· ~·:·P·1 ~.~u.I~~
. ·; . ···--1· (Kesiapan Mengajar Dosen) ....
_(]/\ 5~ 1_=~----------__
Ya
Evaluasi Fungsi Tujuan
___.-···· Tidak
Rekombinasi
Mutasi
OUTPUT (Jadwal Kuliah)
7
f1---'
Gambar 1.2 Diagram Alir Sistem Penjadwalan Dosen
7
1.7.l Pembangkitan Populasi Awai Pada proses ini dilakukan pembangkitkan kesiapan mengajar dosen yang telah diinisialisasi menggunakan keenam data diatas. 1. 7.2 Evaluasi Pada proses ini, kesiapan mengajar dosen yang sudah dibangkitkan diatas dievaluasi dengan menjumlahkan kesiapan mengajar dosen masing-masing. 1.7.3 Seleksi Proses ini akan menyeleksi kesiapan mengajar dosen yang telah dievaluasi untuk menentukan kesiapan mengajar dosen mana yang sesuai untuk menempati lokal yang tersedia. Proses seleksi ini dilakukan dengan menggunakan hari dan shift yang telah ditetapkan. 1.7.4 Rekombinasi Setelah proses seleksi dilakukan, kesiapan mengajar dosen hasil seleksi akan mengalami rekombinasi dengan cara mengambil data hasil seleksi sebanyak lokal yang tersedia dan melakukan penyilangan (crossover) terhadap proses seleksi untuk hari dan shift berikutnya. 1.7.5 Mutasi Proses mutasi akan dilakukan pada kesiapan mengajar dosen yang benarbenar be! um mendapatkan lokal. Proses algoritma genetika ini akan dilakukan berulang-nlang sampai kesiapan mengajar dosen yang telah di inisialisasi kosong (menempati lokal yang tersedia).
8
1.8 Sistcmatika Penulisan
BAB I PENDAHULUAN Dalam bab ini, penulis mengemukakan tentang latar belakang penelitian, tujuan penelitian, perumusan masalah, batasan masalah, manfaat penelitian, metodologi penelitian, kerangka pemikiran dan sistematika penulisan.
BAB II TINJAUAN PUSTAKA Dalam bab ini, penulis mengemukakan dan membahas teori tentang pengertian A!goritma Genetika, struktur umum Algoritma Genetika, komponen-komponen Algoritma Genelika, seleksi, rekombinasi, mutasi, alat perancangan sistem, sekilas tentang delphi 6.0 sebagai aplikasi yang digunakan dan paradox sebagai media penyimpanan data dalan1 sistem penjadawalan kuliah.
BAB III METODE PENELITIAN Dalam bab ini dijelaskan tahap-tahap pengembangan sistem yang meliputi, ta11apan pendekatan sistem dan ta11apan pengembangan sistem.
9
BAB IV ANALISA DAN PERANCANGAN
Dalam bab ini, penulis menjelaskam analisa kebu.tuhan sistem, konsep penjadwalan kuliah menggunakan algoritma genetika, perancangan sistem yang meliputi perancangan proses, perancangan basis data, perancangan menu perancangan masukan dan perancangan keluaran.
BAB V IMPLEMENT ASI
Dalam bab ini penulis mendeskripsikan sarana-sarana pendukung sistem penjadwalan kuliah, gambaran modul-modul fungsi program dan rancangan interface (antamrnka) masing-masing modul. BAB VI PENUTUP
Dalarn
bab
ini
penulis
mencoba
rnenyimpulkan
pe1masalahan-
perrnasalahan yang dibahas serta mengemukakan saran-saran yang dianggap perlu.
BABU TINJAUAN PUSTAKA
2.1 Pcngcrtian Algoritma Genetika Algoritma Genetika adalah algoritma pencarian heuristik yang didasarkan alas mekanisme evolusi biologis, Sri Kusuma Dewi (2003, 279). Keberagaman pada evolusi biologis adalah variasi dari kromosom antar individu organisme. Variasi kromosom ini akan mempengaruhi laju reproduksi dan tingkat kemampuan organisme untuk !etap hidup. Pada dasarnya1 ada 4 kondisi yang sangat mempengaruhi proses evolusi, Sri Kusuma Dewi (2003, 279), yaitu : a. Kemampuan organisme untuk melakukan reproduksi. b. Keberadaan populasi organisme yang bisa melakukan reproduksi. c. Keberagaman organisme dalam populasi d. Perbedaan kemampuan untuk survive. Ada 4 metode pencarian heuristik, Sri Kusuma Dewi (2003, 31) : a. Pembamgkitan dan Pengujian (Generate and Test). b. Pendakian Bukit (Hill Climbing). c. Pencarian Terbaik Pertama (Best First Search). d. Simulated Annealing
11
2.1.1 Pembangkitan Dan Pengujian (Generate a11d Test). Pada prinsipnya metode ini merupakan penggabungan antara depth first search dengan pelacakan mundur (backtracking), yaitu bergerak ke belakang menuju pada suatu keadaan awal. Nilai pengujian berupajawaban 'ya' atau 'tidak'.
B
Gambar 2.1 Metode Generate clan Test
2.1.2 Pendakian Bulat (Hill Climbing). Metode ini hampir sama dengan metode pembangkitan dan pengujian, hanya saja proses pengujian dilakukan menggunakan fungsi
12
heuristik. Pembangkitan keadaan berikutnya sangat tergantung pada feedback dari prosedure pengetesan. Tes yru1g berupa fungsi heuristik ini akan menunjukkan seberapa baiknya nilai tekanan yang dirunbil terhadap keadaan-keadaan lainnya yang mungkin.
ABCD
BACD
ABCD
ACBD
DBCA
DACB
BACD
J
DCAB
Gambar 2.2 Metode Hill Climbing 2.1.3 Pencarian Terbaik Pertama (Best First Search).
Metode Best First Search ini merupakan kombinasi dari metode
depth first search dan metode bread first search dengan mengrunbil kelebihan dari kedua metode tersebut. Apabila
pada pencarian dengan
metode hill climbing tidak diperbolehkan untulc kemba.li ke node pada level yang lebih rendah meskipun node pada level yang lebih rendah tersebut memiliki nilai heuristik yang lebih baik, lain halnya dengan metode best
13
first search ini. Pada metode best first search, pencarian diperbolehkan mengunjungi node yang ada di level yang lebih rendah, jika ternyata node pada level yang lebih tinggi ternyata memiliki nilai heuristik yang lebih buruk.
Gambar 2.3 Metode Best First Search
14
2.1.4 Simulated Annealing. Ide dasar simulated annealing terbentuk dari pemrosesan logam.
Annealing (memanaskan kemudian mendinginkan) dalam pemrosesan logam ini adalah suatu proses bagaimana membuat bentuk cair berangsurangsur menjadi bentuk yang lebih padat. Seiring dengan penurunan temperatur. Simulated Annealing biasanya digunakan untuk penyelesaian masalah yang mana perubahan keadaan dari suatu kondisi ke kondisi yang lainnya membutuhkan ruang yang sangat luas, misalkan perubahan gerakan dengan menggunakan permutasi pada traveling salesman problem.
/
Garn bar 2.4 Metode Simulated Annealing
15
2.2 Struktur Um um A/goritnw Genetika Pada algoritma ini, teknik pencarian dilakukan sekaligus atas sejumlah solusi yang mungkin yang dikenal dengan istilah populasi. Individu yang terdapat dalam satu populasi disebut dengan istilah kromosom, Charles L Karr (1999, 94). Kromosom ini merupakan suatu solusi yang masih berbentuk simbol. Populasi awal dibangun secara acak, sedangkan populasi berikutnya merupakan basil evolusi kromosom-kromosom melalui iterasi yang disebut dengan istilah gcncrasi, Sri Kusuma Dewi (2003, 280). Pada setiap generasi kromosom akan melalui proses evaluasi dengan menggunakan alat ukur yang disebut fungsi fitnees. Nilai fitnees dari suatu kromosom akan menunjukkan kualitas kromosom dalam populasi tersebut. Proses ini dapat direpresentasikan dalam algoritma sederhana Algoritma Genetika sebagai berikut:
Bangkitkan Populasi Awai
i
Evaluasi Fungsi Awai
Apakah Kriteria Optimasi Tcrcapai
Ya
Tidak
J
Awai
Seleksi ._____,.__ Rekombinasi
J
Mutasi
J
Gambar 2.5 Diagram Alir Genetiic Algorithms Sederhana
Individu Individu Terbaik
16
2.3 Komponcn-Komponcn Utama Algoritma Ge11etika Ada 6 komponen utama dalam A lgoritma Genetika Charles L Kan· & L. Michael Freeman (1999, 93-97) dan Sri Kusuma Dewi (2003, 280-283) yaitu: 2.3.1 Teknik Penyandian Teknik penyandian disini meliputi penyandian gen dari kromosom. Gen merupakan bagian dari kromosom. Satu gen biasanya akan mewakili satu variabel. Gen dapat direpresentasikan dalam bentuk : string bit, pohon, array, bilangan real, daftar aturan, elemen permutasi, elemen program, atau representasi lainnya yang dapat di implementasikan untuk operator genetika. Gambar 2.6 menunjukkan representasi string bit clan pohon. •
String Biner 0
0
Gen 1
•
0
0
Gen 2
Pohon (*(-(ab))( +(*(CD))(/(EF))))
A
B
c
0 Gen3
17
Demikian juga, kromosom dapat direpresentasikan dengan menggunakan : String bit
: !OOOJ l,010011,001100, dan seternsnya.
Bilangan real
: 66,65,-67,68,69,567,578,987, dan seterusnya.
Elemen permutasi
: E2,E I O,E8,E20, dan seterusnya.
Daftar Aturan
: Rl,R2,R3, dan seterusnya.
Elemen program
: pemrograman genetika.
Struktur lainnya 2.3.2 Prosedur lnisialisasi Ukuran populasi tcrganlung pada masalah yang akan dipecahkan clan jenis operator genetika yang diimplementasikan. Setelah ukuran populasi ditentukan, kemudian harus dilakukan inisialisasi terhadap kromosom yang terdapat pada populasi tersebut. 2.3.3 Fungsi Evaluasi Ada 2 hal yang harus dilakukan dalam melakukan evaluasi kromosom, yaitu: evaluasi fungsi objektif (fungsi tujuan) clan konversi fungsi objektif ke dalam fungsi fitnees. Secara mnum, fungsi fitnees diturunkan dari fimgsi objektif dengan nilai yang tidak negatif. Apabila ternyata fungsi objektif memiliki nilai negatif, maka perlu ditambahkan suatu konstanta c agar nilai fitnees yang terbentuk mertjadi tidak negatif. 2.3.4 Seleksi Seleksi ini bertujuan untuk memberikan kesempatan reproduksi yang lebih besar bagi anggota populasi yang paling fit.
18
2.3.5 Operator Genetika. Ada 2 operator genetika, yaitu : a. Operator untuk rnelakukan rekombinasi, yang terdiri dari : •
Rekombinasi bernilai real, yaitu : rekombinasi diskret, rekombinasi intermediate (rnenengah), rekombinasi garis, dan rekombinasi garis yang diperluas.
•
Rekombinasi bernilai biner (crossover), yaitu : crossover satu titik, crossover banyak titik, dan crossover seragam.
•
Crossover dengan pennutasi.
b. Mutasi , yang terdiri dari : •
Mutasi bernilai real.
•
Mutasi bernilai biner.
Kemungkinan te1jadinya mutasi sangat jarang sekali, dan diharapkan tidak te1jadi. 2.3.6 Penentuan parameter. Yang dimaksud dengan parameter disini adalah parameter kontro l algoritma genetika, yaitu : ukuran populasi (popsize), peluang croosover (pc) dan peluang muatasi (pm).
19
2.4 Seleksi Seleksi akan menentukan individu-individu mana :mja yang akan dipilih untuk dilakukan rekombinasi dan bagaimana offspring terbentuk dari individuindividu terpilih tersebut. Langkah pertama yang dilakukan dalam seleksi ini adalah pencarian nilai fitnees. 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. Nilai Jitnees inilah yang nantinya akan digunakan pada tahap-tahap seleksi b<.:rikutnya. Ada beberapa rnetode seleksi dari induk, Sri Kusuma Dewi (2003, 283-289), yaitu: 2.4.1 Rank-Based Fitnees Pada rank-based fitnees,
populasi
diurutkan
menurut
nilai
objektifnya. Nilai fitnees dari tiap-tiap individu hanya tergantung pada posisi individu tersebut dalam urutan, dan tidak dipengaruhi oleh nilai objektifnya. 2.4.2 Seleksi Roda Roulette (Roulette Whele Selection) Metode seleksi roda roullette ini merupakan metode yang paling sederhana, dan sering juga dikenal dengan nama stochastic sampling with
replacement. Pada metode ini, individu-individu dipetakan dalam suatu segmen garis secara berurutan sedemikian hingga tiap·-tiap segmen individu merniliki ukuran yang sama dengan ukuran fitneesnya. Sebuah bilangan random dibangkitkan dan individu yang memiliki segmen dalam kawasan
20
bilangan random tersebut akan terseleksi. Proses ini diulang hingga diperoleh sejumlah individu yang diharapkan. 2.4.3 Stochastic Universal Sampling
Stochastic universal sampling memiliki nilai bias no! dan penyebaran yang minimum. Pada metode ini, individu-individu dipetakan dalam suatu segmen garis secara berurutan sedmikian hingga tiap-tiap segmen individu memiliki ukuran yang sama dengan ukuran fitneesnya seperti halnya pada seleksi roda roulette. Kemudian diberikan sejumlah pointer sebanyak individu yang ingin diseleksi pada garis tersebut. Andaikan N adalah jumlah individu yang akan diseleksi, maka jarak anatar pointer adalah JIN, dan posisi pointer pe1tama diberikan secara acak pada pada range [I, I IN]. 2.4.4 Seleksi Lokal (Local Selection). Pada seleksi lokal, setiap individu yang berada didalam konstrain tertentu disebut dengan nama lingkungan lokal. Interaksi antar individu hanya dilakukan didalam wilayah tersebut. Lingkungan tersebut ditetapkan sebagai struktur dimana populasi tersebut didistribusi. Lingkungan tersebut j uga dapat dipandang sebagai kelompok pasangan-pasangan yang potensial.
2.4.5 Seleksi dengan Pemotongan (Truncation Selection) Pada metode-metode seleksi yang telah dijelaskan terdahulu, seleksi dilakukan secara alami. Pada seleksi dengan pemotongan ini, lebih berkesan sebagai seleksi buatan. Seleksi ini biasanya digunakan oleh populasi yang
21
jumlahnya sangat besar. Pada metode ini, individu-individu diurutkan bcrdasarkan nilai fitncesnya. Hanya individu-individu yang terbaik saja yang akan diseleksi scbagai induk. Parameter yang digunakan dalam metode ini adalah suatu nilai an1bang trunc yang mengindikasikan ukuran populasi yang akan diseleksi sebagai induk yang berkisar antara 50% - 10%. Individuindividu yang ada dibawah nilai ambang ini tidal< al
2.5 Rekombinasi Ada tujuh bentuk rekombinasi menurut Sri Kusuma Dewi (2003, 290-299) yaitu: 2.5.1 Rekombinasi Diskret Rekombinasi diskret akan menukar nilai variabel antar kromosom induk. Misalkan ada 2 individu dengan 3 variabel, yai1u : induk I :
12
25
5
induk2:
123
4
34
22
untuk tiap-tiap variabel induk yang menyumbangkan variabelnya ke anak dipilih secara random dengan probabilitas yang sama. Sampell :
2
2
Sampel2:
I
2
1
Setelah rekombinasi, kromosom-kromosom baru yang terbentuk : Anakl :
123
4
5
Anak2:
12
4
5
Rekombinasi ini dapat digunakan untuk sembarang variabel (biner, real, atau simbol). 2.5.2 Rekombinasi Menengah Rekombinasi menengah merupakan metode rekombinasi yang hanya dapat digunakan untuk variabel real (clan variabel yang bukan biner). Nilai variabel anak dipilih disekitar dan antara nilai-nilai variabel induk. Anak dihasilkan menurut aturan sebagai berikut : Anak = indukl +alpha (induk2-indukl) dengan alpha adalah faktor skala yang dipilih secara random pada interval [-d, 1+d], biasanya d=0.25. Tiap-tiap variabel pada anak merupakan basil kombinasi variabel-variabel menurut aturan diatas dengan nilai alpha dipilih ulang untuk tiap variabel. Misalkan ada 2 individu dengan 3 variabel, yaitu : Induk I :
12
25
5
Induk2:
123
4
34
23
Misalkan nilai alpha yang dipilih adalah : Sampell :
0,5
] ,1
-0,1
Sampel2:
0,1
0,8
0,5
setelah rekombinasi, kromosom-kromosom baru yang terbentuk : Anakl :
67,5
1,9
2,1
Anak2:
23,1
8,2
19,5
Rekombinasi ini dapat digunakan untuk sembanmg variabel (biner, real, atau simbol). 2.5.3 Rekombinasi Garis Pada dasarnya rekombinasi gar1s ini sama dengan rekombinasi menengah, hanya, saja nilai alpha untuk semua variabel sama. Misalkan ada 2 kromosom dengan 3 variabel, yaitu : Indukl :
12
25
5
Induk2:
123
4
34
Untuk tiap-tiap variabel induk yang menyumbangkan variabelnya ke anak dipilih secara random dengan probabilitas yang sania. San1pell :
0,5
Sampel2 :
0, 1
setelah rekombinasi, kromosom-kromosom baru yang terbentuk : Anakl:
67,5
14,5
19,5
Anak2:
23,l
22,9
7,9
24
2.5.4 Penyilangan Satu Titik Pada penyilangan satu titik, posisi penyilangan k (k=l,2 ... ,N-1) dengan N adalah panjang kromosom yang diseleksi secara random. Variabel-variabel ditukar antar kromosom pada titik tersebut untuk menghasilkan anak. Misalkan ada 2 kromosom dengan panjang 12, Jndukl :
0 1110
0101110
lnduk2:
1 10 10
0 0 0 1 10 1
posisi penyilangan terpilih misalkan 5, maka setelah penyilangan diperoleh kromosom-kromosom barn : Anakl:
01110
0001101
Jnduk2:
11010
0101110
2.5.5 Penyilangan Banyak Titik (Multi-Point Croosover) Pada
penyilangan
banyak
titik,
m
posisi
penyilangan
k;
(k=l,2, ... ,N-1, i=l,2 ... ,m) dengan N adalah panjang kromosom diseleksi secara random dan tidak diperbolehkan ada posisi yang sama, serta diurutkan naik. Variabel-variabel ditukar antar kromosom pada titik tersebut untuk menghasilkan anak. Misalkan ada 2 kromosom dengan panjang 12, Indukl :
011100101110
Induk2:
1 10 10 0 0 0 1 I 0 1
25
Posisi penyilangan yang terpilih, Misalkan (m=3) :
2
10
6
Setelah penyilangan, diperoleh kromosom-kromosom baru : Anakl:
01
0100
!Oil
01
Anak2:
11
1100
0011
10
2.5.6 Penyilangan Seragam (Unifilrm Croosover) Pada penyilangan seragam, setiap lokasi memiliki potensi sebagai tempat penyilangan. Sebuah mask penyilangan dibuat sepanjang panjang kromosom secara random yang menwtjukkan bit-bit dalam mask yang mana induk akan mensupply anak dengan bit-bit yang ada. Induk mana yang akan menyumbangkan bit ke anak dipilih secara random dengan probabilitas yang sama. Disini, anakl akan dihasilkan dari induk2 jika bit mask bernilai 0. sedangkan anak2 dihasilkan dari kebalikan mask. Misalkan ada 2 kromosom dengan panjang 12, Indukl :
0 I I I00 I0 I I I0
Induk2:
110100001101
Maka bit, Sampell :
100111001101
Sampel2:
011000110010
Setelah penyilangan diperoleh, kromosom-kromosom baru, Indukl :
010100001100
Induk2:
11I I00 I0 I l I I
26
2.5.7 Penyilangan dengan Permutasi Pada penyilangan dengan permutasi ini, kromosom-kromosom anak diperoleh dengan cara memilih sub-barisan suatu tour dari satu induk dengan tetap menjaga urutan dan posisi sejumlah kota yang mungkin terhadap induk yang lainnya. Misalnya: lndukl :
(1 2 3
I 4 567 I
lnduk2:
(4 5 3
181 6
I 9 2)
Anakl :
(x x x
18 7 6
I
Anak2:
(xx x
4567
I xx)
I
8 9)
x x)
Disini, kita memperoleh pemetaan, 1-4, 8-5, 7-6, 6-7 kemudian kita copy sisa gen di indukl ke anakl dengan menggunakan pemetaan yang sudah ada. Anakl :
(1-4 2 3
8 1 6
I
8-5 9)
Anakl :
( 4 2 3
8 7 6
I
s
9)
Lakukan hal yang sama untuk anak2 Anak2:
C4-1
Anak2:
(
5-8 3 I 4 5 6 7 / 9 2)
8 3
I 4 5 6 7 / 9 2)
2.6 Alat Perancangan Sistem Menurut Pressman (1997, 186) ada tiga alasan dalam memakai rancangan untuk membuat suatu sistem :
27
a. agar dapat terfokus pada bagian sistern yang penting. b. Agar dapat terfokus pada bagian yang akan rnengalarni perubahan-perubahan clan koreksi, serta clokumentasi. c. Agar clapat rnengerti akan lingkungan pernakai, sehingga sistern tersebut lebih baik. 2.6.1 STD (State Transition Diagram)
State
transition
diagram
merupakan
suatu
diagran1
yang
rnrnggarnbarkan bagairnana slate dihubungkan dengan slate yang lain pada satu waktu. Stale Transition Diagram menggarnbarkan suatu stale yang mernpunyai konclisi climana clapat rnenyebabkan perubahan satu state ke
state yang lain (Hoffer, George, clan Valacich, 1996, 364). State Transition Diagram
pada dasarnya merupakan sebuah
diagram yang terdiri dari state clan transisi atau perpinclahan slate. Transisi atau perpinclahan state tercliri dari kondisi clan aksi. Transisi cliantara keclua keaclaan pada urnumnya clisebabkan oleh suatu konclisi. Kondisi aclalah suatu kejadian yang dapat diketahui oleh system. Seclangkan aksi adalah tinclakakn yang dilakukan oleh sistem apabila terjacli perubahan stale atau rnerupakan reaksi clari sistern. State 1
Aksi State 2
Garn bar 2.6 Contoh Perubahan State
28
Adapun komponen atau simbol yang digunakan dalam diagram ini aclalah: a. Modul Menggunakan simbol lingkaran kecil (Gambar 2.7) yang mewakili modul yang dipanggil apabila te1jadi suatu tinclakan.
0 Gambar 2.7 Notasi Modul b. Tam pi Ian kondisi (state) Merupakan layer yang ditampilkan menurut keadaan atau atribut, untuk memenuhi suatu tindakan pada waktu tertentu yang mewakili suatu bentuk keberaclaan atau kondisi tertentu, disimbolkan dengan gambar kotak (Gambar 2.8)
Gambar 2.8 Notasi Tampilan
c. Tinclakan (state transition) Menggunakan symbol anak panah (Gambar 2.9) disertai keterangan tindakan yang dilakukan.
Gambar 2.9 Notasi Tindakan
29
2.6.2 Spesifikasi Proses Spesifikasi proses merupakan penjelasan dari proses-proses yang te1jadi cliclalam sistem, spesifikasi proses harus dimengerti baik oleh pemakai maupun pembuat sistem. Spesifikasi proses akan menjadi pecloman bagi pembuat program dalam membuat kode program maupun clokumentasi. Ada banyak cara untuk membuat spesifikasi proses antara lain clnegan memakai (Pressman, 1997, 341-358): a. Tabel keputusan (Decision Tables). b. Bahasa terstruktur (pseudocode) dengan : •
Bahasa inggris terstruktur.
•
Bahasa Indonesia terstruktur.
c. Bagan alur (flowchart). cl. Diagram notasi - Shneiclerman (Diagram N - S) e. Bentuk narasi atatu cerita (missal dalam bahasa lnggris, Indonesia). 2.6.3 Struktur Program Struktur program menggambarkan bagan atau diagram control distribusi yang bersipat top - down, penampilnya clibagi tingkat-pertingkat, antara lain: a. Top Level Module yaitu sebagai model yang menentukan atau mengambil keputusan. (decision making).
30
b. Low level module yaitu digunakan sebagai masukan, pemrosesan atau control sehingga menghasilkan keluaran. Struktur program ini bertujuan untuk memb<:rikan gambaran proses informasi yang masuk, mengalir dan keluar, pada program yang akan dibuat secara garis besar dengan menggunakan bagan terstruktur (Pressman, 1997, 337).
2.7 Sckilas Tentang Delphi 6.0 2.7.1 Sejarah Delphi
Ide munculnya delphi sebenarnya berasal dari bahasa pemrograman terkenal, yaitu pascal, Antony Pranata (2001, 1-2). Bahasa pascal sendiri telah diciptakan pada tahun 1971 oleh ilmuwan dari Swiss, yaitu Niklaus Wirth. Nama pascal diambil dari ahli matematika dm1 filsafat dari prancis, yaitu Blaise Pascal (1623 - 1662). Sejak saat itu, muncul beberapa versi pascal diantaranya Turbo Pascal yang dirilis oleh Borland International Incorporation tahun 1983. Turbo Pascal ini memiliki sedikit perbedaan dengan pascal standar, antara lain dalam ha! pengolahan string, penambahan beberapa prosedure, fungsi dan sebagainya. Turbo pascal yang muncul pertama kali hanya dapat dijalankan di sistem operasi DOS. Namun dalam perkembangan selanjutnya, Borland
31
International Incorporation juga merilis Turbo pascal yang berjalan di Windows 3.X, yaitu Turbo Pascal For Windows. Pada tahun 1992, Borland International menggabungkan turbo Pascal For Dos dan Turbo Pascal For Windows menjadi satu paket bahasa pemrograman yang dikenal dengan nama Borland Pascal Versi 7. Karena pemrograman Windows dengan Borland Pascal masih dirasa cukup sulit, sejak tahun I 993 Borland International mengembangkan bahasa pascal yang bcrsi l'at visual . hasi I dari pcngcmbangan ini adalah dirilisnya Delphi 1 pada tahun 1995. Perkembangan delphi tidak sampai disitu. Satu tahun berikutnya, pada tahun 1996, Borland International merilis delphi 2 yang sudah bersifat 32 bit. Dengan kata lain delphi 2 hanya bisa dijalankan pada windows 95 dan windows NT. Pada tahun 1997, I 998, dan 1999, Borland International yang berganti nama menjadi Inprise Corporation berturut-turut kembali merilis menyempurnakan delphi, yaitu 3, 4, dan 5. Sampai sekarang 2004 Borland International telah merilis delphi 7. 2.7.2 Mengenal IDE Delphi Pada dasarnya IDE milik delphi dibagi menjadi enam bagian utama, Antony Pranata (2001, 2) yaitu menu, speed bar, component palette, form designer, code editor, dan objek inspector, dan objek treeview. Lihat gambar 2.6 untuk lebih jelasnya.
32
At 19,Scm lfl 17
Ccl I
Object Inspector
Code Editor
Gambar 2.10 Bagian-bagian dari IDE Delphi
a. Menu Menu pada delphi memiliki kegunaan seperti menu pada aplikasi windows lainnya. Dari menu ini, kita bisa memanggil atau menyimpan program, menjalankan dan melacak bug program, dan sebagainya. Singkatnya segala sesuatu yang berhubungan dengan IDE delphi, dapat anda lakukan dari menu.
33
b. Speed Bar Speed bar atau sering juga disebut toolbar berisi kurnpulan tombol yang tidak lain adalah pengganti beberapa item menu yang sering digunakan. Dengan kata lain, setiap tombol pada speed bar menggantikan salah satu item menu. Sebagai contoh, tombol kiri atas aclalah pengganti menu File I New, tombol clisebelah kanannya aclalah pengganti menu File I Open, dan seterusnya. ,' . ~x l!i. l'.I ';'_jLl;.J•!Qlgi&l~~ ~ •m••••~-•µ•-----
_J"
a tL:
- - - -
- -
=.I
2'1 i f!L:fl
~
v
H I ·a. 'il
Gambar 2.11 Speed Bar pada IDE Delphi c. Component Palette Component palette berisi kumpulan ikon yang melambangkan komponen-komponen pada VCL (Visual Component Library). VCL adalah pustaka komponen milik clelphi, yang clapat cligunakan untuk membangun sebuah aplikasi. Pada Component Palette, terclapat beberapa tab, yaitu Standard, Aclditionals, Data Access, dan sebagainya. Untuk lebih jelasnya perhatikan gambar 2.8. rn.J3JIJ.!r1§ilj@fflh·
'
AWifu4@&001
MmiUI®
S
:~~!__ ~-_A ~~ Ll!J ~---"-~ ~""' [j lgj D ril Gnmbar 2.12 Component Palette
34
d. Form Designer Sesuai dengan namanya, fo1m designer merupakan tempat dimana kita merancang jendela dari aplikasi windows kita. Perancangan forn1 dilakukan dengan meletakkan komponen-komponen yang diambil dari Component Palette. e. Code Editor Code editor adalah tempat dimana kita menuliskan program. Disini kita dapat meletakkan pernyataan-pernyataan dalam bahasa object pascal. Pemrogram borland Pascal pasti tidak asing lagi dengan code editor karena sangat serupa dengan editor milik Borland Pascal. Yang perlu kita perhatikan pada code inspector adalah kita tidak perlu menulis seluruh kode sumber. Delphi telal1 menuliskan semacam kerangka w1tuk anda. Untuk lebih jelasnya perhatikan gambm· 2.9 lci!fltibi!,f
• "'!
lf<>1ml
Ur.ll
,!I)
• ....J v .. ..u..r/Cm 1 ~.,,,
;
I
unu. lhuc1i
• ....J U•a1
li'indmm,
fl""""1J""•
!'lyallt:tl"' Va,,iQnt:D, Cl"""""•
htc .. ,
1>.1- .. t<>l:i"' typ<1
1Tor>nl • c.1-'1•• p'Fo.-ru) pro<>odoro Forl»Cro:<>te JH'iyalo
·-0
(Sea~"'
TCbj
( p,_-~ ... ,,,,., ,·/~"'""'""''"·· )
/
l'ubJ~<:
daci"r«tion" /
.,nd;
"""oodu.-.. TTor:m1.roni:.c::c..•tc(!;lo:nder' Ta>.l"'""l'
""""' <>nd•
......... :~J
,
I
Gambar 2.13 Code Editor pada IDE Delphi
Con"ralo, T<>-""""•
35
f.
Object Inspector Object Inspector digunakan untuk mengubah karakteristik sebuah komponen. Pada object inspector, ada 2 buah tab yaitu properties dan event. Anda dapat mengaktiflrn.n salah satu tab
1111
dengan mengkl ik teks properties a.tau events (Iihat. gambar 2.10). Dml§iiiW 1 I§§tMWWtiilt~WMi1!~EI'
CMt4;11.t1im;o
!Form1
!Form1
TForn-.1
Properties j Events
:.::J
l
Properties Events
I
TForm1
·~~,-~~~~--.
I Action
...
I Ar.tiver.nntrnl '......t\li.Qll.... AlphaBlf3f\d · ··· ············ AlphaBlellcfllalue... . l±lAnchms AutoScroH AutoSize BiDiMode 1±1 Borderlcons . Borch;r§tY,le BmderWidth caption
. (;li~~tJ:loi$#1\ ClientWidth . ... c.a.1.or....
,1±1 constraints
alNone Fal;e 255 (akleft,akT.opl....
····oi\4CiiVate .........................................,..................... ····iJnc;;Fie$ize.......................................,....................... ·::·i:foGli~:::::::::::::::::: : ::::::::::::: ::::::::::::·
True False bdLefff oRiQbt.......
OnC!ose .... i'inciOseQue;y············· ..........................................
rincoliSi;:;;;;Ji'i'e;t·
lloiSY.stemtvl"nu,b,itvl bsSizeable
. i:i~~i~~i~~;u.P.::::: ::::::::::::;::::'.:'.'::::: OnCreate Fo1mCreate
i:m:i
0
····anoiliclicl<"..................... -···································
273
.
a) Properties
i:JiiQ.fili~iiY.~::::::::;: :::::::::::::;::::;:;:::::::::
.... .IJ..".'P
825
[]deii1Face
······ irsi2et:~r;;trainisi·
r::::::¢\1~p :::::::::.::.::.:·:::·::.:::::::::· fru;;················:·.:·::::::::::::.:J [Alishown
Action .. t\.ctiy.,~g~.~91.. ........................................................... . ......tvl..,n.u................................................................................. . ObjectMenulto•m . · ·
i:i i :i i i!P.1-;;P.::::::::::=::;:: :::::::::::::::::::r:::::::::::.:.i
,i 1A11 shown
,z
b) Events (kt:iadian)
Gambar 2.14 Object Inspector pada IDE Delphi Pada tab properties kita dapat mengubah properti dari komponen kita. Secara mudah, properti dapat dijelaskan sebagai data yang menentukan karakteristik komponen. Sebagai contoh pada gan1bar 2.1 Oa kita lihat properti-properti milik sebuah form, seperti Active
36
Control, Auto Scrool, Auto Size, Border Icons, Border Style dan lainlain. Pada tab events, kita dapat menyisipkan kode untuk menangani kejadian tertentu. Kejadian bisa dibangkitkan karena beberapa ha!, pengklikan mouse, penekanan tombol keyboard, penutupan jendela, dan sebagainya. Untuk lebih jelasnya perhatikan gambar 2. lOb. pada gambar ini kita bisa melihat beberapa kejadian, seperti onActive, onClick, onClose, dan sebagainya.
2.8 Sekilas Tentang Paradox Paradox adalah sebuah database yang berfungsi untuk menyimpan data. Sama seperti database lainnya, paradox memiliki IDE yang dibagi menjadi dua bagian yaitu menu dan tool bar (Gambar 2.15). 2.8.1 Menu Menu pada paradox memiliki kegunaan seperti menu pada database lai1mya. Dari menu ini, kita bisa memanggil atau menyimpan tabel, membuat tabel baru dan lain-lain. 2.8.2 Toolbar Toolbar berisi tombol-tombol yang berfungsi untuk membuka tabel, menyimpan tabel dan membuat tabel barn.
37
Gambar2.15 IDE Paradox
BAB III METODE PENELITIAN Seperti yang telah dibahas pada bab I, dalam pengembangan sistem penjadwalan kuliah ini, ada beberapa tahapan yang dilakukan diantaranya : 3.1 Tahapan Pendekatan Sistem
Tahapan ini dilakukan sebelum tahap pengembangan sistem. Pada talmp ini dilakukan analisis kebutuhan dan identifikasi. sistem. a. Analisis Kebutuhan Pada talmp ini, ditentukan pengguna dan kebutuhannya terhadap sistem. Pengguna dari sistem yang akan dibangun adalal1 pihalc akademik Fakultas Sains dan Teknologi yang mengurusi penjadwalan kuliah. b. Identifikasi Sistem Jadwal kuliah merupalcan salah satu bentuk pengaturan proses belajar mengajar yang diarahkan untuk mencapai tujuan y:mg diharapkan oleh Fakultas Sains dan Teknologi. Dalam pembuatannya, pihalc Falcultas Sains dan Teknologi merasa kesulitan. Hal ini disebabkan pembuatan jadwal kuliah yang bersifat manual sehingga terjadi jadwal kuliah yang bentrok.
Oleh
karena itu pihak Fakultas Sains dan Teknologi merasa perlu dibuatnya suatu sistem yang dapat menangani pembuatanjadwal kuliah tersebut.
39
3.2 Tahapan Pengembangan Sistem Pengembangan sistem yang penulis Jakukan menggunakan tiga tahap siklus pengembangan model RAD (Rapid Aplication Development), Kendall & Kendall (2003 : 237), (Gambar 3.1).
Fasc Pcrencanaan Syarat syarat
Menentukan Tujuan dan syarat-syarat lnformasi
Fase Kontruksi I Workshop Desain PAC
1
Umpan Balik Pengguna
l
-
Membangun Sistem
Bckerja dcngan Pengguna untuk Sistcrn Perancangan
.
I
Menggunakan masukkan dari pengguna
iI rI I' '
+ Mernperkenalkan Sistern Fase Pclaksnnaan
Gambar 4.1 Siklus Pengembangan Sistem Model RAD
40
a. Perencanaan Syarat-Syarat Dalam fase ini, pengguna (pihak Fakultas Sains dan Teknologi) dan penganalisis be1iemu untuk mengidentifikasi tujuan··tujuan aplikasi atau sistem serta untuk mengidentifikasi syarat-syarat informasi yang ditimbulkan dari tujuan-tujuan tersebut. Hal ini penulis uraikan sebagai analisa terhadap sistem yang berjalan dan sistem yang akan diterapkan. b. Workshop Deasin Pada tahap ini dilakukan perancangan proses yaitu perancangan proses-proses yang akan terjadi di dalam sistem, perancangan basis data yaitu perancangan tabel-tabel yang akan digunakan, perancangan antarmuka yaitu perancangan antarmuka masukkan dan antarmuka keluaran, serta dilakukan pengkodean terhadap rancangan-rancangan yang telah didefinisikan. c. Pelaksanan Pada taliap ini dilalrnkan pengujian terhadap sistem dan melakukan pengenalan terhadap sistem.
41
BAB IV ANALISA DAN PERANCANGAN SISTEM
4.1 Analisa Kebntuhan Sistem Proses pembuatan jadwal kulial1 pada Fakultas Sains dan Teknologi selama ini masih secara manual menggunakan file-file excel. Proses ini dilakukan oleh pihak jurusan rnasing-masing (Kepala Jurusan). Kepala jurusan akan rneminta setiap dosen untuk bersedia mengajar mata kuliah yang telah ditetapkan dan meminta kesiapan waktu mengajar pada hari dan jam yang telal1 ditetapkan pula. Setelal1 semua kesiapan mengajar dosen terkumpul, dilakukan pembuatan jadwal kulial1 berdasarkan lokal yang tersedia pada Fakultas Sains dan Teknologi. Dari proses pembuatan jadwal kuliah tersebut penulis definisikan datadata yang diperlukan dalam pengembangan sistem yang akan dibuat, diantaranya, data dosen, data mata kuliah, data hari, data jam (shift), data lokal, data jurusan, dan data semester.
4.2 Konsep Penjadwalan Kuliah Menggunakan Metode Algoritma Genetika. Data-data yang diperlukan dalam pembuatan jadwal kulial1 akan dikombinasikan (prosedur inisialisasi) menjadi kesiapan mengajar dosen. Kesiapan mengajar dosen ini akan diproses pada sistem Algoritma Genetika (GAs) yang terdiri dari proses pembangkitan populasi awal, evaluasi, seleksi, rekombinasi dan mutasi yang menghasilkan jadwal kulia11 yang optimal.
42
4.2.1 Prosedur Inisialisasi Pada proses ini dilakukan inisialisasi kesiapan mengaJm· dosen. Sebagai contoh diberikan 5 data dosen dan 5 data mata kuliah (Tabel 3 .1 dan Tabel 3.2) yang akan ditempatkan pada lokal 401dan402. NO
KODE
NAMA
I
DOSOOI
Dra. Nani Radiastuti
2
DOS002
Ria Arafiah, S.Si
DOS003
Budi Sudrajat, M. Hum
4
DOS004
Dra Nuriyah Thohir, MM
5
DOS005
Ir Rahmat Kurnia, M.Si
3
.
Tabel 3.1 Data Dosen Fakultas Sains dan Teknologi
NO
KODE
NAMA
I
MKOOI
Dasar-dasar Agronomi
2
MK002
Biologi
3
MK003
Matematika
4
MK004
Bhs. Arab
5
MKOOS
Kalkulus
Tabet 3.2 Data Mata Kuliah Fakultas Sains dan Teknologi
Dari 2 tabel diatas maka inisialisasi kesiapan mengajar dosen dilakukan sebagai berikut:
43
a.
Kade Dasen
: DOSOOl
Nama
: Dra. Nani Radiastuti
Kade Mk : MKOOl Mata Kuliah
: Dasar-dasar Agronon1i
Jurusan
: Teknik lnformatika
Semester : 1
~ ft
I. 07.30-09.10 II. 09.20-11.00 111.11.10-12.50 IV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20 b.
SENIN
SELASA
RABU
KAMIS
JUMAT
SABTU
(l)
(2)
(3)
(4)
(5)
(6)
A B
A B
Kade Dasen
: DOS002
Nama
: Ria Arafiah, S.Si
Kade Mk : MK002 Mata Kuliah
: Bialogi
Jurusan
: Teknik lnformatika
Semester : I
~ ft
I. 07.30-09.10 1!. 09.20-11.00 111.11.10-12.50 lV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20 c.
SENIN
SELASA
RABU
KAM IS
JUMAT
SA BTU
(l)
(2)
(3)
(4)
(5)
(6)
A B
A A B
B
Kade Dasen
: DOS003
Na1na
: Budi Sudrajat, M. Hum
Kade Mk : MK003 Mata Kuliah
: Matematika
44
: Teknik lnforn1atika
Jurusan Sen1ester
:I
~
SENIN
SE LAS A
RABU
KAMIS
JUMAT
SABTU
(I)
(2)
(3)
(4)
(5)
(6)
I. 07.30-09.10 11. 09.20-11.00 111.11.10-12.50 IV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20
A
fi
d.
B
__J
Kode Dasen
: DOS004
Nania
: Dra Nuriyah Thohir, MM
Kade Mk : MK004 Mata Kuliah
: Algorit1na Pen1rogran1an
Jurusan
: Teknik lnfonnatika
Semester : I
~ fi
SENIN
SE LAS A
RABU
KAM JS
JUMAT
SABTU
(I)
(2)
(3)
(4)
(5)
(6)
I. 07.30-09.10 II. 09.20-11.00 Ill.I l.10-12.50 IV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20
e.
A
B
Kade Dasen
: DOS005
Na1na
: Ir Rahmat Kurnia, M.Si
Kade MK : MK005 Mata Kuliah
: Kalkulus
Jurusan
: Teknik Informatika
Semester : I
45
~ \
SENIN
SELASA
RABU
KAMIS
JUMAT
SA BTU
(I l
(2)
(3)
(4)
(5)
(6)
I. 07.30-09.10 11. 09.20-11.00 II I. I I.I 0-12.50 IV .13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20
A
13
4.2.2 Pembangkitan Populasi Awai Pada proses ini dilakukan pembangkitan populasi (kesiapan mengajar dosen) yang telah diinisialisasi diatas (Tabel 3.3). Kodc
Nama
Kodc
Mata
Doscn
Dos en
ivlk
Kuliah
DOSOOI
Drn. Nani Radi
MKOOI
DOSOOI
Ora. Nani R<1diastuli
DOSOOI
Jurusan
SMT
Kc las
Hari
Shill
D
Tl
I
A
I
I
MKOOI
Dasar-dasar Agronomi
Tl
I
B
I
II
Dra. Nani Radiastuli
MKOOI
Dasar-dasar Agronomi
Tl
I
A
2
I
DOSOOI
Dra. Nani Radiastuti
MKOOI
Dasar-dasar Agronoml
Tl
I
B
2
II
DOS002
Ria Arafiah, S.Si
MK002
Biologi
Tl
Ill
A
I
I
DOS002
Ria Arafiuh, S.Si
MK002
Bio!ogi
Tl
Ill
B
I
II
DOS002
Ria Arafiah, S.Si
MK002
Biologi
Tl
Ill
A
2
II
DOS002
Ria Arafiah, S.Si
MK002
Biologi
Tl
Ill
B
2
Ill
DOS002
Ria Arafiah, S.Si
MK002
Biologi
Tl
Ill
A
3
I
DOS002
Ria Arafiah, S.Si
MK002
Biologi
TI
Ill
B
3
II
DOS003
Budi SudnUat, M. I-Im
MK003
Matematika
Tl
I
A
I
I
DOS003
Budi Sudrajat, M. Hn1
MK003
Matematika
Tl
I
B
I
II
DOS004
Ora Nuriyah Thohir
MK004
Bhs. Arab
Tl
lll
A
2
Ill
DOS004
Ora Nuriyah Thohir
MK004
Bhs. Arab
Tl
Ill
B
2
IV
DOSOOS
Ir Rah1ilat Kurnia
MK005
Kalkulus
TI
I
A
2
I
DOSOOS
Ir Rahmat Kurnia
MKOOS
Kalkulus
Tl
I
B
2
II
Tabel 3.3 Tabcl Pcmbangkitan Populasi (Kcsiapan Mcngajar Doscn)
46
4.2.3 Evaluasi Pada proses ini, kesiapan mengajar dosen yang dibangkitkan diatas dievaluasi dengan menjumlahkan kesiapan mengajar dosen masing-masing (Tabel 3.4). Kode MK MKOOI
Banyak Kesiapan
DOS002 DOS003
MK002
6
MK003
2
DOS004
MK004
2
DOS005
MK005
2
No
Kode Dosen
1 2 3 4 5
DOSOOI
4
---
--
--
Tabel 3.4 Evaluasi Kesiapan Mcngajar Ji)osen
4.2.4 Seleksi Setelah proses evaluasi dilakukan, kesiapan mengajar dosen akan mengalami seleksi berdasarkan hari dan shift yang telah ditetapkan. Seleksi ini bertujuan untuk menentukan kesiapan mengajar dosen mana yang sesuai untuk menempati lokal yang tersedia. Seleksi yang penulis gunakan adalah Rank-basedfitnees yaitu dengan cara mengurutkan kesiapan mengajar dosen
menurut nilai objektifnya (banyaknya kesiapan mengajar dosen). Penerapan untuk contoh diatas, dapat dilihat pada Tabel 3.5 di bawah ini. Seleksi (1,I) : Tampilkan semua kesiapan mengajar dosen dengan hari = senin dan shift= l (07.30- 09.10) yang diurutkan secara tidak turun (naik) berdasarkan banyaknya kesiapan mengajar dosen.
47
Kodc
Nmna
Kodc
Mata
Doscn
Dos en
Mk
Kuliah
Jurusan
SMT
Ke las
Hari
Shift
Total Kcsia pan
DOS003
Budi Sudrajat, M. Hin
MK003
Matc1natika
TI
I
A
I
I
2
DOSOOI
Dra. Nani Radiasluti
MKOOI
Dasar-dasar Agronomi
TI
I
A
I
I
4
JJOS002
Ria Aratiah, S.Si
MK002
Biologi
TI
III
A
I
I
6
Tabcl 3.5 Kcsiapan Mcngajar dosen Hasil Selcksi 4.2.5 Rekombinasi Dari proses seleksi diatas, diambil kesiapan mengaJar dosen sebanyak lokal yang tersedia dan disimpan pada tabel jadwal (Tabel 3.6). Proses ini menyebabkan populasi (kesiapan mengajar dosen) berkurang I mengalami rekombinasi (Tabel 3.7). Rekombinasi juga terjadi terhadap proses seleksi dengan melakukan penyilangan satu titik (single point crossover) untuk hari dan shift berikutnya terhadap kesiapan mengajar
dosen (seleksi(l ,II) dan seterusnya).
Ko de
Nama
Ko de
Mata
Dos en
Doscn
Mk
Kuliah
DOS003
Budi Sudrnjat, M. Hm
MK003
DOSOOI
Dra. Nani Radiastuti
MKOOI
Jurusan
SMT
Ke las
Hari
Shift
Lok al
Matcmatika
TI
I
A
I
I
40I
Dasar-dasar Agronomi
TI
I
A
I
I
402
Tabcl 3.6 Tabcl Jadwal (Generasi ke-1)
48
Jurusan
SMT
Ke las
Hari
Shift
Dasar-dasar Agronomi
Tl
I
B
I
II
MKOOJ
Dasar-dasar Agronomi
Tl
I
A
2
I
Dra. Nani Radiastuti
MKOOI
Dac;ar-dasar Agronomi
Tl
I
B
2
II
DOS002
Ria Arafiah, S.Si
MK002
Bio!ogi
Tl
Ill
B
I
II
ll0S002
Ria Arafiah, S.Si
MK002
Biologi
Tl
111
A
2
II
DOS002
Ria Arafiah, S.Si
MK002
Biologi
TI
III
B
2
III
DOS002
Ria Arafiah, S.Si
MK002
Bio!ogi
Tl
Ill
A
3
I
llOS002
Ria Aral1:1h, S.Si
MK002
13iologi
TI
111
B
3
II
DOSOOJ
Budi Sudrajal, M. 1-hn
MK003
Matcmatika
Tl
I
ll
I
II
lx)s~ Dni Nuriyah Thohir
MK004
Bhs. Arab
Tl
111
A
2
Ill
DOS001l
Dra Nuriyal1 Thohir
MK004
Bhs. Arab
Tl
111
ll
2
IV
Ir Rahmut Kurnia
MKOllS
Ka!kulus
TI
I
A
2
I
Ir Rahmal Kurnia
MKllOS
Kalkulus
Tl
I
ll
2
II
Kodc
Nama
Ko de
Mata
Doscn
Dosen
Mk
Kuliah
DOSOOJ
Dru. Nani Radiastuti
MKOOI
DOSOOJ
Dra. Nani Radiastuti
DOSOOI
DOSOOS DOSll05
-
Tabcl 3. 7 Populasi Setclah Rekombinasi 4.2.6 Mutasi Proses mutasi terjadi pada kesiapan mengajar dosen yang benarbenar belum mendapatkan lokal. Proses 3 sampai 6 ini akan dilakukan berulang-ulang selama populasi (kesiapan mengajar dosen) belum kosong. Basil akhir (generasi terakhir) merupakanjadwal kuliah yang optimal, dapat dilihat pada tabel 3.8.
49
Jurusan
SMT
Kclas
Hari
Shift
Lokal
/vlatcmutika
Tl
I
A
I
I
401 --
MKOOI
Dasar-dasar Agrono1ni
Tl
I
A
I
I
402
Budi Sudn\iat, M. Hm
MK003
Matematika
Tl
I
B
I
11
401
DOSOOI
Dra. Nani Radiastuti
MKOOI
Dusar-dasar Agronmni
Tl
I
B
I
II
402
DOSOOS
Ir Rahmat Kurnia
MKOOS
Kalkulus
Tl
I
A
2
I
401
DOSOOS
Ir Rahmat Kurnia
MKOOS
Kalku!us
Tl
I
B
2
II
401
DOS002
Ria Arafiah, S.Si
MK002
Biologi
Tl
111
A
2
II
402
DOS004
Dra Nuriyah Thohir
MK004
Bhs. Arab
Tl
111
A
2
111
401
DOS002
Ria Arafiah, S.Si
MK002
Blologi
Tl
Ill
B
2
Ill
402
IJOS004
Ora Nuriyah Thohir
MK004
Bhs. Arab
Tl
Ill
B
2
IV
401
Kodc
Nama
Kodc
fvlata
Dos en
Dos en
Mk
Kuliah
DOS003
Budi Sudntjat, M. Hm
MK003
DOSOOI
Dra. Nani Radiastuti
DOS003
Tabcl 3.8 .Jadwal Kuliah (gcncrasi tcrakhir) Proses penempatan kesiapan dosen mengajar diatas dapat di gambarkan dalam grafik clibawah ini dari generasi pe1iama sampai generasi terakhir . Lokal
402
401
~--<>-*-+-<11--<>-@---<>---e-<11-&---e-<11-+-<11-+-e--e- 9
0
9
GI
-e
Ii
1 2 3 4 5 6 7 8 910111213 14151617181920212223 .. Gambar 3.1 Grafik Pertambahan Populasi
~
Populasi
I
50
4.3 Perancangan Sistem Dalam merancang sistem ini penulis melakukan konsultasi dengan pihak akadernik Fakultas Sains dan Teknologi untuk rnemperoleh kesepakatan antara kedua belah pihak. Adapun rancangan ym1g diperoleh terdiri dari rancangan proses, rancangan basis data, rancangan menu, rancangan masukkan, dan rancangan keluaran. 4.3.1 Rancangan Proses Rancangan proses ditujukan untuk menentukan urutan kejadian, sehingga dihasilkan keluaran dan masukan yang diharapkan, meliputi : a. Proses rnasukan, proses ini merupakan proses pemasukan data yaitu tarnbah data dosen, tambah data mata kuliah, tambah data hari, tarnbah data shift, tambah data jurusan, tmnbah data semester, tmnbah data lokal, tambah data kesiapan rnengajm· closen dan tan1bah data kesiapm1 waktu rnengajar dosen. Proses ini dilakukan oleh pihak akademik yang rnengurusi pernbuatan jadwal kuliah. b. Proses GAs (Genetic Algorithms Sistem), yaitu proses algoritma genctika untuk
rnelakukan otornatisasi dan optimalisasi kesiapan
rnengajar closen, meliputi pembangkitan populasi, evaluasi, seleksi, rekornbinasi, clan mutasi. STD (stale transition diagram) dari rancangm1 proses dapat dilihat pada garnbar 3.2 dibawah ini :
51
Mulai
'---P_e_n_g_g_un_a_m.,.e_m_1_·h-·h_m_e_n_u_1_·n_p_u_•' . ' ' ]
Pengguna memasukan data dosen, data mata kuliah, data lokal, data kesiapan mengajar, data kesiapan waktu
Bangkitkan Kesiapan dosen
J
Evaluasi
'--r--K_e_s_ia_p_a_n_d_o_s_e_n~·-
........_ Optimasi Tercapai
>-'Y"'•---,
Tida~:
-~
Se!eksi Kesiapan Dostm
-~
Rekombinasi Kesiapan d~n
/
Selesai
}----l
Jadwal Kuliah
Gambar 3.2 STD Proses Penjadwalan Kuliah
52
4.3.2 Rancangan Basis Data Data-data yang diperlukan pada proses masukan disimpan dalam basis data. Hal ini dimaksudkan agar data bersifat dinamis yaitu dapat melakukan penambahan dan penghapusan data. Ada 9 tabel yang clidefinisikan dari rancangan proses yaitu : a. Tabel dosen, untuk menyimpan data dosen. Field Name ·--~J TypeJ __§.i.'!.e_J Key !] A 10 .. A I 70
I
II
A A
IA
1
I i
70
15 15
Gambar 3.3 Spcsifikasi Tabcl Dosen b. Tabel mata kuliah, untuk menyimpan data mata kul.iah.
Gambar 3.4 Spesifikasi Tabel Mata Kuliah
I
53
c. Tabel hari, untuk menyimpan data hari.
Garn bar 3.5 Spesifikasi Tabel Hari
d. Tabel shift, untuk menyimpan data shift. · - -.. J
:
Field Name
I
1 21Jam
Gambar 3.6 Spesifikasi Tabel Shift
54
e. Tabel semester, untuk menyimpan data semester.
Gambar 3. 7 Spesifikasi Tabel Semester
f.
Tabel jurusan, untuk menyimpan data jurusan.
Gambar 3.8 Spesifikasi Tabel Jurusan
55
g. Tabel lokal, untuk menyimpan data lokal.
Gambar 3.9 Spcsifikasi Tabel Lokal
h. Tabel kesiapan mengaJar, untuk menyimpan data kesiapan mengajar do sen.
Gambar 3. 7 Spcsifikasi Tabel Kesiapan Mengajar
56
1.
Tabel jadwal, untuk menyimpan hasil proses GAs (Genetic Algoritms
Sis/em). jTypej Sii~Keyj
Field Name
~ •IB!l~ii,}iiii ¥1J-ii~iiiii;~iili!;jj"_...
8
1111!1 ~
~~ 2 2
·
3 l
I
A A
5' Lokal-
1
N
6 ThnAk
1 1
A
10
A A
50 50
7. Namados 8' Namamk
1
! '
~~ ~i: - -----~-J1 -~-~~~ Garnhar 3.7 Spcsifikasi Tahcl .Ja
4.3.3 Rancangan Menu Rancangan menu berfungsi untuk mernanggil sub-program lain untuk dijalankan. STD (slale lransilion diagram) rancangan menu dapat digambarkan dibawah ini (Gambar 3.8):
57
FrmDataDosen_Klik
Layar Intro
I
·I
Form Data Dosen
FnnDataMk_Klik
/ Form Data Mata Kuliah Fm1DataLokal_Klik
MENU PILIHAN
. FnnSctKesiapan_Klik
~rm Data Lokal Form Set Kesiapan Mengajar F01m Set Kesiapan Waktu Mengajar
FnnSet\Vaktu_Klik
frmProses_Klik
FnnJadwal_Klik
Form Proses Pembuatan Jadwal Form Proses Tampilkan Jadwal
Tutup_Klik
Gambar 3.8 STD Rancangan Menu
a. Rancangan Masukan Rancangan masukan dilakukan agar tingkatan keakuratan data tinggi dan proses pemasukan data benar sehingga dapat diterima dan dimengerti oleh penggnna sistem. Ada 5 rancangan masukkan yang didefinisikan yaitu rancangan data dosen, rancangan mata kuliah, rancangan data lokal, rancangan data kesiapan mengajar dosen, dan rancangan data kesiapan waktu mengajar dosen. Kelima rancangan masukan tersebut dapat dijelaskan sebagai berikut:
58
•
STD Rancangan Data Dosen Rancangan Data Dosen, berfungsi untuk menambah data dosen, mengurutkan data, menghapus data, mencari data, dan navigasi untuk pindah ke record awal, record akhir, record sebelum, dan record berikut. Hal ini digambarkan dalam STD dibawah ini (Gambar 3.9).
SortingKlik
.
Pilihan Sorting (Kode/Nama)
Tampilkan
.
I
]
FORM DATADOSEN NavigasiKlik
I
-,
AwalKlik
Pilihan Navigasi
I
AkhirKlik ~
BcrikutK\ik ~
Scbc\umKlik
r ~'
TambahData_Klik
orm Tambah Data Dosen
OK Kiik
Cancel K1ik
Gambar 3.9 STD Rancangan Masukan Data Dosen
•
STD Rancangan Data Mata Kuliah Rancangan Data Mata Kuliah, berfungsi untuk menambah data Mata Kuliah, mengumtkan data mata kuliah, menghapus data
59
mata kuliah, mencari data mata kuliah, dan navigasi untuk pindah ke record awal, record akhir, record sebelum, dan record berikut. Hal ini digambarkan dalam STD dibawah ini (Gambar 3.10). Sorting
..
Pilihan Sorting (Kode/Nama)
I
Tampilkan
FORM DATA MATAKULIAH
NavigasiKlik
. '
I I
Awa!KJik
-Pilihan Navigasi
I
AkhirKlik BerikutKlik Scbclu1nKlik
OK Klik
f
I
Ta1nbahData_K!ik
"
Form Tambah Data Mk
Cancel Klik
Gambar 3.10 STD Data Mata Kuliah
I
I
60
•
STD Rancangan Data Lokal
FORM DATALOKAL
NuvigasiKlik
.I
Pilihan Naviga
DelnilKlik
TutupKlik
• : FormDetai!Lokal TambahKlik
OK_Klik
-
FrmTambahLokal
Cancel_Klik
}
Garnbar 3.11 STD Rancangan Data Lokrnl
Rancangan data lokal, berfungsi untuk menampilkan data local yang tersedia, menambah data local, clan rnenghapus data local. STD rancangan data lokal dapat dilihat pada Gambar 3.11. •
Rancangan Set Data Kesiapan Mengajar Rancangan Set Data Kesiapan Mengajar Dosen, berfungsi untuk mengisi kesiapan mengajar mata kuliah. STD rancangan set data kesiapan mengajar dapat dilihat pada gambar dibawah ini (Gambar 3.12).
61
L
Tampilkan
LookUpDosenKlik
FORM SET KESIAPAN MENGAJAR
LookUpDbGridKlik
t
~
Pilihan DataDosen
.
- Pilihan Mata Kuliah 1
J
Tampilkan
Gambar 3.12 STD Rancangan Set Data Kusiapan Mengajar
•
Rancangan Set Kesiapan Waktu Mengajar Dosen Rancangan
Set
Kesiapan
Waktu
Mengajar
Dosen,
berfungsi untuk mengisi kesiapan waktu mengajar dosen. STD rancangan set data kesiapan waktu dosen dapat dilihat pada gambar dibawah ini (Gambar 3.13)
ComboDosen_Klik
.
Pilihan DataDosen
Tampilkan
FORM SET KESIAP AN WAKTU MENGAJAR
LookUpDbgrid_Klik
Tampilkan LookUpDbGrid Klik
i
'
I
Pilihan__Mata Kuliah
\
Pilihan_\Vaktu Mengajar
I I
Tampilkan
Gambar 3.13 STD Rancangan Set Data Kesiapan Waktu Mengajar
62
b. Rancangan Keluaran Rancangan keluaran ditujukan untuk mendapatkan basil sesuai dengan yang diinginkan oleh pengguna. Keluaran sistem berupa jadwal kuliah untuk masing-masing jurusan pada Fakultas Sains dan Teknologi. STD untuk rancangan keluaran dapat dilihat pada gambar dibawah ini (Gambar3.14) ComboSemestcrK!ik
Pilihan Semester
-·-·-
ComboK!sKlik
Tampilkan
Pilihan Kelas f-,..___
FORM JADWAL
Pilihan Jurusan
CmnboJurusanKlik
--JADWAL KULIAH
f----
-
Pilihan Lokal Con1boHariK!ik
Tampilkan
Pilihan Hari ComboLokalKlik
-~--
Gambar 3.14 STD Rancangan Kelnara111
BABV
IMPLEMENTASI Kegiatan pada tahap implementasi meliputi pemrograman sistem dan pengujian sistem. Pada bab ini membahas sarana-sarana pendukung yang diperlukan agar sistem penjadwalan kuliah ini dapat be1jalan dengan baik dan modul-modul fungsi program (kode program dapat dilihat pada lampiran).
5.1 Sarana-Sarana Pcndukung Sistcm Pcnjadwalan Kuliah 5.1.1 Perangkat Kcras Perangkat keras untuk menjalankan sistem penjadwalan ini adalah suatu unit komputer dengan konfigurasi sebagai berikut : a. Prosesor setara Pentium II keatas. b. A!femo1y minimal 64 MB. c. Monitor dengan resolusi I 024 X 768 d. Keyboard dan Mouse. e. VGA32MB.
5.1.2 Pcrangkat Lunak Spesifikasi system operasi dan perangkat lunak yang digunakan adalah sebagai berikut : f.
Windows 98/2000/XP/NT
g. Borland Delphi 6.0 h. Paradox
64
5.2 Gambaran dan Fungsi Modul-Modul Program
Pada sistem ini terdapat 12 sub-program yang berbeda, dapat dilihat pada gambar 4.1, yaitu: a. Sub-program utama, berfungsi sebagai tempat sub-program lain dipanggil untuk dijalankan dan gambaran keseluruhan program. b. Sub-program data merupakan menu data yang terdiri dari data dosen, data mata kuliab, data kurikulum dan data local. c. Sub-program kesiapan, merupakan menu kesiapan megajar dan waktu mengajar dosen. d. Sub-program proses, merupakan menu proses pembuatan jadwal dan menampilkan hasil Gadwal kuliuab). e. Sub-program data dosen, berfungsi untuk pemasukan, penyimpanan, pengubahan penghapusan, dan pencetakan data dosen. f.
Sub-program data mata kuliab, berfungsi untuk pemasukan, penyimpanan, pengubaban dan penghapusan data mata kuliah.
65
Pengguna
Sub-Program Utama
Sub-program Kesiapan
Sub-Program Data
Sub-Program Data Dosen Sub-Program Data mata kuliah Sub-Program Kurikulum Sub-Program Data Lokal
Sub-program Proses
Sub-program Kesiapan Mengajar Sub-program Kesiapan Waktu Mengajar
Sub-Program Proses Pembuatan Jadwal Kuliah Sub-Program Jadwal (hasil)
Gambar 4.1 Gambaran dan Fungsi Modul-Modul Program. g. Sub program data lokal, berfungsi untuk pemasukan, penyimpanan, pengubahan, dan penghapusan data lokal. h. Sub
program
kmikulum,
berfungsi
untuk
pemasukan,
pengubahan
penyimpanan dan penghapusan data kuriknlum tiap seme:ster. 1.
Sub
program
kesediaan
mengajar,
berfungsi
untuk
pemasukkan,
penyimpanan, pengubahan, dan penghapusan data kesiapan mengajar dosen. J.
Sub program kesiapan waktu mengajar, berfungsi lll1tuk pemasukan, penyimpanan, pengubahan dan penghapusan data kesia.pan waktu mengajar do sen.
66
k. sub- program proses, berfungsi dalam pembuatan jadwal mengajar dosen dan menampilkan hasil proses GAs (Genetic Algorithms Sistem) . I.
Sub program jadwal, berfungsi untuk melihat jadwal kuliah tiap semester, mlihat local yang tidak terpakai, dan mencetak jadwal kulia11.
5.3 Rancangan Modul Sesuai dengan modul-modul fungsi program diatas, terdapat 9 rancangan yang penulis buat, meliputi : 5.3.1 Rancangan Menu Utama Rancangan ini berli.mgsi sebagai interface tempat sub program lain dipanggil untuk dijalankan, yang terdiri dari set data, set kesiapan, clan proses penjadwalan kuliah (Gambar 4.2).
Gambar 4.2 Form Menu Utama
67
5.3.2 Rancangan Data Dosen Rancangan ini berfungsi sebagai interface untuk memodifikasi data dosen yaitu menambah data dosen, mengubah data dosen, menyimpan data dosen dan mencetak data dosen (Gambar 4.3).
Gambar 4.3 Form Data Dosen
5.3 .3 Rancangan Mata Kuliah Rancangan ini berfungsi sebagai interface untuk memodifikasi data mata kuliah yaitu menambah data mata kuliah, mengubah data mata kuliah, rnenyimpan data rnata kuliah clan mencetak data rnata lrnliah (Gambar 4.3).
68
Gambar 4.3 Form Data Mata Kuliah
5.3.4 Rancangan Data Kurikulum Rancangan ini berfungsi sebagai interface untuk memodifikasi data kurikulum Fakultas Sains dan Teknologi. Kurikulum ini di buat untuk setiap jurusan per semester. Interface ini memil iki fungsi tambah data kurikulum, mengubah data kurikulum, mcnyimpan data kurikulum dan mencetak data kurikulum (Gambar 4.4)
69
Gambar 4.4 Form Data Kurikulum
5.3.5 Rancangan Lokal Rancangan ini berfi.mgsi sebagai interface untulc memodifikasi data lokal yaitu menambah data lokal, mengubah data lokal, menyimpan data lokal dan mencetak data lokal (Gambar 4.5).
70
Garn bar 4.5 Form Data Lokal
5.3.6 Rancangan Kesiapan ivlengajar Dosen Rancangan ini berfungsi sebagai interface untuk memodifikasi data kesiapan mengajar dosen yaitu menambah data kesiapan mengajar dosen, mengubah data kesiapan mengajar dosen, clan menyimpan data kesiapan mengajar dosen (Gambar 4.6).
71
Gambar 4.6 Form Set Kesiapan Mcngajar ])oscn
5.3.7 Rancangan Kesiapan Waktu Mengajar Dosen Rancangan ini berfungsi sebagai interface untuk memodifikasi data kesiapan waktu mengajar dosen yaitu menambah data kesiapan waktu mengajar dosen, mengubah data kesiapan waktu mengajar dosen, dan menyimpan data kesiapan waktu mengajar dosen (Garnbar 4.7).
72
Gambar 4. 7 Form Set Kcsiapan Waktu Mengajar Dosen
5.3.8 Rancangan Pembuatan Jadwal Kuliah Rancangan ini berfungsi sebagai interface untuk membuat jadwal kuliah. Fungsi-fungsi Proses algoritma genetika diterapakan pada form ini (Gambar 4.8). pada form ini akan menampilkan hasil proses algoritma genetika yang dapat dimodifikasi jika diperlukan.
73
Gambar 4.8 Form Proses Pcmbuatan Jadwal Kuliah
5.3.9 Rancangan Jadwal Kuliah Rancangan ini berfungsi sebagai interface untuk menampilkan jadwal kuliah setiap jurusan per semester per kelas dan untuk melihat lokal kosong. Disini tcrdapatjuga fungsi untuk mencetakjadwal kuliah (Gambar 4.9, Gambar 4.10).
74
Gambar 4.9 Form .Jadwal Kuliah
75
~~w;~:~j;jii$
H
~
~
.i
:·:
:ss!lil~!~
JAOWAL KULIAH FAKULTAS SAINS DAN TEKNOL,OQI UNIVERSITAS !SLAM NEGERI SYARll' HIDAYATULLAH JllKARTA
Semester Thn AkademD<
2004/2005
Jurusan Kolas
TEKNIK INFORMATIKA A Ha~
Dos en
Mata KuBllh
Sks
07.30 - 09.10
GENIN
NANI RAD!ASlUTl, Orn
JAN!NGAN KCMPlITER
2
401
09.20- 11.00
SEN!N
NANI RAO!ASlUTI, D'a
JA@NGAN KCMPlITER
2
401
11.10-12.50
SENJN
NANJ RAOtA.SlUTI, D'a
ALGffilMA GENE11KA
2
401
Shift Jam
Garn bar 4.10 Form Mencetak Jadwal Kuliah
Lokal "'':.~·;_
'I
77
6.2 Saran Penulisan slaipsi ini akan Jebih bermanfaat lagi apabila memperhatikan ha! - ha! sebagai berikut : a. Dalam pembuatan sistem penjadwalan kuliah ini untuk pengembangan kedepan di harapkan pengesetan kesiapan mengajar dosen tidak hanya untuk regular. b. Kesiapan mengajar dosen setiap semester per tahun akademik seharusnya disimpan per tabel. Hal ini agar membantu pihak akademik sebagai referensi untuk pembuatan jadwal kuliah selanjutnya. c. Ada baiknya bila pengguna sistem penjadwalan kuliah ini setidalmya memiliki dasar kemampuan tentang pengoperasian komputer.
78
DAFT AR PUST AKA
Charles L. Karr, L. Michael Freeman, Industrial Applications Of Genetic Algorithms, Series III: United State Of America: CRC Press LLC, 1999. Sri Kusuma Dewi, Artificial Intelegence (Teknik dan Aplikasi), Edisi I ( Yogyakarta: Graha llmu, 2003 ). Mitsuo Gen, Runwei Cheng, Genetic Algorithms And Engineering Design, Third Edition (New York: A Wiley-lnterscience Publication, 1997). Jeffry L. Whitten, , Kevin C. Dittman, Lonny D. Bentley Systems Analysis And
Design Jvlethods, 5111 Edition (America, New York: McGrawHill Companies Inc., 2000). Kendal & Kendal, Analisis Dan Perancangan Sistem, Jilid Pertama Edisi Bahasa Indonesia (Jakarta : Pearson Education Asia Pte. Ltd. clan PT. Prenhallindo, 2003). Roger S. Pressman, Ph.D, Rekayasa Perangkat Lunak, Buku I (Yogyakarta : Andi Yogyakrta, 2001 ). Antony Pranata, Pemrograman Borland Delphi, Edisi ke-3 (Yogyakarta: Andi Yogyakarta, 200 I). Abdul Kadir, Pemrograman Database Menggunakan Delphi, Jilid ke-1 (Jakarta: Salemba Infotek, 2001 ).
A. Lampiran Source Code I. Modul Data Dosen unit Dasen;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, DBCtrls, ComCtrls; type TfrmDosen = class(TForm) DBGridl: TDBGrid; Panel8: TPanel; Tambah: TStaticText; hapus: TStaticText; Awai: TStaticText; Akhir: TStaticText; Sebelum: TStaticText; Berikut: TStaticText; Image 1: Tlmage;
In1age2: Tlinage; In1age3: Thnage; Image4: Tlmage; hnage5: 'rimage; I111age6: Tllnage;
Panel J : TPanel; Label I: TLabel; Pane12: TPanel; Label2: TLabel; linage?: Thnage; Label4: TLabel; Tutup: TStaticText; RadioGroup I: TRadioGroup; Edit!: TEdit; StaticTextl: TStaticText;
hnage8: Thnage; procedure TutupMouseMove(Sender: TObject; Shift: TShif!State; X, Y: Integer); procedure Fo1mMouseMove(Sender: TObject; Shift: TShif!State; X, Y: Integer); procedure FormActivate(Sender: TObject); procedure FonnClose(Sender: TObject; var Action: TC!oseAction); procedure TutupClick(Sender: TObject); procedure hapusMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TambahMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
80
procedure Awa!MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer); procedure akhirMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure sebelumMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure berikutMouseMove(Sender: TObject; Shift: TShiflState; X, Y: Integer); procedure RadioGroup I Click(Sender: TObject); procedure TambahClick(Sender: TObject); procedure Edit!KeyPress(Sender: TObject; var Key: Char); procedure Edit! Change(Sender: TObject); procedure hapusClick(Sender: TObject); procedure AwalClick(Sender: TObject); procedure AkhirClick(Sender: TObject); procedure SebelumClick(Sender: TObject); procedure BerikutClick(Sender: TObject); procedure StaticTextl Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmDosen: TfrmDosen; canst nmtbdos='Tdosen'; in1plementation uses dmSchedule, TambahDosen, CetakDosen; {$R *dfm} procedure Tfm1Dosen.TutupMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Tutup.Font.Color := clRed; Tambah.Font.Color := clSilver; hapus.Font.Color := clSilver; Awai.Font.Color:= clSilver; Akhir.Font.Color := clSilver; Sebelum.Font.Color := clSilver; Berikut.Font.Color := clSilver; end;
procedure TfrmDosen.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Tutup.Font.Color := c!Silver; Tambah.Font.Color := clSilver; hapus.Font.Color := clSilver;
81
Awai.Font.Color:= clSilver; Akhir.Font.Color := clSilver; Sebelum.Font.Color := clSilver; Berikut.Font.Color := cJSilver; end;
procedure TfrmDosen.FormActivate(Sender: TObject); begin DM.tbDosen.Open; //animate l .Active:=true; end; procedure TfrmDosen.FonnClose(Sender: TObjeet; var Action: TCloseAction); begin
DM.tbDosen.Close; end;
procedure TfrmDosen.TutupClick(Sender: TObject); begin frmDosen.Close; end; procedure TfrmDosen.hapusMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Tutup.Font.Color := clSilver; Tambah.Font.Color := cJSilver; hapus.Font.Color := clRed; Awai.Font.Color:= clSilver; Akhir.Font.Color := cJSilver; Sebelum.Font.Color := clSilver; Berikut.Font.Color := clSilver; end;
procedure TfrmDosen.TambahMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Tutup.Font.Color := c!Silver; Tambah.Font.Color := clred; hapus.Font.Color := cJSilver; Awai.Font.Color:= c!Silver; Akhir.Font.Color := c!Silver; Sebelum.Font.Color :=cl Silver; Berikut.Font.Color :=cl Silver; end; procedure TfnnDosen.AwalMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin
Tutup.Font.Color := cJSilver;
82
Tambah.Font.Color := clSilver; hapus.Font.Color := clSilver; Awai.Font.Color:= clred; Akhir.Font.Color :=cl Silver; Sebelum.Font.Color := clSilver; Berikut.Font.Color := clSilver; end; procedure TfrmDosen.akhirMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Tutup.Font.Color := clSilver; Tambah.Font.Color := clSilver; hapus.Font.Color := clSilver; Awai.Font.Color:= clSilver; Akhir.Font.Color := clRed; Sebelum.Font.Color := clSilver; Berikut.Font.Color := clSilver; end;
procedure TfrmDosen.sebelumMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Tutup.Font.Color := clSilvcr; Tambah.Font.Color := clSilver; hapus.Font.Color := clSilver; Awai.Font.Color:= clSilver; Akhir.Font.Color := clSilver; Sebelum.Font.Color := clRed; Berikut.Font.Color := clSilver; end; procedure TfrmDosen.berikutMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin
Tutup.Font.Color := clSilver; Tambah.Font.Color := clSilver; hapus.Font.Color := clSilver; Awai.Font.Color:= c!Silvcr; Akhir.Font.Color :=cl Silver; Sebelum.Font.Color := clSilver; Berikut.Font.Color := c!Red; end;
procedure TfrmDosen.RadioGroup I Click( Sender: TObject); begin if radiogroup I .ltemlndex = O then Dm.tbDosen.IndexFieldNames := 'kode' else
83
D1n.tbDosen.IndexNan1c := 'Dosen I'; end: procedure TfrmDosen.TambahClick(Sender: TObject); begin frmTambah.ShowModal; end;
procedure TfnnDoscn.Edit I KeyPress(Sendcr: TObject; var Key: Char); begin
Drn.tbDosen.lndexFieldNames end;
:~
'nama':
procedure TfnnDosen.Editl Change(Sender: TObject): begin Dn1.tbDosen.IndexNan1e:='dosen 1'; Dm.tbDosen. FindNearest([ edit I .Text]); end; procedure TfrrnDosen.hapusCJick(Sendcr: TObjcct); begin
if Dm.tbDosen.IsEmpty then MessageDlg('Data Sudah Kosong OK ... !',mtlnfonnation,[mbOK],O) else if MessageDlg('Anda yakin mau hapus data ini.', mtlnformation, [rnbOk,mbCancel], O)~mrOk then Dm.tbDosen.Delete ; end; procedure TfrmDosen.AwalClick(Sender: TObject); begin Dm.tbDosen.First; end;
procedure TfrmDosen.AkhirCJick(Sender: TObject); begin Dm.tbDosen.Last; end; procedure TfrmDosen.SebelumClick(Sender: TObject); begin Dm.tbDosen.Prior; end;
procedure TfrmDosen.BerikutC!ick(Sender: TObject); begin Dm.tbDosen.Next; end; procedure TfrmDosen.StaticText I Click(Sender: TObject);
84
begin Form 1.QuickRep I .Preview; end; end.
2. Modul Data Mata Kuliah unit MataKuliah; interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forn1s, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids; type TfnnMk ~ class(TForm) DBGrid I: TDBGrid; Panel I: TPanel; lmage2: Tlmage; lmage3: Tlmage; lmage4: Tlmage; lmage5: Tlmage; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label?: TLabel; lmage6: Tlmage; Image!: Tlmage; Label2: TLabel; Panel2: TPanel; Labell: TLabel; Panel3: TPanel; RadioGroup l: TRadioGroup; Labell l: TLabel; Label! 0: TLabel; Edit!: TEdit; Label9: TLabel; Image?: Tlmage; Label8: TLabel; lmage8: Tlmage; procedure FormActivate(Sender: TObject); procedure Label2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Label3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Label4MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
85
procedure Label5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Label6MouseMovc(Scnder: TObject; Shift: TShiftState; X, Y: Integer); procedure Label7MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Label9MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Label9Click(Sender: TObject); procedure Label2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Label3Click(Sender: TObject); procedure Label4Click(Sender: TObject); procedure Label5Click(Sender: TObject); procedure Label6Click(Sender: TObject); procedure Label7Click(Sender: TObject); procedure RadioGroup i Click(Sendcr: TObject); procedure Edit l Change( Sender: TObject); private { Private declarations } public { Public declarations }
end;
var frmMk: TfrmMk;
iluplementation uses dmSchedule, TambahMk; {$R *.dfm} procedure TfrmMk.FormActivate(Sender: TObject);
begin dm.tbMk.Open; end; procedure TfrmMk.Label2MouseMove(Sender: TObject; Shift: TShiftState; Y: Integer); begin label2.Font.Color:=clred; label3.Font.Color:=clsilver; label3.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clsilver; label?. Font.Color:=clsi Iver; //label8.Font.Color:=clsilver; label9.Font.Color:=clsilver;
x,
86
end; procedure TfrmMk.Labe13MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2 .Font.Color:=clsi Iver; label3.Font.Color:=clred; label4.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clsilver; label7.Font.Color:=clsilver; //label8.Font.Color:=clsilver; label9.Font.Color:=clsilver;
end; procedure TfrmMk.Labe14MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2.Font.Color:=elsilver; label3.Font.Color:=clsilvcr; label4.Font.Color:=clred; label5 .Font.Color:=clsi Iver; labe16.Font.Color:=clsilver; label? .Font.Color:=clsilver; //label8.Font.Color:=clsilver; label9.Font.Color:=clsilver; end; procedure TfrmMk.Label5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2.Font.Color:=clsilver; labcl3.Font.Color:=clsilver; label4.Font.Color:=clsilver; label5.Font.Color:=clred; label6.Font.Color:=clsilver; label7.Font.Color:=clsilver; //label8,Font.Color:=clsilver; label9.Font.Color:=clsilver;
end; procedure TfrmMk.Label6MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2.Font.Color:=clsilver; label3.Font.Color:=clsilver; label3.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clred; label? .Font.Color:=clsilver; //label8.Font.Color:=clsilver;
87
la be 19. Fant.Co lor:=c lsi Iver: end; procedure TfrmMk.Label7MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2.Font.Color:=clsilver; iabel3.Font.Color:=clsilver; label4.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clsilver; label 7.Fant.Co lor:=clred; l/label8.Font.Color:=clsilver; label9.Font.Color:=clsilver;
end; procedure TfrmMk.Label9MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2.Font.Color:=clsilver; labcl3. Font.Color:=clsilver; labe14.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clsilvcr; la be 17. Fant.Co lor:=clsi Iver; II label8.Font.Color:=clsilvcr; label9.Font.Color:=clred;
end;
procedure TfrmMk.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label2.Font.Color:=clsilver; labe13.Font.Color:=clsilver; label4.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clsilver; labe17 .Font.Color:=clsilver; //label8.Font.Color:=clsilver; label9.Font.Color:=clsilver;
end; procedure TfrmMk.Label9Click(Sender: TObject); begin close; end;
88
procedure TfrmMk.Labe12Click(Sender: TObject); begin frmTambahMk.ShowModal; frmTambahMk.Editl .Text:="; frmTambahMk.Edit2. Text:="; frmTambahMk.Edit3.Text:="; frmTambahMk.Edit4.Text:=";
end; procedure TfrmMk.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.tbMk.Close;
end; procedure TfrmMk.Label3Click(Sender: TObject); begin ifDm.tbMk.lsEmpty then MessageDlg('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O) else if messagedlg('Anda yak in mau hap us data ini?',mtconfirmation, [mbyes,mbcancel],O)=mryes then DM.tbMk.Delete;
end; procedure TfrmMk.Label4Click(Sender: TObject); begin DM.tbMk.First; dbgrid I.Canvas.Brush.Color := clred; end; procedure TfrmMk.Label5Click(Sender: TObject); begin dm.tbMk.Last;
end; procedure TfrmMk.Label6Click(Sender: TObject); begin dm.tbMk.Prior; end; procedure TfrmMk.Label7Click(Sender: TObject); begin dm.tbMk.Next; end;
procedure TfrmMk.RadioGroup I Click(Sender: TObject); begin ifradiogroup I.Item Index = 0 then dm.tbMk.lndexFieldNames := 'kode' else dm.tbMk.lndexName := 'mkl ';
end;
89
procedure TfrmMk.Editl Change(Sender: TObject); begin dm.tbMk.lndexName :~ 'mkl'; dm.tbMk.FindNearest([edit I .Text]);
end; end.
3. Modul Set Data Lokal unit lokal;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DB, DBTables, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart, ComCtrls, StdCtrls; type TfrmLokal ~ class(TForm) Panel 1: TPanel; lmage7: Tlmage; Tutup: TStaticText; StaticTextl: TStaticText; lmage2: Tlmage; DBChartl: TDBChart;
Series 1: TPieSeries; procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TambahMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure StaticTextl MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TutupMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TutupClick(Sender: TObject); procedure StatieTextlC!ick(Sender: TObject);
private { Private declarations } public { Public declarations ) end; var frmLokal: TfrmLokal;
90
i1nple111entation
uses tambahLokal, dmSchedule, DetailLokal; {$R *.dfm} procedure TfrmLokal.FormActivate(Sender: TObject); begin dm.tbLokal.Open; //anilnate 1.Active :=true; end;
procedure TfrmLokal.FormClose(Sender: TObject; var Action: TCloseAetion); begin dm.tbLokal.Close; end;
procedure TfrmLokal.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clsilver; statictextl .Font.Color:=elsilver; end; procedure TfrmLokal.TambahMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clsilver; statictext I .Font. Color:=cisi Iver; end;
procedure TfrmLokal.StaticText I MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font. Co lor:=clsi Iver; statictext I .Font.Color:=clred; end;
procedure TfrmLokal.TutupMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clred; statictext I .Font.Color:=clsi Iver; end;
procedure TfrmLokal. TutupClick(Sender: TObject);
91
begin
close; end;
procedure TfnnLokal.StaticText I Click(Sender: TObject); begin frmDetail.Showmodal; end;
end.
4. Modul Kesiapan Mengajar Dosen unit kesediaan; intcrfrtcc
uses
Windo\VS: Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, Mask., Buttons, DB, DBTables; type TfrmMengajar ~ class(TForrn) Panel4: TPanel; Label l: TLabel; Panell: TPanel; Label4: TLabel; Label5: TLabel; Label2: TLabel; DBLookupComboBox I: TDBLookupCornboBox; hapus: TStaticText; DBEdit I: TDBEdit; DBGrid I: TDBGrid; Tablel: TTable; Table!Kode: TStringField; Table !Nama: TStringField; Table!Alamat: TStringField; Table I Telp: TStringField; Table I Hp: TStringField; DataSource I: TDataSource; Table2: TTable; Table2Kode_dosen: TStringField; Table2Kode_mk: TStringField; Table2LUmk: TStringField; DataSource2: TDataSource; Panel2: TPanel; Tutup: TStaticText; StaticTextl: TStaticText; I1nage7: TI1nage;
lmage3: Tlrnage;
92
procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure StaticText2MouseMove(Sender: TObject; Shift: TShiftStat<:; X, Y: Integer); procedure StaticTextl MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TutupMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TutupClick(Sender: TObject); procedure StaticText2Click(Sender: TObject); procedure StaticTextl Click(Sender: TObject); procedure SpeedButton I Click(Sender: TObject); private ( Private declarations } public ( Public declarations } end;
var
fnnMengajar: 1'frn1Mcngajar; implementation
uses dmSchedule, setWaktu, kesediaan I;
($R *.dfm} procedure TfrmMengajar.Fo1111Activate(Sender: TObject); begin Tablel.Open; table2.0pen;
end; procedure TfrmMengajar.ForrnClose(Sender: TObject; var Action: TCloseAction); begin table 1.Close; table2.Close; end; procedure TfrmMengajar.Fon11MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clsilver; statictext I .Font.Color:=clsi Iver; //statictext2.Font.Color:=clsilver; end; procedure TfrmMengajar.StaticText2MouseMove(Sender: TObject;
93
Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clsilver; statictext I .Font.Color:=clsilver; //statictext2.Font.Color:=clred; end; procedure TfrmMengajar.StaticTextl MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clsilver; statictext 1.Font.Color:=clrcd; //statictext2.Font.Color:=clsilver; end; procedure TfrmMengajar.TutupMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin tutup.Font.Color:=clred; statictextl .Font.Color:=clsilver; //statictext2.Font.Color:=clsilver;
end; procedure TfrmMengajar.TutupClick(Sender: TObject); begin close; end; procedure TfrrnMengajar.StaticText2Click(Sender: TOqject); begin if messagedlg('Yakin and a ha pus data ini ?' ,mtlnformation,[ mb Y es,mbNo ],O)=mrY es then dm.tbKesediaan.Delete; end; procedure TfrmMengajar.StaticTextl Click(Sender: TObject); begin ifTable2.lsEmpty then MessageDig('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O) else ifmessagedlg('Hapus data ini ?',mtConfirmation,[mbyes,mbNo],O)=mrYes then table2.Delete; end; procedure TfrmMengajar.SpeedButton I Click(Sender: TObject);
begin frmsetWaktu.ShowModal; end; end.
94
5. Modul Kcsiapan Waktu Mengajar Dosen unit kesediaan 1; interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, ComCtrls, ExtCtrls, Grids, DBGrids, DB, DB Tables; type TfrmKesediaan ~ class(TForm) Panel2: TPanel; Labell: TLabel; Panel I: TPanel; Labcl5: TLabcl; Labcl4: TLabcl; Label2: TLabel; DBTextl: TDBText; Label3: TLabel; DBLookupComboBox I: TDBLookupComboBox; DBGrid I: TDBGrid; DBGrid2: TDBGrid; Panel4: TPanel; Image?: Tlmage; Tutup: TStaticText; StaticTextl: TStaticText; Image I: Tlmage; procedure FormActivate(Scndcr: TObjcct); procedure TutupClick(Sender: TObject); procedure DBLookupComboBox I Enter( Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure StaticTextl Click(Sender: TObject); private { Private declarations } public { Public declarations }
end; var
frmKesediaan: TifmKesediaan; implementation uses dmSchedule; {$R *.dfm}
procedure TfrmKesediaan.FormActivate(Sender: TObject); begin
95
Dm.TMengajar.Open; dm.tbDosen.Open; dm.tbMk.Open; dm.tbKesediaan.Open; dm.tbShift.Open; dm.tbHari.Open; DM.tbJurusan.Open; dm.tbKelas.Open; dm. tbSemester. Open; end;
procedure TfrmKesediaan.TutupClick(Sender: TObjeet); begin CLOSE;
end; procedure TfimKesediaan.DBLookupComboBox I Enter( Sender: TObject); begin DbGrid I .DataSource:=Dm.dsMengajar; end;
procedure TfrmKesediaan.FormClose(Sender: TObject; var Action: TCloseAction); begin
Dm.TMengajar.Close; dm.tbKelas.Close; DM.tbJurusan.Close; dm.tbDosen.Close; dm.tbMk.Close; dm.tbKesediaan.Close; dm.tbShift.Close; dm.tbHari.Close; dm.tbSemester.Close;
end; procedure TfrmKesediaan.StaticText I Click(Sender: TObject); begin ifDm.tbKesediaan.lsEmpty then MessageDlg('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O) else ifmessagedlg('Yakin mau hapus data ini ... !',mtConfirmation,[mbyes,mbno],O)=mrYes then dm.tbKesediaan.Delete; end;
end.
6. Modul Proses Pembuatan Jadwal unit Proses;
interface
96
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, DbChart, StdCtrls, Buttons, Grids, DBGrids, DBTables, DB; type TfrmProses ~ class(TForm) DBGridl: TDBGrid; Query I: TQuery; DataSource 1: TDataSource; tbJadwal: TTable; Query2: TQuery; Query3: TQuery; Panel 1: TPanel; Panel2: TPanel; Button I: TButton; BitBtn I: TBitBtn; BitBtn2: TBitBtn; tbJadwalKode_ dosen: TStringField; tbJadwalKode_mk: TStringField; tbJadwalKode_Hari: TStringField; tbJadwalKode_shift: TStringField; tbJadwalLokal: TFloatField; tbJadwalNamados: TStringField; tbJadwalNamamk: TStringField; tbJadwalHari: TStringField; tbJadwalJam: TStringField; tbJadwalSks: TStringField; tbJadwalJurusan: TStringField; Panel3: TPanel; Label l: TLabel; ComboBox I: TComboBox; tbJadwalThnAk: TStringField; tbJadwalKelas: TStringFicld; tbJadwalSmt: TStringField; procedure Button l Click(Sender: TObject); procedure inisialisasi; procedure seleksi; procedure so1ting; procedure rekombinasi; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure BitBtn !Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private ( Private declarations } public ( Public declarations } end;
97
var frn1Proses: TfimProses; gen 1,gen2,gen3,gen4,gen5,gen6,gen7 : array[ I .. 1000] of string; fitnees : array[ 1..1000] of integer; h,s : array [I.. IOJ of string; KHari, KShift: string; i1nple1nentation uses dmSchedule; {$R *.dfm}
procedure TfrmProses.Button 1Click( Sender: TObject); var i,j,k,jumHarijumShill,lok,jumlokal: integer; begin
if combobox I .Text= " then n1essageDlg('1~ahun
ajaran belun1 cliisi ... ! ! !',n1tConfinnation,[MBOI<],O)
else begin
dm.tb Hari. First; for ju1nHari:= I to dn1.tbl-lari.RecordCount do begin h[j um Hari] :=dm. tbHari. tie ldbyname('kode_hari').AsStri ng; dm.tbHari.Next; end; dm. tbSh ift. First; for jumShit1:= I to dm.tbShift.RecordCounl do begin sOmnshift]:=dm.tbShift.fieldbyname('shifl').AsString; dm.tbShifl.Next; end;
for i:= 1 to dm.tbHari.RecordCount do begin for j:=l to dm.tbShift.RecordCount do begin query I.Close; quetyl.SQL.Clear; KHari := h[i]; KShifl:= sOJ; query! .SQL.Add('select *from TKesediaan where kode_hari =:kh and kode_shift =:ks'); query 1.ParamByName('kh').AsString:=KHari ; query l .ParamByName('ks').AsString:=KShi fl ; query I.Open; inisialisasi; Dm.tbShift.Next; end; dm.tbHari.Next; jumLokal:=dm.tbLokal.RecordCount; for lok:=l to jumLokal do begin que1y2.Close; que1y2.SQL.Clear;
98
query2.SQL.Add('Delete From TKesediaan Where kode_dosen =:kd and kode_Mk =:km'); query2.Prepare; query2.ParamByName('kd').AsString:=gen I [lok]; que1y2.ParamByName('km').AsString:=gen2[lok]; query2.ExecSQL; end;
end; end; end;
procedure TFrn1Proses. inisialisasi; var ij : integer; begin que1y I.First; for i:=l to queryl .RecordCount do begin gen I [i] := queryl.fieldbyname('kode_dosen').AsString; gen2[i] :=query] .fieldbyname('kode_mk').AsString; gen3[i] := query I .fieldbyname('kode_ Hari').AsString; gen4[i] := queryl.fieldbyname('kode_shift').AsString; gen5[il := que1yl .fieldbyname('.jurusan').AsString; gen6[ ij := que1y l. lieldbyname('kelas').AsSlring; gen7[i] :=query I .fieldbyname('smt').AsString; query2.Close; query2.SQL.Clear; query2.SQL.Add('Select * From TKesediaan where kode_dosen =:kd and Kode_Mk =:km'); query2.Prepare; que1y2.ParamByName('kd').AsString:=gen I [i]; que1y2.ParamByName('km').AsString:=gen2{i]; query2.0pen; fitnees[i] := query2.RecordCount; queryl .Next; end; sorting; seleksi;
rcko1nbinasi; end; Procedure TFrmProses.sorting; var ij,k,x: integer;
kd,km,kh,ks,jrs,kls,smt : string; begin for i:= I to queryl.RecordCount-1 do begin k:=i; x:= fitnees[i];kd:=gen I [i]; km:=gen2[i]; kh:=gen3[i]; ks:=gen4[i]; · jrs:=gen5[i];kls:=gen6[i];smt:=gen7[i]; for j :=i+ I to query I .RecordCount do iffitnees[j] < x then begin k:=j; x:=fitnees[j]; kd:=gen I [j]; km:=gen2[j];
99
kh:=gen3[j]; ks:=gen4[j]; jrs:=gen5[j]; kls:=gen60J; smt:=gen70J
end; fitnees[k]:= fitnees[i]; fitnees[i]:=x; gen I [k]:= gen I [i]; gen2[k]:= gen2[i]; gen3 [I<]:= gen3 [i); gen4 [ k] :=gen4 [ i]; gen5 [k] :=gen5 [ i]; gen6[k]:=gen6[i]; gen 7[k] :=gen 7 [i]; gen! [i]:=kd; gen2[i]:=km; gen3[i]:=kh; gen4[i]:=ks; gen5[i]:=jrs; gen6[i]:=kls; gen7[i]:=smt; end; end; pro.cedure 'fFrn1Proses.seleksi;
var ijjumLokal, JumKesediaan: integer; begin dm.tbLokal.First; jumLokal:=dm.tbLokal.RecordCount; jumKesediaan:=query I .RecordCount; if jumKesediaan <= jumLokal then for j:=l to jumKesediaan do begin tbJadwal.Append; tbJadwal.FieldByName('kode _dosen').AsString:=gen I [j]; tbJadwal.FieldB y N ame('kode_ mk').AsString:=gen2[j]; tbJadwal.FieldBy N ame('kode_ Hari').AsString:=gen3 [j]; tbJadwal .FieldB yName('kode _Shift') .AsString:=gen4 [j]; tbJadwal.FieldByName('smt').AsString:=gen7[j]; if dm.tbDosen.FindKey([gen 1[j]]) then tbJadwal.FieldByName('Namados').AsString:=dm.tbDosen.fieldbyname('nama').AsString; if dm.tbHari.FindKey([gen3[j]]) then tbJadwal.FieldByName('Hari').AsString:=dm.tbHari.fieldbyname('Hari').AsString; if dm.tbShift.FindKey([gen4[j]]) then tbJadwal.FieldByName('Jam').AsString:=dm.tbShift.fieldbyname('Jam').AsString; tbJadwal.FieldByName('ThnAK').AsString:=ComboBoxl .text; if dm.tbMk.FindKey([gen2[j]J) then begin tbJadwal.FieldByName('Namamk').AsString:=dm.tbMk.fieldbyname('nama').AsString; tbJadwal.FieldByName('sks').AsString:=dm.tbMk.fieldbyname('sks').AsString;; end;
if dm.tbJurusan.FindKey([genS[j]]) then tbJadwal.FieldByName(jurusan').AsString:=dm.tbJurusan.fieldbyname('Nama').AsString;
100
if dm.tbKelas.FindKey([gen6U]]) then tbJadwal.FieldByName('kelas').AsString:=dm.tbkelas.fieldbyname('kelas').AsString; tbJadwal.FieldByName('Lokal').Aslnteger := dm.tbLokal.fieldbyname('Lokal').Aslnteger; tbJadwal.Post; dm.tb Lokal. Next; end else for j:=I tojumLokal do begin tbJadwal.Append; tbJadwal.FieldByName('kode_ dosen').AsString:=gcn I UJ; tbJ adwal .FieldByN ame('kode_mk').AsString:=gen2 Ul; tbJ adwal. FieldByName('kode_Hari'). AsString:=gen3 Lil; tbJ adwa I. FieldB y Namc('kode _Shi fl').AsString:=gen4[j]; tbJadwal.FieldByName('Lokal').Asl11leger := dm.tbLokal.fieldbyname('Lokal').Aslnteger; tbJadwal.Post; dm.tbLokal.Next; query I .Next;
end; end; procedure TFnnProses.rekombinasi;
var jum:integer; begin jum:=query I .RecordCount; query I.Close; query l .SQL.Clear; query I .SQL.J\dd('Delete from TKesediaan Where kode_hari =:kd and kode_shift =:ks'); query I .Prepare; query I .ParamByName('kd').AsString:= KHari; query I .ParamByName('ks').AsString:= KSh if!; query I .ExecSQL;
end; procedure TfrmProses.FormCiose(Sender: TObject; var Action: TCloseAction); begin tbJadwal.Close; dm.tbLokal.Close; dm.tbSh i fl. Close; dm.tbHari.Close; dm.tbDosen.Close; dm.tbMk.Close; dm. tbJ urusan. Close; dm.tbKelas.Close; dm.tbSemester.Close; end; procedure TfrmProses.FormActivate(Sender: TObject); begin dm.tbLokal.Open; tbJadwal.Open; Dm.tbShift.Open; Dm.tbl-Jari.Open;
101
dm.tbDosen.Open; dm.tbMk.Open; dm.tbJurusan.Open; dm.tbKelas.Open; dm.tbSemester.Open; end;
procedure TfrmProses.BitBtn I Click(Sender: TObject); begin close; end;
procedure TfrmProses.BitBln2Click(Sender: TObject); var i: integer; begin
iftbJadwal.lsEmply then MessageDlg('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O) else if MessageDlg('Yakin Hapus data ini ... !',mlConfirmation,[mbYes,mbNo],O)=mrYes then begin tbJadwal.First; for i:=J to tbJadwal.RecordCount do begin tbJadwal.Delete; tbJadwal.Next; end; end end; end.
7. Modul Jadwal Kuliah (Basil) unitjadwal;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, QRCtrls, QuickRpt, ExtCtrls, StdCtrls, DB, DBTables, DBCtrls, Grids, DBGrids, Mask, Buttons; type TfrmJadwal = class(TForm) Query I : TQuery; GroupBox I: TGroupBox; Button I: TButton; Labell: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; DB Edit I: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit;
102
DBGridl: TDBGrid; DataSource 1: TDataSource; Labcl8: TLabel; Table 1: TTable; DataSource2: TDataSource; Label9: TLabel; Table2: rrable; DataSource3: TDataSource; Group8ox2: TGroupBox: Label I 0: TLabel; Labell2: TLabel; ComboBox 1: TComboBox; DBLookupComboBox2: TDBLookupComboBox; Button2: TButton; Panel 1: TPanel; BitBtn I: TBitBtn; Button3: TButton; Button4: TButton; Panel2: TPanel; Combo8ox2: TComboBox; Combo8ox3: TComboBox; DBLookupComboBox I: TDBLookupComboBox; Label7: TLabel; DBEdit4: TDBEdit; Panel3: TPanel; procedure FormActivate(Sender: TObject); procedure Button l Click( Sender: TObject); procedure Button2Click(Sender: TObject); procedure BitBtn 1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Bit8tn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var frmJadwal: TfrmJadwal;
implementation uses dmSchedule, Proses, CetakJadwal;
{$R *.dfm} procedure TfrmJadwal.FormActivate(Sender: TObject); begin table I .Open; Table2.0pen;
103
end; procedure TfrmJadwal.Button 1Click(Sender: TObject); begin Query! .Close; QUERYl .sq I.Clear; query I .SQL.Add('select * from TJadwal Where Jurusan =:jrs and smt =:sand kelas =:kls order by Kode_ Hari'); query 1. ParamByName('.jrs').AsString:=DbLookUpComboBox ! .Text; query 1.ParamByName('s').AsString:=Combobox2. Text; Query! .ParamByName('kls').AsString:=Combobox3 .Text ; quc1yl.Open; Db Edit I .DataField:='smt'; DbEdit2.DataField:='ThnAk'; Db Ed it3. DataField:='J urusan'; end;
procedure TfrmJadwal.Button2Click(Sender: TObject); begin Query! .Close; Query! .SQL.Clear; Queryl.SQL.Add('Select *From TJadwal Where Hari =:hand Lokal =:l Order by Kode_Shift'); Query I. Prepare; Query l .ParamByName('h').AsString:=combobox I .Text ; Query! .ParamByName('l').Aslnteger:=strTolnt(DblookUpComboBox2.Text); Query I.Open; end; procedure TfrmJadwal.BitBtn 1Click(Sender: TObject); begin Close; end; procedure TfrmJadwal.Bntton4Click(Sender: TObject); begin frmCetak.QuickRep ! .Preview; end; procedure TfrmJadwal.FormClose(Sender: TObject; var Action: TCloseAction); begin table I.Close; Table2.Close; end;
procedure TfnnJadwal.BitBtn2Click(Sender: TObject); begin {with frmProses do begin Query! .Close; query I. SQ L. Clear; queryl.SQL.Add('Select * From TJadwal Where Hari =:hr a) } end; end.
×
Report "OPTIMASI PENJADWALAN KULIAH MENGGUNAKAN METODE ALGORITI\1A GENETIKA"
Your name
Email
Reason
-Select Reason-
Pornographic
Defamatory
Illegal/Unlawful
Spam
Other Terms Of Service Violation
File a copyright complaint
Description
×
Sign In
Email
Password
Remember me
Forgot password?
Sign In
Our partners will collect data and use cookies for ad personalization and measurement.
Learn how we and our ad partner Google, collect and use data
.
Agree & close