1A GENETIKA - Institutional Repository UIN Syarif...
Transcript of 1A GENETIKA - Institutional Repository UIN Syarif...
OPTIMASI PENJADWALAN KULIAH
MENGGUNAKAN METODE ALGORITI\1A GENETIKA
RUSDIANA
(100091020205)
JURUSAN TEKNIK INFORMATIKA
FAI(ULTAS SAINS DAN TEKNOLOGI
UNIVERSIT AS ISLAl\tl NEGE.RI
SY ARIF HIDAYATULLAH
JAKARTA
2004MI1425 H
OPTIMASI PENJADWALAN l(ULIAH
MENGGUNAKAN METODE ALGORITMA GENETII<A
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 PENJADW ALAN 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,
Victor Amrizal, M.Kom
De~,
DR. Syopiansvlaya Putra, M.S1s NIP. 150 317 965
Pembimbing II,
Khodijah ulliyah, S.Kom
Mengetahui,
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 inayah
Nya 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 saran
saran 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
Hal am 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
DAFT AR PUST AKA ......................................................................................... 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
1.1 Latar Belalrnng
BABI
PENDAHULUAN
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 file
file 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 kesulitan
kesulitan 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).
Data Dosen
Hari
[ Semester
Evaluasi Fungsi Tujuan
Data MataKuliah
Shift =1
~ BASIS Jurusan DATA
Inisialisasi Kesiapan Dosen
(Kesiapan Mengajar Dosen)
Bangki~·ka····w··~·:·P·1·~.~u.I ~~ .. ·; .. ···--1·
.... _(]/\5~ __ 1_=~-----------
Tidak
Rekombinasi
Mutasi
OUTPUT (Jadwal Kuliah)
Ya
___.-····
7 f1---'
Gambar 1.2 Diagram Alir Sistem Penjadwalan Dosen
6
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 benar
benar 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 ACBD
ABCD DACB J
BACD DCAB
Gambar 2.2 Metode Hill Climbing
2.1.3 Pencarian Terbaik Pertama (Best First Search).
DBCA
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 berangsur-
angsur 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 Awai
Evaluasi Fungsi Awai
Apakah Kriteria
Optimasi Tcrcapai
Tidak
Seleksi J ._____,.__
Rekombinasi J
Mutasi J
Ya
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 0 0 0
Gen 1 Gen 2 Gen3
• Pohon
(*(-(ab))( +(*(CD))(/(EF))))
A B
c
17
Demikian juga, kromosom dapat direpresentasikan dengan menggunakan :
String bit
Bilangan real
Elemen permutasi
Daftar Aturan
Elemen program
Struktur lainnya
2.3.2 Prosedur lnisialisasi
: !OOOJ l,010011,001100, dan seternsnya.
: 66,65,-67,68,69,567,578,987, dan seterusnya.
: E2,E I O,E8,E20, dan seterusnya.
: Rl,R2,R3, dan seterusnya.
: pemrograman genetika.
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 individu
individu 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%. Individu
individu yang ada dibawah nilai ambang ini tidal< al<an menghasilkan
keturunan.
2.4.6 Seleksi dengan Turnamcn (Tournamen Selection)
Pada metode seleksi dengan tournarnen ini, al<an ditetapkan suatu
nilai tour imtuk individu-individu yang dipilih secara random dari suatu
populasi. Individu-individu yang terbaik dalam kelompok ini akan diseleksi
sebagai induk. Parameter yang digunakan pada metode ini adalal1 ukuran
tour yang bernilai antara 2 sampai N (jumlah individu dalarn suatu populasi).
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 :
Anak2:
123
12
4
4
5
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 :
Induk2:
12 25
123 4
5
34
Misalkan nilai alpha yang dipilih adalah :
Sampell :
Sampel2:
0,5
0,1
] , 1
0,8
-0,1
0,5
setelah rekombinasi, kromosom-kromosom baru yang terbentuk :
Anakl : 67,5 1,9 2,1
Anak2: 23,1 8,2 19,5
23
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 :
Induk2:
12 25
123 4
5
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 :
lnduk2:
0 1 1 1 0
1 1 0 1 0
0101110
0 0 0 1 1 0 1
posisi penyilangan terpilih misalkan 5, maka setelah penyilangan diperoleh
kromosom-kromosom barn :
Anakl:
Jnduk2:
01110 0001101
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 :
Induk2:
011100101110
1 1 0 1 0 0 0 0 1 I 0 1
Posisi penyilangan yang terpilih,
Misalkan (m=3) : 2 6 10
Setelah penyilangan, diperoleh kromosom-kromosom baru :
Anakl:
Anak2:
01 0100 !Oil 01
11 1100 0011 10
2.5.6 Penyilangan Seragam (Unifilrm Croosover)
25
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 I 0 0 I 0 I I I 0
Induk2:
Maka bit,
Sampell :
Sampel2:
110100001101
100111001101
011000110010
Setelah penyilangan diperoleh, kromosom-kromosom baru,
Indukl :
Induk2:
010100001100
1 1 I I 0 0 I 0 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 :
lnduk2:
Anakl :
Anak2:
(1 2 3 I 4 5 6 7 I 8 9)
( 4 5 3 1 8 1 6 I 9 2)
(x x x 1 8 7 6 I x x)
(xx x I 4 5 6 7 I xx)
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 :
Anakl :
(1-4 2 3
( 4 2 3
8 1 6 I 8-5 9)
8 7 6 I s 9)
Lakukan hal yang sama untuk anak2
Anak2:
Anak2:
C 4-1 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••••~-•µ•----- ---- --
2'1 =.I _J" a tL: 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<and&d I Ad&iornii I Win32 I s...iem I DalaAccm I D~a Coniroisl DalaSnao I BDE I ADO I <lit"'""' I lnledl.,. j l\lebSeMce.il!.
: ~~! __ ~-_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 ,!I) Ur.ll I • ....J v .. ..u..r/Cm1~.,,, ; unu. lhuc1i • ....J U•a1
li'indmm, fl""""1J""• !'lyallt:tl"' Va,,iQnt:D, Cl"""""• <lr<1;;>htc .. , Con"ralo, T<>-""""• 1>.1- .. t<>l:i"'
typ<1
1Tor>nl • c.1-'1•• p'Fo.-ru) pro<>odoro Forl»Cro:<>te (Sea~"' TCbj<!<::<;);
JH'iyalo
( p,_-~ ... ,,,,., ,·/~"'""'""''"·· ) ·-0 / 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
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 1I§§tMWWtiilt~WMi1!~EI' CMt4;11.t1im;o !Form1 TForn-.1 :.::J !Form1 TForm1
Properties j Events l Properties Events I ·~~,-~~~~--.
I Action ... Action I Ar.tiver.nntrnl .. t\.ctiy.,~g~.~91.. ........................................................... . ' ...... t\li.Qll.... alNone ...... tvl . .,n.u ................................................................................. .
AlphaBlf3f\d · ··· · ··········· Fal;e ObjectMenulto•m . · · AlphaBlellcfllalue... . 255 ····oi\4CiiVate ......................................... , .................... .
l±lAnchms (akleft,akT.opl.... ····iJnc;;Fie$ize ....................................... , ...................... . AutoScroH True ·::·i:foGli~:::::::::::::::::: : ::::::::::::: ::::::::::::· AutoSize False OnC!ose BiDiMode bdLefff oRiQbt....... . ... i'inciOseQue;y············· ......................................... .
1±1 Borderlcons lloiSY.stemtvl"nu,b,itvl rincoliSi;:;;;;Ji'i'e;t· . Borch;r§tY,le bsSizeable . i:i~~i~~i~~;u.P.::::: ::::::::::::;::::'.:'.':::::
BmderWidth 0 OnCreate Fo1mCreate caption i:m:i ····anoiliclicl<" ..................... -···································
. (;li~~tJ:loi$#1\ 273 . i:JiiQ.fili~iiY.~::::::::;: :::::::::::::;::::;:;::::::::: ClientWidth 825 .... .IJ..".'P<l"\I!?~ .................... : ......................... ::: ........ : .....•......
. ... c.a.1.or.... []deii1Face OnDockDr!:le · ·•· ··· ··• ··•··· ·· ·· ,1±1 constraints ······ irsi2et:~r;;trainisi· ··· onoockriver .............. ,, .......... .,.:, .. : .....•.......... r::::::¢\1~p :::::::::.::.::.:·:::·::.:::::::::· fru;;················:·.:·::::::::::::.:J i:iiii:iiiii!P.1-;;P.::::::::::=::;:: :::::::::::::::::::r:::::::::::.:.i [Alishown ,i 1A11 shown ,z
a) Properties 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 lain
lain.
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
Umpan Balik
1 Pengguna l -
Bckerja dcngan Membangun Pengguna untuk Sistem
Sistcrn Perancangan
.
I Menggunakan i I
masukkan dari r-I
pengguna ' 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 data
data 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
NO
I
2
3
4
5
NO
I
2
3
4
5
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.
KODE NAMA
DOSOOI Dra. Nani Radiastuti
DOS002 Ria Arafiah, S.Si
DOS003 Budi Sudrajat, M. Hum .
DOS004 Dra Nuriyah Thohir, MM
DOS005 Ir Rahmat Kurnia, M.Si
Tabel 3.1 Data Dosen Fakultas Sains dan Teknologi
KODE NAMA
MKOOI Dasar-dasar Agronomi
MK002 Biologi
MK003 Matematika
MK004 Bhs. Arab
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
~ SENIN SELASA RABU KAMIS JUMAT SABTU
ft (l) (2) (3) (4) (5) (6)
I. 07.30-09.10 A A II. 09.20-11.00 B B 111.11.10-12.50 IV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20
b. Kade Dasen : DOS002
Nama : Ria Arafiah, S.Si
Kade Mk : MK002
Mata Kuliah : Bialogi
Jurusan : Teknik lnformatika
Semester : I
~ SENIN SELASA RABU KAM IS JUMAT SA BTU
ft (l) (2) (3) (4) (5) (6)
I. 07.30-09.10 A A 1!. 09.20-11.00 B A B 111.11.10-12.50 B lV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20
c. Kade Dasen : DOS003
Na1na : Budi Sudrajat, M. Hum
Kade Mk : MK003
Mata Kuliah : Matematika
44
Jurusan : Teknik lnforn1atika
Sen1ester : I
~ SENIN SE LAS A RABU KAMIS JUMAT SA BTU
(I) (2) (3) (4) (5) (6) fi
I. 07.30-09.10 A 11. 09.20-11.00 B 111.11.10-12.50 IV.13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20 __J
d. Kode Dasen : DOS004
Nania : Dra Nuriyah Thohir, MM
Kade Mk : MK004
Mata Kuliah : Algorit1na Pen1rogran1an
Jurusan : Teknik lnfonnatika
Semester : I
~ SENIN SE LAS A RABU KAM JS JUMAT SABTU
fi (I) (2) (3) (4) (5) (6)
I. 07.30-09.10 II. 09.20-11.00 Ill.I l.10-12.50 A IV.13.00-14.40 B v. 14.50-16.30 Vl.16.40-18.20
e. 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 A 11. 09.20-11.00 13 II I. I I.I 0-12.50 IV .13.00-14.40 v. 14.50-16.30 Vl.16.40-18.20
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 Jurusan SMT Kc las Hari Shill
Doscn Dos en ivlk Kuliah
DOSOOI Drn. Nani Radi<L'ituti MKOOI D<L'iar-dasar Agronomi Tl I A I I
DOSOOI Ora. Nani R<1diastuli MKOOI Dasar-dasar Agronomi Tl I B I II
DOSOOI 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).
No Kode Dosen Kode MK Banyak Kesiapan --1 DOSOOI MKOOI 4
2 DOS002 MK002 6
3 DOS003 MK003 2 --4 DOS004 MK004 2
--5 DOS005 MK005 2 --
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 Jurusan SMT Ke las Hari Shift
Doscn Dos en Mk Kuliah
DOS003 Budi Sudrajat, M. Hin MK003 Matc1natika TI I A I I
DOSOOI Dra. Nani Radiasluti MKOOI Dasar-dasar Agronomi TI I A I I
JJOS002 Ria Aratiah, S.Si MK002 Biologi TI III A I I
Tabcl 3.5 Kcsiapan Mcngajar dosen Hasil Selcksi
4.2.5 Rekombinasi
Ko de
Dos en
DOS003
DOSOOI
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).
Nama Ko de Mata Jurusan SMT Ke las Hari Shift
Doscn Mk Kuliah
Budi Sudrnjat, M. Hm MK003 Matcmatika TI I A I I
Dra. Nani Radiastuti MKOOI Dasar-dasar Agronomi TI I A I I
Tabcl 3.6 Tabcl Jadwal (Generasi ke-1)
Total
Kcsia
pan
2
4
6
Lok al
40I
402
48
Kodc Nama Ko de Mata Jurusan SMT Ke las Hari Shift
Doscn Dosen Mk Kuliah
DOSOOJ Dru. Nani Radiastuti MKOOI Dasar-dasar Agronomi Tl I B I II
DOSOOJ Dra. Nani Radiastuti MKOOJ Dasar-dasar Agronomi Tl I A 2 I
DOSOOI 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
-DOSOOS Ir Rahmut Kurnia MKOllS Ka!kulus TI I A 2 I
DOSll05 Ir Rahmal Kurnia MKllOS Kalkulus Tl I ll 2 II
Tabcl 3. 7 Populasi Setclah Rekombinasi
4.2.6 Mutasi
Proses mutasi terjadi pada kesiapan mengajar dosen yang benar-
benar 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
Kodc Nama Kodc fvlata Jurusan SMT Kclas Hari Shift Lokal I Dos en Dos en Mk Kuliah
DOS003 Budi Sudntjat, M. Hm MK003 /vlatcmutika Tl I A I I 401 --
DOSOOI Dra. Nani Radiastuti MKOOI Dasar-dasar Agrono1ni Tl I A I I 402
DOS003 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
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 .. Populasi
Gambar 3.1 Grafik Pertambahan Populasi
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 :
Mulai
'---P_e_n_g_g_un_a_m.,.e_m_1_·h-·h_m_e_n_u_1_· n_p_u_• '.'']
Bangkitkan Kesiapan dosen
Pengguna memasukan data dosen, data mata kuliah, data lokal, data kesiapan
mengajar, data kesiapan waktu
Evaluasi J '--r--K_e_s_ia_p_a_n_d_o_s_e_n~·-
........_
Optimasi >-'Y"'•---, Tercapai
Tida~:
-~ Se!eksi Kesiapan Dostm
-~ Rekombinasi Kesiapan d~n
/ Selesai }----l Jadwal Kuliah
Gambar 3.2 STD Proses Penjadwalan Kuliah
51
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 I !] A I 10 ..
I A I 70 A
1 70
I A I 15 I A i 15
Gambar 3.3 Spcsifikasi Tabcl Dosen
b. Tabel mata kuliah, untuk menyimpan data mata kul.iah.
Gambar 3.4 Spesifikasi Tabel Mata Kuliah
c. Tabel hari, untuk menyimpan data hari.
Garn bar 3.5 Spesifikasi Tabel Hari
d. Tabel shift, untuk menyimpan data shift.
: Field Name ·--.. J
1 I 21Jam
Gambar 3.6 Spesifikasi Tabel Shift
53
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).
Field Name jTypej Sii~Keyj ~ • IB!l~ii, }iiii8¥1J-ii~iiiii;~iili!;jj"_... 1111!1
1
· ~ ~~
3 l<ode)lari A 2 4.Kode shift I A 2 5' Lokal-
1
1 N 6 ThnAk A 10 7. Namados !1' A 50 8' Namamk A 50
~~ ~i: ---- -----~-J1 -~-~~~ Garnhar 3.7 Spcsifikasi Tahcl .Ja<lwal
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 ·I Form Data Dosen
I Layar Intro FnnDataMk_Klik
/ Form Data Mata Kuliah
Fm1DataLokal_Klik ~rm Data Lokal MENU
PILIHAN
. Form Set Kesiapan
FnnSctKesiapan_ Klik Mengajar
F01m Set Kesiapan
FnnSet\Vaktu_Klik Waktu Mengajar
Form Proses Pembuatan Jadwal
frmProses_Klik
Form Proses FnnJadwal_ Klik 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 Pilihan Navigasi -,
AwalKlik I r AkhirKlik ~
BcrikutK\ik ~
TambahData_Klik
Scbc\umKlik
~' 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)
Tampilkan I
FORM DATA MATAKULIAH I --
NavigasiKlik Pilihan Navigasi I
. Awa!KJik I f ' AkhirKlik Ta1nbahData_K!ik
BerikutKlik
Scbclu1nKlik "
I Form Tambah Data Mk I
OK Klik I
Cancel Klik
Gambar 3.10 STD Data Mata Kuliah
60
• STD Rancangan Data Lokal
FORM DATALOKAL
NuvigasiKlik . I Pilihan Naviga
DelnilKlik
TutupKlik • : FormDetai!Lokal
OK_Klik TambahKlik Cancel_ Klik
- FrmTambahLokal } 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 Pilihan
FORM SET . DataDosen
KESIAPAN ~ MENGAJAR LookUpDbGridKlik
-1
Pilihan Mata Kuliah J t 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 Tampilkan DataDosen
FORM SET KESIAP AN LookUpDbgrid_Klik
' Pilihan __ Mata Kuliah I WAKTU I Tampilkan \
MENGAJAR
LookUpDbGrid Klik 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
Pilihan Kelas Tampilkan
f--,..___ Pilihan Jurusan FORM ---
CmnboJurusanKlik JADWAL JADWAL f---- KULIAH - 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.
Sub-Program Data
Sub-Program Data Dosen Sub-Program Data mata kuliah Sub-Program Kurikulum Sub-Program Data Lokal
Pengguna
Sub-Program Utama
Sub-program Kesiapan
Sub-program Kesiapan Mengajar Sub-program Kesiapan Waktu Mengajar
Sub-program Proses
65
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
~~w;~:~j;jii$<iftffi:Plfffffllliit~r;yya;W'"" :·: [l)rifr~ H ~ ~ .i :ss!lil~!~
Semester
Thn AkademD<
Jurusan Kolas
Shift Jam
07.30 - 09.10
09.20- 11.00
11.10-12.50
JAOWAL KULIAH FAKULTAS SAINS DAN TEKNOL,OQI UNIVERSITAS !SLAM NEGERI SYARll' HIDAYATULLAH JllKARTA
2004/2005
TEKNIK INFORMATIKA
A
Ha~ Dos en Mata KuBllh Sks
GENIN NANI RAD!ASlUTl, Orn JAN!NGAN KCMPlITER 2
SEN!N NANI RAO!ASlUTI, D'a JA@NGAN KCMPlITER 2
SENJN NANJ RAOtA.SlUTI, D'a ALGffilMA GENE11KA 2
Garn bar 4.10 Form Mencetak Jadwal Kuliah
75
Lokal "'':.~·;_
401
401
401 '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
Y ogyakrta, 2001 ).
Antony Pranata, Pemrograman Borland Delphi, Edisi ke-3 (Yogyakarta: Andi
Y ogyakarta, 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);
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;
80
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;
81
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
82
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 :~ 'nama': end;
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);
83
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);
84
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; x, Y: Integer);
begin label2.Font.Color:=clred; label3.Font.Color:=clsilver; label3.Font.Color:=clsilver; label5.Font.Color:=clsilver; label6.Font.Color:=clsilver; label?. F ont.Color:=clsi Iver; //label8.Font.Color:=clsilver; label9.Font.Color:=clsilver;
85
end;
procedure TfrmMk.Labe13MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin label2 .F ont.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? .F ont.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? .F ont.Color:=clsilver; //label8.Font.Color:=clsilver;
86
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. F ont.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;
87
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;
88
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;
89
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.F ont. 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);
90
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;
91
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 .F ont.Color:=clsi Iver; //statictext2.Font.Color:=clsilver;
end;
procedure TfrmMengajar.StaticText2MouseMove(Sender: TObject;
92
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.
93
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
94
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
95
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; Combo Box 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;
96
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.. I OJ of string; KHari, KShift: string;
i1nple1nentation
uses dmSchedule;
{$R *.dfm}
procedure TfrmProses.Button 1 Click( 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 i ft. 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;
97
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[ i j := que1y l. lieldbyname('kelas').AsSlring; gen7[i] :=query I .fieldbyname('smt').AsString; query2.Close; query2.SQL.Clear;
98
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];
kh:=gen3[j]; ks:=gen4[j]; jrs:=gen5[j]; kls:=gen60J; smt:=gen70J
99
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.FieldBy Name('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 .FieldBy N ame('kode _mk').AsString:=gen2 Ul; tbJ adwal. FieldBy Name('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;
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
101
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;
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 1 Click(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;
102
end;
procedure TfrmJadwal.Button 1 Click(Sender: TObject); begin
Query! .Close; QUERYl .sq I.Clear;
103
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 1 Click(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.