Bab IV Implementasi Sistem

dokumen-dokumen yang mirip
Bab III Metode Perancangan Sistem

BAB 4 HASIL DAN PEMBAHASAN

BAB 3 PERANCANGAN PROGRAM. dari OOP (Object Oriented Programming) di mana dalam prosesnya, hal-hal

1. Pendahuluan 1.1. Latar Belakang

BAB III ANALISA MASALAH DAN RANCANGAN PROGRAM

BAB IV HASIL DAN PEMBAHASAN

Bab Hasil Pembuatan Aplikasi

BAB IV TESTING DAN IMPLEMENTASI

BAB I PENDAHULUAN 1.1. Latar Belakang

GENERATOR TEKA TEKI SILANG MENGGUNAKAN ALGORITMA GENETIKA DAN MULTITHREADING UNTUK MENGHITUNG FITNESSNYA

ABSTRAK. Kata kunci : Aplikasi, Penjadwalan, Algoritma Genetika. viii

BAB IV IMPLEMENTASI DAN EVALUASI SISTEM

BAB 3 PERANCANGAN PROGRAM

SISTEM PENJADWALAN KERETA API PADA JADWAL KERETA API SEMARANG - JAKARTA

BAB 3 ANALISIS DAN PERANCANGAN APLIKASI

PENGEMBANGAN APLIKASI PENJADWALAN KULIAH SEMESTER I MENGGUNAKAN ALGORITMA GENETIKA

BAB III KONSEP DAN PERANCANGAN APLIKASI

Bab 4 Hasil dan Pembahasan

BAB 2 DASAR TEORI. 2.1 Teka-Teki Silang

Implementasi Algoritma Genetika dalam Pembuatan Jadwal Kuliah

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab Implementasi Sistem

BAB III ANALISIS DAN PERANCANGAN SISTEM. Analisis sistem dilakukan untuk memperoleh definisi permasalahan dan

BAB IV HASIL DAN PEMBAHASAN

BAB III. Metode Penelitian

BAB III METODOLOGI PENELITIAN

OTOMASI PENJADWALAN KEGIATAN PRKULIAHAN DI PERGURUAN TINGGI MENGGUNAKAN METODE ALGORITMA GENETIKA ( STUDI KASUS STIKI )

Genetic Algorithme. Perbedaan GA

BAB III PERANCANGAN. Gambar 3.1 di bawah ini mengilustrasikan jalur pada TSP kurva terbuka jika jumlah node ada 10:

BAB IV HASIL DAN UJI COBA

PEMAMPATAN MATRIKS JARANG DENGAN METODE ALGORITMA GENETIKA MENGGUNAKAN PROGRAM PASCAL

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB III METODE PENELITIAN. melakukan survey dengan kuisioner mencari informasi dari media yang

BAB III METODE PENELITIAN

BAB 4 IMPLEMENTASI DAN EVALUASI

BAB 4 IMPLEMENTASI DAN EVALUASI. Berikut ini merupakan spesifikasi perangkat keras dan perangkat lunak yang

Optimasi Penjadwalan Ujian Menggunakan Algoritma Genetika

1. Pendahuluan Selama ini penjadwalan pelajaran hampir di semua sekolah yang meliputi jadwal mata pelajaran dan pembagian guru di setiap kelas yang

Keywords Algoritma, Genetika, Penjadwalan I. PENDAHULUAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

2.16. Keaslian Penelitian BAB III ANALISIS DAN PERANCANGAN Analisa sistem Observasi Wawancara

Oleh : SUPRIYONO

BAB IV PEMBUATAN DAN PENGUJIAN

BAB IV HASIL DAN UJI COBA

BAB I PENDAHULUAN. media penyimpanan data yang memiliki ukuran hingga ratusan gigabyte bahkan

Implementasi Sistem Penjadwalan Akademik Fakultas Teknik Universitas Tanjungpura Menggunakan Metode Algoritma Genetika

BAB III ALGORITMA MEMETIKA DALAM MEMPREDIKSI KURS VALUTA ASING. Untuk memberikan penjelasan mengenai prediksi valuta asing

Perancangan Sistem Penjadwalan Asisten Dosen Menggunakan Algoritma Genetika (Studi Kasus: STIKOM Bali)

