Anda di halaman 1dari 118

SISTEM INFORMASI PENJADWALAN MATAKULIAH

PADA KAMPUS POLINAS TAMALANREA


MAKASSAR MENGGUNAKAN
ALGORITMA GENETIKA

TUGAS AKHIR
Diajukan sebagai syarat untuk menyelesaikan studi
Program Diploma Tiga Politeknik Informatika Nasional

Oleh :
MUH. ISMAIL HERIANTO
NIM: 201521049

KONSENTRASI INFORMATIKA KOMPUTER


PROGRAM STUDI MANAJEMEN INFORMATIKA
POLITEKNIK INFORMATIKA NASIONAL
MAKASSAR
2018
PERSETUJUAN PEMBIMBING

Judul Tugas Akhir : SISTEM INFORMASI PENJADWALAN MATAKULIAH


PADA KAMPUS POLINAS TAMALANREA MAKASSAR
MENGGUNAKAN ALGORITMA GENETIKA
Nama : Muh. Ismail Herianto
NIM : 201521049
Konsentrasi : Informatika Komputer

Tugas Akhir ini layak dipresentasikan dan diajukan dalam


Sidang Tugas Akhir

Diketahui
Ketua Program Studi
Manajemen Informatika Disetujui Pembimbing:

Nurhaedar, S.Kom.,M.M Herman, S.Kom., M.Cs


NIDN: 0921088001 NIDN: 0913038506

Disahkan di : Makassar
Pada Tanggal : 24 April 2018

i
PENGESAHAN LULUS SIDANG TUGAS AKHIR

Judul Tugas Akhir : SISTEM INFORMASI PENJADWALAN MATAKULIAH


PADA KAMPUS POLINAS TAMALANREA MAKASSAR
MENGGUNAKAN ALGORITMA GENETIKA
Nama : Muh. Ismail Herianto
NIM : 201521049
Konsentrasi : Informatika Komputer

Telah Dinyatakan Lulus Ujian : 28 April 2018

Tim Penguji

1. Andi Azhar Mustara, S.Kom., M.Kom (.................................)

2. Muhammad Ismail, S.Kom (.................................)

3. Herman, S.Kom.,M.Cs (.................................)

Mengetahui

Wakil Direktur 1 Ketua Program Studi


Manajemen Informatika

Samsuddin,S.Kom Nurhaedar,S.Kom.,M.M.
NIDN: 0910017003 NIDN: 0921088001

ii
PERNYATAAN KEASLIAN TUGAS AKHIR

Dengan ini menyatakan bahwa:

1. Tugas Akhir ini adalah asli dan belum pernah diajukan untuk mendapatkan

gelar akademik, baik di Politeknik Informatika Nasional Makassar maupun

perguruan tinggi lainnya.

2. Tugas akhir ini murni gagasan, rumusan dan observasi saya sendiri, tanpa

bantuan pihak lain, kecuali arahan pembimbing.

3. Dalam Tugas Akhir ini tidak terdapat karya atau pendapat yang telah ditulis

atau dipublikasikan orang lain, kecuali secara tertulis dengan jelas

dicantumkan sebagai acuan dalam naskah dengan disebutkan nama

pengarang dalam daftar pustaka.

4. Pernyataan ini dibuat dengan sesungguhnya dan apabila di kemudian hari

terdapat penyimpangan dan ketidakbenaran dalam pernyataan ini, maka

saya bersedia menerima sanksi akademik berupa pencabutan gelar yang

telah diperoleh karena karya tulis ini, serta sanksi lainnya sesuai dengan

norma yang berlaku di perguruan tinggi ini

Makassar, Senin 16 April 2018


Yang Membuat Pernyataan,

Muh. Ismail Herianto


NIM: 201521049

iii
MOTTO

“Manusia yang berakal ialah manusia yang suka menerima dan meminta
nasihat.”(Umar Bin Khattab)

Jenius adalah 1 % inspirasi dan 99 % keringat. Tidak ada yang dapat


menggantikan kerja keras.
(Muh. Ismail Herianto)

Kupersembahkan
Karya sederhana ini kepada kedua Orang tuaku yang tercinta, Saudara-
saudaraku, serta rekan-rekan mahasiswa seperjuangan. Atas segala dukungan,
pengorbanan dan doanya selama ini

iv
ABSTRAK
Muh. Ismail Herianto, 2018. “Sistem Informasi Penjadwalan
Matakuliah Pada Kampus Polinas Tamalanrea Menggunakan Algoritma
Genetika” di bimbing oleh Herman,S.Kom., M.Cs
Sistem informasi ini dikembangkan karena penjadwalan mata kuliah
dengan cara manual atau menggunakan spreadsheet belum optimal, sehingga
sering terjadi tabrakan dengan jadwal mata kuliah lain. Sistem ini bertujuan untuk
memudahkan penggunanya dalam melakukan penjadwalan mata kuliah pada
kampus POLINAS LP3I Tamalanrea Makassar. Pada perancangan ini penulis
menggunakan UML, PHP, CSS, Javascript, HTML serta basis data MySQL.
Dengan adanya Sistem Informasi Penjadwalan Menggunakan Algoritma Genetika
ini maka penjadwalan mata kuliah akan lebih mudah dan optimal.

Kata Kunci: penjadwalan, mata kuliah, algoritma genetika.

v
ABSTRACT

Muh. Ismail Herianto. 2018. “The Information System of Lecturer


Scheduling at Polinas Tamalanrea Campus by Using Genetic Algorithm,”
Supervised by Herman, S.Kom., M.Cs.
This information System developed because lecturer scheduling by manual
or by using spreadsheet does not optimized, so taht there are lecturer scheduling
at the same time with other lecturer. The objective of this system to easier the user
in conducted lecture scheduling at Polinas Tamalanrea Campus Makassar. This
design used UML, PHP, CSS, Javascript, HTML the database MySQL. By
scheduling information system by using genetic algorithm, then lecture scheduling
will be easier and optimal.

Key Words: Scheduling, lecture, genetic algorithm.

vi
KATA PENGANTAR

Puji syukur penulis panjatkan ke hadirat ALLAH SWT Tuhan Yang Maha
Kuasa atas limpahan rahmat dan karunia-Nya sehingga dapat merampungkan
tugas akhir ini. Tugas akhir ini disusun untuk memenuhi sebagian persyaratan
akademik untuk memperoleh gelar Ahli Madya Manajemen Informatika.

Tugas akhir dengan judul “SISTEM INFORMASI PENJADWALAN


MATAKULIAH PADA KAMPUS POLINAS TAMALANREA MENGGUNAKAN
ALGORITMA GENETIKA” ini disusun untuk memenuhi salah satu syarat Sidang
Tugas Akhir program pendidikan diploma tiga di Politeknik Informatika Nasional.
Sebelum menyusun tugas akhir ini, penulis melakukan penelitian di Kampus
Politeknik Informatika Nasional Kampus Tamalanrea.

Walaupun telah berupaya keras untuk memperoleh hasil terbaik dalam


penelitian dan penyusunan tugas akhir ini. Penulis sadar bahwa tugas akhir ini
kurang sempurna karena keterbatasan kesempatan dan pengetahuan penulis.
Oleh karena itu, penulis berharap kritik dan saran yang bersifat membangun dari
para pembaca untuk pengembangan ilmu pengetahuan dan kemampuan penulis.

Semoga tugas akhir ini bermanfaat bagi penulis, pembaca, dan bagi
penelitian selanjutnya.

Makassar, April 2018

Penulis

vii
UCAPAN TERIMA KASIH

Puji syukur penulis ucapkan pada Tuhan Yang Maha Esa atas limpahan
rahmat dan karunia-Nya. Sehingga penulis dapat menyelesaikan penelitian dan
penulisan tugas akhir ini dengan baik.

Kepada keluarga yang sangat saya cintai, terkhusus kepada kedua orang
tua yang telah mendoakan dan memberikan banyak motivasi serta semangat, baik
berbentuk materi atau maupun doa dalam menempuh studi di Politeknik
Informatika Nasional (Polinas).

Dalam menyelesaikan tugas akhir ini, penulis menerima bantuan dari


berbagai pihak. Karena itu, penulis mengucapkan rasa terima kasih yang tulus
kepada:

1. Bapak M. Abduh Idris, S.Kom, MM., selaku Direktur Politeknik Informatika


Nasional Makassar.
2. Bapak A. Muh. Yusvan Paris, SH.,SE.,MM.,MBA Selaku Kepala Kampus
Politeknik Informatika Nasional Makassar
3. Bapak Samsuddin, S.Kom Selaku Wakil Direktur 1
4. Ibu Nurhaedar,S.Kom.,M.M., selaku ketua Program Studi Manajemen
Informatika
5. Bapak Muh. Faisal Jufry, S.Sos., M.I.Kom selaku Kepala Bagian Akademik,
dan para dosen serta karyawan Polinas.
6. Bapak Herman S.Kom., M.Cs selaku pembimbing
7. Bapak A. Muh. Yusvan Paris, SH.,SE.,MM.,MBA selaku Kepala Kampus
Polinas Tamalanrea.
8. Seluruh sahabat dan temanku yang saya sangat kasihi.
9. Seluruh pihak yang tidak bisa penulis sebutkan satu persatu.

Penulis berharap dan berdoa semoga Tuhan Yang Maha Esa senantiasa
membalas segala amal baik Bapak, Ibu, dan Saudara

Makassar, April 2018

Penulis

viii
DAFTAR ISI
PERSETUJUAN PEMBIMBING ........................................................................... i
PENGESAHAN LULUS SIDANG TUGAS AKHIR ................................................ ii
PENYATAAN KEASLIAN TUGAS AKHIR ............................................................ iii
LEMBAR MOTTO DAN PERSEMBAHAN............................................................iv
ABSTRAK ............................................................................................................ v
ABSTRACT .........................................................................................................vi
KATA PENGANTAR ........................................................................................... vii
UCAPAN TERIMAKASIH................................................................................... viii
DAFTAR ISI .........................................................................................................ix
DAFTAR TABEL ................................................................................................. xii
DAFTAR GAMBAR ............................................................................................ xiii
Bab I Pendahuluan
1.1 Latar Belakang ........................................................................................ 1
1.2 Pokok Masalah ....................................................................................... 2
1.3 Batasan Masalah .................................................................................... 2
1.4 Tujuan & Manfaat ................................................................................... 3
1.4.1 Tujuan ....................................................................................... 3
1.4.2 Manfaat ..................................................................................... 3
1.5 Metodologi ............................................................................................... 3
BAB II LANDASAN TEORI
2.1 Landasan Teori ....................................................................................... 5
2.1.1 Agoritma Genetika .................................................................. 5
2.1.2 Penjadwalan dengan Algoritma Genetika ........................... 6
2.2 Sistem....................................................................................................... 7
2.3 Informasi .................................................................................................. 7
2.4 Sistem Informasi ..................................................................................... 8
2.5 Pengertian Basis Data ........................................................................... 9
2.6 Pengertian PHP dan MySQL .............................................................. 10
2.7 Bootstrap ................................................................................................ 11
2.8 Codeigniter ............................................................................................ 11
2.9 XAMPP ................................................................................................... 13
2.10 UML (Unified Modeling Language) .................................................... 14
2.10.1 Pemodelan Sistem Dengan UML ....................................... 14
2.10.2 Use Case ................................................................................ 14
2.10.3 Activity Diagram..................................................................... 15

ix
2.10.4 Sequence Diagram ............................................................... 16
BAB III ANALISA DAN PERANCANGAN SISTEM
3.1 Analisis Sistem Yang Berjalan............................................................ 16
3.1.1 Masalah Yang dihadapi ........................................................ 17
3.1.2 Tinjauan Organisasi .............................................................. 17
3.1.3 Kesimpulan Hasil Analisis .................................................... 20
3.1.4 Uraian Prosedur .................................................................... 20
3.1.5 Dekomposisi Fungsi ............................................................. 21
3.1.6 Analisis Masukan .................................................................. 22
3.1.7 Analisis Keluaran................................................................... 22
3.1.8 Analisis Kebutuhan ............................................................... 22
3.2 Perancangan Sistem ............................................................................ 25
3.2.1 Use case ................................................................................. 26
3.2.2 Activity Diagram..................................................................... 27
3.2.3 Sequence Diagram ............................................................... 30
3.3 Rancangan Basis data......................................................................... 33
3.3.1 Tabel Login............................................................................. 33
3.3.2 Tabel Mata kuliah .................................................................. 34
3.3.3 Tabel Dosen ........................................................................... 35
3.3.4 Tabel Hari ............................................................................... 35
3.3.5 Tabel Jam ............................................................................... 36
3.3.6 Tabel Ruang........................................................................... 37
3.3.7 Tabel Pengampu ................................................................... 37
3.3.8 Tabel Jadwal .......................................................................... 38
3.3.9 Relasi Tabel ........................................................................... 39
3.4 Rancangan Keluaran ........................................................................... 39
3.5 Rancangan Masukan ........................................................................... 40
3.6 Rancangan Dialog Layar ..................................................................... 41
BAB IV IMPLEMENTASI DAN EVALUASI
4.1 Implementasi Sistem ............................................................................ 43
4.1.1 Perangkat Keras (Hardware)............................................... 43
4.1.2 Perangkat Lunak (Software) ................................................ 43

x
4.2 Implementasi User Interface ............................................................... 43
4.3 Implementasi dan Pengujian Data Mata Kuliah ............................... 46
4.4 Implementasi dan Pengujian Data Dosen ........................................ 48
4.5 Implementasi dan Pengujian Data Pengampu................................. 51
4.6 Implementasi dan Pengujian Data Jadwal ....................................... 53
BAB V PENUTUP
5.1 Kesimpulan ............................................................................................ 43
5.2 Saran ...................................................................................................... 43
DAFTAR PUSTAKA
LAMPIRAN
RIWAYAT HIDUP

xi
DAFTAR TABEL

Nomor Judul Halaman


1. Peran Aktor Admin .................................................... 27
2. Struktur Tabel Login .................................................. 34
3. Struktur Tabel Mata Kuliah ........................................ 34
4. Struktur Tabel Dosen ................................................ 35
5. Struktur Tabel Hari .................................................... 36
6. Struktur Tabel Jam .................................................... 36
7. Struktur Tabel Ruang ................................................ 37
8. Struktur Tabel Pengampu.......................................... 38
9. Struktur Tabel Jadwal................................................ 39
10. Pengujian Login ....................................................... 45
11. Pengujian Gagal Login ............................................. 45
12. Pengujian Input Mata Kuliah ...................................... 47
13. Pengujian Input Dosen .............................................. 49
14. Pengujian Input Pengampu ....................................... 52

xii
DAFTAR GAMBAR

Nomor Judul Halaman


