7 Bab II Tinjauan Pustaka 2.1 Penelitian Terdahulu Penelitian mengenai Visualisasi Rute Terpendek Jalur Angkutan Kota Dengan Algoritma Genetika membahas tentang perancangan dan pembuatan aplikasi yang dapat digunakan untuk mencari rute terpendek dengan menerapkan algoritma Genetika optimization. Algoritma ini melakukan pencarian rute terpendek angkutan kota yang diaplikasikan di kota Jember. Aplikasi yang dibuat bermanfaat untuk memberikan informasi rute angkutan kota terpendek, berupa jalan-jalan yang dilalui, panjang perjalanan dan angkutan kota yang dapat digunakan. Sistem yang dibangun menggunakan aplikasi Visual Basic 6 dan Macromedia Flash. (Swastika, 2009) Penelitian Sistem Informasi Penjadwalan Kereta Rel Listrik menggunakan algoritma genetik untuk melakukan optimasi penjadwalan kereta api di daerah JABOBETABEK. Sistem yang dibangun akan melakukan penjadwalan Kereta Rel Listrik (KRL) yang lebih optimal dengan menggunakan algoritma genetik. Sistem yang dibangun menggukan Borland C++ Builder 6 dengan bahasa pemrogramman C sedangkan untuk databasenya menggunakan Interbase 7. (Wijaya, 2009) 8 Program algoritma genetika yang dijalankan dapat berjalan dengan efektif di dua eksperimen yang berbeda. Dimana eksperimen yang pertama setiap mesin hanya dapat menampung satu operasi sedangkan eksperimen yang kedua setiap mesin dapat menampung maksimal dua operasi. Program algoritma genetika dapat digunakan pada persoalan penjadwalan job shop yang produknya multi produk (mode 1) maupun persoalan penjadwalan job shop yang produknya berbaur dan multi produk (mode2). Program algoritma genetika dapat dijalankan pada berbagai data order dan data efisiensi operasi yang berbeda dengan ketentuan data-data tersebut memenuhi batasanbatasan dalam pemodelan yang sesuai dengan masalah penjadwalan job shop. Pengembangan yang dapat dilakukan terhadap program algoritma genetika pada permasalahan penjadwalan job shop terutama produknya yang dihasilkan bersifat berbaur dan multi produk dengan mempertimbangkan efek ketidakpastian yang terjadi pada proses penjadwalan. Diantaranya adalah ketidakpastian permintaan konsumen, gangguan mesin, kekurangan bahan baku, ketidakhadiran operator mesin, dan lainnya. Hal-hal tersebut sangat berpengaruh dan menyebabkan perubahan yang cukup signifikan terhadap proses penjadwalan job shop. Begitu juga dengan pembatalan order yang telah terjadwal akan berakibat pada perubahan susunan operasi yang dikerjakan pada mesin produksi. (Fachrudin, dkk, 2011) Berbeda dengan penelitian sebelumnya, dalam penelitian kali ini dilakukan pada PT. KAI Semarang untuk mengatur penjadwalan kereta tujuan Semarang Jakarta dan sebaliknya. Metode pencarian solusi penjadwalan kereta api menggunakan algoritma genetik (Genetic Algorithm). Aplikasi Penjadwalan Kereta Api ini dibangun 9 dengan menggunakan bahasa pemrogramman Microsoft Visual Studio 2010 dan database MySQL . 2.2 Penjadwalan Penjadwalan adalah kegiatan pengalokasian sumber-sumber atau mesin-mesin yang ada untuk menjalankan sekumpulan tugas dalam jangka waktu tertentu (Baker, 1974). Keputusan yang dibuat di dalam penjadwalan meliputi pengurutan pekerjaan (sequencing), waktu mulai dan selesai pekerjaan (timing), dan urutan operasi untuk urutan pekerjaan (routing). Persoalaan penjadwalan timbul apabila ada beberapa pekerjaan diselesaikan secara bersamaan, sedangkan fasilitas yang dimiliki terbatas seperti masalah pada penjadwalan kereta api ini. Dari penjelasan definisi penjadwalan diatas dapat dikatakan bahwa penjadwalan merupakan suatu kegiatan perancangan berupa pengalokasian sumber daya baik mesin maupun tenaga kerja untuk menjalankan sekumpulan tugas sesuai prosesnya di dalam jangka waktu tertentu 2.2.1 Masalah Penjadwalan Masalah penjadwalan muncul karena adanya keterbatasan waktu, tenaga kerja, jumlah mesin, sifat dan syarat pekerjaan yang akan dilaksanakan. Secara umum ada dua permasalahan utama yang akan diselesaikan melalui penjadwalan, yaitu penentuan pengalokasian mesin yang akan digunakan untuk menyelesaikan suatu proses produksi dan pengurutan waktu pemakaian mesin tersebut (Jovan, 2006). 10 Masalah penjadwalan dapat ditinjau dari berbagai aspek diantaranya: a. Mesin (terbagi atas penjadwalan mesin tunggal, penjadwalan dua mesin, dan penjadwalan m mesin) b. Aliran proses (terbagi atas job shop dan flow shop). Aliran proses job shop memungkinkan pekerjaan melalui lintasan yang berbeda antar jenisnya. Sedangakan aliran flow shop sebaliknya. c. Pola kedatangan pekerjaan, secara statis maupun dinamis. Dimana jika semua pekerjaan datang secara bersamaan dan semua fasilitas tersedia pada saat kedatangan pekerjaan disebut pola kedatangan pekerjaan statis. Sedangkan jika pekerjaan datang secara acak selama masa penjadwalan disebut pola kedatangan pekerjaan dinamis. d. Elemen penjadwalan, mengenai ketidakpastian pada pekerjaan dan mesin. Terdiri dari elemen penjadwalan deterministik dan elemen penjadwalan stokastik. Jika elemen penjadwalannya deterministik, maka terdapat kapasitas tentang pekerjaan dan mesin, misalnya tentang waktu kedatangan, waktu set up dan waktu proses. Sebaliknya jika tidak terdapat kepastian mengenai pekerjaan dan mesin, maka disebut elemen penjadwalan stokastik. 11 2.2.2 Tujuan Penjadwalan Secara umum, tujuan dari penjadwalan adalah sebagai berikut (Saputro dan Yento, 2004) : 1. Meningkatkan produktivitas kereta api, yaitu dengan mengurangi idle time. 2. Mengurangi jumlah rata-rata pemberangkatan yang menunggu dalam antrian kereta api yang sibuk. 3. Mengurangi keterlambatan karena batas waktu (due date) telah dilewati keterlambatan dengan maupun cara mengurangi dengan maksimum mengurangi jumlah pemberangkatan kereta api yang terlambat. 4. Penetapan due date, saat waktu dimana kereta api harus telah selesai proses. 2.2.3 Klasifikasi Penjadwalan Kereta Api Beberapa model penjadwalan yang sering terjadi di dalam proses penjadwalan kereta api adalah sebagai berikut (Saputro dan Yento, 2004). : 1. Berdasarkan jumlah yang digunakan dalam proses : a. Penjadwalan pada kereta api tunggal Penjadwalan model ini adalah, dimana hanya terdiri dari satu kereta api dan semua proses pemberangkatan harus diproses pada kereta api ini. Kereta api dapat memproses satu pemberangkatan pemberangkatan pada diproses waktu pada pemberangkatan itu telah selesai. kapanpun. kereta api Sekali maka 12 b. Penjadwalan pada kereta api multi Dalam dunia industri sering kali jenis kereta api yang identik digabungkan menjadi satu region, hal ini sering disebut sebagai kereta api paralel. Dalam tipe kereta api paralel kita mengasumsikan bahwa pemberangkatan dapat dikerjakan pada beberapa kereta api berbeda dalam satu region. 2. Berdasarkan kedatangan job : a. Penjadwalan statis: penjadwalan statis adalah, dimana job yang datang bersamaan dan siap dikerjakan pada kereta api yang tidak bekerja. b. Penjadwalan dinamis: adalah penjadwalan dimana kedatangan job tidak menentu. 2.3 Algoritma Genetik Algoritma Genetika adalah algoritma yang memanfaatkan proses seleksi alamiah yang dikenal dengan proses evolusi. Dalam proses evolusi, individu secara terus-menerus mengalami perubahan gen untuk menyesuaikan dengan lingkungan hidupnya. Hanya individu-individu yang kuat yang mampu bertahan. Proses seleksi alamiah ini melibatkan perubahan gen yang terjadi pada individu melalui proses perkembangbiakan. Dalam algoritma genetika ini, proses perkembang-biakan ini menjadi proses dasar yang menjadi perhatian utama, dengan dasar berpikir bagaimana mendapatkan keturunan yang lebih baik. Algoritma genetika ini ditemukan oleh 13 John Holland dan dikembangkan oleh muridnya David Goldberg. (Basuki, 2003) Hal-Hal Yang Harus Dilakukan Dalam Menggunakan Algoritma Genetika adalah: 1. Mendefinisikan individu, dimana individu menyatakan salah satu solusi (penyelesaian) yang mungkin dari permasalahan yang diangkat. 2. Mendefinisikan nilai fitness, yang merupakan ukuran baiktidaknya sebuah individu atau baik-tidaknya 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. Menentukan proses perkawinan silang (cross-over) dan mutasi gen yang akan digunakan. Beberapa Definisi Penting Dalam Algoritma Genetika 1. Genotype (Gen), sebuah nilai yang menyatakan satuan dasar yang membentuk suatu arti tertentu dalam satu kesatuan gen yang dinamakan kromosom. Dalam algoritma genetika, gen ini bisa berupa nilai biner, float, integer maupun karakter, atau kombinatorial. 2. Allele, nilai dari gen. 3. Kromosom, gabungan gen-gen yang membentuk nilai tertentu. 14 4. Individu, menyatakan menyatakan salah satu satu nilai solusi atau keadaan yang yang mungkin dari permasalahan yang diangkat. 5. Populasi, merupakan sekumpulan individu yang akan diproses bersama dalam satu siklus proses evolusi. Generasi, menyatakan satu-satuan siklus proses evolusi. 6. Nilai Fitness, menyatakan seberapa baik nilai dari suatu individu atau solusi yang didapatkan. 2.3.1 Struktur Umum Algoritma Genetik Algoritma genetik memberikan suatu pilihan bagi penentuan nilai parameter dengan meniru cara reproduksi genetik, pembentukan kromosom baru serta seleksi alami seperti yang terjadi pada makhluk hidup. Algoritma Genetik secara umum dapat diilustrasikan dalam diagram alir berikut ini: (Sempena, 2010) 15 Gambar 2.1 Siklus Algoritma Genetik Golberg (1989) mengemukakan bahwa algoritma genetik mempunyai karakteristik-karakteristik yang perlu diketahui sehingga dapat terbedakan dari prosedur pencarian atau optimasi yang lain, yaitu: 1. Algoritma genetik dengan pengkodean dari himpunan solusi permasalahan berdasarkan parameter yang telah ditetapkan dean bukan parameter itu sendiri. 2. Algoritma genetik pencarian pada sebuah solusi dari sejumlah individuindividu yang merupakan solusi permasalahan bukan hanya dari sebuah individu. 16 3. Algoritma genetik informasi fungsi objektif (fitness), sebagai cara untuk mengevaluasi individu yang mempunyai solusi terbaik, bukan turunan dari suatu fungsi. 4. Algoritma genetik menggunakan aturan-aturan transisi peluang, bukan aturan-aturan deterministik. Variabel dan parameter yang digunakan pada algoritma genetik adalah: 1. Fungsi fitness (fungsi tujuan) yang dimiliki oleh masingmasing individu untuk menentukan tingkat kesesuaian individu tersebut dengan kriteria yang ingin dicapai. 2. Populasi jumlah individu yang dilibatkan pada setiap generasi. 3. Probabilitas terjadinya persilangan (crossover) pada suatu generasi. 4. Probabilitas terjadinya mutasi pada setiap individu. 5. Jumlah generasi yang akan dibentuk yang menentukan lama penerapan algoritma genetik. Secara umum struktur dari suatu algoritma genetik dapat mendefenisikan dengan langkah-langkah sebagai berikut: 1. Membangkitkan populasi awal, populasi awal ini dibangkitkan secara random sehingga didapatkan solusi awal. Populasi itu sendiri terdiri atas sejumlah kromosom yang merepresentasikan solusi yang diinginkan. 2. Membentuk generasi baru, untuk membentuk generasi baru, digunakan operator reproduksi/ seleksi, crossover dan mutasi. Proses ini dilakukan berulang-ulang sehingga didapatkan 17 jumlah kromosom yang cukup untuk membentuk generasi baru dimana generasi baru ini merupakan representasi dari solusi baru. Generasi baru ini dikenal denga istilah anak (offspring). 3. Evaluasi solusi, pada tiap generasi, kromosom akan melalui proses evaluasi dengan menggunakan alat ukur yang dinamakan fitness. Nilai fitness suatu kromosom menggambarkan kualitas kromosom dalam populasi tersebut. Proses ini akan mengevaluasi setiap populasi dengan menghitung nilai fitness setiap kromosom dan mengevaluasinya sampai terpenuhi kriteria berhenti. Bila kriteria berhenti belum terpenuhi maka akan dibentuk lagi generasi baru dengan mengulangi langkah 2. Beberapa kriteria berhenti sering digunakan antara lain: berhenti pada generasi tertentu, berhenti setelah dalam beberapa generasi berturutturut didapatkan nilai fitness tertinggi tidak. 2.4 Pemodelan Algoritma Genetik Penjadwalan yang akan diimplementasikan memakai algoritma genetik dibatasi sebagai berikut : tiap job diproses oleh sebuah mesin maksimal satu kali, tidak memiliki tenggat waktu penyelesaian, waktu perpindahan antar mesin dan waktu set up dapat diabaikan, dan penjadwalan bersifat non-preemptive. Ada empat hal dasar yang perlu diperhatikan, yaitu pemilihan representasi masalah ke bentuk string, operator genetik, fungsi fitness, dan parameter genetik (Saputro dan Yento, 2004). 18 2.4.1 Pemilihan Operator Genetik Operator genetik yang dipakai adalah operator reproduksi gabungan dari elitism dan roulette wheel selection, operator Precedence Preservative Crossover (PPX) (Bierwirth, 1999) dan operator mutasi remove and insert (Manderick, 1991). Metode elitism membuat sejumlah string terbaik tiap generasi akan otomatis diturunkan ke generasi berikutnya Koza, 2001). Metode roulette wheel untuk memilih string-string yang akan dilakukan proses rekombinasi (Saputro, 2003). Pada PPX, string baru disusun secara acak dari allele stringstring induk. Angka acak 1 atau 2 dipakai untuk memilih induk. Jika 1 diturunkan allele paling kiri dari induk pertama, jika 2 diturunkan allele paling kiri dari induk kedua. Selanjutnya allele yang terpilih tadi dihapus dari kedua induk. Proses dilakukan sampai karakter di kedua induk habis. Sebagai contoh 2 induk ABCDEF dan CABFDE, dan angka acak 1 2 1 1 2 2, akan menghasilkan string baru ACBDFE. Pada mutasi, satu locus dipilih secara acak dan karakter diposisi tersebut di hapus. Satu locus baru dipilih, dan karakter yang telah dihapus tadi disisipkan. Gambar 2.2 menunjukkan proses mutasi pada locus ketiga dan ketujuh. Gambar 2.2 String A dan Hasil Mutasi 19 2.4.2 Fungsi Fitness Pada dynamic scheduling dengan kedatangan job tidak dapat diperkirakan sebelumnya, minimalisasi makespan dirasakan kurang berarti (Lin, 1997). Oleh karena itu, rata-rata waktu penyelesaian sebuah job (average flow time) pada satu periode penjadwalan digunakan sebagai fungsi fitness. Waktu selesainya sebuah job dapat dihitung dari selisih waktu tiba (ri) dengan waktu selesainya operasi terakhir dari job (Ci). Satu periode penjadwalan melibatkan operasioperasi yang belum mulai diproses mesin. Tujuan penjadwalan adalah minimasi fungsi fitness, sedangkan pada algoritma genetik, sesuai proses di alam, prosesnya adalah maksimasi. Oleh karena itu, fungsi fitness penjadwalan diubah menjadi 1/f. 2.4.3 Parameter Genetik Parameter Genetik berguna dalam pengendalian operatoroperator genetik. Parameter yang digunakan adalah : ukuran populasi, jumlah generasi, Probabilitas Crossover (Pc), dan Probabilitas Mutasi (Pm). Tidak ada aturan pasti tentang berapa nilai setiap parameter ini (Koza, 2001). Ukuran populasi kecil berarti hanya tersedia sedikit pilihan untuk Crossover dan sebagian kecil dari domain solusi saja yang dieksplorasi untuk setiap generasinya. Sedangkan bila terlalu besar, kinerja algoritma genetic menurun. Penelitian menunjukkan ukuran populasi besar tidak mempercepat proses pencarian solusi. Disarankan ukuran populasi berkisar antara 20-30, probabilitas Crossover berkisar 80%-95%, dan probabilitas mutasi kecil berkisar 0.5%-1%. Jumlah generasi besar 20 berarti semakin banyak iterasi yang dilakukan, dan semakin besar domain solusi yang akan dieksplorasi. 2.4.4 Pemodelan Penjadwalan Pemodelan penjadwalan yang dimaksud adalah proses penyusunan jadwal dari string. Permutasi operasi-operasi yang direpresentasikan oleh string akan di-decode untuk menghasilkan jadwal. Ada tiga karakteristik jadwal yang dapat dihasilkan, yaitu semiactive, active, dan non delay (Bierwirth, 1999). Makalah ini memakai jadwal hybrid yaitu gabungan antara jadwal active dan non delay. Notasi-notasi yang dipakai pada jadwal hybrid maupun proses kerja penjadwalan job shop dengan algoritma genetik dapat dilihat pada gambar 2.3 Gambar 2.3 Notasi Langkah-langkah prosedur hybrid (Bierwirth, 1999) : 1. Buat himpunan operasi yang mengawali pekerjaan: A={oi1 | 1 £ i £ n}. 21 2. Pilih o1, operasi dengan waktu selesai tercepat, t1 + p1 £ tik + pik untuk semua oikÎA. Jika lebih dari satu operasi, pilih operasi yang terletak paling kiri di string. 3. Jika M1 adalah mesin yang dipakai oleh o1, buat himpunan B yang berisi semua operasi dari A yang diproses di M1, B:={oikÎA|mi(k)=M1} 4. Pilih o11, operasi dengan waktu mulai paling awal di B, t11<tik untuk semua oikÎB. Jika lebih dari satu operasi, pilih operasi yang terletak paling kiri di string. 5. Hapus operasi di B menurut parameter d, sehingga himpunan B sekarangB:={oikÎB|tik £ t11+d((t1+p1)-t11)} 6. Pilih operasi di B yang terletak paling kiri di string dan hapus dari A. Operasi yang dipilih tersebut adalah o*ik. 7. Masukkan operasi o* ik pada jadwal, dan hitung waktu mulai: t*ik=max(t*i,k1+p*i,k-1,thl+phl), t*ik waktu mulai operasi o*ik, t*ik-1+p*ik-1 waktu selesai operasi ke-(k-1), yaituoperasi sebelumnya dari job ke-i dan ohl=operasi ke-l dari job ke-h yang mendahuluio*ik pada mesin yang sama. 8. Jika terdapat suksesor dari o*ik, yaitu o*i,k+1, tambahkan ke A. 9. Ulangi langkah 2 sampai isi A habis.