TAKARIR. algorithm algoritma/ kumpulan perintah untuk menyelesaikan suatu masalah. kesalahan program

IMPLEMENTASI DAN PENGUJIAN

PERANCANGAN DAN PEMBUATAN APLIKASI OPTIMASI PENYUSUNAN IKLAN GAMBAR DENGAN ALGORITMA GENETIKA ABSTRAK

BAB IV HASIL DAN PEMBAHASAN

BAB IV HASIL DAN UJI COBA

BAB IV IMPLEMENTASI DAN PENGUJIAN. Setelah melakukan tahap analisis dan perancangan sistem selesai di

BAB II LANDASAN TEORI

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB 3 PERANCANGAN PROGRAM. Waterfall Model. Hasil analisis yang telah dilakukan adalah sebagai berikut : operasi yang paling banyak digunakan.

BAB IV HASIL DAN UJI COBA

Koneksi Sederhana Database dengan C# (Lihat, Tambah, dan Hapus Data)

BAB I PENDAHULUAN. sejumlah aktivitas kuliah dan batasan mata kuliah ke dalam slot ruang dan waktu

BAB I PENDAHULUAN. hampir di seluruh dunia, termasuk Indonesia. Alat transportasi ini memiliki

OPTIMASI PENJADWALAN KEGIATAN BELAJAR MENGAJAR DENGAN ALGORITMA GENETIK

Bab 4. Hasil dan Pembahasan

APLIKASI UNTUK PREDIKSI JUMLAH MAHASISWA PENGAMBIL MATAKULIAH DENGAN MENGGUNAKAN ALGORITMA GENETIKA, STUDI KASUS DI JURUSAN TEKNIK INFORMATIKA ITS

BAB IV IMPLEMENTASI DAN PENGUJIAN

Aplikasi Algoritma Genetika Untuk Menyelesaikan Travelling Salesman Problem (TSP)

Bab 4 Hasil dan Pembahasan

PERANCANGAN DAN IMPLEMENTASI PERANGKAT LUNAK VISUALISASI DUA DIMENSI WELL PRODUCTION FORECASTING DENGAN GENETIC ALGORITHM

Bab 4 Hasil dan Pembahasan

BAB 2 LANDASAN TEORI

Bab 4 Hasil dan Pembahasan

PERANCANGAN TATA LETAK FASILITAS BAGIAN PRODUKSI MENGGUNAKAN METODE ALGORITMA GENETIK DI PT. PUTRA SEJAHTERA MANDIRI

OPTIMASI PENJADWALAN BIMBINGAN BELAJAR MENGGUNAKAN METODE ALGORITMA GENETIKA

Berikut merupakan prosedur penggunaan pada non-login :

BAB 4 IMPLEMENTASI DAN EVALUASI. genetik yang dibuat. Dalam mengimplementasi program aplikasi diperlukan syarat

BAB 1 PENDAHULUAN 1-1. Peringkat, diambil dari ~ jurutera/seminar/azmi.html tanggal 22 Januari 2003.

BAB V IMPLEMENTASI DAN PENGUJIAN. harus dijalankan diantaranya adalah: hal-hal yang harus dipersiapkan adalah sebagai berikut:

BAB IV HASIL DAN UJI COBA

BAB 1 PENDAHULUAN 1.1 LATAR BELAKANG

PENERAPAN ALGORITMA GENETIK UNTUK OPTIMASI POLA PENYUSUNAN BARANG DALAM RUANG TIGA DIMENSI ABSTRAK

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

BAB IV IMPLEMENTASI DAN EVALUASI

BAB IV HASIL DAN UJICOBA

Dasar Pemrograman. Kondisi dan Perulangan. By : Hendri Sopryadi, S.Kom, M.T.I

BAB III METODE DAN PERANCANGAN. Tahap iniakan mencari dan memahami bahan-bahan pustaka seperti jurnal, buku, dan

Jika login gagal, maka akan ditampilkan informasi bahwa ID Operator atau Password yang dinputkan salah

ABSTRAK. Universitas Kristen Maranatha

3.2.3 Resiko, Keuntungan dan Kerugian Forex Metode Prediksi dalam Forex MetaTrader 4 sebagai Platform Trading dalam Forex...