1. Arsitektur MVC............................................................... 11
2. Use Case Diagram......................................................... 13
3. Activity Diagram ............................................................. 14
4. Sequence Diagram ........................................................ 15
5. Dekomposisi Fungsi Sistem Penjadwalan ...................... 21
6 Alur Sistem Penjadwalan Mata Kuliah ........................... 25
7. Use case Diagram Admin .............................................. 26
8. Activity Diagram Login ................................................... 28
9. Activity Diagram Input .................................................... 29
10. Activity Diagram Generate Jadwal ................................. 30
11. Sequence Diagram Login .............................................. 31
12. Sequence Diagram Input ............................................... 32
13. Relasi Tabel ................................................................... 39
14. Rancangan Keluaran Tabel ........................................... 40
15. Rancangan Keluaran Jadwal Mata Kuliah ...................... 40
16. Rancangan Input Mata Kuliah ........................................ 41
17. Rancangan Input Proses Penjadwalan .......................... 41
18. Rancangan Tampilan Menu .......................................... 42
19. Rancangan Tampilan Jadwal ......................................... 42
20. Form Login .................................................................... 44
21. Tampilan Inputan Kosong .............................................. 44
22. Tampilan Gagal Login .................................................... 44
23. Tampilan Berhasil Login ................................................ 45
24. Tampilan Menu Mata Kuliah .......................................... 46
25. Form Input Mata Kuliah .................................................. 46
26. Form Edit Mata Kuliah ................................................... 46
27. Tampilan Inputan Kosong .............................................. 47
28. Tampilan Menu Dosen ................................................... 48
29. Tampilan Input Dosen .................................................... 49
30. Tampilan Edit Dosen...................................................... 51
31. Tampilan Inputan Kosong .............................................. 51
32. Tampilan Menu Pengampu ............................................ 51
33. Tampilan Input Pengampu ............................................. 52
34. Tampilan Edit Pengampu ............................................... 52
35. Tampilan Inputan Kosong .............................................. 52
36. Tampilan Jadwal Mata Kuliah ........................................ 53
37. Form Input Jadwal Mata Kuliah ...................................... 53
38. Pengujian Populasi 10 ................................................... 54
39. Pengujian Populasi 100 ................................................. 54

xiii
BAB I
PENDAHULUAN
1.1 Latar Belakang

Penjadwalan matakuliah merupakan kegiatan yang sangat penting

untuk dapat terlaksananya sebuah proses belajar mengajar yang baik bagi

sebuah jurusan di universitas atau perguruan tinggi. Sebuah penjadwalan

yang baik adalah sebuah penjadwalan yang dapat dilakukan oleh seluruh

pihak yang terkait dalam kegiatan belajar mengajar, tidak hanya bagi dosen

yang mengajar, tetapi juga mahasiswa yang mengambil mata kuliah

tersebut.

Politeknik Informatika Nasional Makassar merupakan salah satu

Perguruan Tinggi Swasta berfokus pendidikan vokasi yang berkomitmen

untuk turut mengembangkan pendidikan nasional khususnya di Sulawesi

Selatan melalui penyiapan sumber daya manusia yang profesional dan

berwirausaha.

Penjadwalan mata kuliah di kampus POLINAS LP3I Tamalanrea

Makassar merupakan masalah yang sulit untuk dipecahkan salah

satunya adalah seringnya terjadi tabrakan antar matakuliah.

Permasalahan penjadwalan ini banyak ditemukan di perguruan tinggi

maupun di universitas-universitas di seluruh dunia, masalah-masalah

penjadwalan yang terjadi tersebut dapat diminimalisir dengan perhitungan

penjadwalan yang tepat.

Algoritma genetika adalah suatu teknik pencarian solusi dengan

menggunakan prinsip seleksi alami(Mitsuo dan Runwei, 1977). Algoritma

genetika dimulai dengan memilih himpunan penyelesaian, yang


direpresentasikan dengan kromosom, yang disebut dengan populasi.

Solusi dari suatu populasi diambil untuk membentuk populasi baru,

dimana pemilihannya tergantung dari nilai fitness. Hal ini diharapkan agar

populasi baru yang terbentuk akan lebih baik dari populasi terdahulu.

Proses ini dilakukan berulang-ulang sampai terpenuhi kondisi tertentu.

Berdasarkan masalah yang ada pada penjadwalan matakuliah di

kampus POLINAS LP3I Tamalanrea Makassar, maka akan dibahas

bagaimana memecahkan masalah yang ada dalam penjadwalan dengan

suatu metode algoritma yaitu Agoritma Genetika, hal ini didasarkan pada

Suyanto(2007), bahawa Algoritma Genetika dapat digunakan untuk

menangani masalah penjadwalan dan para peneliti sebelumnya yang

telah mengimplementasikan Algoritma Genetika dalam masalah

Penjadwalan.

1.2 Pokok Masalah


Bagaimanakah cara agar sistem penjadwalan mata kuliah pada

kampus Politeknik Informatika Nasional Makassar menjadi lebih optimal.

1.3 Batasan Masalah

Dalam penerapan algoritma genetika pada penjadwalan mata kuliah di

Politeknik Informatika Nasional Makassar ada beberapa batasan masalah

yang dibuat yaitu:

1. Sistem informasi ini menggunakan algoritma genetika dan bahasa

pemrograman PHP serta Mysql sebagai pengolah databasenya.

2. Jadwal dibuat untuk hari Senin-Jumat.

3. Kapasitas ruangan antara 40-120.

4. Jadwal dibuat untuk semester 1-4.

2
5. Jam pelajaran dibagi menjadi lima sesi.

1.4 Tujuan & Manfaat


1.4.1 Tujuan

1. Menerapkan algoritma genetika dalam menyelesaikan

penjadwalan mata kuliah pada Politeknik Informatika Nasional

Tamalanrea Makassar.

2. Mengoptimalisasikan penjadwalan mata kuliah dengan tepat

waktu dan sesuai dengan yang direncanakan.

3. Salah satu syarat akademik dalam menyelesaikan studi

program Diploma 3 (D III) pada politeknik informatika nasional

Tamalanrea Makassar.

1.4.2 Manfaat

Meningkatkan Pemahaman tentang penggunaan algoritma

genetika.

1.5 Metodologi
Metode penelitian yang diperlukan sebagai bahan untuk menyusun

tugas akhir ini adalah:

1.5.1 Metode pengumpulan data

Metode pengumpulan data diperlukan beberapa cara yaitu:

1. Studi Lapangan

Pada metode pengumpulan data dengan menggunakan

cara observasi, Melalui observasi kebagian yang berhubungan

dengan kegiatan mengajar, untuk mendapatkan gambaran

yang jelas mengenai pelaksanaan sistem yang sedang

berjalan.

3
2. Studi Literatur

Studi literatur adalah cara penelitian yang dilakukan dengan

membaca dan mempelajari buku-buku literatur sejenis yang

dapat dijadikan pendukung penyelesaian tugas akhir ini.

4
BAB II
TINJAUAN PUSTAKA
2.1 Landasan Teori
2.1.1 Algoritma Genetika
Algoritma Genetika (AG) adalah algoritma pencarian

yang didasarkan pada mekanisme seleksi alamiah dan

genetika alamiah. Pada awalnya, AG memang digunakan

sebagai algoritma pencarian parameter-parameter

optimal. Tetapi, dalam perkembangannya, AG bisa

diaplikasikan untuk berbagai masalah lain, seperti learning,

peramalan,pemrograman otomatis dan sebagainya

(Suyanto, 2007).

Ada beberapa hal yang harus dilakukan dalam

Algoritma Genetika, menurut Pardede dan Hermana

(2014):

1. Mendefinisikan individu, dimana individu

menyatakan salah satu solusi (penyelesaian) yang

mungkin dari permasalahan yang diangkat.

2. Mendefinisikan nilai fitness, yang merupakan

ukuran baik tidaknya sebuah individu atau solusi

yang didapatkan.

3. Menentukan proses pembangkitan populasi awal.

Hal ini biasanya dilakukan dengan menggunakan

pembangkitan acak seperti random – walk.

4. Menentukan proses seleksi yang akan digunakan.


5. Menentukan proses perkawinan silang (cross-

over) dan mutasi gen yang akan digunakan.

2.1.2 Penjadwalan dengan Algoritma Genetika

Tahapan dalam melakukan penjadwalan

menggunakan Algoritma Genetika adalah sebagai berikut:

1. Pembangkitan individu

Langkah paling awal dalam menentukan jalannya

Algorima Genetika adalah membangkitkan individu.

Individu dalam kasus penjadwalan adalah istilah untuk satu

buah entitas penuh sebuah jadwal dalam satu minggu.

Dalam setiap individu ini, terdapat komponen gen yang

menyusun sebuah kesatuan individu (Maharsi,2013).

2. Perhitungan nilai fitness

Nilai fitness merepresentasikan tingkat kebugaran

sebuah individu. Semakin tinggi nilai fitness, maka

semakin tinggi pula tingkat kebugaran dan probabilitas

untuk lolos seleksi.

3. Seleksi

Tujuan dari proses seleksi adalah menyaring

beberapa individu yang memenuhi syarat nilai fitness

optimal yang dilanjutkan untuk proses Algoritma Genetika

selanjutnya. Ada beberapa metode seleksi yang dapat

digunakan dalam Algoritma Genetika. Contoh yang paling

sederhana adalah dengan mengurutkan individu dari

6
fitness terbesar ke terkecil, dan kemudian diambil

beberapa populasi individu dengan finess paling besar.

4. Crossover

Crossover adalah bagian dalam Algoritma

Genetika yang cara kerjanya adalah menyilangkan individu

yang satu dengan individu lainnya. Setiap individu yang

memenuhi syarat crossover akan dipotong menjadi dua

sesuai kaidah tertentu dan menghasilkan dua buah

himpunan gen yang berdiri sendiri

5. Mutasi

Mutasi adalah proses dalam mekanisme Algoritma

Genetika yang cara kerjanya adalah mengganti satu atau

beberapa gen dari sebuah individu menjadi gen lain yang

susunannya random.

2.2 Sistem

Menurut Jogianto (2005), Sistem adalah kumpulan dari

elemen-elemen yang berinteraksi untuk mencapai suatu tujuan

tertentu. Sistem ini menggambarkan suatu kejadian-kejadian dan

kesatuan yang nyata, seperti tempat, benda dan orang-orang yang

betul-betul ada dan terjadi.

Menurut Lani Sidharta (1995), Sistem adalah himpunan dari

bagian-bagian yang saling berhubungan, yang secara bersama

mencapai tujuan-tujuan yang sama.

2.3 Informasi

7
Menurut Jogiyanto HM., (1999), informasi adalah hasil dari

pengolahan data dalam suatu bentuk yang lebih berguna dan lebih

berarti bagi penerimanya yang menggambarkan suatu kejadian –

kejadian (event) yang nyata (fact) yang digunakan untuk pengambilan

keputusan.

Informasi adalah data yang telah diolah menjadi yang

lebih berarti dan berguna bagi penerimanya untuk mengambil

keputusan masa kini maupun masa depan yang akan datang

(Jogianto,2005).

2.4 Sistem Informasi

Menurut Rommey, (1997) sistem informasi yang

diselenggarakan cara untuk mengumpulkan, memasukkan,

mengolah, dan menyimpan data dan terorganisir cara untuk

menyimpan, mengelola, mengendalikan dan melaporkan informasi

dengan cara yang suatu organisasi dapat mencapai tujuan yang telah

ditetapkan.

Menurut Sutabri, (2005) sistem informasi adalah suatu sistem

di dalam suatu organisasi yang mempertemukan kebutuhan

pengolahan transaksi harian yang mendukung fungsi operasi

organisasi yang bersifat manajerial dengan kegiatan strategi dari

suatu organisasi untuk dapat menyediakan kepada pihak luar tertentu

dengan laporan-laporan yang diperlukan.

Sistem Informasi pada umumnya dapat terbentuk dengan beberapa

kegiatan operasi tetap berikur ini:

8
 Pengumpulan data
 Pengelompokan data
 Penghitungan data
 Analisa topik masalah
 Penyajian laporan

Sedangkan sasaran dari suatu sistem informasi yakni :

 Dengan adannya sistem informasi maka penyelesaian tugas


atau pekerjaan akan semakin meningkat
 Proses pengerjaan tugas atau pekerjaan akan mempunyai
nilai efektivitas yang tinggi secara keseluruhan
 User dituntut untuk lebih produktif supaya memperoleh output
yang berkualitas
 Sistem yang dibuat harus bersifat “easy to use” atau mudah
penggunaannya
 Out yang berkualitas akan mendatangkan pendapatan atau
keuntungan yang lebih besar daripada biaya pembuatan dan
maintenance (perawatan) sistem itu sendiri.
 Efektifitas ekonomi dapat meningkat.

2.5 Pengertian Basis Data


Basis data (database) adalah kumpulan data yang disimpan

secara sistematis di dalam komputer yang dapat diolah atau

dimanipulasi menggunakan perangkat lunak (program aplikasi) untuk

menghasilkan informasi. Pendefinisian basis data meliputi spesifikasi

berupa tipe data, struktur data dan juga batasan-batasan pada data

yang akan disimpan. Basis data merupakan aspek yang sangat

penting dalam sistem informasi karena berfungsi sebagai gudang

penyimpanan data yang akan diolah lebih lanjut. Basis data menjadi

penting karena dapat mengorganisasi data, menghidari duplikasi

data, menghindari hubungan antar data yang tidak jelas dan juga

update yang rumit.

9
Basis data merupakan suatu gabungan dan juga perpaduan

antara basis data (database) dengan suatu sistem manajemen basis

data (SMBD) atau yang juga lebih sering dikenal dengan istilah DBMS

(Database Management System) Waliyanto, (2000). Sedangkan

pengertian basis data menurut Ramakrishnan dan Gehrke (2003),

menyatakan basisdata sebagai kumpulan data, umumnya

mendeskripsikan aktivitas satu organisasi atau lebih yang

berhubungan.

Basis data merupakan salah satu komponen penting dalam

suatu sistem informasi, karena merupakan basis dalam menyediakan

informasi bagi para pemakai. Salah satu database untuk server yang

cukup populer dan handal dalam menangani data yang begitu besar

adalah MySQL.

2.6 Pengertian PHP dan MySQL


Menurut Arief (2011) PHP adalah Bahasa server-side –
scripting yang menyatu dengan HTML untuk membuat halaman web
yang dinamis. Karena PHP merupakan server-side-scripting maka
sintaks dan perintah-perintah PHP akan diesksekusi diserver
kemudian hasilnya akan dikirimkan ke browser dengan format HTML.

PHP disebut bahasa pemrograman server side karena PHP

diproses pada komputer server. Hal ini berbeda dibandingkan dengan

bahasa pemrograman client-side seperti JavaScript yang diproses

pada web browser (client).

Menurut Nugroho (2006) “PHP atau singkatan dari Personal

Home Page merupakan bahasa skrip yang tertanam dalam HTML

untuk dieksekusi bersifat server side”. PHP termasuk dalam open

10
source product, sehingga source code PHP dapat diubah dan

didistribusikan secara bebas.

