BAB 3
ANALISIS DAN PERANCANGAN
3.1 Latar Belakang Organisasi 3.1.1 Universitas Bina Nusantara
Mulanya, Universitas Bina Nusantara merupakan suatu lembaga pelatihan komputer dengan nama Modern Computer Course (MCC), yang didirikan pada tanggal 21 Oktober 1974. MCC kemudian berkembang menjadi Computer System Academy (ATK) pada tanggal 1 Juli 1981. ATK membuka jurusan Manajemen Informasi dan Teknologi Informasi. Tiga tahun kemudian, tepatnya pada tanggal 13 Juli 1984, ATK mendapatkan status “Terdaftar” dan namanya berubah menjadi AMIK Jakarta. Pada 1 Juli 1985, AMIK membuka jurusan Komputerisasi Akuntansi dan mulai menggunakan nama Bina Nusantara pada 21 September 1985. Dalam usianya yang relatif muda, AMIK dinobatkan sebagai ”Akademi Komputer Terbaik” pada tanggal 17 Maret 1986.
Pada tanggal 9 November 1987, AMIK Bina Nusantara bergabung dengan STMIK Bina Nusantara menjadi sebuah institusi tunggal yang menawarkan program S-1 dan D-3. STMIK Bina Nusantara menerima status ”Terakreditasi” untuk semua programnya pada tanggal 18 Maret 1992. STMIK Bina Nusantara membuka program S-2 di bidang Manajemen Sistem Informasi pada tanggal 10 Mei 1993.
Universitas Bina Nusantara didirikan pada tanggal 8 Agustus 1996 dan kemudian dilegalkan oleh Pemerintah. STMIK Bina Nusantara bergabung menjadi Universitas Bina Nusantara pada tanggal 20 Desember 1998.
Universitas Bina Nusantara telah memiliki 5 fakultas, yaitu : Ilmu Komputer, Ekonomi, Teknik, Sastra, dan Matematika dan Statistik. Misinya untuk menghasilkan lulusan yang berkualifikasi dan cakap membawa Universitas Bina Nusantara mendapatkan sertifikat ISO 9001 pada tahun 1997.
Universitas Bina Nusantara (UBiNus) menyadari pentingnya visi dan misi dalam menentukan strategi ke depan. Visi dan misi UBiNus didukung oleh kebijakan peningkatan kualitas secara kontinu.
Berikut ini adalah visi, misi, dan kebijakan mutu UBiNus : 1. Visi
Unggul sebagai lembaga pendidikan berbasis teknologi informasi yang diterima sebagai panutan, siap berkompetisi dan beradaptasi terhadap perubahan global.
2. Misi
a. Mengimplementasikan program pendidikan yang mendukung pengembangan dan aplikasi teknologi informasi, penguasaan bahasa asing, komunikasi, kepemimpinan, inovasi, dan kemampuan berbisnis, serta pengembangan karakter yang baik.
b. Menyediakan infrastruktur dan lingkungan yang kondusif bagi implementasi pembelajaran yang efektif dan efisien guna menghasilkan lulusan yang cakap, kreatif, dan inovatif.
c. Memelihara hubungan dan relevansi antara kegiatan akademis dan permintaan pengembangan sosial, ekonomi, dan industri.
d. Bekerja sama dengan institusi lain, baik lokal maupun internasional, untuk memastikan bahwa pengetahuan dan kemampuan adalah yang terkini dan sesuai dengan kebutuhan.
e. Membangun komunitas yang memberi perhatian pada kualitas, budaya, nilai, dan etika kerja dalam organisasi.
3. Kebijakan Mutu
Sebagai perguruan tinggi bermutu, universitas Bina Nusantara bertekad untuk menghasilkan lulusan yang berkualifikasi tinggi, berkarakter baik dan siap terap.
3.1.2 UPT. Perangkat Lunak
UPT. Perangkat Lunak merupakan unit kerja pada Universitas Bina Nusantara yang bertanggung jawab dalam pelaksanaan kegiatan praktikum. UPT. Perangkat Lunak mengalami perkembangan dalam hal sarana maupun jenis mata kuliah praktikum, seiring dengan berkembangnya UBiNus, guna medukung kegiatan operasional Universitas.
Asisten, yang dahulu hanya menggunakan papan tulis sebagai sarana mengajar, sekarang dapat menggunakan infokus, meskipun infokus belum terdapat di semua ruangan laboratorium. Selain itu, komputer-komputer yang dahulu belum menggunakan prosesor pentium, kini telah menggunakan pentium IV. Jumlah ruangan laboratorium juga mengalami peningkatan, dikarenakan jumlah mahasiswa Universitas Bina Nusantara yang terus meningkat. Saat ini, UPT. Perangkat Lunak mempunyai 11 ruangan di kampus Anggrek serta 16 ruangan di kampus Syahdan.
Perkembangan yang terjadi di UPT. Perangkat Lunak tidak hanya pada sarana penunjang operasional saja, tetapi juga pada jumlah asisten dan staf . Selain itu, jenis mata kuliah praktikum yang dahulu hanya bervariasi pada pemograman DOS, kini telah mencakup pemrograman visual. Hal ini juga berarti software yang digunakan terus berkembang, sesuai dengan kebutuhan praktikum dan mengikuti perkembangan teknologi modern.
3.2 Struktur Organisasi UPTPL
Berikut ini adalah struktur organisasi UPTPL Universitas Bina Nusantara :
Gambar 3.1 Struktur Organisasi UPTPL
Adapun wewenang dan tanggung jawab personil UPTPL adalah sebagai berikut :
1. Kepala UPTPL
Kepala UPT. Perangkat Lunak mempunyai wewenang dan tanggung jawab sebagai berikut :
a. Membuat aturan yang berhubungan dengan asisten, meliputi persyaratan menjadi asisten, tata cara pemilihan dan penilaian asisten,
jenjang karier di lingkungan asisten beserta prosedur kerja asisten, pendidikan asisten dan tata tertib asisten.
b. Menyiapkan peralatan yang diperlukan untuk menunjang praktikum beserta semua bahan yang berkaitan dengan materi praktikum.
c. Mengatur pemakaian fasilitas laboratorium bagi mahasiswa di luar jadwal praktikum.
d. Melaksanakan kegiatan penelitian sesuai dengan program Universitas. e. Bertanggung jawab atas pemeliharaan dan keamanan seluruh fasilitas
laboratorium.
f. Membuat laporan per semester tentang pelaksanaan kegiatan praktikum.
g. Mengirim nilai evaluasi praktikum mahasiswa tepat waktu.
h. Membantu penyusunan laporan bulanan tentang kegiatan UPT yang akan diserahkan kepada Wakil Rektor II
i. Membantu melaksanakan tugas lain yang terkait dengan kebutuhan program Universitas.
j. Menyusun anggaran kegiatan dalam UPT yang dipimpinnya. 2. Kepala Wilayah
Kepala Wilayah, baik di anggrek maupun di syahdan, memiliki wewenang dan tanggung jawab sebagai berikut :
a. Bertanggung jawab atas pelaksanaan kegiatan praktikum di wilayahnya. b. Mengawasi pelaksanaan tata tertib asisten yang berlaku di wilayahnya.
c. Membantu Kepala UPT. Perangkat Lunak merencanakan pengembangan UPT. Perangkat Lunak sesuai dengan tujuan Universitas Bina Nusantara.
d. Bertanggung jawab dalam merencanakan dan mengkoordinasi rencana kerja guna mencapai sasaran yang ditetapkan.
e. Bertanggung jawab dan mengkoordinasi pelaksanaan evaluasi jasa asisten di wilayahnya.
f. Bertanggung jawab atas peminjaman fasilitas UPT. Perangkat Lunak oleh pihak-pihak eksternal.
g. Membuat laporan periodik kepada Kepala UPT. Perangkat Lunak. h. Membuat laporan evaluasi kepada Kepala UPT. Perangkat Lunak setiap
akhir semester.
i. Bertanggung jawab untuk menyelesaikan tugas yang dibebankan oleh atasan untuk kepentingan UPT. Perangkat Lunak khususnya dan Universitas Bina Nusantara umumnya.
3. Kepala Sarana Penunjang Operasi (SPO)
Kepala SPO memiliki wewenang dan tanggung jawab sebagai berikut : a. Bertanggung jawab atas pelaksanaan kegiatan setiap bagian penunjang
operasional praktikum.
b. Membuat laporan secara periodik kepada Kepala UPT. Perangkat Lunak.
d. Bertanggung jawab untuk menyelesaikan tugas yang dibebankan oleh atasan untuk kepentingan UPT. Perangkat Lunak khususnya dan Universitas Bina Nusantara umumnya.
4. Staf Research Development and Training (RDT)
Staf RDT memiliki wewenang dan tanggung jawab sebagai berikut :
a. Bertanggung jawab terhadap penelitian yang dilakukan untuk meningkatkan efisiensi UPT. Perangkat Lunak.
b. Bertanggung jawab terhadap penelitian dan pengembangan kegiatan praktikum, asisten, UPT. Perangkat Lunak dan Universitas Bina Nusantara.
c. Mengkoordinasi pembuatan materi tes penerimaan asisten baru.
d. Membantu penerapan teknologi informasi dalam perencanaan dan pengembangan UPT. Perangkat Lunak.
e. Menggali minat mahasiswa Universitas Bina Nusantara dalam bidang pemrograman.
f. Menginformasikan pengembangan yang dilakukan oleh UPT. Perangkat Lunak dan perkembangan teknologi informasi kepada asisten dan mahasiswa dalam bentuk seminar, workshop, dan sebagainya. g. Bertanggung jawab atas pelaksanaan kegiatan penelitian.
h. Menangani dan mengatur pelaksanan kegiatan pelatihan.
i. Membuat laporan periodik kepada Kepala RDT UPT. Perangkat Lunak. j. Bertanggung jawab untuk menyelesaikan tugas yang dibebankan oleh
atasan untuk kepentingan UPT. Perangkat Lunak khususnya dan Universitas Bina Nusantara umumnya.
5. Staf Penunjang Sarana Praktikum (PSP)
Staf PSP memiliki wewenang dan tanggung jawab sebagai berikut :
a. Bertanggung jawab atas jaringan komputer yang ada di UPT. Perangkat Lunak.
b. Bertanggung jawab atas ketersediaan, pengembangan, pemeliharaan dan perbaikan perangkat keras, piranti lunak dan fasilitas pendukung UPT. Perangkat Lunak dalam menunjang pelaksanaan kegiatan praktikum.
c. Melakukan pencatatan suhu harian ruang server. d. Melakukan audit berkala terhadap keamanan jaringan.
e. Membuat laporan periodik kepada Kepala Sekretariat Penunjang Operasi.
f. Menyediakan hak akses bagi asisten dan praktikan dalam jaringan UPT. Perangkat Lunak dalam menunjang pelaksanaan kegiatan praktikum. g. Menyediakan hak akses bagi bagian lain UPT. Perangkat Lunak dalam
menunjang pelaksanaan kegiatan operasional.
h. Melakukan penginstalan server sesuai dengan kebutuhan.
i. Melakukan analisis kelayakan hardware dan melakukan pertimbangan atas keperluan upgrade, baik hardware maupun teknologi pendukungnya.
j. Menyusun anggaran untuk pembelian atau permintaan alat-alat, hardware dan prasarana lainnya yang dibutuhkan oleh UPT. Perangkat Lunak dalam menunjang kegiatan praktikum dan operasional.
k. Bertanggung jawab untuk menyelesaikan tugas yang dibebankan oleh atasan untuk kepentingan UPT. Perangkat Lunak khususnya dan Universitas Bina Nusantara umumnya.
6. Staf Data
Staf Data memiliki wewenang dan tanggung jawab sebagai berikut :
a. Bertanggung jawab atas penyediaan data yang berhubungan dengan kegiatan praktikum UPT. Perangkat Lunak bagi bagian lain yang berkepentingan.
b. Bertanggung jawab atas pengalokasian ruang dan mahasiswa dalam menunjang kegiatan praktikum.
c. Bertanggung jawab atas pengalokasian ruang, pengawas dan mahasiswa dalam menunjang kegiatan ujian.
d. Bertanggung jawab atas pengalokasian ruang dan asisten dalam menunjang kegiatan lainnya seperti pekan pra kuliah.
e. Bertanggung jawab atas penyediaan daftar kehadiran mahasiswa dalam kegiatan praktikum dan ujian.
f. Bertanggung jawab atas pengolahan data kehadiran mahasiswa dalam kegiatan praktikum dan ujian.
g. Membuat rekap mahasiswa yang tidak berhak mengikuti ujian.
h. Bertanggung jawab atas program pengentrian nilai ujian mahasiswa bagi korektor.
i. Bertanggung jawab atas pengolahan nilai ujian mahasiswa.
j. Bertanggung jawab atas pendistribusian daftar dan data nilai ujian mahasiswa ke Sub Biro Layanan dan Sub Biro Data.
k. Bertanggung jawab atas perubahan nilai ujian sesuai dengan hasil protes mahasiswa yang diterima.
l. Membuat rekap nilai praktikum.
m. Membuat rekap pengawas ujian dan P2K.
n. Membuat laporan periodik kepada Kepala Sekretariat Penunjang Operasi.
o. Meminta data praktikum pada bagian terkait yaitu UPT. Pusat Komputer dan Biro Registrasi.
p. Melakukan perubahan data praktikum sesuai dengan kebenaran data. q. Sebagai administrator server data praktikum dalam menunjang
kegiatan operasional.
r. Melakukan prediksi transaksi praktikum untuk semester yang akan datang.
s. Bertanggung jawab untuk menyelesaikan tugas yang dibebankan oleh atasan untuk kepentingan UPT. Perangkat Lunak khususnya dan Universitas Bina Nusantara umumnya.
7. Kepala Asisten (Leader)
Kepala Asisten memiliki wewenang dan tanggung jawab sebagai berikut : a. Bertanggungjawab atas pelaksanaan kegiatan praktikum harian. b. Bertanggungjawab atas pelaksanaan tata tertib asisten.
c. Mengkoordinasi dan mengawasi pendataan kehadiran asisten.
d. Mengkoordinasi pengadaan materi praktikum dan materi ujian praktikum sesuai Satuan Acara Perkuliahan (SAP) praktium.
f. Bertanggungjawab atas perencanaan dan pelaksanaan proses penerimaan asisten baru dan tes peningkatan asisten
g. Bertanggung jawab atas kegiatan kuliah asisten (KRS, KMK, LHSS, dan lain-lain).
h. Bertanggungjawab atas pembinaan asisten.
i. Membuat laporan periodik kepada Kepala Wilayah.
j. Bertanggungjawab untuk menyelesaikan tugas yang dibebankan oleh atasan untuk kepentingan UPT. Perangkat Lunak khususnya dan Universitas Bina Nusantara umumnya.
8. Asisten Inti
Asisten Inti memiliki wewenang dan tanggung jawab sebagai berikut : a. Memeriksa kesesuaian materi antara soal dengan SAP dalam proses
pembuatan soal praktikum dan proyek.
b. Memeriksa kesesuaian materi antar variasi soal dalam proses pembuatan soal praktikum, proyek dan ujian.
c. Membuka konseling dengan asisten yang berhubungan dengan proses pembuatan soal praktikum, proyek dan ujian.
d. Membuka konseling dengan asisten yang berhubungan dengan proses penilaian proyek dan ujian.
e. Meminta asisten yang ditugaskan dalam pembuatan soal untuk memperbaiki dan menyelesaikan soal praktikum, proyek dan ujian. f. Memeriksa penggunaan bahasa yang benar dalam proses pembuatan
g. Memeriksa data-data yang dipergunakan dalam soal praktikum, proyek dan ujian.
h. Menentukan bobot dan kriteria soal ujian bersama koordinator mata kuliah beserta pembuat soal.
i. Memeriksa kesesuaian penilaian dengan bobot dan kriteria nilai dalam pemberian nilai ujian.
j. Memeriksa kesesuaian penilaian dengan kelas yang lain dalam pemberian nilai ujian.
k. Melakukan asistensi praktikum maksimal 1/3 dari jatah jaga asisten. 9. Asisten
Asisten memiliki wewenang dan tanggung jawab sebagai berikut :
a. Bertanggung jawab atas pelaksanaan kegiatan praktikum sesuai dengan jadwal yang telah ditentukan.
b. Bertanggung jawab atas pendataan kehadiran praktikum di ruang praktikum.
c. Bertanggung jawab untuk melaksanakan tata tertib di Laboratorium Perangkat Lunak.
d. Bertanggung Jawab terhadap pemeliharaan ruang praktikum termasuk kunci ruang beserta isinya.
e. Membuat soal praktikum dan atau ujian praktikum beserta dengan data dan jawaban.
f. Bertanggung jawab untuk menyelesaikan tugas yang dibebankan oleh atasan untuk kepentingan UPT. Perangkat Lunak khususnya Universitas Bina Nusantara umumnya.
3.3 Analisis Hasil Wawancara
Selama ini, penyusunan jadwal mengajar asisten dilakukan secara manual. Kepala Asisten menggunakan data yang diperoleh dari Staf Data sebagai bahan pertimbangan dalam menyusun jadwal. Kepala Asisten harus mempertimbangkan prioritas/minat ajar yang diisi oleh asisten, syarat nilai yang harus dipenuhi asisten untuk dapat mengajar suatu mata kuliah, asisten yang telah lulus training mata kuliah tertentu, shift kerja asisten, dan jadwal kuliah asisten.
Proses penyusunan jadwal secara manual tentunya membutuhkan waktu dan tenaga yang tidak sedikit. Untuk membuat jadwal, kepala asisten menghabiskan waktu satu minggu, dimana setiap harinya berkisar 5-6 jam.
Kepala Asisten mengharapkan adanya suatu aplikasi yang mampu mengotomatisasi penyusunan jadwal mengajar asisten sehingga jadwal yang memiliki nilai guna dapat dihasilkan dalam waktu yang relatif singkat.
3.4 Permasalahan yang Dihadapi
Berdasarkan hasil wawancara, ada beberapa hal yang menjadi masalah dalam proses penyusunan jadwal asistensi seperti diuraikan pada penjelasan di bawah ini.
Waktu penyusunan jadwal yang diberikan kepada Kepala Asisten sangat terbatas karena data yang dibutuhkan untuk menyusun jadwal diterima dari Staf Data sebulan sebelum kegiatan praktikum dimulai, sedangkan jadwal asistensi harus diselesaikan paling lambat seminggu sebelum kegiatan praktikum dimulai.
Selain itu, semenjak data diberikan oleh Staf Data kepada Kepala Asisten, data seringkali mengalami perubahan, misalnya akibat perubahan jumlah transaksi praktikum. Apabila Kepala Asisten telah selesai membuat jadwal dan ternyata data mengalami perubahan, maka Kepala Asisten harus menyusun kembali jadwal tersebut agar dapat digunakan.
Dalam penyusunan jadwal asistensi, Kepala Asisten harus mempertimbangkan beberapa hal, diantaranya : pemerataan bobot mengajar asisten, variasi mata kuliah yang diajar, kualifikasi asisten, dan jadwal kuliah asisten. Untuk sekian banyak transaksi praktikum, Kepala Asisten harus mengalokasikan asisten yang tepat pada hari, shift, dan ruang tertentu.
Berdasarkan hasil wawancara, ternyata masalah-masalah tersebut belum dapat diatasi. Penyusunan jadwal asistensi akan semakin terasa melelahkan seiring dengan meningkatnya jumlah transaksi praktikum akibat meningkatnya jumlah mahasiswa/i Universitas Bina Nusantara.
3.5 Usulan Pemecahan Masalah
Untuk mengatasi permasalahan tersebut, dirancang suatu aplikasi yang mampu mengotomatisasi penjadwalan asisten dengan pendekatan algoritma genetik. Pemilihan algoritma genetik didasarkan pada beberapa pertimbangan berikut :
a. Algoritma genetik bersifat paralel. Kebanyakan algoritma lain bersifat serial dan hanya dapat menelusuri ruang solusi dari suatu masalah dalam satu arah pada suatu waktu, dan jika solusi yang ditemukan ternyata tidak optimal, maka semua pekerjaan yang telah diselesaikan sebelumnya akan ditinggalkan
dan pencarian akan dimulai lagi. Karena GA memiliki banyak offspring, GA dapat menelusuri ruang solusi dalam berbagai arah sekaligus. Jika satu jalur ternyata tidak memberi hasil, GA dapat meneruskan pencarian untuk menemukan solusi optimal.
b. Karena GA dapat mengevaluasi beberapa jadwal secara bersamaan, GA sesuai untuk menyelesaikan permasalahan dimana ruang solusi potensial sangat besar. Masalah-masalah dalam kategori ini dikenal dengan istilah nonlinear. Pada masalah linear, fitness dari setiap komponen berdiri sendiri, sehingga peningkatan pada satu bagian akan menghasilkan peningkatan sistem secara keseluruhan. Namun, kebanyakan masalah dalam dunia nyata bersifat nonlinear, dimana perubahan satu komponen akan berdampak pada sistem keseluruhan, dan perubahan-perubahan yang secara individu bersifat mengganggu akan meningkatkan fitness ketika dikombinasikan. Untungnya, sifat paralelisme GA memungkinkannya untuk mengatasi jumlah kemungkinan yang sangat besar, dan mampu menemukan solusi yang optimal dalam periode waktu yang relatif singkat.
c. Algoritma genetik bekerja dengan baik dalam masalah yang fitness-nya kompleks. Meskipun GA tidak selalu memberikan solusi yang sempurna dari suatu permasalahan, GA selalu memberikan solusi yang sangat baik. GA mampu menemukan solusi yang baik dalam waktu dan computational effort yang dapat diterima.
d. Algoritma genetik mampu memanipulasi beberapa parameter secara bersamaan. Kebanyakan permasalahan dalam dunia nyata memungkinkan peningkatan terhadap satu masalah hanya dapat dilakukan dengan
mengorbankan masalah yang lain. GA memungkinkan satu kandidat solusi mengoptimalkan satu parameter dan kandidat solusi yang lain mengoptimalkan parameter yang lain.
e. Salah satu hal yang menjadi keunggulan algoritma genetik adalah GA tidak mengetahui apapun tentang permasalahan yang hendak diselesaikannya. Daripada menggunakan informasi yang diketahui sebelumnya untuk memandu setiap langkah dan membuat perubahan dengan mata tertuju pada peningkatan, GA membuat perubahan secara acak terhadap kandidat solusi dan menggunakan fitness function untuk menentukan apakah perubahan tersebut menghasilkan peningkatan.
Dengan otomatisasi penjadwalan asisten ini, diharapkan dapat memberi kemudahan bagi Kepala Asisten UPT. Perangkat Lunak dalam menyusun jadwal asistensi. Dengan demikian, jadwal asistensi dapat dibuat dalam waktu yang relatif singkat dan dengan kemungkinan human error yang lebih rendah.
3.6 Elemen-elemen yang Digunakan dalam Penjadwalan Asistensi
Beberapa elemen yang digunakan dalam pembuatan jadwal asistensi adalah sebagai berikut :
1. Pengajar praktikum
Pengajar praktikum terdiri dari Asisten dan Asisten Inti. 2. Mata kuliah
Berdasarkan waktu pelaksanaan transaksi praktikum, mata kuliah praktikum dibagi menjadi lima kelompok, yaitu :
a. minggu ganjil b. minggu genap c. before mid d. after mid e. full semester 3. Bobot
Setiap mata kuliah praktikum diberi bobot yang nantinya akan mempengaruhi jumlah transaksi praktikum yang diajar oleh Asisten dan Asisten Inti. Pemberian bobot mata kuliah praktikum didasarkan pada waktu pelaksanaan transaksi praktikum, yaitu :
a. minggu ganjil = 0.75 b. minggu genap = 0.75 c. before mid = 0.75 d. after mid = 0.75 e. full semester = 1
Bobot mengajar Asisten dan Asisten Inti ditentukan melalui kalkulasi sebagai berikut :
∑
∑
+∑
= _ /( ( _ /4))
_Asisten Bobot Keseluruhan Asisten Asisten Inti
Bobot
Bobot_Asisten_Inti = Bobot_Asisten / 4 4. Constraint
Dalam pembuatan jadwal asistensi, terdapat sejumlah constraint yang harus dipenuhi. Constraint dibedakan menjadi hard constraint dan soft constraint.
Penjelasan lebih lanjut mengenai constraint dalam penjadwalan asistensi akan dibahasi pada subbab 3.10.3.
5. Ruang
Ruang yang digunakan untuk transaksi praktikum adalah ruang 602 – 610 pada kampus Anggrek Universitas Bina Nusantara.
6. Shift
Transaksi praktikum dilaksanakan pada hari Senin – Sabtu, dimana setiap harinya, waktu pembelajaran dibagi menjadi 7 shift, yaitu :
Shift 1 : 07.20 – 09.00 Shift 2 : 09.20 – 11.00 Shift 3 : 11.20 – 13.00 Shift 4 : 13.20 – 15.00 Shift 5 : 15.20 – 17.00 Shift 6 : 17.20 – 19.00 Shift 7 : 19.20 – 21.00
Asisten dan Asisten Inti mengajar transaksi praktikum pada shift kerjanya. Hari Senin – Kamis, Asisten shift pagi mengajar pada shift 1 – 4 dan Asisten shift malam mengajar pada shift 3 - 6. Hari Jumat, Asisten shift pagi mengajar pada shift 1 – 4 dan Asisten shift malam mengajar pada shift 4 – 7. Hari Sabtu, Asisten shift pagi mengajar pada shift 1 – 3 dan Asisten shift malam mengajar pada shift 3 – 5.
3.7 Perancangan Perangkat Lunak 3.7.1 Class Diagram
Class diagram dari aplikasi yang dibuat ditunjukkan pada Gambar 3.2.
+bekerja() -NIP -Nama -Jabatan -Gaji Karyawan +membuatJadwal() -Inisial -Angkatan -Wilayah Leader +mengajar() -Inisial -Angkatan -Wilayah Asisten +disesuaikanDenganJdwlKul() -KdHari -Shift -Ruang -Inisial -KdMtk JadwalMengajar 1 1..* 1..2 1..* +getPrioritas() -Initial -KdMtk -JenisVariasi Prioritas 1 0..* +isSameVariation() -Kdmtk -NmMtk -JenisVariasi VariasiMataKuliah 1 1..* +isAstQualified() -Inisial -JenisVariasi LulusTraining +isAstQualified() -Inisial -JenisVariasi -Grade SyaratNilai 1..* 0..1 1..* 0..1 +diView() -KdHari -Shift -Ruang -Inisial -KdMtk -Kelas JadwalKuliah 1 0..1 +dilaksanakan() -KdHari -Shift -Ruang -KdMtk -Kelas -JumlahMhs -Wilayah TransaksiPraktikum 1 1
Gambar 3.2 Class Diagram
3.7.2 Use Case
Sistem Penjadwalan
Generate Jadwal Basic leader Generate Jadwal Advance View Prioritas Asisten View Kualifikasi AsistenView Jadwal Kuliah dan Jadwal Mengajar Per
Asisten
View Jadwal Mengajar Seluruh Asisten Generate Population
Gambar 3.3 Use Case
3.7.3 Sequence Diagram
3.7.3.1 Sequence Diagram Generate Population
Skenario untuk Generate Population ditunjukkan pada Tabel 3.1. Tabel 3.1 Skenario Generate Population
Use Case Name Generate Population Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader generate jadwal-jadwal pada populasi awal. Untuk men-generate populasi, leader meng-input jumlah jadwal, kemudian menekan button Generate. Sistem akan men-generate
jadwal-jadwal pada populasi awal dan menulis setiap jadwal-jadwal ke file. Preconditions ▪ Leader sudah membuka form utama dari aplikasi.
▪ Leader sudah klik menu GeneratePopulation. Postconditions ▪ Leader dapat melihat perkiraan waktu proses.
Normal Flow Actor Action System Response
Step 1 : Leader meng-input jumlah jadwal pada populasi awal.
Step 2 : Sistem akan men-generate jadwal-jadwal pada populasi awal sebanyak input-an user dinput-an menulisnya ke file serta menunjukkan perkiraan waktu proses. Kemudian, sistem menampilkan pesan kepada Leader bahwa proses telah selesai.
Lihat Gambar Rancangan Form GeneratePopulation (Gambar 3.18)
Adapun sequence diagram untuk GeneratePopulation ditunjukkan pada Gambar 3.4. frmGenerate GA File click_button_Generate() generatePopulation() createJadwal() saveData() confirm() Object1 : leader
3.7.3.2 Sequence Diagram Generate Jadwal Basic
Skenario untuk Generate Jadwal Basic ditunjukkan pada Tabel 3.2. Tabel 3.2 Skenario Generate Jadwal Basic
Use Case Name Generate Jadwal Basic Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader men-generate jadwal asistensi. Untuk men-generate jadwal, leader tidak perlu memahami parameter-parameter algoritma genetik. Leader cukup menekan button Generate, maka sistem akan menampilkan nilai fitness dari setiap alternatif jadwal dan akan menyimpan data jadwal solusi pada database.
Preconditions ▪ Leader sudah membuka form utama dari aplikasi. ▪ Leader sudah klik menu GenerateBasicTimetable.
Postconditions ▪ Leader dapat melihat nilai fitness dari setiap alternatif jadwal selama proses otomatisasi penyusunan jadwal.
▪ Leader dapat melihat perkiraan waktu proses.
Normal Flow Actor Action System Response
Step 1 : Leader klik button Generate.
Step 2 : Sistem akan menampilkan nilai fitness dari jadwal terbaik pada setiap iterasi dan menunjukkan perkiraan waktu proses. Setelah proses selesai, sistem akan menyimpan data jadwal solusi pada database.
Lihat Gambar Rancangan Form GenerateBasicTimetable (Gambar 3.16)
Adapun Sequence Diagram untuk Generate Jadwal Basic ditunjukkan pada Gambar 3.5.
Object1 : leader frmBasic GA Database click_button_Generate() generatePopulation() createBuffer() calculateFitness sortPopulation() mate() swap() saveData() showJadwal()
Gambar 3.5 Sequence Diagram Generate Jadwal Basic
3.7.3.3 Sequence Diagram Generate Jadwal Advance
Skenario untuk Generate Jadwal Advance ditunjukkan pada Tabel 3.3. Tabel 3.3 Skenario Generate Jadwal Advance
Use Case Name Generate Jadwal Advance Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader men-generate jadwal asistensi. Untuk men-generate jadwal, leader perlu memahami parameter-parameter algoritma genetik. Leader menginput population size, crossover method, selection rate, dan mutation rate. Kemudian klik button Generate. Sistem akan menampilkan nilai fitness dari setiap alternatif jadwal.
Preconditions ▪ Leader sudah membuka form utama dari aplikasi. ▪ Leader sudah klik menu GenerateAdvancedTimetable.
Postconditions ▪ Leader dapat melihat nilai fitness dari setiap alternatif jadwal selama proses otomatisasi penyusunan jadwal.
▪ Leader dapat melihat perkiraan waktu proses.
Normal Flow Actor Action System Response
Step 1 : Leader menginput population size, crossover method, selection rate, dan mutation rate.
Step 3 : Jika tidak ada pesan kesalahan inputan, leader dapat menekan button Generate.
Step 2 : Sistem akan melakukan validasi pada input leader. Jika input tidak valid, maka sistem akan memberikan pesan kepada leader untuk menginput kembali.
Step 4 : Sistem akan men-generate jadwal berdasarkan parameter-parameter algoritma genetik yang diinput leader dan menampilkan nilai fitness dari setiap alternatif jadwal. Alternate Flow Alt-Step 1 : Jika leader belum memahami parameter-parameter
algoritma genetik, leader dapat klik menu Help pada form utama sebelum memasukkan inputan.
Alt-Step 3 : Jika terdapat pesan kesalahan inputan, maka leader dapat memperbaiki input yang masih tidak valid.
Lihat Gambar Rancangan Form GenerateAdvancedTimetable (Gambar 3.17)
Adapun Sequence Diagram untuk Generate Jadwal Advance ditunjukkan pada Gambar 3.6.
Gambar 3.6 Sequence Diagram Generate Jadwal Advance
3.7.3.4 Sequence Diagram View Prioritas Asisten
Skenario untuk View Prioritas Asisten ditunjukkan pada Tabel 3.4. Tabel 3.4 Skenario View Prioritas Asisten
Use Case Name View Prioritas Asisten Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader hendak melihat prioritas/minat ajar asisten. Leader memilih inisial dari asisten yang hendak dilihat prioritas ajarnya. Sistem akan menampilkan prioritas ajar asisten tersebut.
Preconditions ▪ Leader sudah membuka form utama dari aplikasi. ▪ Leader sudah klik menu ViewTeachingPriorities. Postconditions ▪ Leader dapat melihat prioritas/minat ajar tiap asisten.
Normal Flow Actor Action System Response
Step 1 : Leader memilih inisial dari asisten yang hendak dilihat prioritas ajarnya.
Step 3 : Leader dapat melihat prioritas ajar asisten tersebut.
Step 2 : Sistem akan mengambil data prioritas ajar asisten tersebut dari database dan menampilkannya pada datagridview.
Alternate Flow Alt-Step 3 : Leader dapat memilih inisial dari asisten lain untuk melihat prioritas/minat ajarnya.
Lihat Gambar Rancangan Form ViewTeachingPriorities (Gambar 3.14)
Adapun Sequence Diagram untuk View Prioritas Asisten ditunjukkan pada Gambar 3.7.
Object1 : leader frmPriorities Prioritas
choose_Inisial()
getPrioritas(inisial)
showPrioritas()
selectPrioritas()
Gambar 3.7 Sequence Diagram View Prioritas Asisten
3.7.3.5 Sequence Diagram View Kualifikasi Asisten
Tabel 3.5 Skenario View Kualifikasi Asisten Use Case Name View Kualifikasi Asisten Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader hendak melihat kualifikasi asisten, yaitu mata kuliah apa saja yang dapat diajar oleh tiap asisten. Leader memilih inisial dari asisten yang hendak dilihat kualifikasinya. Sistem akan menampilkan kualifikasi asisten tersebut.
Preconditions ▪ Leader sudah membuka form utama dari aplikasi. ▪ Leader sudah klik menu ViewAstQualification.
Postconditions ▪ Leader dapat melihat mata kuliah yang dapat diajar oleh tiap asisten.
Normal Flow Actor Action System Response
Step 1 : Leader memilih inisial dari asisten yang hendak dilihat kualifikasinya.
Step 3 : Leader dapat melihat mata kuliah yang dapat diajar oleh asisten tersebut.
Step 2 : Sistem akan mengambil data kualifikasi asisten tersebut dari database dan menampilkannya pada datagridview.
Alternate Flow Alt-Step 3 : Leader dapat memilih inisial dari asisten lain untuk melihat kualifikasinya.
Lihat Gambar Rancangan Form ViewAstQualification (Gambar 3.13)
Adapun Sequence Diagram untuk View Kualifikasi Asisten ditunjukkan pada Gambar 3.8.
Gambar 3.8 Sequence Diagram View Kualifikasi Asisten
3.7.3.6 Sequence Diagram View Jadwal Kuliah dan Jadwal Mengajar Per Asisten Skenario untuk View Jadwal Kuliah dan Jadwal Mengajar Per Asisten ditunjukkan pada Tabel 3.6.
Tabel 3.6 Skenario View Jadwal Kuliah dan Jadwal Mengajar Per Asisten Use Case Name View Jadwal Kuliah dan Jadwal Mengajar Per Asisten Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader hendak melihat jadwal mengajar dan jadwal kuliah asisten. Leader memilih inisial dari asisten yang hendak dilihat jadwal mengajar dan kuliahnya, kemudian klik button Generate jika button tersebut diaktifkan. Sistem akan menampilkan jadwal mengajar dan kuliah asisten tersebut.
Preconditions ▪ Leader sudah membuka form utama dari aplikasi. ▪ Leader sudah klik menu
ViewTeachingAndStudyingTimetablePerAst.
Normal Flow Actor Action System Response Step 1 : Leader memilih inisial
dari asisten yang hendak dilihat jadwal mengajar dan kuliahnya.
Step 2 : Leader dapat klik button Generate jika button tersebut diaktifkan.
Step 4 : Leader dapat melihat jadwal mengajar dan jadwal kuliah asisten tersebut.
Step 3 : Sistem akan menampilkan jadwal mengajar dan jadwal kuliah dari asisten tersebut pada datagridview.
Alternate Flow Alt-Step 1 : Jika button Generate tidak aktif, maka leader dapat
memilih menu GenerateBasicTimetable / GenerateAdvancedTimetable pada form utama untuk
men-generate jadwal mengajar asisten.
Alt-Step 4 : Leader dapat memilih inisial dari asisten lain untuk melihat prioritas/minat ajarnya.
Lihat Gambar Rancangan Form ViewTeachingAndStudyingTimetablePerAst (Gambar 3.12)
Adapun Sequence Diagram untuk View Jadwal Kuliah dan Jadwal Mengajar Per Asisten ditunjukkan pada Gambar 3.9.
Object1 : leader frmJadwalPerAst GA JadwalKuliah choose_Inisial() getJadwalMengajar(inisial) returnJadwal() status generateJadwal() getJadwalKuliah(Inisial) selectJadwalKuliah() returnJadwalKuliah() showJadwalPerAst() click_button_Generate()
Gambar 3.9 Sequence Diagram View Jadwal Kuliah dan Jadwal Mengajar Per Asisten
3.7.3.7 Sequence Diagram View Jadwal Mengajar Seluruh Asisten
Skenario untuk View Jadwal Mengajar Seluruh Asisten ditunjukkan pada Tabel 3.7.
Tabel 3.7 Skenario View Jadwal Mengajar Seluruh Asisten Use Case Name View Jadwal Mengajar Seluruh Asisten Actor Leader
Description Use case ini menggambarkan proses yang terjadi ketika leader hendak melihat jadwal mengajar seluruh asisten. Leader klik button Generate, jika button tersebut diaktifkan. Sistem akan menampilkan jadwal mengajar seluruh asisten.
Preconditions ▪ Leader sudah membuka form utama dari aplikasi.
▪ Leader sudah klik menu ViewTeachingTimetableAllAst. Postconditions ▪ Leader dapat melihat jadwal mengajar seluruh asisten.
Step 1 : Leader klik button Generate jika button tersebut diaktifkan.
Step 3 : Leader dapat melihat jadwal mengajar seluruh asisten.
Step 4 : Leader dapat klik button Print untuk mencetak jadwal tersebut.
Step 2 : Sistem akan menampilkan jadwal mengajar seluruh asisten pada datagridview.
Step 5 : Sistem men-generate laporan jadwal mengajar asisten.
Alternate Flow Alt-Step 1 : Jika button ShowTeachingTimetable tidak aktif, maka leader dapat memilih menu GenerateBasicTimetable / GenerateAdvancedTimetable pada form utama untuk men-generate jadwal mengajar asisten.
Lihat Gambar Rancangan Form ViewTeachingTimetableAllAst (Gambar 3.15)
Adapun Sequence Digram untuk View Jadwal Mengajar Seluruh Asisten ditunjukkan pada Gambar 3.10.
Object1 : leader frmJadwal GA
getJadwalMengajar() generateJadwal() click_button_Generate() showJadwal() status click_button_Print() Laporan generateReport() showReport()
3.8 Perancangan Layar
3.8.1 Rancangan Layar Form Utama
Rancangan layar form utama ditunjukkan pada Gambar 3.11.
Gambar 3.11 Rancangan Layar Form Utama
3.8.2 Rancangan Layar Form View Jadwal Mengajar dan Kuliah Per Asisten Rancangan layar form view jadwal mengajar dan kuliah per asisten ditunjukkan pada Gambar 3.12.
Gambar 3.12 Rancangan Layar Form View Jadwal Mengajar dan Kuliah Per Asisten
3.8.3 Rancangan Layar Form View Kualifikasi Asisten
Rancangan layar form view kualifikasi asisten ditunjukkan pada Gambar 3.13.
3.8.4 Rancangan Layar Form View Prioritas Mengajar Asisten
Rancangan layar form view prioritas mengajar asisten ditunjukkan pada Gambar 3.14.
Gambar 3.14 Rancangan Layar Form View Prioritas Mengajar Asisten
3.8.5 Rancangan Layar Form View Jadwal Mengajar Asisten
Rancangan layar form view jadwal mengajar asisten ditunjukkan pada Gambar 3.15.
3.8.6 Rancangan Layar Form Basic
Rancangan layar form basic ditunjukkan pada Gambar 3.16.
Gambar 3.16 Rancangan Layar Form Basic
3.8.7 Rancangan Layar Form Advance
Rancangan layar form advance ditunjukkan pada Gambar 3.17.
3.8.8 Rancangan Layar Form Generate Population
Rancangan layar form generate population ditunjukkan pada Gambar 3.18.
Gambar 3.18 Rancangan Layar Form Generate Population
3.9 Perancangan Database
Aplikasi yang dibuat menggunakan database untuk menyimpan data yang diperlukan. Entity Relationship Diagram (ERD) dari database yang digunakan ditunjukkan pada Gambar 3.19.
tr_alokasi_asisten PK,FK1 Kdhari PK,FK2 Kdshift PK,FK3 Kdstatus PK Ruang PK,FK4 Inisial tr_alokasi_ruang PK,FK1 Kdhari PK,FK2 Kdshift PK,FK3 Kdstatus PK Ruang Kdmtk Kelas JmlMhs ms_hari PK Kdhari Nmhari ms_shift PK Kdshift RangeWaktu ms_status PK Kdstatus JnsStatus tr_ast_lulus_training PK,FK1 Kdmtk PK,FK2 Inisial ms_asisten PK Inisial PK Angkatan Nama FK2 Kdwil FK3 Kdjbt FK1 KdshiftAst ms_wilayah PK Kdwil Wilayah ms_jabatan PK Kdjbt Jabatan ms_shift_asisten PK KdshiftAst ShiftAst ms_matakuliah_lab PK Kdmtk Nmmtk FK1 Kdwil FK3 KdstatusPrk FK2 Kdstatus Proyek JnsVariasi ms_status_prk PK KdstatusPrk StatusPrk tr_kuliah_asisten PK,FK4 Inisial PK,FK3 KdmtkKul PK StatusPrk FK1 Kdhari FK2 Kdshift Ruang Kelas ms_matakuliah_kul PK KdmtkKul NmmtkKul tr_kualifikasi PK,FK2 Inisial PK,FK1 Kdmtk ms_prioritas PK,FK2 Inisial PK,FK1 Kdmtk Prioritas tr_jadwal PK,FK1 Kdhari PK,FK4 Angkatan PK,FK2 Kdshift PK,FK3 Kdstatus PK Ruang PK,FK4 Inisial Kelas FK5 Kdmtk 1 1 1..* 1 1 1 1 1 1 1 1..* 1 1 1..* 1 1 1..* 1..* 1 1..* 1 1..* 1 1..* 1 1..* 1..* 1..* 1..* 1 1..* 1..* 1 1..* 1 1 1..* 1 1..* 1..* 1..* 1..* 1 1..* 1..* 1 1..* 1 1.2 1 1.2 1 1..* 1 1..* 1 1..* 1..*
Adapun detail dari database yang digunakan adalah sebagai berikut ini. Tabel 3.8 Master Hari
Tabel ini digunakan untuk menyimpan data hari. Nama Tabel : ms_hari
Primary Key : Kdhari
Field Tipe Data Ukuran Field Keterangan
Kdhari char 1 Kode hari
Nmhari varchar 10 Nama hari
Tabel 3.9 Master Shift Asisten
Tabel ini digunakan untuk menyimpan data shift kerja asisten. Nama Tabel : ms_shift_asisten
Primary Key : KdshiftAst
Field Tipe Data Ukuran Field Keterangan
KdshiftAst char 1 Kode shift mengajar asisten P : Shift pagi
M : Shift malam
ShiftAst varchar 10 Keterangan kode shift asisten
Tabel 3.10 Master Status Praktikum
Tabel ini digunakan untuk menyimpan data status praktikum dan menunjukkan apakah suatu transaksi praktikum merupakan praktikum lab software atau bukan.
Nama Tabel : ms_status_prk Primary Key : KdstatusPrk
Field Tipe Data Ukuran Field Keterangan
KdstatusPrk char 1 Kode status praktikum
P : Praktikum lab software J : Praktikum lab managemen U : Praktikum DKV
R : Praktikum arsitektur
StatusPrk varchar 50 Keterangan kode status praktikum
Tabel 3.11 Master Matakuliah Kuliah
Tabel ini digunakan untuk menyimpan data matakuliah yang didapatkan di perkuliahan. Nama Tabel : ms_matakuliah_kul
Primary Key : KdmtkKul
Field Tipe Data Ukuran Field Keterangan
KdmtkKul char 5 Kode mata kuliah
NmmtkKul varchar 100 Nama mata kuliah
Tabel 3.12 Master Jabatan
Tabel ini digunakan untuk menyimpan data jabatan pada UPT. Perangkat Lunak. Nama Tabel : ms_jabatan
Primary Key : Kdjbt
Field Tipe Data Ukuran Field Keterangan
Kdjbt char 1 Kode jabatan
Jabatan varchar 50 Jabatan pada UPT.Perangkat Lunak
Tabel 3.13 Master Wilayah
Tabel ini digunakan untuk menyimpan data wilayah praktikum. Nama Tabel : ms_wilayah
Primary Key : Kdwil
Field Tipe Data Ukuran Field Keterangan
Kdwil char 1 Kode wilayah
A : Anggrek S : Syahdan
Wilayah varchar 20 Nama wilayah
Tabel 3.14 Master Status
Tabel ini digunakan untuk menyimpan data status praktikum. Nama Tabel : ms_status
Primary Key : Kdstatus
Field Tipe Data Ukuran Field Keterangan
Kdstatus char 1 Kode status
1 : Minggu ganjil 2 : Minggu genap 3 : Sebelum mid 4 : Setelah mid 5 : Full semester
Tabel 3.15 Master Shift
Tabel ini digunakan untuk menyimpan data shift perkuliahan. Nama Tabel : ms_shift
Primary Key : Kdshift
Field Tipe Data Ukuran Field Keterangan
Kdshift char 1 Kode shift
Range Waktu varchar 20 Range waktu pada shift
Tabel 3.16 Master Matakuliah Laboratorium
Tabel ini digunakan untuk menyimpan data matakuliah laboratorium. Nama Tabel : ms_matakuliah_lab
Primary Key : Kdmtk
Field Tipe Data Ukuran Field Keterangan
Kdmtk char 5 Kode mata kuliah
Nmmtk varchar 100 Nama mata kuliah
Kdwil char 1 Kode wilayah
KdstatusPrk char 1 Kode status praktikum
Kdstatus char 1 Kode status
Proyek char 1 Menyatakan suatu mata kuliah praktikum berproyek atau tidak. P : Berproyek
T : Tidak berproyek JnsVariasi char 1 Jenis variasi mata kuliah
Tabel 3.17 Master Asisten
Tabel ini digunakan untuk menyimpan data asisten. Nama Tabel : ms_asisten
Primary Key : Inisial, Angkatan
Field Tipe Data Ukuran Field Keterangan
Inisial char 2 Inisial asisten
Angkatan char 4 Angkatan asisten
Nama varchar 100 Nama asisten
Kdwil char 1 Kode wilayah
Kdjbt char 1 Kode jabatan
Tabel 3.18 Master Prioritas
Tabel ini digunakan untuk menyimpan data prioritas atau minat ajar asisten. Nama Tabel : ms_prioritas
Primary Key : Inisial, Angkatan, Kdmtk
Field Tipe Data Ukuran Field Keterangan
Inisial char 2 Inisial asisten
Angkatan char 4 Angkatan asisten
Kdmtk char 5 Kode mata kuliah
Prioritas int 4 Prioritas atau minat mengajar
Tabel 3.19 Transaksi Alokasi Ruang
Tabel ini digunakan untuk menyimpan data transaksi alokasi ruang praktikum. Nama Tabel : tr_alokasi_ruang
Primary Key : Kdhari, Kdshift, Kdstatus, Ruang
Field Tipe Data Ukuran Field Keterangan
Kdhari char 1 Kode hari
Kdshift char 1 Kode shift
Kdstatus char 1 Kode status
Ruang varchar 5 Ruang praktikum
Kdmtk char 5 Kode mata kuliah
Kelas char 5 Kelas yang mengikuti praktikum
JmlMhs int 4 Jumlah mahasiswa
Tabel 3.20 Transaksi Asisten Lulus Training
Tabel ini digunakan untuk menyimpan data asisten yang telah lulus training mata kuliah tertentu yang diadakan oleh UPT. Perangkat Lunak.
Nama Tabel : tr_ast_lulus_training Primary Key : Kdmtk, Inisial
Field Tipe Data Ukuran Field Keterangan
Kdmtk char 5 Kode mata kuliah
Inisial char 2 Inisial asisten
Tabel 3.21 Transaksi Kualifikasi
Tabel ini digunakan untuk menyimpan data mata kuliah yang dapat diajar oleh asisten. Nama Tabel : tr_kualifikasi
Primary Key : Inisial, Kdmtk
Field Tipe Data Ukuran Field Keterangan
Inisial char 2 Inisial asisten
Kdmtk char 5 Kode mata kuliah
Tabel 3.22 Transaksi Alokasi Asisten
Tabel ini digunakan untuk menyimpan data transaksi alokasi asisten. Nama Tabel : tr_alokasi_asisten
Primary Key : Kdhari, Kdshift, Kdstatus, Ruang, Inisial
Field Tipe Data Ukuran Field Keterangan
Kdhari char 1 Kode hari
Kdshift char 1 Kode shift
Kdstatus char 1 Kode status
Ruang varchar 5 Ruang praktikum
Inisial char 2 Inisial asisten
Tabel 3.23 Transaksi Kuliah Asisten
Tabel ini digunakan untuk menyimpan data kuliah asisten. Nama Tabel : tr_kuliah_asisten
Primary Key : Inisial, KdmtkKul, StatusPrk
Field Tipe Data Ukuran Field Keterangan
Inisial char 2 Inisial asisten
KdmtkKul char 5 Kode mata kuliah
StatusPrk varchar 20 Status praktikum
Prk : Mata kuliah yang ada praktikum
TidakPrk : Mata kuliah yang tidak ada praktikum
Kdhari char 1 Kode hari
Kdshift char 1 Kode shift
Ruang varchar 5 Ruang kuliah
Kelas char 5 Kelas yang mengikuti kuliah
Tabel 3.24 Transaksi Jadwal Mengajar
Tabel ini digunakan untuk menyimpan jadwal mengajar asisten. Nama Tabel : tr_jadwal
Field Tipe Data Ukuran Field Keterangan
Kdhari char 1 Kode hari
Kdshift char 1 Kode shift
Kdstatus char 1 Kode status
Ruang varchar 5 Ruang praktikum
Kelas char 5 Kelas yang mengikuti praktikum
Kdmtk char 5 Kode mata kuliah
Inisial char 2 Inisial asisten
3.10 Penerapan Algoritma Genetik Pada Otomatisasi Penjadwalan Asisten 3.10.1 Algoritma Genetik yang Digunakan
Algoritma genetik yang digunakan pada pembuatan jadwal mengajar asisten adalah sebagai berikut :
Inisialisasi ukuran populasi, crossover method, selection
rate, mutation rate
Inisialisasi populasi
Create objek jadwal pada buffer
While counter < GA_MAXITER
Hitung nilai fitness semua jadwal pada populasi
Sort jadwal ascending berdasarkan nilai fitness
If nilai fitness jadwal terbaik = 0 then keluar dari
perulangan
Mate (seleksi, crossover, mutasi)
Isi populasi dengan populasi baru pada buffer
End while
3.10.2 Representasi Struktur Data
Untuk menyelesaikan masalah penjadwalan dengan menggunakan algoritma genetik, hal pertama yang dilakukan adalah merepresentasikan solusi sebagai kromosom. Pada aplikasi ini, data direpresentasikan dengan teknik value encoding. Sebuah kromosom merepresentasikan satu jadwal asistensi. Satu kromosom terdiri dari gen-gen, dimana setiap gen merepresentasikan hari, shift,
ruang, kode mata kuliah, kelas, jumlah mahasiswa, inisial asisten, jumlah asisten, bobot mata kuliah, dan status mata kuliah.
Contoh representasi gen adalah : Hari : 1
Shift : 2
Cell : 603, T0251, 07PET, 2 Ast 0 : RM, Ast 1 : RA, status = 1
3.10.3 Urutan Proses dan Algoritma Penjadwalan Asisten
Sebuah jadwal asistensi dapat dihasilkan setelah melalui tahapan proses sebagai berikut :
1. Inisialisasi Nilai Parameter
Pada tahapan ini, sistem akan menerima parameter-parameter berupa ukuran populasi, crossover method, selection rate, dan mutation rate yang diinput user. Nilai parameter tersebut akan menentukan kinerja pencarian jadwal terbaik.
2. Inisialisasi Populasi
Inisialisasi populasi diawali dengan pembentukan jadwal yang transaksi praktikumnya diperoleh dari database. Pada jadwal yang dibentuk, belum terdapat asisten yang dialokasikan untuk mengajar transaksi praktikum. Jadwal yang dimaksud ditunjukkan pada Gambar 3.20.
Gambar 3.20 Jadwal Alokasi Ruang
Setelah jadwal di atas terbentuk, langkah selanjutnya adalah me-random asisten-asisten untuk dialokasikan pada setiap transaksi praktikum di jadwal yang telah dibentuk. Ukuran populasi bergantung pada input-an user. Saat me-random staf pengajar pada jadwal, perlu diperhatikan shift kerja asisten (shift pagi/malam) dan diusahakan bobot tiap staf pengajar merata.
Jadwal yang sudah memiliki asisten hasil random pada transaksi praktikumnya ditunjukkan pada Gambar 3.21.
Gambar 3.21 Gambar Jadwal Hasil Random
Pseudocode yang digunakan untuk membentuk populasi awal adalah sebagai berikut :
create arraylist ast dan isi dengan data asisten idxAst = 0
while ctrAst < jumlah data pada ast
if jabatan asisten ast ctrAst = asisten then jumAst + 1
else jumAI + 1 end while
while ctrFile < MAX_JADWAL
bobotPerAst = jdwl.Bobot / (jumAst + (jumAI / 4)) bobotTempAstInti = bobotPerAst / 4
while counter < jumlah data pada ast
if jabatan ast counter = asisten then bobot asisten ast count = bobotPerAst
else bobot asisten ast count = bobotTempAstInti end while
while jumlah asisten < kapasitas pada jadwal random hari
random shift berdasarkan shift kerja asisten random cell
if jumlah asisten < kapasitas pada jadwal hari,shift,cell dan inisial asisten ast idxAst tidak mengajar pada jadwal hari,shift then
cek apakah dalam 1 transaksi ada asisten yang sama inisialnya
if tidak ada inisial asisten yang sama pada 1 cell then
add inisial asisten ast idxAst ke Ast jadwal,hari,shift,cell
bobotTempAst = bobotTempAst + Bobot cell
BobotPerSemester asisten ast idxAst + bobotTempAst
end if
if bobotTempAst >= Bobot ast idxAst – 0.75 then bobotTempAst = 0 idxAst = idxAst + 1 end if end if end while end while 3. Evaluasi Fitness
Setelah populasi terbentuk, setiap kromosom pada populasi tersebut akan diberikan nilai fitness berdasarkan kesesuaiannya dengan constraint-constraint dalam penjadwalan asistensi.
Constraint dalam penjadwalan dapat dibedakan menjadi hard constraint dan soft constraint. Apabila hard constraint dilanggar, maka akan
berakibat fatal karena jadwal yang dihasilkan tidak dapat digunakan. Pelanggaran terhadap soft constraint masih dapat ditolerir sehingga jadwal yang dihasilkan masih dapat digunakan. Pelanggaran hard constraint diberi nilai 10000, sedangkan pelanggaran soft constraint hanya diberi nilai 2. Hal ini dimaksudkan agar meskipun semua soft constraint dilanggar, nilai fitness-nya tidak akan sama dengan nilai fitness apabila 1 hard constraint dilanggar.
Daftar hard constraint dan soft constraint yang digunakan dalam penjadwalan asistensi ditunjukkan pada Tabel 3.25.
Tabel 3.25 Hard Constraint dan Soft Constraint
Hard Constraints Soft Constraints
Seorang asisten hanya dapat mengajar satu materi praktikum pada satu tempat dan pada satu waktu.
Asisten mengajar maksimum 3 shift dalam 1 hari.
Asisten hanya dapat mengajar suatu mata kuliah jika ia telah lulus training untuk mata kuliah tersebut atau jika ia memenuhi kualifikasi/syarat mengajar berupa grade minimum untuk mata kuliah tersebut.
Asisten diusahakan tidak mengajar 3 shift berturut-turut.
Jadwal mengajar asisten tidak bentrok dengan jadwal kuliahnya.
Dalam satu transaksi praktikum, asisten yang mengajar bukan asisten junior semuanya, tetapi juga didampingi oleh asisten senior.
Variasi mengajar asisten diperkecil (asisten mengajar mata kuliah-mata kuliah dalam variasi yang sama).
Asisten tidak mengajar pada shift tepat setelah shift ia kuliah.
Bobot mengajar seluruh asisten merata. Rentang bobot yang masih ditoleransi adalah 0.5.
Asisten tidak ada kuliah praktikum pada shift tepat setelah ia mengajar.
Asisten mengajar sesuai
dengan prioritas/minat ajar yang sebelumnya diisi oleh Asisten tersebut.
Pseudocode untuk mengevaluasi constraint 1 (seorang asisten hanya dapat mengajar satu materi praktikum pada satu tempat dan pada satu waktu) adalah sebagai berikut :
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari create arraylist astCell
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
flag = true
while ctr < jumlah data pada astCell
if inisial asisten pada astCell ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
nilai asisten astCell ctr + 1 flag = false
break end if end while
if flag = true then add objek asisten ke astCell
end while end while
while ctr < jumlah data pada astCell
jika nilai asisten astCell ctr >= 2 then fitness = fitness + 10000
end while end while end while
Pseudocode untuk mengevaluasi constraint 2 (asisten hanya dapat mengajar suatu mata kuliah jika ia telah lulus training untuk mata kuliah tersebut atau jika ia memenuhi kualifikasi/syarat mengajar berupa grade minimum untuk mata kuliah tersebut) adalah sebagai berikut :
create arraylist ast
create arraylist astBanding
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
flag = true
while ctr < jumlah data pada ast
if inisial asisten ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
if MtkTraining dan MtkQualified asisten ast ctr tidak mengandung Kdmtk pada jadwal hari,shift,cell then
fitness = fitness + 10000 end if flag = false break end if end while
if flag = true then
create asisten tempAst
inisial tempAst = inisial asisten pada jadwal hari,shift,cell,ctrAst
kdHari tempAst = kdHari pada jadwal hari
kdShift tempAst = Id pada jadwal hari,shift
while counter < jumlah data pada astBanding
if inisial tempAst = inisial asisten astBanding counter then
MtkTraining tempAst = MtkTraining asisten astBanding counter
MtkQualified tempAst = MtkQualified asisten astBanding counter
end if end while
add tempAst ke ast end if
end while end while end while end while
Pseudocode untuk mengevaluasi constraint 3 (jadwal mengajar asisten tidak bentrok dengan jadwal kuliahnya) adalah sebagai berikut :
create arraylist ast create arraylist kuliah
isi kuliah dengan data kuliah asisten
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
flag = true
while ctr < jumlah data pada ast
if inisial asisten ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
KdHari asisten ast ctr + KdHari pada jadwal hari
KdShift asisten ast ctr + Id pada jadwal hari,shift
end if end while
if flag = true then
create asisten tempAst
inisial tempAst = inisial asisten pada jadwal hari,shift,cell,ctrAst
add tempAst ke ast end if
end while end while end while end while
while counter < jumlah data pada ast
while ctrShift < panjang string KdHari pada asisten ast ctr
kodehari = KdHari(ctrShift) asisten ast ctr kodeshift = KdShift(ctrShift) asisten ast ctr
while ctrKul < jumlah data pada kuliah
if inisial asisten ast ctr = inisial KuliahAst kuliah ctrkul dan kodehari = KdHari KuliahAst kuliah ctrkul dan kodeshift = KdShift KuliahAst kuliah ctrkul then
fitness = fitness + 10000
end while end while end while
Pseudocode untuk mengevaluasi constraint 4 (variasi mengajar asisten diperkecil) adalah sebagai berikut :
create arraylist ast
create arraylist astBanding dan isi dengan data semua asisten
create arraylist matkul dan isi dengan data mata kuliah
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
flag = true
while ctr < jumlah data pada ast
if inisial asisten ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
tempJenisVariasi = ””
while ctrVariasi < jumlah data pada matkul
if KdMtk pada jadwal hari,shift,cell = kdmtk matkul ctrVariasi then
tempJenisVariasi = JenisVariasi matkul ctrVariasi
break end if end while
if JenisVariasi asisten ast ctr tidak mengandung tempJenisVariasi then
gabung JenisVariasi asisten ast ctr dengan tempJenisVariasi
BanyakVariasi asisten ast ctr + 1 end if
flag = false break
end if end while
if flag = true then
create arraylist tempAst tempJenisVariasi = ””
while ctrVariasi < jumlah data pada matkul if KdMtk pada jadwal hari,shift,cell = kdmtk matkul ctrVariasi then
tempJenisVariasi = JenisVariasi matkul ctrVariasi break end if end while JenisVariasi tempAsisten = tempJenisVariasi
inisial tempAsisten = inisial asisten pada jadwal hari,shift,cell,ctrAst
add tempAst ke ast end if
end while end while end while end while
while counter < jumlah data pada ast
if BanyakVariasi asisten ast counter > MAX_VARIASI then
fitness = fitness + ((BanyakVariasi asisten ast
counter – MAX_VARIASI) * 10000) end if
end while
Pseudocode untuk mengevaluasi constraint 5 (bobot mengajar seluruh asisten merata) adalah sebagai berikut :
asisten ast() = data semua asisten
asisten astBobot() = data semua asisten dengan bobot per semesternya
retval = 0
while ctr < jumlah asisten pada ast
if jabatan ast ctr = asisten dan selisih BobotPerSemester astBobot ctr dengan bobotPerAst lebih/kurang dari 0.5 then
else if jabatan ast ctr = asisten inti dan selisih BobotPerSemester astBobot ctr dengan bobotTempAstInti lebih/kurang dari 0.5 then
retval = retval + 10000 end if
end while
if jumlah asisten yang dialokasikan < jumlah asisten yang seharusnya mengajar pada jadwal hari,shift,cell then
return retval else
return 0 end if
Pseudocode untuk mengevaluasi constraint 6 (asisten mengajar maksimum 3 shift dalam 1 hari) adalah sebagai berikut :
while hari < jumlah hari pada jadwal create arraylist ast
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
while ctr < jumlah data pada ast
if inisial asisten pada ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
nilai asisten ast ctr + 1 flag = false
break end if end while
if flag = true then add objek asisten ke ast end while
end while end while
while ctr < jumlah data pada ast
if nilai asisten ast ctr >= 3 then fitness =
fitness + 2
end while end while
Pseudocode untuk mengevaluasi constraint 7 (asisten diusahakan tidak mengajar 3 shift berturut-turut) adalah sebagai berikut :
while hari < jumlah hari pada jadwal create arraylist ast
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
while ctr < jumlah data pada ast
if inisial asisten pada ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
shift mengajar asisten ast ctr + 1 + shift
flag = false break
end if end while
if flag = true then add objek asisten ke ast end while
end while end while
while ctr < jumlah data pada ast
if shift mengajar asisten ast ctr mengandung shift yang berurutan then
fitness = fitness + 2
end if end while end while
Pseudocode untuk mengevaluasi constraint 8 (dalam satu transaksi praktikum, asisten yang mengajar bukan asisten junior semuanya, tetapi juga didampingi oleh asisten senior) adalah sebagai berikut :
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
if angkatan asisten pada jadwal hari,shift,cell,ctrAst junior then isJunior + 1
end while
if isJunior = jumlah asisten mengajar pada jadwal hari,shift,cell then fitness = fitness + 2
end while end while end while
Pseudocode untuk mengevaluasi constraint 9 (asisten tidak mengajar pada shift tepat setelah shift ia kuliah) adalah sebagai berikut :
create arraylist ast create arraylist kuliah
isi kuliah dengan data kuliah asisten
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
flag = true
while ctr < jumlah data pada ast
if inisial asisten ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
KdHari asisten ast ctr + KdHari pada jadwal hari
KdShift asisten ast ctr + Id pada jadwal hari,shift
end if end while
if flag = true then
create asisten tempAst
inisial tempAst = inisial asisten pada jadwal hari,shift,cell,ctrAst
add tempAst ke ast end if
end while end while
end while end while
while counter < jumlah data pada ast
while ctrShift < panjang string KdHari pada asisten ast ctr
kodehari = KdHari(ctrShift) asisten ast ctr kodeshift = KdShift(ctrShift) asisten ast ctr
while ctrKul < jumlah data pada kuliah
if inisial asisten ast ctr = inisial KuliahAst kuliah ctrkul dan kodehari = KdHari KuliahAst kuliah ctrkul dan kodeshift - 1 = KdShift KuliahAst kuliah ctrkul dan isMtkPrk KuliahAst kuliah ctrkul = false then
fitness = fitness + 2
end if end while end while end while
Pseudocode untuk mengevaluasi constraint 10 (asisten tidak ada kuliah praktikum pada shift tepat setelah ia mengajar) adalah sebagai berikut : create arraylist ast
create arraylist kuliah
isi kuliah dengan data kuliah asisten
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
flag = true
while ctr < jumlah data pada ast
if inisial asisten ast ctr = inisial asisten pada jadwal hari,shift,cell,ctrAst then
KdHari asisten ast ctr + KdHari pada jadwal hari
KdShift asisten ast ctr + Id pada jadwal hari,shift
end if end while
create asisten tempAst
inisial tempAst = inisial asisten pada jadwal hari,shift,cell,ctrAst
add tempAst ke ast end if
end while end while end while end while
while counter < jumlah data pada ast
while ctrShift < panjang string KdHari pada asisten ast ctr
kodehari = KdHari(ctrShift) asisten ast ctr kodeshift = KdShift(ctrShift) asisten ast ctr
while ctrKul < jumlah data pada kuliah
if inisial asisten ast ctr = inisial KuliahAst kuliah ctrkul dan kodehari = KdHari KuliahAst kuliah ctrkul dan kodeshift + 1 = KdShift KuliahAst kuliah ctrkul dan isMtkPrk KuliahAst kuliah ctrkul = true then
fitness = fitness + 2
end if end while end while end while
Pseudocode untuk mengevaluasi constraint 11 (asisten mengajar sesuai dengan prioritas/minat ajar yang sebelumnya diisi oleh asisten tersebut) adalah sebagai berikut :
create arraylist ast
while hari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
while ctrAst < jumlah asisten mengajar pada jadwal hari,shift,cell
if prioritas ast ctr < 15 and (not contains
mtkqualified or not contains mtklulustraining) then
fitness = fitness + 2 end if
end while end while end while
4. Mate
Setelah populasi awal terbentuk, selanjutnya akan dikerjakan proses mate yang mencakup seleksi, crossover, dan mutasi. Proses-proses tersebut akan dikerjakan terus-menerus hingga diperoleh jadwal solusi yang terbaik.
Adapun kondisi-kondisi yang dapat menyebabkan iterasi terhenti adalah : solusi dengan nilai fitness terbaik (paling minimum) telah diperoleh, iterasi selanjutnya sudah tidak memungkinkan diperolehnya solusi dengan nilai fitness yang lebih baik, atau jumlah iterasi telah mencapai nilai batas yang ditentukan.
Berikut ini adalah penjelasan dan pseudocode dari proses-proses yang dikerjakan dalam proses mate.
a. Seleksi
Pada proses seleksi, sebagian kromosom yang terbaik dari populasi akan dipilih untuk membentuk generasi selanjutnya. Jumlah kromosom yang dipilih bergantung pada nilai parameter selection rate yang di-input user.
Pseudocode untuk proses seleksi (elitism) adalah sebagai berikut : esize = popSize * selection rate
while ctr < esize
isi buffer ctr dengan population ctr end while
b. Crossover
Crossover adalah proses pertukaran satu atau lebih gen antara suatu kromosom dengan kromosom lain sehingga dihasilkan dua kromosom baru. Metode crossover yang digunakan bergantung pada input user, dapat berupa one-point crossover maupun two-point crossover.
Setelah sebagian kromosom terbaik dari populasi sekarang disalin langsung ke generasi selanjutnya melalui proses elitism, akan dilakukan crossover untuk menghasilkan individu baru sebanyak ukuran populasi dikurangi jumlah individu hasil elitism. Hal ini dilakukan dengan memilih dua individu dari populasi sekarang secara acak dengan interval pemilihan sebesar selection rate.
Berikut ini adalah pseudocode untuk one-point crossover : random jadwal untuk dijadikan parent1
random jadwal lain untuk dijadikan parent2
idxHari = hasil random hari titik potong crossover idxShift = hasil random shift titik potong crossover flagParent = true
while ctrHari < jumlah hari pada jadwal
while shift < jumlah shift pada jadwal hari
while cell < jumlah transaksi praktikum pada jadwal hari,shift
if ctrHari = idxHari dan ctrShift = idxShift then flagParent = false
if flagParent = true then
copy inisial asisten dari parent1 pada posisi
sebelum titik potong crossover ke jadwal else
copy inisial asisten dari parent2 pada posisi
setelah titik potong crossover ke jadwal end if
end while end while end while