Perulangan, Percabangan, dan Studi Kasus

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB V IMPLEMENTASI SISTEM. tersebut siap diterapkan atau diimplementasikan. Tahap Implementasi Sistem

BAB 3 ANALISIS DAN PERANCANGAN

BAB IV HASIL DAN UJI COBA

Serealia, umbi, dan hasil olahannya Kacang-kacangan, bijibijian,

BAB V IMPLEMENTASI SISTEM

BAB IV HASIL DAN UJI COBA

BAB III METODE DAN PERANCANGAN SISTEM. menggunakan referensi jurnal, e-book, dan artikel terkait.

BAB 3 ANALISIS DAN PERANCANGAN

Transkripsi:

37 Bab IV Implementasi Sistem Implementasi aplikasi penjadwalan kereta api dengan menggunakan algoritma genetik didalam penelitian ini menggunakan bahasa pemrogramman C# dan database MySQL 5. Adapun perancangan dan implementasi aplikasi penjadwalan antara lain sebagai berikut : 4.1 Pembangunan Prototype Pembangunan prototype pertama dibangun berdasarkan kebutuhan pengguna yang didapat dari hasil wawancara adalah sebagai berikut. Form manage kereta merupakan form awal yang berjalan pada aplikasi. Ketika pertama kali dijalankan, akan ditampilkan jadwal keberangkatan hasil optimasi dengan algoritma genetik yang sudah dilakukan sebelumnya. Operator dapat menambahkan kereta dan tujuan keberangkatan yang baru pada aplikasi. Gambar 4.1 Form Manage Kereta

38 Gambar 4.1 merupakan form manage kereta pada aplikasi. Untuk menambahkan jumlah kereta, operator dapat melakukan input data kereta dengan tujuan keberangkatan (Semarang/Jakarta). Data tersebut akan terismpan, pada aplikasi dengan waktu keberangkatan yang masih kosong. Penambahan jumlah kereta dengan tujuan keberangkatan yang baru akan ditambahkan pada jadwal setelah operator menenetukan parameter genetik dan referensi penjadwalan pada form manage jadwal. Kode Program 4.1 Kode Program untuk input kereta dan tujuan 1 MySqlConnection conn = Koneksi.getKoneksi(); 2 MySqlCommand command = conn.createcommand(); 3 command.commandtext = "INSERT INTO tb_kereta (nama,tujuan) VALUES ('" + tx_nama.text + "','"+cb_tujuan.selectedindex+"')"; 4 conn.open(); 5 command.executenonquery(); Pada Kode Program 4.1 dapat dilihat fungsi untuk menginputkan nama kereta dan tujuan keberangkatan. Baris program 1 5 menjelaskan tahapan proses input data kereta dan tujuan yang akan disimpan di dalam database MySQL. Dalam penggunaannya, form manage kereta dilengkapi dengan proteksi dimana nama kereta harus diinput oleh user. System akan mengeluarkan pesan peringatan apabila user melakukan proses penyimpanan tanpa memasukan nama kereta terlebih dahulu. Adapu pesan peringatan yang disampaikan oleh system dapat dilihat pada gambar 4.2

39 Gambar 4.2 Proteksi Operator Manage Data Kereta Berbeda dengan proteksi nama kereta, untuk kolom tujuan apabila tidak diisi oleh user maka secara default akan diisi dengan nilai dari sistem yakni Jakarta. Namun apabila terjadi kesalahan dalam pengisian data, user dapat melakukan proses penghapusan maupun pengeditan data kereta. Perancangan form yang kedua pada tahap perancangan prototype adalah perancangan form menu operator. Form menu operator manage kereta merupakan form bagi operator untuk melakukan pengelolaan data penjadwalan kereta api pada aplikasi. Hasil perancangan form tersebut dapat dilihat pada gambar 4.3.

40 Gambar 4.3 Form Menu Operator Manage Jadwal Gambar 4.3 merupakan tampilan form menu operator pada aplikasi untuk manage jadwal keberangkatan kereta api yang baru. Untuk melakukan optimasi penjadwalan yang baru, operator dapat menentukan jumlah kemungkinan jadwal yang baru pada pilihan jumlah referensi jadwal. Kemudian parameter genetik untuk optimasi penjadwalan juga dapat ditentukan, seperti nilai mix ratio yang menentukan nilai kemungkinan pemilihan gen dari 2 buah individu serta jumlah individu yang akan diseleksi. Kemudian, nilai fitness dapat ditentukan dengan memberikan batasan gap atau jarak keberangkatan antar kereta serta range atau batasan waktu keberangkatan ditentukan dalam periode waktu tertentu. Dalam penerapan algoritma genetik pada sistem maka langkahlangkah yang dibuat pada aplikasi adalah sebagai berikut:

41 1. Generate populasi (populasi awal) merupakan proses menginisialisasi elemen list sebanyak jumlah variabel 'jum_individu'. Setiap individu bertipe kelas IndividuJadwal. IndividuJadwal memiliki atribut list kereta (rantai gen) yang berisi kereta-kereta beserta jadwalnya (gen). Jadwal setiap kereta saat inisialisasi adalah random. Kode program 1 merupakan potongan koding yang digunakan untuk mengenerate populasi awal. Kode Program 4.2 Perintah untuk men-generate populasi awal 1. for (int i = 0; i < jum_individu; i++) { 2. individujadwal = new IndividuJadwal(); 3. listgenkereta = new List<Kereta>(); 4. for (int j = 0; j < listkereta.count; j++) { 5. Kereta kereta = new Kereta(); 6. kereta.id = listkereta[j].id; 7. kereta.nama = listkereta[j].nama; 8. kereta.tujuan = listkereta[j].tujuan; 9. kereta.start = new TimeSpan(r.Next(0, 24), r.next(0, 59), 0); 10. listgenkereta.add(kereta); 11. } 12. individujadwal.listgenkereta = listgenkereta; 13. listindividujadwal.add(individujadwal); 14. } Pada Kode Program 4.2 merupakan proses menginisialisasi elemen list sebanyak jumlah variabel 'jum_individu'. Setiap individu bertipe kelas IndividuJadwal. IndividuJadwal memiliki atribut list kereta (rantai gen) yang berisi kereta-kereta beserta jadwalnya (gen). Jadwal setiap kereta saat inisialisasi adalah random. 2. Evaluasi fitness merupakan proses dimana akan dicek setiap parameter fitness (jadwal keberangkatan dan selisih waktu tiap kereta) untuk setiap individu, jika ada parameter yang bernilai true, maka nilai fitness untuk individu tersebut ditambahkan.