Salah satu keunggulan yang dimiliki PHP adalah

kemampuannya untuk melakukan koneksi ke berbagai macam

software sistem manajemen basis data atau Database Management

Sistem (DBMS), sehingga dapat menciptakan suatu halaman web

dinamis. PHP mempunyai koneksitas yang baik dengan beberapa

DBMS seperti Oracle, Sybase, mSQL, MySQL, Microsoft SQL Server,

Solid, PostgreSQL, Adabas, FilePro, Velocis, dBase, Unix dbm, dan

tidak terkecuali semua database ber-interface ODBC.

2.7 Bootstrap
Khadafi Zubaidi (2015), Bootstrap adalah sebuah alat bantu

untuk membuat sebuah tampilan halaman website yang dapat

mempercepat pekerjaan seorang pengembang website. Sesuai

namanya, website yang dibuat sengan alat bantu ini memiliki tampilan

halaman yang mirip dengan tampilan halaman Twitter. Meskipun

demikian, desainer juga dapat mengubah tampilan halaman website

sesuai dengan kebutuhan.

2.8 Codeigniter
Menurut Hakim (2010:8), Codeigniter adalah sebuah
framework PHP yang dapat membantu mempercepat developer
dalam pengembangan aplikasi web berbasis PHP dibanding jika
menulis semua kode program dari awal.

Codeigniter merupakan PHP framework yang menerapkan sistem

berbasis MVC (Model-View-Controller) yang secara sederhana dapat

diartikan bahwa Codeigniter memisahkan komponen-komponen

11
didalam pengkodean aplikasi berbasis web sehingga diharapkan

nantinya lebih mudah untuk dikelola.

2.8.1 Design Patern : MVC (Model,View,Controller)


Codeigniter merupakan PHP framework yang dibuat

yang berdasarkan kaidah Model-View-Controller (MVC).

Dengan MVC, maka pemisahan antara layer application-

logic dan presentation. Sehingga dalam sebuah

pengembangan web, seorang programmer bisa

berkonsentrasi pada core-system, sedangkan web designer

bisa berkonsentrasi pada tampilan web. Menariknya, script

PHP, query MySQL, Javascript dan CSS bisa saling

terpisah, tidak dibuat dalam satu script berukuran besar

yang membutuhkan resource besar pula untuk

mengesekusinya.

Adapun alur program aplikasi berbasis framework

Codeigniter dapat dilihat pada gambar dibawah ini :

Gambar 2.1 Arsitektur MVC


Sumber : Hakim “Membangun Web Berbasis PHP dengan
Framework Codeigniter”(2010).

12
Gambar 2.1 menerangkan bahwa ketika datang

sebuah user request, maka akan ditangani oleh Controller,

kemudian Controller akan memanggil Model jika memang

diperlukan operasi database. Hasil dari query oleh Model

kemudian akan dikembalikan ke Controller. Selanjutnya

Controller akan memanggil View yang tepat dan

mengkombinasikannya dengan hasil query Model. Hasil

akhir dari operasi ini akan ditampilkan dibrowser.

Dalam konteks Codeigniter dan aplikasi berbasis

web, maka penerapan konsep MVC mengaktifkan kode

program dapat dibagi menjadi tiga kategori, yaitu :

1. Model
Berisi kode program (berupa OOP class) yang
digunakan untuk memanipulasi database.
2. View
Berisi template HTML/XML atau PHP untuk
menampilkan data pada browser.
3. Controller
Berisi kode program (berupa OOP class) yang
digunakan untuk mengontrol aliran aplikasi (sebagai
pengontrol Model dan View).
2.9 XAMPP
Menurut Wicaksono (2008:7) menjelaskan bahwa “XAMPP

adalah sebuah software yang berfungsi untuk menjalankan website

berbasis PHP dan menggunakan pengolah data MYSQL di komputer

lokal”. XAMPP berperan sebagai server web pada komputer lokal.

XAMPP juga dapat disebut sebuah Cpanel server virtual, yang dapat

13
membantu melakukan preview sehingga dapat dimodifikasi website

tanpa harus online atau terakses dengan internet.

2.10 UML (Unified Modeling Language)


2.10.1 Pemodelan Sistem Dengan UML
Rosa dan Shalahuddin (2013) UML (Unified
Modeling Language) adalah salah satu standar bahasa
yang banyak digunakan di dunia industri untuk
mendefinisikan rquirement, membuat analisis dan desain,
serta menggambarkan arsitektur dalam pemrograman
berorientasi objek.
UML.menyediakan serangkaian gambar dan

diagram yang sangat baik. Beberapa diagram

memfokuskan diri pada ketangguhan teori object-oriented

dan sebagian lagi memfokuskan pada detail rancangan dan

konsruksi. Semua dimaksudkan sebagai sarana komunikasi

antar team programmer manapun dengan pengguna.

2.10.2 Use Case


Menurut Rosa dan Shalahuddin (2013) Use case

merupakan pemodelan untuk kelakuan (behavior) sistem

informasi yang akan dibuat. Use case mendeksripsikan

sebuah interaksi antara satu atau lebih aktor dengan sistem.

Adapun contoh use case dapat dilihat pada gambar 2.2.

Komponen pembentuk diagram use case adalah:

1. Aktor, menggambarkan pihak-pihak yang berperan

dalam sistem

2. Use case, aktivitas/sarana yang disiapkan oleh

bisnis/sistem

14
3. Hubungan, aktor mana saja yang terlibat dalam use case.

Gambar 2.2 Use Case Diagram


Sumber:
http://www.contohlengkap.com/2016/03/pengertian-dan-
contoh-use-case-diagram.html

2.10.3 Activity Diagram


Rosa dan Shalahuddin (2013) Activity

diagram menggambarkan workflow (aliran kerja)

atau aktivitas dari sebuah sistem atau proses bisnis

atau menu yang ada pada perangkat lunak. Yang

perlu diperhatikan disini adalah bahwa diagram

aktivitas menggambarkan aktivitas sistem bukan

apa yang dilakukan aktor, jadi aktivitas yang dapat

dilakukan sistem.

Adapun contoh activity diagram dapat dilihat

pada gambar 2.3

15
Gambar 2.3 Activity Diagram
Sumber:
https://www.ibm.com/support/knowledgecenter/SSB2MU_8
.2.1/com.ibm.rhp.uml.diagrams.doc/topics/rhp_t_dm_dividi
ng_activity_dgrms.html

2.10.4 Sequence Diagram


Rosa dan Shalahuddin (2013), Sequence diagram

menggambarkan kelakuan objek pada use case dengan

mendeksripsikan waktu hidup objek dan message yang

dikirimkan dan diterima antar objek. Sequence diagram

menunjukkan urutan event kejadian dalam suatu waktu.

Komponen sequence diagram terdiri atas objek

yang dituliskan dengan kotak segiempat bernama. Message

diwakili oleh garis dengan tanda panah dan waktu yang

ditunjukkan dengan progress vertikal. Adapun contoh

sequence diagram dapat dilihat pada gambar 2.4

16
Gambar 2.4 Sequence Diagram
Sumber: http://plantuml.com/sequence-diagram

17
BAB III
ANALISA DAN PERANCANGAN SISTEM

3.1 Analisis Sistem Yang Berjalan

Sistem penjadwalan mata kuliah di POLINAS LP3I Kampus

Tamalanrea Makassar yang berlaku saat ini masih menggunakan

cara manual. Bagian akademik mengatur jadwal mata kuliah dengan

manual. Ketua prodi jurusan memberikan kurikulum mata kuliah

kepada bagian akademik, bagian akademik menerima kurikulum

mata kuliah lalu kurikulum mata kuliah diinputkan ke komputer

berbentuk file dokumen kurikulum mata kuliah. Bagian akademik

mencetak daftar Mata Kuliah dari file dokumen kurikulum mata kuliah.

Dosen memberikan data dosen kepada bagian akademik. Bagian

akademik menginput data Dosen dalam komputer yang di simpan

dalam bentuk file dokumen data dosen lalu bagian akademik

mencetak data dosen tersebut. Ketua Prodi memberikan data

ruangan kepada bagian akademik, kemudian bagian akademik

menginputkan data kedalam komputer dalam bentuk file dokumen

dan mencetak data ruangan tersebut, bagian akademik membuat

jadwal matakuliah dari setiap jurusan berdasarkan data Mata Kuliah,

data Dosen, dan data Ruangan. Kemudian jadwal kuliah di inputkan

ke dalam komputer berbentuk file dokumen jadwal kuliah, lalu

dicetak.
3.1.1 Masalah Yang dihadapi
Setelah melewati tahapan proses analisa sistem yang

sedang berjalan, maka dapat diketahui kelemahan-kelemahan

yang terjadi:

1. Proses pembuatan jadwal kuliah masih menggunakan cara


manual yaitu dengan cara menggunakan Aplikasi Microsoft Excel..
2. Proses pembuatan jadwal matakuliah memakan waktu yang
cukup lama karena masih menggunakan cara manual
3. Bentrok antar jadwal kuliah kemungkinan besar masih
terjadi dan memakan waktu yang cukup lama untuk merevisi
ulang jadwal tersebut.

3.1.2 Tinjauan Organisasi

Fenomena tidak tertampungnya lulusan pendidikan

tinggi di dunia kerja bukan cerita milik era tahun 2000-an

saja. Bila dirunut kebelakang sebenarnya gejala tersebut

sudah muncul ke permukaan sekitar dua puluh tahun

sebelumnya. Semakin hari semakin meresahkan

masyarakat yang mengalami langsung sulitnya mencari

kerja jika tidak memiliki keterampilah dan keahlian. Namun

hingga menjelang akhir 1980-an, belum ada tanda-tanda

pihak yang mereasa terpanggil untuk menyelesaikan

masalah tersebut, baik pemerintah maupun swasta

Atas dasar itulah LP3I didirikan pada tanggal 29

Maret 1989 di Jakarta yang bermula dari program kursus 6

bulan kemudian mengembangkan sistem pendidikannya

17
menjadi lembaga pendidikan profesi (1 - 2 tahun). Animo

masyarakat yang sangat besar terhadap LP3I di Jakarta,

menjadikan pemikiran dari pengelola LP3I untuk

mengembangkan sayapnya ke kota-kota besar di

Indonesia seperti Surabaya, Semarang, Bali, Balikpapan,

Aceh, Palu, Banjarmasin, Samarinda, Mataram dan kota-

kota lainnya hampir di seluruh Indonesia. Pada tahun

1998, LP3I resmi membuka kampus di Makassar yang

beralamat di Jalan Urip Sumoharjo Makassar dengan

menjalankan program profesi 2 tahun. Pada tahun 2003,

LP3I mulai masuk kepada sektor pendidikan formal selaras

dengan visi LP3I yaitu : menjadi lembaga pendidikan yang

terus menerus menyelaraskan kualitas pendidikannya

dengan kebutuhan dunia kerja untuk menghasilkan SDM

yang siap kerja yang profesional, beriman dan bertaqwa.

Berawal dengan sebagian dari kampus LP3I yang telah

tersebar di Indonesia berubah menjadi Politeknik yaitu

Bandung, Jakarta dan Medan

Sejalan dengan visi LP3I itulah, pada tahun 2010,

LP3I dengan Yayasan Mitra Mandiri membuka Politeknik

di Makassar dengan nama Politeknik Informatika Nasional

dengan SK Mendikbud Nomor 130/D/O/2010 dengan

membuka 3 program studi yaitu program studi Administrasi

bisnis dengan konsentrasi Bisnis Administrasi,

Administrasi Keuangan, Sekretaris, Administrasi

18
Perkantoran, Program studi Manajemen Informatika

dengan konsentrasi Informatika Komputer dan

Komputerisasi Akuntansi, serta Program studi Administrasi

Pemerintahan.

Politeknik Informatika Nasional terus menerus

melakukan perbaikan berbagai hal dan terus

menyesuaikan diri dengan kebutuhan dunia kerja dan

kebutuhan pemerintah, pada tahun 2013, Politeknik

Informatika Nasional telah mendapatkan akreditasi

program studi dari Badan Akreditasi Nasional Perguruan

Tinggi (BAN-PT).

1. Visi

Menjadi Institusi Perguruan Tinggi yang

terus menerus menyelaraskan sistem

pendidikannya dengan kebutuhan dunia usaha

dan dunia industri untuk menghasilkan sumber

daya manusia siap kerja dan berwirausaha yang

profesional, beriman, dan bertaqwa.

2. Misi
a. Menyelenggarakan pendidikan dengan
profesional dan bertanggung jawab untuk
menyiapkan tenaga kerja yang terampil
dengan kompetensi yang tinggi.

19
b. Menjalin kemitraan dengan institusi terkait
untuk pengembangan sistem pendidikan
yang berkualitas dan tepat guna.
c. Melakukan penelitian dan pengabdian
kepada masyarakat untuk mendukung
program pemerintah dalam mencerdaskan
kehidupan bangsa dan mensejahterakan
masyarakat.
d. Menyelenggarakan pendidikan dengan
berbasis IT.
e. Melaksanakan evaluasi secara berkala
untuk meningkatkan kualitas, otonomi,
akuntabilitas, dan akreditasi politeknik.

3.1.3 Kesimpulan Hasil Analisis

Kesimpulan dari permasalahan yang dihadapi adalah dalam

hal penjadwalan mata kuliah, adalah bagian akademik

membutuhkan kemudahan dalam melakukan penjadwalan

matakuliah. Sistem penjadwalan mata kuliah pada POLINAS

LP3I Tamalanrea Makassar, belum optimal dan efektifnya

sistem yang digunakan. Maka dari itu solusi dari permasalan

yang dihadapi adalah dengan membuat sistem informasi

otomatisasi penjadwalan mata kuliah menggunakan algoritma

genetika, agar efektif dalam menyusun jadwal mata kuliah.

3.1.4 Uraian Prosedur


Pada kampus POLINAS LP3I Tamalanrea Makassar, proses

pembuatan jadwal mata kuliah menggunakan aplikasi Microsoft

Excel, jadwal matakuliah dibuat berdasarkan semester dan

20
tahun ajaran kemudian jadwal mata kuliah yang telah dibuat

kemudian di cetak dan ditempel di papan pengumuman agar

kiranya jadwal mata kuliah dapat dilihat dan dicatat oleh

mahasiswa/i.

3.1.5 Dekomposisi Fungsi

Dekomposisi fungsi bertujuan untuk mengetahui fungsi

dari pemisahan pemisahan. Adapun dekomposisi sistem

berjalan adalah sebagai berikut :

Gambar 3.1 Dekomposisi Fungsi Sistem Penjadwalan Matakuliah


POLINAS LP3I Tamalanrea Makassar.

1. Input
Proses penginputan data mata kuliah, dosen dan

kelas kedalam basisdata sesuai dengan semester dan

tahun ajaran, apabila data sudah ada maka tahap ini tidak

berlaku.

21
2. Proses
Proses adalah tahap dimana setiap data matakuliah,

dosen dan kelas disusun kemudian mendapatkan ruangan

masing-masing sesuai dengan jenis matakuliah.

3. Output
Tahap ini adalah hasil dari proses dan menampilkan

jadwal matakuliah yang tersusun sesuai dengan semester

dan tahun ajaran.

3.1.6 Analisis Masukan


Analisis masukan merupakan penjelasan dari masukan

yang dibutuhkan oleh sistem yang ada, Masukan yang

dibutuhkan adalah data mata kuliah, dosen dan kelas.

3.1.7 Analisis Keluaran


Analisis keluaran adalah keluaran atau output yang

dihasilkan dari sistem yang merupakan laporan dari hasil

inputan data mata kuliah, dosen dan kelas.

Laporan yang dihasilkan oleh sistem akan menghasilkan

berkas file-file sebagai acuan Kepala Bagian akademik untuk

mengambil keputusan selanjutnya.

3.1.8 Analisis Kebutuhan


Tujuan dari fase analisis adalah memahami dengan

sebenar-benarnya kebutuhan dari sistem baru dan

mengembangkan sebuah sistem yang mewadahi kebutuhan

tersebut, atau memutuskan bahwa sebenarnya

pengembangan sistem baru tidak dibutuhkan.

22
1. Analisis Kebutuhan Fungsional

Kebutuhan fungsional adalah kebutuhan pada

sistem yang merupakan layanan dalam aplikasi yang

harus disediakan, serta gambaran proses dari reaksi

sistem terhadap masukan sistem dan yang akan

dikerjakan oleh sistem diantaranya adalah sebagai

berikut :

a. Sistem mampu memudahkan dalam melakukan

penjadwalan mata kuliah.

b. Sistem mampu menyusun jadwal mata kuliah lebih

optimal secara otomatis.

2. Analisis Kebutuhan Non Fungsional

Analisis kebutuhan non fungsional dapat digunakan

sebagai suatu bentuk kebutuhan berupa perangkat

yang dibutuhkan sistem dan dapat terbagi dalam hal

untuk pengembangan atau penggunaannya.

a. Kebutuhan Perangkat Keras Pengembangan

(Hardware)

 Processor Intel Core i3 1.9 Ghz

 AMD Radeon Graphics R5 Series

 Memory 4GB DDR3

 Hardisk 500 GB

b. Analisis Kebutuhan Perangkat Keras

Penggunaan (Hardware)

23
 Processor Intel Inside 1.0 Ghz

 Intel HD Graphics Family

 Memory 2GB DDR3

 Hardisk 200 GB

c. Analisis Kebutuhan Perangkat Lunak

Pengembangan (Software)

 XAMPP

 Atom, Sublime, dan Notepad++

d. Analisis Kebutuhan Perangkat Lunak

Penggunaan (Software)

 XAMPP

 Mozilla Firefox, Google Chrome dll.

3. Analisis Kebutuhan Pengguna (User)

Kebutuhan sumber daya manusia atau pengguna

adalah orang yang akan terlibat dalam pembuatan dan

implementasi Sistem ini. Diantaranya adalah :

a. Sistem Analis : orang yang bertugas untuk

menganalisis sistem dengan mempelajari masalah-

masalah yang timbul dan menentukan kebutuhan-

kebutuhan.

b. Programmer : Orang yang bertanggung jawab atas

penelitian, perencanaan, pengkoordinasian, dan

perekomendasian pemilihan perangkat lunak.

24
c. Pengguna : Pihak yang menggunakan sistem ini

adalah admin dari bagian akademik yang bertugas

menyusun jadwal mata kuliah.

3.2 Perancangan Sistem


Sistem yang dibangun adalah sistem informasi otomatisasi

penjadwalan mata kuliah menggunakan algoritma genetika. Agoritma

genetika merupakan algoritma optimasi yang digunakan untuk

optimasi dan penjadwalan.

Gambar 3.2 Alur Sistem Penjadwalan Mata Kuliah


Pada proses penjadwalan semua data-data yang dibutuhkan

dalam melakukan penginputan, seperti data dosen, data mata kuliah,

data jam, data ruangan, data hari dan data pengampu. Setelah proses

penginputan kemudian dilanjutkan dengan proses penjadwalan,

diawali dengan pengambilan data kemudian proses algoritma

genetika akan bekerja mencari jadwal yang terbaik dan optimal

kemudian disimpan ke basis data. Proses yang terakhir adalah proses

menampilkan hasil dari proses otomatisasi penjadwalan dapat

25
langsung ditampilkan pada halaman sistem atau disimpan kedalam

bentuk Microsoft Excel.

3.2.1 Use case


Use case diagram menggambarkan fungsionalitas yang
diharapkan dari sebuah sistem. Berikut adalah use case diagram dari
sistem yang akan dirancang.

Gambar 3.3 Use case diagram Admin


Berdasarkan Use case yaitu gambar 3.2 dapat terlihat bahwa

terdapat 1 aktor (Admin) yang menggunakan sistem tersebut. Berikut

ini akan dijelaskan peran-peran dari aktor Use case diagram pada

sistem penjadwalan di tabel 3.1.

26
Aktor Use Case Deskripsi
Mengelola data Menambah dan
Matakuliah Merubah data mata
kuliah
Mengelola data Dosen Menambah dan
Merubah data dosen
Mengelola data Menambah dan
Ruangan Merubah data ruangan
Mengelola data Jam Menambah dan
Admin Merubah data jam
Mengelola data Hari Menambah dan
Merubah data hari
Mengelola data Menambah dan
Pengampu Merubah data
pengampu
Generate Jadwal Membuat Jadwal
Perkuliahan yang akan
digunakan

Tabel 3.1 Peran aktor Admin


3.2.2 Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam

sistem yang sedang dirancang. Bagaimana masing-masing alir

berawal, decision yang mungkin terjadi, dan bagaimana mereka

berakhir.

a. Activity Diagram Login


Pada gambar 3.4 terlihat aktivitas dari Sistem Penjadwalan

dengan Algoritma Genetika, yaitu pertama-tama seorang aktor

(admin) harus membuka aplikasi, kemudian petugas harus

melakukan login, apabila valid maka petugas akan masuk ke

menu utama sedangkan jika tidak valid maka admin harus

melakukan login ulang.

27
Gambar 3.4 Activity Diagram Login

b. Activity Diagram Input Data


Pada gambar 3.5 aktivitas untuk menambah dan merubah

data, yaitu pertama-tama admin harus membuka aplikasi,

kemudian petugas harus melakukan login, apabila valid maka

admin akan masuk ke menu utama sedangkan jika tidak valid

maka admin harus melakukan login ulang.

Setelah login, admin akan masuk ke menu utama dan setelah

itu admin akan memilih menu mana yang akan diinput. Setelah

memilih menu, admin bisa memilih apakah akan menambah atau

merubah data yang sudah ada.

28
Gambar 3.5 Activity Diagram Input Data

c. Activity Diagram Generate Jadwal


Pada gambar 3.6 aktivitas untuk menambah dan merubah

data, yaitu pertama-tama petugas harus membuka aplikasi,

kemudian admin harus melakukan login, apabila valid maka admin

akan masuk ke menu utama, sedangkan jika tidak valid maka

admin harus melakukan login ulang.

Setelah login, admin akan masuk ke menu utama dan setelah

itu akan memilih menu penjadwalan, setelah itu sistem akan

29
membuat jadwal secara otomatis sesuai metode yang dipakai

yaitu algoritma genetika.

Gambar 3.6 Activity diagram Generate Jadwal

3.2.3 Sequence Diagram


Sequence diagram digunakan untuk menggambarkan

skenario atau rangkaian langkah-langkah yang dilakukan

sebagai sebuah respon dari suatu kejadian untuk

meghasilkan output tertentu. Berikut sequence diagram yang

terdapat pada sistem informasi otomatisasi penjadwalan mata

kuliah dengan algoritma genetika.

30
a. Sequence Diagram login

Gambar 3.7 Sequence diagram login

Pada sequence diagram login pada gambar 3.7,

admin akan memasukkan username dan password. Jika

username dan password valid, maka admin akan masuk

ke menu utama. Tetapi jika username dan password tidak

cocok, maka admin akan diminta unuk mengisi kembali.

31
b. Sequence Diagram Input Data

Pada sequence diagram input 3.8, admin akan

menambah data yang ingin dimasukkan ke dalam basis

data seperti data mata kuliah, dosen, ruangan, jam, hari

dan pengampu. Seluruh data yang disimpan ke basis

data akan ditampilkan di sistem yang ada di masing-

masing menu.

Gambar 3.8 Sequence diagram Input

32
3.3 Rancangan Basis data
Basis data yang dirancang memuat 8 tabel. Adapun tabel-

tabel tersebut adalah tabel login, matakuliah, dosen, hari, jam, ruang,

pengampu dan jadwal. Tabel jadwal digunakan untuk menyimpan

jadwal hasil otomatisasi penjadwalan. Untuk tabel pengampu

digunakan untuk menyimpan data dosen dan data mata kuliah yang

diampuh dan nama kelas dari mata kuliah tersebut. Tabel dosen, hari,

jam, matakuliah dan ruangan merupakan tabel master.

3.3.1 Tabel Login


Tabel login digunakan untuk menyimpan data admin yang

berhak untuk menggunakan sistem pembuatan jadwal

perkuliahan ini.

Nama File : login

Media : hardisk

Isi : data login

Primary Key :ID

Struktur :

No Field Tipe Lebar Keterangan


1 11 Pemberian
kode otomatis
ID Int
atau
Autoincrement
2 200 Nama lengkap
name Varchar
admin
3 200 Username
username Varchar
admin
4 200 Password
password varchar
admin

33
dienkripsi
dengan fungsi
MD5
5 - Info akses
last_login Datetime
terakhir admin

Tabel 3.2 Struktur tabel login


3.3.2 Tabel Mata kuliah
Tabel mata kuliah digunakan untuk menyimpan informasi

tentang data mata kuliah.

Nama File : matakuliah

Media : hardisk

Isi : data mata kuliah

Primary Key :kode

Struktur :

No Field Tipe Lebar Keterangan


1 kode Int 11 Pemberian kode
otomatis atau
Autoincrement
untuk nilai gen
2 kode_mk Varchar 10 Kode Mata
Kuliah
3 nama_makul Varchar 30 Nama Mata
Kuliah
4 Sks Int 11 Jumlah SKS
5 Semester Int 11 Semester
6 jenis_mk Enum - Praktikum/Teori

Tabel 3.3 Struktur tabel mata kuliah

34
3.3.3 Tabel Dosen
Tabel dosen digunakan untuk menyimpan informasi

tentang data dosen yang akan mengajar.

Nama File : dosen

Media : hardisk

Isi : data dosen

Primary Key :kd_dosen

Struktur :

No Field Tipe Lebar Keterangan


1 kd_dosen Int 11 Pemberian
kode otomatis
atau
Autoincrement
untuk nilai gen
2 Nidn Varchar 10 Nomor induk
dosen
3 nama_dosen Varchar 200 Nama dosen
4 Alamat Varchar 200 Alamat dosen
5 notelpon varchar 15 Nomor telpon
dosen

Tabel 3.4 Struktur Tabel dosen


3.3.4 Tabel Hari
Tabel hari digunakan untuk menyimpan informasi tentang

data hari-hari apa saja yang digunakan dalam kegiatan

perkuliahan.

Nama File : hari

Media : hardisk

Isi : data hari

35
Primary Key :kd_hari

Struktur :

No Field Tipe Lebar Keterangan


1 kd_hari Int 11 Pemberian
kode otomatis
atau
Autoincrement
untuk nilai gen
2 nm_hari Varchar 50 Nama hari

Tabel 3.5 Struktur tabel hari


3.3.5 Tabel Jam
Tabel jam digunakan untuk menyimpan informasi tentang

data jam-jam berapa saja yang digunakan dalam kegiatan

perkuliahan.

Nama File : jam

Media : hardisk

Isi : data jam

Primary Key :id_jam

Struktur :

No Field Tipe Lebar Keterangan


1 id_jam Int 11 Pemberian
kode otomatis
atau
Autoincrement
untuk nilai gen
2 Waktu Varchar 50 Interval waktu
jam mengajar
dosen

Tabel 3.6 Struktur tabel jam

36
3.3.6 Tabel Ruang
Tabel ruang digunakan untuk menyimpan informasi data

ruang mana saja yang akan digunakan dalam kegiatan

perkuliahan.

Nama File : ruang

Media : hardisk

Isi : data ruang

Primary Key :kd_ruang

Struktur :

No Field Tipe Lebar Keterangan


1 kd_ruang Int 11 Pemberian kode
otomatis atau
Autoincrement
untuk nilai gen
2 nm_ruang Varchar 50 Nama Ruangan
3 Jenis Enum - Laboratorion/Teori
4 Kapasitas Int 11 Kapasitas
Ruangan

Tabel 3.7 Struktur tabel ruang


3.3.7 Tabel Pengampu
Tabel pengampu digunakan untuk menyimpan informasi

tentang mata kuliah yang diampuh dosen.

Nama File : pengampu

Media : hardisk

Isi : data pengampu

Primary Key :kode_p

Struktur :

37
No Field Tipe Lebar Keterangan
1 kode_p Int 11 Pemberian
kode otomatis
atau
Autoincrement
untuk nilai gen
2 kode_mk Int 11 Kode dari
tabel mata
kuliah
3 kd_dosen Int 11 Kode dari
tabel dosen
4 nm_kelas Varchar 50 Nama kelas
5 tahun_akademik varchar 50 Tahun
akademik

Tabel 3.8 Struktur tabel pengampu


3.3.8 Tabel Jadwal
Tabel jadwal digunakan untuk menyimpan informasi

tentang jadwal perkuliahan yang telah dibuat dan akan

digunakan dalam perkuliahan.

Nama File : jadwal

Media : hardisk

Isi : data jadwal

Primary Key :kode

Struktur :

No Field Tipe Lebar Keterangan


1 Kode Int 11 Pemberian
kode otomatis
atau
Autoincrement
untuk nilai gen

38
2 kode_p Int 11 Kode
pengampu dari
tabel
pengampu, di
dalamnya
sudah termasuk
mata kuliah,
dosen dan
kelas
3 id_jam Int 11 Kode jam dari
tabel jam
4 kd_hari Int 11 Kode hari dari
tabel hari
5 kd_ruang Int 11 Kode

Tabel 3.9 Struktur tabel jadwal


3.3.9 Relasi Tabel

Gambar 3.9 Relasi Tabel


3.4 Rancangan Keluaran
Rancangan keluaran merupakan gambaran tentang

keluaran(Output) yang di rancang oleh sistem. Keluaran(Output) yang di

39
hasilkan oleh sistem informasi otomatisasi penjadwalan mata kuliah adalah

jadwal mata kuliah.

Gambar 3.10 Rancangan Keluaran Jadwal Mata kuliah

3.5 Rancangan Masukan