Kode Program 4.3 Perintah untuk evaluasi fitness 1. for (int i = 0; i < listindividujadwal.count; i++) { 2. int fit = 0; 3. for (int j = 0; j < listindividujadwal[i].listgenkereta.count; j++) { 4. Kereta k = listindividujadwal[i].listgenkereta[j]; 5. if (k.start.hours < starttime) fit++; 6. if (k.start.hours > finishtime) fit++; 7. if (k.tujuan == 0) liststartsemarang.add(k.start.hours * 100 + k.start.minutes); 8. if(k.tujuan == 1)listStartJakarta.Add(k.START.Hours * 100 + k.start.minutes); 9. } 10. liststartsemarang.sort(); 11. liststartjakarta.sort(); 12. for (int n = 1; n < liststartsemarang.count; n++) { 13. if (liststartsemarang[n] - liststartsemarang[n - 1] < toleransi_gap) 14. fit++; 15. } 16. for (int n = 1; n < liststartjakarta.count; n++) { 17. if (liststartjakarta[n] - liststartjakarta[n - 1] < toleransi_gap)fit++; 18. } 19. listindividujadwal[i].fitness = fit; 20. if (listindividujadwal[i].fitness <= fit_max && 21. listindividujadwal[i].fitness >= fit_min){ 22. individuterpilih.add(listindividujadwal[i]); 23. listindividujadwal.removeat(i); } 42 Pada Kode Program 4.3 merupakan proses evaluasi fitness dimana akan dicek setiap parameter fitness (jadwal keberangkatan dan selisih waktu tiap kereta) untuk setiap individu, jika ada parameter yang bernilai true, maka nilai fitness untuk individu tersebut ditambahkan 1 (nilai fitness berkurang). Baris program 7-11 merupakan perintah untuk mengecek jadwal keberangkatan dari kereta berada pada range waktu yang ditentukan. Jika jadwal berada pada luar range waktu yang ditentukan maka nilai fitness untuk individu akan ditambahkan 1, yang berarti nilai fitness-nya berkurang. Sementara pada baris program 12-23 merupakan perintah untuk mengecek jadwal keberangkatan setiap kereta didalam individu, jika selisih jadwal keberangkatan sekarang dengan kereta sebelumnya lebih kecil dari waktu yang sudah ditentukan maka nilai fitness individu akan bertambah 1.

43 3. Proses evaluasi dilakukan sampai nilai fitness terbaik terpenuhi. Ada beberapa hal yang dilakukan pada tahap ini, yakni : Pilih individu terbaik berdasar ranking untuk reproduksi. Proses pemilihan individu terbaik dapat dilihat pada Kode Program 4.4. Kode Program 4.4 Perintah untuk memilih individu yang terbaik 1. for (int i = 0; i < listindividujadwal.count; i++) { 2. jum += listindividujadwal[i].fitness; 3. } 4. for (int i = 0; i < listindividujadwal.count; i++) { 5. if ((float)jum / (float)listindividujadwal[i].fitness!= 7) 6. return; 7. } Bentuk generasi baru melalui pindah silang dan mutasi untuk menghasilkan keturunan baru (child. Proses Crossover dapat dilihat pada Kode Program 4.5. Kode Program 4.5 Perintah untuk Crossover 1. while ((listindividujadwal.count + listindividujadwalchild.count) < jum_individu){ 2. int parent1 = r.next(0, listindividujadwal.count - 1); 3. int parent2; 4. while ((parent2 = r.next(0, listindividujadwal.count - 1)) == parent1) { } 5. IndividuJadwal child = new IndividuJadwal(); 6. child.listgenkereta = new List<Kereta>(); 7. Kereta kereta; 8. for (int i = 0; i < listindividujadwal[parent1].listgenkereta.count; i++){ 9. kereta = new Kereta(); 10. kereta.id = listindividujadwal[parent1].listgenkereta[i].id; 11. kereta.nama = listindividujadwal[parent1].listgenkereta[i].nama; 12. kereta.tujuan = listindividujadwal[parent1].listgenkereta[i].tujuan; 13. if (r.next(0, 100) <= mix_ratio){ 14. kereta.start = listindividujadwal[parent1].listgenkereta[i].start; 15. }else{ kereta.start = listindividujadwal[parent2].listgenkereta[i].start; 16. } 17. child.listgenkereta.add(kereta); 18. } 19. listindividujadwalchild.add(child); 20. } 21. for (int i = 0; i < listindividujadwalchild.count; i++) { 22. listindividujadwal.add(listindividujadwalchild[i]); 23. } Pada Kode Program 4.5 merupakan tahapan crossover dimana akan dilakukan pertukaran setiap gen (kereta) dari 2 individu

44 (kumpulan kereta) yang dipilih secara random. Peluang pemilihan suatu gen dari individu parent ditentukan oleh mix ratio. Baris program 1-5 merupakan perintah untuk memilih 2 individu sebagai parent secara random. Baris program 13-15 merupakan perintah pemilihan gen selanjutnya, pada proses ini sebuah nilai random dihasilkan, jika nilai tersebut lebih kecil dari mix ratio maka gen dari individu pertama yang dipilih. Jika sebaliknya maka gen dari individu kedua yang dipilih. Kemudian akan ditambahkan gen yang baru kedalam individu baru. Pada tahapan berikutnya pada baris program 16-23 merupakan perintah untuk menambahkan individu-individu hasil crossover kedalam kumpulan individu. Evaluasi nilai fitness keturunan yang dihasilkan oleh proses crossover. Kode Program pada tahap ini dapat dilihat pada Kode Program 4.3. Setelah diatur terlebih dahulu, gantikan individu dengan nilai fitness terburuk dengan keturunan yang dihasilkan atau sering disebut juga dengan proses Mutasi dapat dilihat pada Kode Program 4.6. Kode Program 4.6 Proses Mutasi 1. while (!stopregenerate){ 2. if (listindividujadwal!= null){ 3. String cc = ""; 4. try{ 5. String progvalue = ((100 / refjadwal) * individuterpilih.count) + ""; 6. floading.progressbarcontrol1.text = progvalue; 7. List<IndividuJadwal> buff = listindividujadwal; 8. for (int i = 0; i < buff.count; i++) 9. cc += buff[i].fitness + (i == buff.count - 1? "" : "-"); 10. }catch(exception ex){} 11. floading.labelcontrol1.text = cc; 12. } 13. }

45 Pada Kode Program 4.6 merupakan proses mutasi yang terjadi pada sistem. Baris 5-9 merupakan penjelasan koding dimana proses mutasi itu sendiri dilakukan. Form berikutnya yang dibuat pada tahapn perancangan prototype adalah form menu operator generate jadwal. Form menu operator generate jadwal merupakan form bagi operator untuk menampilkan penjadwalan kembali jadwal keberangkatan yang baru. Gambar 4.4 Form Menu Operator Generate Jadwal Gambar 4.4 merupakan tampilan form menu operator generate jadwal pada aplikasi. Pada form ini, ditampilkan hasil optimasi penjadwalan yang baru apabila terjadi penambahan jadwal kereta yang baru pada jadwal sebelumnya. Semua kemungkinan hasil optimasi penjadwalan akan ditampilkan pada aplikasi.

46 Kode Program 4.5 Proses Generate Jadwal 1 while (!stopregenerate){ 2 generatepopulasi(); 3 counterregen++; 4 stopgenerate = false; 5 int countergen = 0; 6 while (!stopgenerate){ foreach (IndividuJadwal ind in listindividujadwal) { 7 ind.listgenkereta.sort(delegate(kereta k1, Kereta k2){return k1.start.compareto(k2.start); 8 });} 9 evaluasifitnessindividu(); 10 getcekallfitness();seleksiindividu(); 11 crossoverindividu(); 12 countergen++; 13 if (countergen >= jum_gen && jum_gen > 0){ 14 stopgenerate = true; 15 stopregenerate = true;}} 16 if (individuterpilih.count >= refjadwal) 17 stopregenerate = true; 18 if (counterregen >= jum_regen && jum_regen > ) 19 stopregenerate = true;}. 20 evaluasifitnessindividu(); 21 listindividujadwal.sort(delegate(individujadwal in1, IndividuJadwal in2){ 22 return in1.fitness.compareto(in2.fitness); 23 }); 24 tab_jadwal_kereta.tabpages.clear(); 25 for (int i = 0; i < refjadwal; i++) { 26 27 CustomDGrid dgrid = new CustomDGrid(); 28 page.controls.add(dgrid); 29 IndividuJadwal individujadwal = individuterpilih.count > 0? 30 individuterpilih[i] : listindividujadwal[i]; 31 page.text = "Jadwal " + (i+1) + ": " + individujadwal.fitness; 32 foreach (Kereta kereta in individujadwal.listgenkereta) { 33 dgrid.rows.add(kereta.id, kereta.nama, kereta.tujuan == 0? 34 "Semarang" : "Jakarta", kereta.start); 35 } 36 tab_jadwal_kereta.tabpages.add(page); 37 } Pada Kode Program 4.5 merupakan proses untuk mengenerate penjadwalan. Pada tahapan ini akan dilakukan generate populasi, kemudian mengecek nilai fitness setiap individu dan melakukan seleksi. Selanjutnya melakukan reproduksi dengan operator crossover. Jika telah ditemukan individu (banyaknya individu ditentukan oleh pengguna) dengan jumlah fitness yang ditentukan maka proses penjadwalan akan berhenti, jika tidak maka

47 proses akan mengulangi lagi dari generate populasi. Jika dalam beberapa generasi nilai fitness dari semua individu tidak berubah maka akan dilakukan regenerasi semua individu. Baris program 6-8 merupakan perintah untuk mengurutkan kereta-kereta di dalam individu berdasarkan waktu keberangkatan. Baris program 9-11 merupakan perintah untuk mengevaluasi fitness tiap individu, menyeleksi individu berdasarkan nilai fitness dan mereproduksi individu dengan operator crossover. Baris program 21-23 merupakan perintah untuk mengecek jika jumlah individu yang ber-fitness baik sudah mencukupi atau jumlah generasi sudah melewati batas maka perulangan di hentikan. Baris program 25-28 merupakan perintah untuk mengurutkan individu berdasarkan nilai fitness. Pada baris 31-37 merupakan perintah untuk menampilkan hasil penjadwalan kepada pengguna, setiap individu terpilih ditampilkan didalam masingmasing tab pada form manage jadwal. 4.2 Hasil dan Pembahasan Pada bab ini akan dibahas hasil dari pembangunan sistem berdasarkan rancangan sistem yang telah dibuat pada bab sebelumnya. Adapun hasil akhir dari perancangan aplikasi yang dibuat adalah seperti yang terlihat pada gambar 4.5.

48 Gambar 4.5 Form Hasil penjadwalan 1. Gambar 4.5 merupakan tampilan hasil akhir dari proses penjadwalan yang dibuat dari aplikasi. Terlihat pada gambar bahwa sistem memberikan alternatif penjadwalan kereta api untuk masingmasing tujuan. Perancangan aplikasi ini tidak hanya menampilkan 1 rekomendasi alternatif penjadwalan melainkan dapat memberikan beberapa rekomendasi sekaligus dalam sekali proses sesuai dengan fungsi dari masing-masing kolom inputan yang berada pada sisi kanan dari aplikasi. Fungsi dari masing-masing kolom inputan yang berada pada sebelah kanan form adalah sebagai berikut: 1. Ref Jadwal berfungsi untuk mengatur berapa banyak jadwal yang akan dibuat.

49 2. Mix ratio berfungsi untuk mengatur pencampuran antara kromosom Parent. 3. Gap berfungsi untuk mengatur jarak keberangkatan tiap kereta. 4. Range berfungsi untuk mengatur jam awal keberangkatan kereta dan jam terakhir keberangkatan kereta. Gambar 4.6 Form Hasil penjadwalan 2. Gambar 4.6 merupakan rekomendasi penjadwalan lainnya yang dihasilkan oleh sistem dalam sekali proses. User dapat memilih berapa banyak rekomendasi jadwal yang akan dihasilkan oleh sistem. Hal ini sangat bermafaat karna user sendiri mempunyai banyak rekomendasi penjadwalan yang dapat digunakan.

4.3 Pengujian Sistem 4.3.1 Pengujian Black Box Pengujian sistem merupakan langkah akhir dari implementasi aplikasi optimasi penjadwalan kereta api sebelum diimplementasikan. Pengujian ini dilakukan untuk mengetahui kesiapan aplikasi (apakah masih terdapat bug atau error). Pengujian sistem aplikasi ini menggunakan blacbox testing. Pengujian black box berfokus pada persyaratan fungsional perangkat lunak. Pengujian ini memungkinkan analis sistem memperoleh kumpulan kondisi input yang akan mengerjakan seluruh keperluan fungsional program. Pengujian black box berusaha menemukan kesalahan dalam kategori: Tabel 4.1 Black Box Testing 50 No Point Pengujian Validasi Input Data Input Hasil Uji Status Uji 1 Input Data Kereta Validasi nama kereta Data Wajib diisi dikosongi Data Wajib diisi telah diisi Proses penyimpanan data kereta gagal Proses penyimpanan data kereta berhasil berhasil berhasil 2 Hasi l penjadwalan kereta Pengecekan hasil rekomendasi untuk memastikan bahwa jadwal yang dihasilkan tidak saling bertabrakan. Data yang dihasilkan tidak saling bertabrakan berhasil

51 4.3.2 Pengujian Fungsi Program Pengujian fungsi program, dilakukan untuk melihat apakah fungsi program di awal analisa kebutuhan pada sistem sudah diimplementasikan pada aplikasi atau tidak. Sesuai dengan kebutuhan penjadwalan kereta api yang optimal dengan mempertimbangkan faktor-faktor penjadwalan kereta seperti, jumlah kereta, jumlah jalur dan waktu tunggu sudah diterapkan pada aplikasi untuk menghasilkan jadwal keberangkatan baru yang lebih optimal. 4.3.3 Pengujian performance program Berdasarkan hasil wawancara akhir dengan user setelah program dijalankan, maka user dapat menerima rekomendasi jadwal yang dihasilkan oleh program. Hal ini dipastikan bahwa setelah melakukan pengecekan secara manual dengan waktu keberangkatan kereta maka tidak ditemukan kesalahan dalam rekomendasi jam keberangkatan.