1. Input Data Mata Kuliah
Berikut ini merupakan hasil rancangan input mata kuliah

dapat dilihat pada gambar 3.11

Gambar 3.11 Rancangan Input Mata Kuliah

40
2. Input Proses Penjadwalan
Berikut merupakan rancangan input dari proses penjadwalan.

Gambar 3.12 Rancangan Input Proses Penjadwalan


3.6 Rancangan Dialog Layar
1. Tampilan Login

Gambar 3.13 Rancangan tampilan login


2. Tampilan Menu Utama
Tampilan Menu utama dapat dilihat pada gambar 3.14

41
Gambar 3.14 Rancangan tampilan menu utama
3. Tampilan Jadwal

Gambar 3.15 Rancangan tampilan jadwal

42
BAB IV
IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem


Pada bab ini akan menjelaskan hasil dari sistem informasi

penjadwalan mata kuliah menggunakan algoritma genetika sesuai

dengan analisis kebutuhan yang sudah didapatkan. Dengan

menerapkan teori yang sudah ditentukan dalam membangun sistem.

Sekaligus untuk menjelaskan bagaimana sistem ini berjalan dan

digunakan.

Implementasi dari Sistem Informasi Otomatisasi Penjadwalan

Matakuliah Menggunakan Algoritma Genetika terbagi atas Hardware

atau Software.

4.1.1 Perangkat Keras (Hardware)


Perancangan dan uji coba ini dilakukan dengan

menggunakan sebuah laptop dengan konfigurasi berikut:

 Perangkat Laptop Intel Core i3


 Memori 4 GB
 Hardisk 500 GB
 Sistem operasi Ubuntu Linux 16.04 LTS Xenial Xerus
64 bit
4.1.2 Perangkat Lunak (Software)
Rancangan perangkat lunak yang digunakan dalam membuat

sistem ini adalah XAMPP 7.2 sebagai web server dan Mysql sebagai

perangkat lunak sistem basis data, serta Atom sebagai perangkat

lunak teks editor.

4.2 Implementasi User Interface


a. Implementasi form login
Tampilan form login dapat dilihat pada gambar 4.1

Gambar 4.1 Form Login

Gambar 4.2 Tampilan Inputan Kosong

Gambar 4.3 Tampilan Admin Gagal Login

44
Gambar 4.4 Tampilan Admin Berhasil Login
b. Pengujian
Pengujian yang akan digunakan untuk menguji sistem adalah
metode pengujian black box.
Tabel 4.1 Pengujian Login
Kasus dan Hasil Uji (Data Normal)
Data Username:ismail; password:admin
masukan
Yang Data login dimasukkan dan klik tombol login maka
Diharapkan dilaksanakan pengecekan data login. Apabila data
login benar maka admin mendapatkan haknya
sebagai pengolah data dengan penuh.
Pengamatan Dapat mengisi data login dan tombol login dapat
berfungsi
Kesimpulan Diterima

Tabel 4.2 Pengujian Gagal Login


Kasus dan Hasil Uji (Data Salah)
Data
Username:xxx; password:xyz123 (inputan tidak sesuai)
Masukan
Sistem akan menampilkan pesan “Password atau
Username Salah” jika inputan tidak sesuai dengan data
Yang
login, apabila field kosong maka sistem akan
Diharapkan
menampilkan pesan “Username Wajib Diisi” atau
“Password Wajib Diisi”
Pengamatan Dapat menampilkan pesan kesalahan
Kesimpulan Diterima

45
4.3 Implementasi dan Pengujian Data Mata Kuliah

Gambar 4.5 Menu Mata Kuliah


a. Implementasi Form Input Mata Kuliah

Gambar 4.6 Form Input Mata Kuliah

Gambar 4.7 Form Edit Mata Kuliah

46
Gambar 4.8 Tampilan Pesan Inputan Kosong Mata Kuliah

b. Pengujian
Pengujian yang akan digunakan untuk menguji sistem adalah
metode pengujian black box.
Tabel 4.3 Pengujian Input Mata Kuliah
Kasus dan Hasil Uji (Data Normal)
Data Kesimpul
Yang Diharapkan Pengamatan
Masukan an
Klik tombol Tampil Form Diterima
Tambah Muncul form tambah penambahan
Data data mata kuliah data mata
kuliah
Kode Kategori tercantum Dapat Diterima
mata, dalam select option mengisi kode
nama (Teori,Praktikum), matakuliah,
matakuliah sks dan semester nama
, kategori, tercantum dalam matakuliah,
sks dan inputan tipe number kategori, sks
semester dan kode dan semester
matakuliah dan
nama matakuliah
tercantum dalam
textbox

47
Klik Data tersimpan ke Data Diterima
Simpan database dan tersimpan ke
menampilkan menu database
mata kuliah serta
menampilkan alert
data berhasil diinput
Kasus dan Hasil Uji (Data Salah)
Data Kesimpul
Yang Diharapkan Pengamatan
Masukan an
Semua Sistem Data tidak Diterima
data tidak menampilkan pesan tersimpan
diisi kesalahan dan data dan sistem
tidak tersimpan menampilkan
pesan
kesalahan
sesuia
dengan yang
diharapkan

4.4 Implementasi dan Pengujian Data Dosen


Menu tabel dosen dapat dilihat pada gambar 4.9, Pengujian

yang akan digunakan untuk menguji sistem adalah metode

pengujian black box.

Gambar 4.9 Tampilan Menu Dosen

48
a. Implementasi Form Input Dosen

Gambar 4.10 Tampilan Form Input Dosen

Gambar 4.11 Tampilan Form Edit Dosen

Gambar 4.12 Tampilan Pesan Inputan Kosong Form Dosen

49
b. Pengujian
Tabel pengujian input dosen yaitu dapat dilihat pada tabel 4.4
di halaman 50.

Tabel 4.4 Pengujian Input Dosen


Kasus dan Hasil Uji (Data Normal)
Data Yang Kesimpul
Pengamatan
Masukan diharapkan an
Klik Muncul Form Tampil Form Diterima
Tombol Input Dosen Inputan Data
Tambah Dosen
Data
NIDN, Semua inputan Dapat mengisi Diterima
Nama tercantum dalam NIDN, Nama
Dosen, text box. Alamat Dosen, alamat
alamat dan notelpon dan telepon
dan value-nya sudah (alamat dan
notelpon ditentukan telepon tidak
bernilai “-” wajib diisi tapi
tidak boleh
kosong)
Klik Data tersimpan Data tersimpan Diterima
Simpan ke database dan Ke database
menampilkan
menu dosen
serta pesan
bahwa data
berhasil diinput
Kasus dan Hasil Uji (Data Salah)
Data Kesimpul
Yang dihrapkan Pengamatan
Masukan an

50
Semua Sistem Data tidak Diterima
data tidak menampilkan tersimpan dan
diisi pesan kesalahan sistem
dan data tidak menampilkan
tersimpan pesan kesalahan
sesuai dengan
yang diharapkan

4.5 Implementasi dan Pengujian Data Pengampu


Tampilan tabel pengampu dapat dilihat pada gambar 4.13,

Pengujian yang akan digunakan untuk menguji sistem adalah

metode pengujian black box.

Gambar 4.13 Tampilan Menu Pengampu


a. Implementasi Form Input Pengampu

Gambar 4.14 Tampilan Form Input Pengampu

51
Gambar 4.15 Tampilan Form Edit Pengampu

Gambar 4.16 Tampilan Inputan Kosong Form Pengampu


b. Pengujian
Tabel 4.5 Pengujian Input Pengampu
Kasus dan Hasil Uji (Data Normal)
Data Yang Kesimpul
Pengamatan
Masukan diharapkan an
Klik Tombol Muncul Form Tampil Form Diterima
Tambah Input Pengampu Inputan Data
Data Pengampu
Nama Inputan untuk Dapat mengisi Diterima
Matakuliah, nama matakuliah, nama
Nama tahun akademik matakuliah,
Dosen, dan nama dosen nama dosen,
kelas dan dalam bentuk kelas dan
select option .

52
tahun inputan untuk tahun
akademik kelas dalam akademik
bentuk text box
Klik Simpan Data tersimpan Data tersimpan Diterima
ke database dan Ke database
menampilkan
menu pengampu
serta pesan
bahwa data
berhasil diinput
Kasus dan Hasil Uji (Data Salah)
Data Kesimpul
Yang dihrapkan Pengamatan
Masukan an
Semua data Sistem Data tidak Diterima
tidak diisi menampilkan tersimpan dan
pesan kesalahan sistem
dan data tidak menampilkan
tersimpan pesan
kesalahan
sesuai dengan
yang
diharapkan

4.6 Implementasi dan Pengujian Data Jadwal


Implementasi dan pengujian data jadwal dapat dilihat pada

gambar 4.17 adapun metode pengujian yang digunakan adalah

pengujian dengan metode blackbox.

53
Gambar 4.17 Menu Jadwal Mata Kuliah
a. Implementasi Input Jadwal Mata Kuliah

Gambar 4.18 Form InputJadwal Mata Kuliah


b. Pengujian
Pengujian menggunakan 2 tahap yaitu tahap pertama dengan

10 populasi dan tahap kedua dengan 100 populasi

54
Gambar 4.19 Pengujian Populasi 10

Gambar 4.20 Pengujian Populasi 100

55
Tabel 4.6
Kasus dan Hasil Uji
Data Semester:ganjil/genap, Tahun Akademik:
masukan 2017/2018, Populasi 10 atau 100, Probabilitas
Crossover:0.70, Probabilitas Mutasi: 0.40,
Jumlah generasi: 10000.
Yang Data dimasukkan dan klik tombol Proses maka
Diharapkan dilaksanakan proses penjadwalan. Apabila
data jadwal sudah optimal maka jadwal
matakuliah akan tersimpan ke basisdata.
Pengamatan Dapat mengisi data jadwal dan tombol proses
dapat berfungsi
Kesimpulan Diterima

56
BAB V
PENUTUP
5.1 Kesimpulan
1. Algoritma genetika dapat diterapkan pada sistem penjadwalan
mata kuliah.
2. Berdasarkan hasil pengujian jumlah populasi dapat
memberikan efek dalam proses penjadwalan mata kuliah.
3. Hasil penjadwalan mata kuliah menggunakan algoritma
genetika dapat memberikan jadwal yang sesuai dengan jumlah
sks dan interval waktu.
5.2 Saran
Sistem ini masih perlu dikembangkan agar membuat jadwal
mata kuliah yang lebih kompleks dan optimal, masih perlu
perbaikan metode pada proses seleksi agar individu-individu
terbaik tetap terpilih pada generasi selanjutya dan masih perlu
ditambahkan sistem kemauan dosen yang dapat mengampu
suatu mata kuliah.
DAFTAR PUSTAKA
Arief, 2011. “Pengertian PHP”. http://www.bangpahmi.com/2015/03/pengertian-
bahasa-pemrograman-php.html. Diakses tanggal 1 Maret 2018

A. S, Rosa dan Shalahuddin, M. 2013. Rekayasa Perangkat Lunak Terstruktur


Dan Berorientasi Objek Informatika. Bandung.

Gen, Mitsuo and Runwei, Cheng. Genetic Algorithms And Engineering Design.
John Wiley & Sons, Inc. New York: 1997.

Hakim,(2010). Membangun Web Berbasis PHP dengan Framework


Codeigniter.

HM., Jogiyanto, 1999. Definisi dan Pengertian Informasi Menurut Para


Ahli.http://www.definisi-pengertian.com/2015/03/definisi-dan-pengertian-
informasi.html. diakses tanggal 28 November 2017.

Jogianto, 2005. Pengertian dan Definisi


Sistem.https://lenterakecil.com/penulisan-daftar-pustaka-dari-internet/.
diakses pada 28 November 2017).
Definisi dan Pengertian Informasi Menurut Para Ahli”. http://www.definisi-
pengertian.com/2015/03/definisi-dan-pengertian-informasi.html. diakses
tanggal 28 November 2017.
Nugroho, 2006. Pengertian PHP.
http://www.bangpahmi.com/2015/03/pengertian-bahasa-pemrograman-
php.html. Diakses 1 Maret 2018

Pardede J. Hermana AN, (2014), Implementasi Algoritma Genetika Pada


Sistem Penjadwalan Mata Kuliah. Konferensi Nasional Sistem Informasi
2014 KNSI2014-71.ISSN : 2355-1941, pp. 367-372.

Ramakrishnan dan Gehrke 2003. Pengertian Basis Data Menurut Para Ahli.
http://sistempakarindonesia.blogspot.co.id/2013/06/pengertian-basis-data-
menurut-para-ahli.html. Diakses tanggal 1 Maret 2018.

Rommey, 1997. Pengertian Sistem Informasi Menurut Para Ahli.


https://dosenit.com/kuliah-it/sistem-informasi/pengertian-sistem-informasi-
menurut-para-ahli. diakses tanggal 28 November 2017.

Sidharta, Lani, 1995. Pengertian dan Definisi Sistem.


https://lenterakecil.com/penulisan-daftar-pustaka-dari-internet/. diakses
tanggal 28 November 2017.

Sutabri, 2005. Pengertian Sistem Informasi Menurut Para Ahli.


https://dosenit.com/kuliah-it/sistem-informasi/pengertian-sistem-informasi-
menurut-para-ahli. diakses tanggal 28 November 2017.
Suyanto, 2007. Artificial Intelligence : Searching, Reasoning, Planning dan
Learning, Informatika Bandung

Waliyanto 2000. Pengertian Sistem Basis Data. https://dosenit.com/kuliah-


it/database/pengertian-sistem-basis-data-menurut-para-ahli. diakses tanggal
1 Maret 2018.

Wicaksono, Yogi. 2008. Membangun Bisnis Online dengan Mambo. Jakarta:


PT. Elex Media Komputindo.

Zubaidi, Khadafi 2015. Membuat Sistem Informasi Kursus Berbasis Web.


Yogyakarta
RIWAYAT HIDUP
Penulis lahir di Macorawalie, 30 Desember1996 dari ayah bernama

Suriyanto dan ibu bernama Johari. Penulis merupakan anak

tunggal. Penulis menyelesaikan pendidikan sekolah dasar di SD

Negeri 1 Maccorawalie dan lulus pada tahun 2009. Kemudian penulis melanjutkan

pendidikan di SMP Negeri 1 Panca Rijang. Dan pada tahun 2012 penulis

melanjutkan pendidikan di SMA Negeri 1 Sidrap lulus pada tahun 2015. Pada

tahun 2015 penulis juga diterima sebagai mahasiswa di Politeknik Informatika

Nasional Makassar pada Jurusan Informatika Komputer / Manajemen Informatika


LAMPIRAN
LAMPIRAN
a. Controller (Web.php) $username = $this->input-
<?php >post('username');
defined('BASEPATH') OR $password = $this->input-
exit('No direct script access >post('password');
allowed');
$this->load-
class Web extends >model('m_login');
CI_Controller $data['login'] = $this-
{ >m_login-
>cek_login($username,$pass
function __construct() word);
{ if($this->m_login-
parent::__construct(); >cek_login($username,$pass
word))
//require_once('Proses.php'); {
//$this->Proses-
>ambil_data(); $session_data = array(
$this->load- 'username' => $username,
>library('form_validation'); 'password' => $password,
$this->load- 'status' => 'logged in'
>model('m_global'); );
$this->load-
>model('m_login'); $this->session-
>set_userdata($session_data
);
define('IS_TEST','FALSE');

} redirect(base_url().'web/admi
n');
function login()
{ }
$this->load->view('v_login'); else
} {

function validasi_login() $this->session-


{ >set_flashdata('error','Userna
me atau Password Salah');
$this->form_validation- redirect(base_url().'web');
>set_rules('username', }
'Username', }
'required|xss_clean'); else
$this->form_validation- {
>set_rules('password', $this->login();
'Password', }
'required|xss_clean'); }
if($this->form_validation-
>run()) function admin()
{ {
if($this->session- //redirect(base_url().'web');
>userdata('status') != '') }
{ }
$data['title']
= "Penjadwalan"; /*** configurasi table ***/
$data['subtitle'] //table matakuliah
= "Penjadwalan function tb_matakuliah()
Otomatis"; {
$data['user'] if($this->session-
= $this->session- >userdata('status') != '')
>userdata('username'); {
$data['class']
= "active-menu";
$data['tbl_matakuliah'] $data['class'] = "active-
= $this->db- menu";
>from("matakuliah")->get()- $data['user'] = $this-
>num_rows(); >session-
$data['tbl_dosen'] >userdata('username');
= $this->db- $data['title'] = "Table
>from("dosen")->get()- Matakuliah";
>num_rows();
$data['tbl_ruangan'] = $this- $data['isi'] = $this->m_global-
>db->from("ruang")->get()- >select('matakuliah','semeste
>num_rows(); r')->result();
$data['tbl_pengampu'] = $this- $data['table_title'] =
>db->from("pengampu")- "Matakuliah";
>get()->num_rows(); $data['last_login'] = $this->db-
$data['tbl_jam'] >query("SELECT
= $this->db- DATE_FORMAT(last_login,
>from("jam")->get()- '%d-%M-%Y %H:%i:%s')
>num_rows(); FROM login")->row();
$data['tbl_hari'] $data['msg'] = $this-
= $this->db- >session->flashdata('msg');
>from("hari")->get()- $data['msg'] = $this->session-
>num_rows(); >flashdata('msg');
$data['last_login'] = $this->db- $data['msg'] = $this->session-
>query("SELECT >flashdata('msg');
DATE_FORMAT(last_login, $this->load-
'%d-%M-%Y %H:%i:%s') >view('table/v_tbmakul',$data
FROM login")->row(); );

$this->load- }
>view('layout/v_admin',$data) else
; {
} echo "acces denied ";
else echo "<a
{ href='login'>Klik</a>";
echo "acces denied "; $this->session-
echo "<a >unset_userdata('status');
href='login'>Klik</a>";
$this->session- 'sks' =>
>sess_destroy(); $sks,
'semester' =>
} $semester,
} 'jenis_mk' =>
$kategori

function add_data_makul() );
{
if($simpan = $this->m_global-
$this->form_validation- >tambah($data,'matakuliah'))
>set_rules('kode_mk','Kode {
Matakuliah','required|trim|call $this->session-
back_valid_kd|xss_clean|min >set_flashdata('msg',"Data
_length[5]|max_length[7]'); Berhasil Ditambahkan");
$this->form_validation- redirect('web/tb_matakuliah');
>set_rules('nama_makul','Na }
ma }
Matakuliah','is_unique[matak else
uliah.nama_makul]|required|t {
rim|xss_clean'); $this->tb_matakuliah();
$this->form_validation- }
>set_rules('kategori','Kategori
','required|trim'); }
$this->form_validation-
>set_rules('sks','SKS','require function valid_kd($kode_mk)
d|trim|numeric'); {
$this->form_validation- if ($this->m_global-
>set_rules('semester','Semes >valid_kd($kode_mk) ==
ter','required|trim|numeric'); TRUE)
if($this->form_validation- {
>run()) $this->form_validation-
{ >set_message('valid_kd',
$kode_mk = $this- "Kode Matakuliah dengan
>input->post('kode_mk'); Kode $kode_mk sudah
$nama_makul = $this->input- terdaftar");
>post('nama_makul'); return FALSE;
$sks }
= $this->input- else
>post('sks'); {
$semester = $this->input- return TRUE;
>post('semester'); }
$kategori = $this->input- }
>post('kategori');
function
$data = array( del_dt_makul($kode_mk)
'kode_mk' => {
$kode_mk, $where = array('kode_mk' =>
'nama_makul' => $kode_mk);
$nama_makul,
$this->m_global-
>hapus_data($where,'matak );
uliah');
$this->session- $where = array('kode_mk' =>
>set_flashdata('msg',"Data $kode_mk);
Berhasil Dihapus");
redirect('web/tb_matakuliah'); $this->m_global-
} >updating($where,$data,'mat
akuliah');
$this->session-
function update_makul() >set_flashdata('msg',"Data
{ Berhasil Diupdate");
$this->form_validation- redirect('web/tb_matakuliah');
>set_rules('nama_makul','Na }
ma else
Matakuliah','required|trim|xss {
_clean'); $this->tb_matakuliah();
$this->form_validation- }
>set_rules('jenis_mk','Katego }
ri','required|trim');
$this->form_validation- //batas configurasi table
>set_rules('sks','SKS','require matakuliah
d|trim|numeric');
$this->form_validation- //table dosen
>set_rules('semester','Semes function tb_dosen()
ter','required|trim|numeric'); {
if($this->form_validation- if($this->session-
>run()) >userdata('status') != '')
{ {
$kode_mk = $this-
>input->post('kode_mk'); $data['class'] = "active-
$nama_makul = $this->input- menu";
>post('nama_makul'); $data['user'] = $this-
$sks >session-
= $this->input- >userdata('username');
>post('sks'); $data['title'] = "Table
$semester = $this->input- Dosen";
>post('semester'); $data['table_title'] = "Dosen";
$kategori = $this->input- $data['last_login'] = $this->db-
>post('jenis_mk'); >query("SELECT
DATE_FORMAT(last_login,
$data = array( '%d-%M-%Y %H:%i:%s')
'nama_makul' => FROM login")->row();
$nama_makul, $data['isi'] = $this->m_global-
'sks' => >tampil_data('dosen')-
$sks, >result();
'semester' => $data['msg'] = $this-
$semester, >session->flashdata('msg');
'jenis_mk' => $data['msg'] = $this->session-
$kategori >flashdata('msg');
$data['msg'] = $this->session- 'nidn' =>
>flashdata('msg'); $nidn,
'nama_dosen' =>
$this->load- $nama_dosen,
>view('table/v_tbdosen',$data 'alamat' =>
); $alamat,
'notelpon' =>
} $notelpon
else );
{
echo "acces denied "; if($this->m_global-
echo "<a >tambah($data,'dosen'))
href='login'>Klik</a>"; {
$this->session- $this->session-
>unset_userdata('status'); >set_flashdata('msg',"Data
$this->session- Berhasil Ditambahkan");
>sess_destroy(); redirect('web/tb_dosen');
} }
} }
else
function add_data_dosen() {
{ $this->tb_dosen();
}
$this->form_validation-
>set_rules('nidn','NIDN','requi }
red|trim|callback_valid_nidn|x
ss_clean|is_numeric|min_len function valid_nidn($nidn)
gth[10]|max_length[10]'); {
$this->form_validation- if ($this->m_global-
>set_rules('nama_dosen','Na >valid_nidn($nidn) == TRUE)
ma Dosen','required|trim'); {
$this->form_validation- $this->form_validation-
>set_rules('alamat','Alamat'); >set_message('valid_nidn',
$this->form_validation- "NIDN ".$nidn." sudah
>set_rules('notelpon','Telp'); terdaftar");
return FALSE;
if($this->form_validation- }
>run()) else
{ {
$nidn = $this->input- return TRUE;
>post('nidn'); }
$nama_dosen = $this->input- }
>post('nama_dosen');
$alamat = $this->input- function del_dt_dosen($nidn)
>post('alamat'); {
$notelpon = $this->input- $where = array('nidn' =>
>post('notelpon'); $nidn);
$this->m_global-
$data = array( >hapus_data($where,'dosen')
;
$this->session- }
>set_flashdata('msg',"Data else
Berhasil Dihapus"); {
redirect('web/tb_dosen'); echo validation_errors();
} }

function update_dosen() }
{
$this->form_validation-
>set_rules('nama_dosen','Na //batas configurasi table
ma Dosen','required|trim'); dosen
$this->form_validation-
>set_rules('alamat','Alamat'); //table jam
$this->form_validation- function tb_jam()
>set_rules('notelpon','Telp'); {
if($this->session-
if($this->form_validation- >userdata('status') != '')
>run()) {
{
$nidn = $this- $data['class'] = "active-
>input->post('nidn'); menu";
$nama_dosen = $this->input- $data['user'] = $this-
>post('nama_dosen'); >session-
$alamat = $this- >userdata('username');
>input->post('alamat'); $data['title'] = "Table Jam";
$notelpon = $this->input- $data['table_title'] = "Jam";
>post('notelpon'); $data['isi'] = $this->m_global-
>tampil_data('jam')->result();
$data['last_login'] = $this->db-
$data = array( >query("SELECT
'nama_dosen' => DATE_FORMAT(last_login,
$nama_dosen, '%d-%M-%Y %H:%i:%s')
'alamat' FROM login")->row();
=> $alamat, $data['msg'] = $this-
'notelpon' => >session->flashdata('msg');
$notelpon, $data['msg'] = $this->session-
>flashdata('msg');
); $data['msg'] = $this->session-
>flashdata('msg');
$where = array('nidn' =>
$nidn); $this->load-
>view('table/v_tb_jam',$data)
$this->m_global- ;
>updating($where,$data,'dos
en'); }
$this->session- else
>set_flashdata('msg',"Data {
Berhasil Diupdate"); echo "acces denied ";
redirect('web/tb_dosen');
echo "<a $waktu = $this->input-
href='login'>Klik</a>"; >post('waktu');
$this->session-
>unset_userdata('status'); $data = array(
$this->session- 'waktu' => $waktu
>sess_destroy(); );
$where = array('id_jam' =>
} $id_jam);
}
$this->m_global-
function add_data_jam() >updating($where,$data,'jam'
{ );
$this->form_validation- $this->session-
>set_rules('waktu','Interval >set_flashdata('msg',"Data
Waktu','required|trim'); Berhasil Diupdate");
redirect('web/tb_jam');
if($this->form_validation-
>run()) }else
{ {
$this->tb_jam();
$waktu = $this->input- }
>post('waktu'); }

$data = array( function del_dt_jam($id_jam)


'waktu' => $waktu {
); $where = array('id_jam' =>
$this->m_global- $id_jam);
>tambah($data,'jam'); $this->m_global-
$this->session- >hapus_data($where,'jam');
>set_flashdata('msg',"Data $this->session-
Berhasil Ditambahkan"); >set_flashdata('msg',"Data
redirect('web/tb_jam'); Berhasil Dihapus");
redirect('web/tb_jam');
}else }
{
$this->tb_jam();
}
} //batas configurasi table jam

function update_jam() //configurasi table ruangan


{ function tb_ruangan()
$this->form_validation- {
>set_rules('waktu','Interval if($this->session-
Waktu','required|trim'); >userdata('status') != '')
{
if($this->form_validation-
>run()) $data['class'] = "active-
{ menu";
$id_jam = $this->input-
>post('id_jam');
$data['user'] = $this-
>session-
>userdata('username'); if($this->form_validation-
$data['title'] = "Table >run())
Ruangan"; {
$data['table_title'] =
"Ruangan"; $nm_ruang = $this->input-
$data['isi'] = $this->m_global- >post('nm_ruang');
>tampil_data('ruang')- $jenis = $this->input-
>result(); >post('jenis');
$data['last_login'] = $this->db- $kapasitas = $this->input-
>query("SELECT >post('kapasitas');
DATE_FORMAT(last_login,
'%d-%M-%Y %H:%i:%s') $data = array(
FROM login")->row(); 'nm_ruang' =>
$data['msg'] = $this- $nm_ruang,
>session->flashdata('msg'); 'jenis' => $jenis,
$data['msg'] = $this->session- 'kapasitas' => $kapasitas
>flashdata('msg'); );
$data['msg'] = $this->session-
>flashdata('msg'); $this->m_global-
$this->load- >tambah($data,'ruang');
>view('table/v_tb_ruangan',$ $this->session-
data); >set_flashdata('msg',"Data
Berhasil Ditambahkan");
} redirect('web/tb_ruangan');
else
{ }else
echo "acces denied "; {
echo "<a $this->tb_ruangan();
href='login'>Klik</a>"; }
$this->session- }
>unset_userdata('status');
$this->session- function update_ruangan()
>sess_destroy(); {
$this->form_validation-
} >set_rules('nm_ruang','Nama
} Ruangan','required|trim');
$this->form_validation-
function add_data_ruangan() >set_rules('jenis','Jenis','requi
{ red|trim');
$this->form_validation- $this->form_validation-
>set_rules('nm_ruang','Nama >set_rules('kapasitas','Kapasi
Ruangan','required|trim'); tas','numeric');
$this->form_validation-
>set_rules('jenis','Jenis','requi
red|trim'); if($this->form_validation-
$this->form_validation- >run())
>set_rules('kapasitas','Kapasi {
tas','numeric');
$kd_ruang = $this->input- //configurasi table pengampu
>post('kd_ruang'); function tb_pengampu()
$nm_ruang = $this->input- {
>post('nm_ruang'); if($this->session-
$jenis = $this->input- >userdata('status') != '')
>post('jenis'); {
$kapasitas = $this->input-
>post('kapasitas'); $data['class'] = "active-
menu";
$data = array( $data['user'] = $this-
'nm_ruang' => >session-
$nm_ruang, >userdata('username');
'jenis' => $jenis, $data['title'] = "Table
'kapasitas' => $kapasitas Pengampu";
); $data['table_title'] =
"Pengampu";
$where = array('kd_ruang' => $data['show'] = $this-
$kd_ruang); >m_global-
$this->m_global- >join('pengampu','dosen','mat
>updating($where,$data,'rua akuliah')->result();
ng'); $data['last_login'] = $this->db-
$this->session- >query("SELECT
>set_flashdata('msg',"Data DATE_FORMAT(last_login,
Berhasil Diupdate"); '%d-%M-%Y %H:%i:%s')
redirect('web/tb_ruangan'); FROM login")->row();
$data['msg'] = $this-
}else >session->flashdata('msg');
{ $data['msg'] = $this->session-
$this->tb_ruangan(); >flashdata('msg');
} $data['msg'] = $this->session-
} >flashdata('msg');
$data['dt_dosen'] = $this-
function >m_global-
del_dt_ruangan($kd_ruang) >select('dosen','nama_dosen'
{ )->result();
$where = array('kd_ruang' => $data['dt_makul'] = $this-
$kd_ruang); >m_global-
$this->m_global- >select('matakuliah','nama_m
>hapus_data($where,'ruang') akul')->result();
; $this->load-
$this->session- >view('table/v_tb_pengampu'
>set_flashdata('msg',"Data ,$data);
Berhasil Dihapus");
redirect('web/tb_ruangan');
}

}
//batas configurasi table else
ruangan {
echo "acces denied ";
echo "<a 'tahun_akademik'=>
href='login'>Klik</a>"; $tahun_akademik
$this->session- );
>unset_userdata('status'); $this->m_global-
$this->session- >tambah($data,'pengampu');
>sess_destroy(); $this->session-
>set_flashdata('msg',"Data
} Berhasil Ditambahkan");
} redirect('web/tb_pengampu');
}
function else
add_data_pengampu() {
{ $this->tb_pengampu();
$this->form_validation- }
>set_rules('kode_mk','Matak }
uliah','required|trim');
$this->form_validation- function update_pengampu()
>set_rules('kd_dosen','Dosen {
','required|trim'); $this->form_validation-
$this->form_validation- >set_rules('kode_mk','Matak
>set_rules('nm_kelas','Kelas', uliah','required|trim');
'required|trim'); $this->form_validation-
$this->form_validation- >set_rules('kd_dosen','Dosen
>set_rules('tahun_akademik', ','required|trim');
'Tahun $this->form_validation-
Akademik','required|trim'); >set_rules('nm_kelas','Kelas',
'required|trim');
$this->form_validation-
>set_rules('tahun_akademik',
if($this->form_validation- 'Tahun
>run()) Akademik','required|trim');
{
$kode_mk = $this-
>input->post('kode_mk');
$kd_dosen = $this- if($this->form_validation-
>input->post('kd_dosen'); >run())
$nm_kelas = $this- {
>input->post('nm_kelas'); $kode
$tahun_akademik = $this- = $this->input-
>input- >post('kode');
>post('tahun_akademik'); $kode_mk
= $this->input-
$data = array( >post('kode_mk');
'kode_mk' => $kd_dosen
$kode_mk, = $this->input-
'kd_dosen' => >post('kd_dosen');
$kd_dosen, $nm_kelas
'nm_kelas' => = $this->input-
$nm_kelas, >post('nm_kelas');
$tahun_akademik = $this- if($this->session-
>input- >userdata('status') != '')
>post('tahun_akademik'); {

$data = array( $data['class'] = "active-


'kode_mk' menu";
=> $kode_mk, $data['user'] = $this-
'kd_dosen' >session-
=> $kd_dosen, >userdata('username');
'nm_kelas' $data['title'] = "Table Hari";
=> $nm_kelas, $data['table_title'] = "Hari";
'tahun_akademik'=> $data['isi'] = $this->m_global-
$tahun_akademik >tampil_data('hari')->result();
); $data['last_login'] = $this->db-
$where = array('kode_p' => >query("SELECT
$kode ); DATE_FORMAT(last_login,
$this->m_global- '%d-%M-%Y %H:%i:%s')
>updating($where,$data,'pen FROM login")->row();
gampu'); $data['msg'] = $this-
$this->session- >session->flashdata('msg');
>set_flashdata('msg',"Data $data['msg'] = $this->session-
Berhasil Diupdate"); >flashdata('msg');
redirect('web/tb_pengampu'); $data['msg'] = $this->session-
} >flashdata('msg');
else
{ $this->load-
$this->tb_pengampu(); >view('table/v_tb_hari',$data)
} ;
}
}
function else
del_dt_pengampu($kode_p) {
{ echo "acces denied ";
$where = array('kode_p' => echo "<a
$kode_p); href='login'>Klik</a>";
$this->m_global- $this->session-
>hapus_data($where,'penga >unset_userdata('status');
mpu'); $this->session-
$this->session- >sess_destroy();
>set_flashdata('msg',"Data
Berhasil Dihapus"); }
redirect('web/tb_pengampu'); }
}
//batas configurasi table function add_data_hari()
pengampu {
$this->form_validation-
//configurasi table hari >set_rules('nama_hari','Nam
function tb_hari() a Hari','required|trim');
{
if($this->form_validation- $this->tb_hari();
>run()) }
{ }
$nama_hari = $this->input-
>post('nama_hari'); function
del_dt_hari($kd_hari)
$data = array('nm_hari' => {
$nama_hari); $where =
$this->m_global- array('kd_hari' => $kd_hari);
>tambah($data,'hari');
$this->session- $this->m_global-
>set_flashdata('msg',"Data >hapus_data($where,'hari');
Berhasil Ditambahkan"); $this->session-
redirect('web/tb_hari'); >set_flashdata('msg',"Data
} Berhasil Dihapus");
else redirect('web/tb_hari');
{ }
$this->tb_hari();
}
} //batas configurasi table hari

function update_hari() /***penjadwalan***/


{ function jadwal()
$this->form_validation- {
>set_rules('nama_hari','Nam
a Hari','required|trim'); $this->load-
>controller('Proses');
if($this->form_validation- if($this->session-
>run()) >userdata('status') != '')
{ {
$kd_hari = $this->input-
>post('kd_hari'); if(!empty($_POST))
$nama_hari = $this->input- {
>post('nama_hari'); $this->form_validation-
>set_rules('semester','Semes
$data = array('nm_hari' => ter','required|xss_clean');
$nama_hari); $this->form_validation-
>set_rules('tahun_akademik',
$where = 'Tahun
array('kd_hari' => $kd_hari); Akademik','required|xss_clea
$this->m_global- n');
>updating($where,$data,'hari' $this->form_validation-
); >set_rules('jumlah_populasi','
$this->session- Jumlah
>set_flashdata('msg',"Data Populasi','required|xss_clean'
Berhasil Diupdate"); );
redirect('web/tb_hari'); $this->form_validation-
} >set_rules('probabilitas_cros
else sover','Probabilitas
{
Crossover','required|xss_clea $s_data = $this->db-
n'); >query("SELECT a.kode_p,"
$this->form_validation- ." b.sks,"
>set_rules('probabilitas_muta ." a.kd_dosen,"
si','Probabilitas ." b.jenis_mk "
Mutasi','required|xss_clean'); . "FROM pengampu a "
$this->form_validation- . "JOIN matakuliah b "
>set_rules('jumlah_generasi', . "ON a.kode_mk = b.kode "
'Jumlah . "WHERE b.semester%2 =
Generasi','required|numeric|x $semester "
ss_clean'); ." AND a.tahun_akademik
= '$tahun_akademik'");
if($this->form_validation-
>run()) if($s_data->num_rows() == 0)
{ {
$semester echo "Jadwal Belum di
= $this->input- Update";
>post('semester'); }
$tahun_akademik else
= $this->input- {
>post('tahun_akademik'); $proses = new
$populasi Proses($semester,
= $this->input- $tahun_akademik,
>post('jumlah_populasi'); $populasi,
$crossOver $crossOver,
= $this->input- $mutasi);
>post('probabilitas_crossover
'); $proses->ambil_data();
$mutasi $proses->nilai_awal();
= $this->input-
>post('probabilitas_mutasi'); $found = FALSE;
$generasi
= $this->input- for($i=0; $i < $generasi; $i++
>post('jumlah_generasi'); )
{
$data['semester'] $fitness = $proses-
= $semester; >Hitung_fitness();
$data['tahun_akademik'] $proses->seleksi($fitness);
= $proses->Crossover();
$tahun_akademik;
$data['jumlah_populasi'] $fitness_setelah_mutasi =
= $populasi; $proses->mutasi();
$data['probabilitas_crossover
'] = $crossOver; for($j=0; $j <
$data['probabilitas_mutasi'] count($fitness_setelah_muta
= $mutasi; si); $j++)
$data['jumlah_generasi'] {
= $generasi; if($fitness_setelah_mutasi[$j]
== 1)
{
$this->db-
>query("TRUNCATE TABLE }
jadwal");

$jadwal_kuliah = $data['class'] = "active-


array(array()); menu";
$jadwal_kuliah = $proses- $data['user'] = $this-
>individu_solusi($j); >session-
>userdata('username');
for($k = 0; $k < $data['title'] = "Jadwal
count($jadwal_kuliah); $k++) Matakuliah";
{ $data['show'] = $this-
$k_pengampu = >m_global->penjadwalan()-
intval($jadwal_kuliah[$k][0]); >result();
$k_jam $data['last_login'] = $this->db-
= >query("SELECT
intval($jadwal_kuliah[$k][1]); DATE_FORMAT(last_login,
$k_hari = '%d-%M-%Y %H:%i:%s')
intval($jadwal_kuliah[$k][2]); FROM login")->row();
$k_ruang = $data['msg'] = $this-
intval($jadwal_kuliah[$k][3]); >session->flashdata('msg');
$data = array('kode_p' => $data['msg'] = $this->session-
$k_pengampu, >flashdata('msg');
'id_jam' => $k_jam, $data['msg'] = $this->session-
'kd_hari' => $k_hari, >flashdata('msg');
'kd_ruang' => $k_ruang); $data['table_title'] = "Jadwal
$this->m_global- Mata Kuliah";
>tambah($data,'jadwal'); $data['pengampu'] = $this-
>m_global-
} >select_group('pengampu','ta
$found = TRUE; hun_akademik')->result();
} $data['dt_makul'] = $this-
if($found){break;} >m_global-
} >select_group('matakuliah','s
if($found){break;} emester')->result();
} $this->load-
if(!$found) >view('table/jadwal_makul',$
{ data);
$data['info'] = "Tidak }
ditemukan solusi optimal"; else
} {
echo "acces denied ";
} echo "<a
href='login'>Klik</a>";
}
else }
{ }
$data['validasi'] =
validation_errors();
}
/*** batas configurasi table class Proses extends
***/ CI_Controller
{
public function export_excel() private $individu =
{ array(array(array()));
$data = array('title' => 'Jadwal private $pengampu = array();
Mata Kuliah', private $ruangan = array();
'jd' => $this->m_global- private $hari = array();
>penjadwalan()->result() private $jam = array();
); private $dosen = array();
$this->load-
>view('report',$data); private $semester;
} private $tahun_akademik;
private $populasi;
private $crossOver;
function logout()
{
private $induk = array();
date_default_timezone_set(' private $kw_silang;
Asia/Jakarta'); private $mutasi;
$log = date("Y-m-d
H:i:s",time()+(60 * 60)); function
$name = ucwords($this- __construct($semester,
>session- $tahun_akademik, $populasi,
>userdata('username')); $crossOver, $mutasi)
if($this->db->query("UPDATE {
login SET last_login='$log' parent::__construct();
WHERE
username='$name'")) $this->semester = $semester;
{ $this->tahun_akademik =
$tahun_akademik;
$this->session- $this->populasi =
>unset_userdata('status'); intval($populasi);
$this->session- $this->crossOver =
>sess_destroy(); $crossOver;
redirect(base_url()); $this->mutasi = $mutasi;
}

}
}
} public function ambil_data()
{
b. Controller (Proses.php)
<?php $s_data = $this->db-
defined('BASEPATH') OR >query("SELECT a.kode_p,"
exit('No direct script access ." b.sks,"
allowed'); ." a.kd_dosen,"
//include_once(dirname(__FI ." b.jenis_mk "
LE__)."/Web.php"); . "FROM pengampu a "
. "JOIN matakuliah b "
. "ON a.kode_mk = b.kode " $s_data = $this->db-
. "WHERE b.semester%2 = >query("SELECT kd_hari
$this->semester" FROM hari");
." AND a.tahun_akademik $i = 0;
= '$this->tahun_akademik'"); foreach ($s_data->result() as
$datax)
{
//$s_data = $this->db- $this->hari[$i] = intval($datax-
>query("SELECT kode_p >kd_hari);
FROM pengampu");
$i = 0; $i++;
foreach ($s_data->result() as }
$datax)
{
$this->pengampu[$i] = $s_data = $this->db-
intval($datax->kode_p); >query("SELECT kd_ruang
$this->dosen[$i] = FROM ruang");
intval($datax->kd_dosen); $i = 0;
$i++; foreach ($s_data->result() as
} $datax)
{
// $s_data = $this->db- $this->ruangan[$i] =
>query("SELECT kd_dosen intval($datax->kd_ruang);
FROM dosen");
// $i = 0; $i++;
// // foreach ($s_data->result() }
as $datax)
// // { }
// // $this->dosen[$i] =
intval($datax->kd_dosen); public function nilai_awal()
// // {
// // $i++; $j_pengampu = count($this-
// // } >pengampu);
// // echo $this->pengampu[$i] $j_ruangan = count($this-
= intval($datax->kode_p); >ruangan);
$j_jam = count($this->jam);
$s_data = $this->db- $j_hari = count($this->hari);
>query("SELECT id_jam
FROM jam ");
$i = 0; for ($i=0; $i < $this->populasi;
foreach ($s_data->result() as $i++)
$datax) {
{ for ($j=0; $j < $j_pengampu;
$this->jam[$i] = intval($datax- $j++)
>id_jam); {
$this->individu[$i][$j][0] = $j;
$i++; $this->individu [$i][$j][1] =
} mt_rand(0, $j_jam - 1);
$this->individu [$i][$j][2] =
mt_rand(0, $j_hari - 1);
$this->individu [$i][$j][3] = if($jam_a == $jam_b &&
mt_rand(0, $j_ruangan - 1); $hari_a == $hari_b &&
} $ruang_a == $ruang_b)
} {
$xentrok += 1;
}
// $data['nilai'] = $this-
>individu; }
// $this->load- }
>view('tes',$data);
} $fitness = floatval(1 / (1 +
$xentrok));
function Cek_fitness($indv)
{ return $fitness;

//$this->nilai_awal();
$xentrok = 0; }

public function
$j_pengampu = count($this- Hitung_fitness()
>pengampu); {

for ($i=0; $i < $j_pengampu; $fitness = array();


$i++) for ($indv = 0; $indv < $this-
{ >populasi; $indv++)
$jam_a = intval($this- {
>individu[$indv][$i][1]); $fitness[$indv] = $this-
$hari_a = intval($this- >Cek_fitness($indv);
>individu[$indv][$i][2]); }
$ruang_a = intval($this- return $fitness;
>individu[$indv][$i][3]); }
$dosen_a = intval($this-
>dosen[$i]); public function
seleksi($fitness)
for ($j=0; $j < $j_pengampu; {
$j++)
{ //$fitness = $this-
$jam_b = intval($this- >Hitung_fitness();
>individu[$indv][$j][1]); $jumlah = 0;
$hari_b = intval($this- $rank = array();
>individu[$indv][$j][2]);
$ruang_b = intval($this- for ($i=0; $i < $this->populasi;
>individu[$indv][$j][3]); $i++)
$dosen_b = intval($this- {
>dosen[$j]); $rank[$i] = 1;

if ($i == $j) for ($j=0; $j < $this->populasi;


{continue;} $j++)
{
$fitness_A = $j_pengampu = count($this-
floatval($fitness[$i]); >pengampu);
$fitness_B =
floatval($fitness[$j]); for($i=0; $i < $this->populasi;
$i += 2)
if ($fitness_A > $fitness_B) {
{ $x = 0;
$rank[$i] += 1;
} $cr = mt_rand(0,
mt_getrandmax()-
} 1)/mt_getrandmax();

$jumlah += $rank[$i]; if(floatval($cr) < floatval($this-


} >kw_silang))
{
//echo $jumlah; $a = mt_rand(0,
$jumlah_rank = count($rank); $j_pengampu - 2);
for ($i=0; $i < $this->populasi; while ($x <= $a)
$i++) {
{ $a = mt_rand(0,
$target = mt_rand(0, $jumlah $j_pengampu - 1);
- 1); }

$cek = 0; for($j=0;$j<$a;$j++)
for ($j=0; $j < $jumlah_rank; {
$j++) for($k=0;$k < 4; $k++)
{ {
$cek += $rank[$i]; $individu_baru[$i][$j][$k] =
$this->individu[$this-
if(intval($cek) >= >induk[$i]][$j][$k];
intval($target)) $individu_baru[$i+1][$j][$k] =
{ $this->individu[$this-
$this->induk[$i] = $j; >induk[$i+1]][$j][$k];
break; }
} }

} for($j=0; $a < $x ; $j++)


} {
for($k=0; $k < 4; $k++)
// $data['nilai'] = $this->induk; {
// $this->load- $individu_baru[$i][$j][$k] =
>view('tes',$data); $this->individu[$this-
>induk[$i+1]][$j][$k];
} $individu_baru[$i+1][$j][$k] =
$this->individu[$this-
public function Crossover() >induk[$i]][$j][$k];
{ }
$individu_baru = }
array(array(array()));
for($j=$x; $j < $j_pengampu; $individu_baru[$i+1][$j][$k] =
$j++) $this->individu[$this-
{ >induk[$i+1]][$j][$k];
for($k=0; $k < 4; $k++) }
{ }
$individu_baru[$i][$j][$k] = }
$this->individu[$this-
>induk[$i]][$j][$k]; //$data['nilai'] =
$individu_baru[$i+1][$j][$k] = $individu_baru;
$this->individu[$this- //$this->load-
>induk[$i+1]][$j][$k]; >view('tes',$data);
}
}
}
}
else public function mutasi()
{ {
for($j=0;$j<$j_pengampu;$j+ $fitness = array();
+)
{ $r = mt_rand(0,
for($k=0;$k < 4; $k++) mt_getrandmax() - 1) /
{ mt_getrandmax();
$individu_baru[$i][$j][$k] =
$this->individu[$this-
>induk[$i]][$j][$k];
$individu_baru[$i+1][$j][$k] = $j_pengampu = count($this-
$this->individu[$this- >pengampu);
>induk[$i+1]][$j][$k]; $j_jam = count($this->jam);
} $j_hari = count($this->hari);
} $j_ruangan = count($this-
>ruangan);
}
for($i=0; $i < $this->populasi;
} $i++)
{
$j_pengampu = count($this-
>pengampu); if($r < $this->mutasi)
{
for($i=0; $i < $this->populasi; $krm = mt_rand(0,
$i += 2) $j_pengampu - 1);
{ $this->individu[$i][$krm][1] =
for($j=0; $j < $j_pengampu; mt_rand(0, $j_jam - 1);
$j++) $this->individu[$i][$krm][2] =
{ mt_rand(0, $j_hari - 1);
for($k=0; $k < 4; $k++) $this->individu[$i][$krm][3] =
{ mt_rand(0, $j_ruangan - 1);
$individu_baru[$i][$j][$k] =
$this->individu[$this- }
>induk[$i]][$j][$k];
$fitness[$i] = $this- [0] => Array
>Cek_fitness($i);
(
} [0] => Array
// $data['nilai'] = $this- (
>individu;
// $this->load- [0] => 0
>view('tes',$data);
[1] => 0
return $fitness; [2] => 4
}
[3] => 7
public function
individu_solusi($indv) )
{
$individu = array(array());
[1] => Array
for($j = 0; $j < count($this-
>pengampu); $j++) (
{
[0] => 1
$individu[$j][0] = intval($this-
>pengampu[$this- [1] => 1
>individu[$indv][$j][0]]);
$individu[$j][1] = intval($this- [2] => 3
>jam[$this-
>individu[$indv][$j][1]]); [3] => 2
$individu[$j][2] = intval($this- )
>hari[$this-
>individu[$indv][$j][2]]);

$individu[$j][3] = intval($this- [2] => Array


>ruangan[$this-
(
>individu[$indv][$j][3]]);
} [0] => 2

// $data['nilai'] = $individu; [1] => 0


// $this->load-
>view('tes',$data); [2] => 4
[3] => 5
return $individu;
)
}

}
[3] => Array
c. Olah Data Inisialisasi
(
Array
[0] => 3
(
[1] => 0
[2] => 0 [1] => Array
[3] => 3 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 1
[0] => 4 [2] => 0
[1] => 0 [3] => 7
[2] => 1 )
[3] => 4
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 0
[0] => 5 [2] => 2
[1] => 3 [3] => 3
[2] => 4 )
[3] => 2
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 3
[0] => 6 [2] => 0
[1] => 0 [3] => 3
[2] => 3 )
[3] => 6
) [3] => Array
(
) [0] => 3
[1] => 1
[2] => 0 [2] => Array
[3] => 3 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 3
[0] => 4 [2] => 3
[1] => 2 [3] => 6
[2] => 1 )
[3] => 4
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 1
[0] => 5 [2] => 3
[1] => 3 [3] => 3
[2] => 2 )
[3] => 3
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 0
[0] => 6 [2] => 2
[1] => 0 [3] => 5
[2] => 3 )
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 2
[2] => 3 [3] => Array
[3] => 4 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 1
[0] => 4 [2] => 3
[1] => 1 [3] => 6
[2] => 2 )
[3] => 3
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 1
[0] => 5 [2] => 3
[1] => 3 [3] => 2
[2] => 1 )
[3] => 5
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 2
[0] => 6 [2] => 4
[1] => 2 [3] => 3
[2] => 3 )
[3] => 6
) [3] => Array
(
) [0] => 3
[1] => 0
[2] => 2 [4] => Array
[3] => 4 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 0
[0] => 4 [2] => 2
[1] => 3 [3] => 6
[2] => 3 )
[3] => 3
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 0
[0] => 5 [2] => 3
[1] => 3 [3] => 4
[2] => 1 )
[3] => 5
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 2
[0] => 6 [2] => 0
[1] => 3 [3] => 4
[2] => 4 )
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 2
[2] => 4 [5] => Array
[3] => 4 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 3
[0] => 4 [2] => 1
[1] => 2 [3] => 6
[2] => 2 )
[3] => 2
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 0
[0] => 5 [2] => 4
[1] => 0 [3] => 5
[2] => 0 )
[3] => 2
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 0
[0] => 6 [2] => 3
[1] => 1 [3] => 3
[2] => 4 )
[3] => 6
) [3] => Array
(
) [0] => 3
[1] => 2
[2] => 0 [6] => Array
[3] => 4 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 0
[0] => 4 [2] => 1
[1] => 2 [3] => 1
[2] => 1 )
[3] => 5
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 0
[0] => 5 [2] => 2
[1] => 2 [3] => 4
[2] => 0 )
[3] => 4
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 0
[0] => 6 [2] => 1
[1] => 2 [3] => 4
[2] => 4 )
[3] => 7
) [3] => Array
(
) [0] => 3
[1] => 0
[2] => 1 [7] => Array
[3] => 3 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 3
[0] => 4 [2] => 0
[1] => 1 [3] => 7
[2] => 0 )
[3] => 3
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 0
[0] => 5 [2] => 3
[1] => 3 [3] => 5
[2] => 2 )
[3] => 5
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 0
[0] => 6 [2] => 0
[1] => 1 [3] => 4
[2] => 4 )
[3] => 7
) [3] => Array
(
) [0] => 3
[1] => 1
[2] => 4 [8] => Array
[3] => 4 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 3
[0] => 4 [2] => 4
[1] => 2 [3] => 6
[2] => 4 )
[3] => 3
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 1
[0] => 5 [2] => 4
[1] => 1 [3] => 4
[2] => 2 )
[3] => 3
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 2
[0] => 6 [2] => 1
[1] => 3 [3] => 2
[2] => 3 )
[3] => 6
) [3] => Array
(
) [0] => 3
[1] => 1
[2] => 2 [9] => Array
[3] => 2 (
) [0] => Array
(
[4] => Array [0] => 0
( [1] => 2
[0] => 4 [2] => 0
[1] => 0 [3] => 7
[2] => 4 )
[3] => 2
) [1] => Array
(
[5] => Array [0] => 1
( [1] => 1
[0] => 5 [2] => 4
[1] => 2 [3] => 4
[2] => 0 )
[3] => 5
) [2] => Array
(
[6] => Array [0] => 2
( [1] => 0
[0] => 6 [2] => 0
[1] => 1 [3] => 4
[2] => 2 )
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 2
[2] => 4 )
[3] => 4 d. Olah Data Fitness
) [0] => 0.5
[1] =>
[4] => Array 0.33333333333333

( [2] => 0.5

[0] => 4 [3] => 1

[1] => 0 [4] => 0.5

[2] => 2 [5] =>


0.33333333333333
[3] => 3
[6] =>
) 0.33333333333333
[7] => 1
[5] => Array [8] =>
( 0.33333333333333

[0] => 5 [9] => 1

[1] => 1 e. Olah Data Seleksi

[2] => 1 [0] => 8


[3] => 5 [1] => 7

) [3] => 5
[4] => 7
[6] => Array [5] => 3
( [6] => 5
[0] => 6 [8] => 3

[1] => 2 [9] => 3


[2] => 0
[3] => 6
)

)
f. Olah Data Mutasi [3] => Array

Array (

( [0] => 3

[0] => Array [1] => 3

( [2] => 3

[0] => Array [3] => 5

( )

[0] => 0
[1] => 0 [4] => Array

[2] => 0 (

[3] => 7 [0] => 4

) [1] => 2
[2] => 2

[1] => Array [3] => 4

( )

[0] => 1
[1] => 0 [5] => Array

[2] => 4 (

[3] => 3 [0] => 5

) [1] => 3
[2] => 2

[2] => Array [3] => 5

( )

[0] => 2
[1] => 3 [6] => Array

[2] => 4 (

[3] => 4 [0] => 6

) [1] => 2
[2] => 1
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 0
[1] => Array [2] => 0
( [3] => 2
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 0 (
[2] => 2 [0] => 4
[3] => 6 [1] => 0
) [2] => 0
[3] => 2
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 0 [0] => 5
[3] => 5 [1] => 2
) [2] => 0
[3] => 3
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 0 (
[2] => 2 [0] => 6
[3] => 3 [1] => 3
) [2] => 4
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 0
[2] => Array [2] => 1
( [3] => 3
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 3 (
[2] => 4 [0] => 4
[3] => 6 [1] => 3
) [2] => 2
[3] => 5
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 4 [0] => 5
[3] => 2 [1] => 1
) [2] => 2
[3] => 2
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 0 (
[2] => 0 [0] => 6
[3] => 2 [1] => 3
) [2] => 0
[3] => 6
) [3] => Array
(
) [0] => 3
[1] => 1
[3] => Array [2] => 0
( [3] => 3
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 2 (
[2] => 0 [0] => 4
[3] => 7 [1] => 0
) [2] => 2
[3] => 4
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 3 [0] => 5
[3] => 3 [1] => 1
) [2] => 4
[3] => 3
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 0 (
[2] => 0 [0] => 6
[3] => 3 [1] => 3
) [2] => 0
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 0
[4] => Array [2] => 0
( [3] => 4
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 0 (
[2] => 0 [0] => 4
[3] => 7 [1] => 3
) [2] => 0
[3] => 4
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 2 [0] => 5
[3] => 4 [1] => 0
) [2] => 1
[3] => 2
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 3 (
[2] => 2 [0] => 6
[3] => 2 [1] => 3
) [2] => 2
[3] => 6
) [3] => Array
(
) [0] => 3
[1] => 1
[5] => Array [2] => 1
( [3] => 5
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 0 (
[2] => 4 [0] => 4
[3] => 6 [1] => 2
) [2] => 2
[3] => 5
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 1 (
[2] => 4 [0] => 5
[3] => 2 [1] => 2
) [2] => 3
[3] => 4
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 0 (
[2] => 1 [0] => 6
[3] => 3 [1] => 1
) [2] => 3
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 2
[6] => Array [2] => 1
( [3] => 5
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 0 (
[2] => 0 [0] => 4
[3] => 1 [1] => 2
) [2] => 4
[3] => 5
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 4 [0] => 5
[3] => 4 [1] => 0
) [2] => 0
[3] => 2
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 1 (
[2] => 4 [0] => 6
[3] => 2 [1] => 1
) [2] => 3
[3] => 7
) [3] => Array
(
) [0] => 3
[1] => 0
[7] => Array [2] => 4
( [3] => 5
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 0 (
[2] => 4 [0] => 4
[3] => 6 [1] => 2
) [2] => 2
[3] => 5
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 1 (
[2] => 3 [0] => 5
[3] => 5 [1] => 0
) [2] => 2
[3] => 4
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 0 (
[2] => 2 [0] => 6
[3] => 5 [1] => 3
) [2] => 4
[3] => 1
) [3] => Array
(
) [0] => 3
[1] => 3
[8] => Array [2] => 2
( [3] => 5
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 3 (
[2] => 0 [0] => 4
[3] => 7 [1] => 3
) [2] => 2
[3] => 3
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 4 [0] => 5
[3] => 2 [1] => 1
) [2] => 0
[3] => 2
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 3 (
[2] => 4 [0] => 6
[3] => 2 [1] => 1
) [2] => 4
[3] => 7
) [3] => Array
(
) [0] => 3
[1] => 2
[9] => Array [2] => 4
( [3] => 5
[0] => Array )
(
[0] => 0 [4] => Array
[1] => 1 (
[2] => 3 [0] => 4
[3] => 1 [1] => 3
) [2] => 0
[3] => 3
[1] => Array )
(
[0] => 1 [5] => Array
[1] => 0 (
[2] => 0 [0] => 5
[3] => 5 [1] => 0
) [2] => 1
[3] => 5
[2] => Array )
(
[0] => 2 [6] => Array
[1] => 1 (
[2] => 3 [0] => 6
[3] => 3 [1] => 3
) [2] => 2
[3] => 6
)

Anda mungkin juga menyukai