• Tidak ada hasil yang ditemukan

Kalkulasi Waktu Penyelesaian Pesanan

6 VERIFIKASI DAN VALIDASI MODEL

6.2 Model Evaluasi Pesanan

6.2.2 Kalkulasi Waktu Penyelesaian Pesanan

Kalkulasi waktu penyelesaian pesanan bertujuan untuk melihat kapan suatu pesanan bisa diselesaikan dan apakah waktu pesanan tersebut sesuai dengan waktu penyelesaian yang diinginkan konsumen. Untuk mendapatkan jawaban atas masalah tersebut, pada model ini dilakukan pengurutan pesanan-pesanan yang diterima, dan menjadwalkannya dengan suatu model penjadwalan yang sesuai dengan kondisi lantai produksi yang tersedia.

Walaupun proses perancangan model ini dibangun dengan fokus perhatian yang cukup besar untuk memuaskan pelanggan, namun dalam pelaksanaan penjadwalannya kriteria/tujuan penjadwalan adalah untuk meminimasi makespan dan bukan untuk meminimasi keterlambatan atau jumlah pekerjaan yang terlambat. Pemilihan kriteria ini dengan pertimbangan untuk mengakomodasi kepentingan kedua belah pihak, yaitu perusahaan kemasan karton dan konsumen.

Kriteria makespan adalah kriteria yang paling umum digunakan pada penjadwalan hybrid flowshop seperti pada kasus industri kemasan karton ini. Makespan dari suatu jadwal (schedule) adalah waktu selesainya semua pekerjaan yang ditandai oleh waktu selesai pekerjaan yang terakhir pada lantai produksi. Penggunaan kriteria makespan akan memungkinkan pihak perusahaan melihat berapa banyak pesanan (job) yang mampu ditangani dalam periode waktu tertentu (Raaymakers dan Weijters, 2003). Penjadwalan yang bertujuan untuk meminimasi makespan dengan sendirinya dapat meningkatkan jumlah job yang mampu ditangani oleh perusahaan dalam periode waktu tertentu. Pada saat yang sama informasi mengenai kapan waktu penyelesaian setiap pesanan tetap dapat diberikan kepada konsumen.

Hasil kalkulasi waktu penyelesaian pesanan dapat diperoleh dengan atau tanpa menggunakan algoritma genetika. Namun untuk mendapatkan urutan penjadwalan terbaik yang dapat meminimasi makespan pada jumlah pesanan yang cukup banyak, perlu bantuan algoritma genetika.

Langkah-langkah penjadwalan menggunakan algoritma genetika yang dilakukan pada penelitian ini adalah :

a. Melakukan representasi kromosom b. Membentuk populasi awal

c. Menghitung nilai fitness dan nilai makespan setiap kromosom yang berada pada populasi awal

d. Melakukan seleksi kromosom

e. Menjalankan operator genetika pindah silang f. Menjalankan operator genetika mutasi

g. Menghitung nilai fitness dan makespan setelah proses indah silang dan mutasi h. Melakukan iterasi proses genetika hingga batas iterasi yang ditentukan

i. Menentukan nilai fitness dan makespan terbaik

j. Menghitung waktu penyelesaian akhir (final time) dengan menambahkan waktu proses pada stage 5

Representasi Kromosom

Sebagai tahap awal untuk melakukan penjadwalan dengan algoritma genetika, dibutuhkan representasi kromosom yang menggambarkan pesanan- pesanan yang akan dijadwalkan. Representasi kromosom merupakan cara untuk mengkodekan suatu alternatif solusi penjadwalan menjadi kromosom yang akan diproses menggunakan GA. Representasi kromosom dalam penelitian ini menggunakan teknik real number encoding. Kromosom yang dihasilkan terdiri dari 11 gen yang menggambarkan urutan job yang unik tanpa ada pengulangan. Berikut ini adalah contoh representasi kromosom yang digunakan pada model ini :

9 2 10 6 4 1 3 7 8 5 11

Gambar 42 Representasi Kromosom untuk Sebelas Pesanan

Pembentukan Populasi Awal

Sebuah populasi awal yang dibangkitkan terdiri dari sejumlah anggota populasi (kromosom). Pada kasus ini jumlah anggota populasi (Pc) ditentukan sebanyak 20 kromosom dan proses pembangkitan populasi dilakukan secara acak. Source code pada Matlab versi 10a yang digunakan untuk menghasilkan populasi awal ini adalah :

popawal = myrand(jmlpop,1,11); function result=myrand(row,a,b)

% Produce unique random integers ranged from a to b % linear random unique integers

clc;

%a=1; b=50000; %try this as an example r=a:b; r=r'; for m = 1 : row for i=1:(b-a) % rn=round((a-2)*rand(1,1))+1+(b-a); rn=round((b-a-1)*rand(1,1))+1; tmp=r(i); r(i)=r(rn); r(rn)=tmp; end result(m,:)=r; end

Hasil pembangkitan populasi awal yang merupakan generasi pertama dari proses penjadwalan menggunakan GA dapat dilihat pada Tabel 30.

Tabel 30 Populasi Awal (Generasi Pertama) No

kromo som

Urutan Pekerjaan (Job)

1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8 6 9 5 7 1 2 3 10 4 11 6 1 8 7 2 4 3 5 10 9 11 1 3 9 8 2 5 7 6 4 10 11 4 2 9 5 7 6 1 3 10 8 11 7 5 4 9 1 3 10 8 2 6 11 4 1 7 8 3 2 6 10 9 5 11 10 3 1 6 9 8 5 7 4 2 11 4 1 3 8 2 7 9 5 6 10 11 8 5 7 2 6 10 1 9 4 3 11 6 7 10 3 2 1 5 4 8 9 11 7 2 5 1 4 10 8 9 6 3 11 4 1 5 6 10 8 9 3 7 2 11 5 9 8 3 10 7 2 4 1 6 11 10 6 3 8 1 2 9 5 4 7 11 4 5 7 2 1 9 8 3 6 10 11 5 2 6 3 9 4 10 7 8 1 11 7 5 6 2 9 10 8 1 3 4 11 9 2 10 6 4 1 3 7 8 5 11 1 5 9 4 3 2 10 8 7 6 11 7 8 3 2 4 5 9 6 10 1 11

Menghitung Nilai Makespan dan Nilai Fitness

Nilai makespan dan nilai fitness dihitung dengan menggunakan data waktu proses masing-masing pesanan pada setiap stage dan mesin yang dilalui (Tabel 29). Pada model ini proses optimasi penjadwalan dengan menggunakan algoritma genetika diberlakukan terhadap 4 tahapan proses (stage) yaitu : proses

corrugating (stage 1), proses printing (stage 2), proses die cutting (stage 3) dan proses finishing (stage 4). Terhadap proses perlakuan tambahan tidak dilakukan optimasi dengan menggunakan algoritma genetika, melainkan hanya ditambahkan waktunya terhadap waktu kromosom terbaik yang dihasilkan dari algoritma genetika. Hal ini disebabkan karena mesin varnishing yang tersedia cukup banyak sehingga diasumsikan setiap pekerjaan yang selesai dari proses finishing bisa langsung diproses pada proses varnishing atau perlakuan tambahan lainnya tanpa harus antri mesin terlebih dahulu. Nilai makespan dan nilai fitness dihitung untuk setiap kromosom yang terdapat pada populasi.

Langkah-langkah untuk menghitung nilai makespan terdiri dari dua tahap, yaitu perhitungan waktu penyelesaian (completion time) pada stage 1, dan perhitungan waktu penyelesaian (completion time) pada stage 2 sampai stage 4. Sebagai contoh, langkah-langkah perhitungan nilai makespan kromosom 18 pada stage 1 adalah :

1. Pada stage j=1, urutkan job i secara acak dimana i = 1,....n, sehingga diperoleh urutan ke (k) dimana k = 1,...n

Urutan job yang diperoleh sesuai dengan urutan gen pada kromosom 18, yaitu : 9, 2, 10, 6, 4, 1, 3, 7, 8, 5, 11.

Pada Tabel 30 dapat dilihat urutan job, mesin-mesin yang tersedia untuk memproses, dan waktu proses setiap job.

2. Pada T=0, pilih mesin eligible (e(i),1, (i)) yg tersedia dengan waktu proses

terkecil untuk memproses job i, stage 1 urutan ke 1 (min t e(i),1, (1)) dimana

e(i),j, (k) Mj.

Job pertama yang diproses adalah job 9, dan mesin yang tersedia hanya satu, yaitu C1 dengan waktu proses =3

Ci,1, (1) = 0 + min t e(i),1 (1)

Jika tidak ada mesin eligible yang tersedia (job tidak diproses di j=1), set Ci,1, (1) = 0.

Jika job i pada stage 1 disubkontrakkan dalam waktu t = tci,1, maka set

Ci,1, (1) = 0 + tci

Waktu selesai job 9 di stage 1 : (C9,1, (1)) = 0 + 3 = 3

Tabel 31 Waktu Proses Pada Stage 1

No No.

Job

Waktu Proses (jam)

C1 C2 K 1 Job 1 24,0 2 Job 2 3,9 3 Job 3 24,0 4 Job 4 24,0 5 Job 5 12,6 6 Job 6 24,0 7 Job 7 4,9 8 Job 8 1,8 9 Job 9 3,0 10 Job 10 5,0 11 Job 11 7,9

4. Cek apakah masih ada mesin tersisa pada stage 1 (M1≠0). Jika masih ada

mesin tersisa, tugaskan job pada urutan berikutnya ( (k) ) untuk diproses pada t =0, jika tidak tunggu sampai ada mesin yang selesai berproses.

Job pada urutan berikutnya adalah job 2, dan mesin yang eligible adalah C2 dengan waktu 3,9 jam. Waktu selesai job 2 di stage 1 = 0 + 3,9 = 3,9. Selanjutnya tidak ada lagi mesin yang bisa diproses pada T=0 hingga job 9 atau job 2 selesai.

5. Jika ada mesin selesai berproses, tugaskan job pada urutan berikutnya ( (k+1)) pada mesin tersebut, jika job yang berada pada (k+1) tidak sesuai dengan mesin yang tersedia, maka penugasan bisa diberikan pada job urutan berikutnya ( (k+2)) dan seterusnya.

Pada T=3, job 9 selesai. Job yang akan diproses berikutnya adalah job 10 pada mesin C1.

6. Hitung waktu penyelesaian job i yang telah ditugaskan terhadap satu mesin, shg :

Ci,1, (k) = waktu selesai job sebelumnya pada mesin tsb + min t e(i),1, (k)

Waktu selesai job 10 (C10,1, (3)) = 3 + 5 = 8

7. Cek apakah i=n dan k=n ? Jika tidak, kembali ke langkah 3. Jika ya, penempatan job-job pada stage 1 selesai.

Job urutan ke-4 adalah job 6. Job 6 tidak diproses pada salah satu mesin, tapi disubkontrakkan dengan waktu 24 jam, sehingga waktu penyelesaian job 6 di stage 1 (C6,1, (4)) = 0 + 24 = 24.

Urutan pada urutan ke 5, 6 dan 7 berturut-turut adalah job 4, 1, 3. Ketiga job ini disubkontrakkan (diasumsikan pada pemasok yang berbeda) sehingga bisa langsung diproses pada T=0. Waktu penyelesaian ketiga job adalah :

Job 4 (C4,1, (5)) = 0 + 24 = 24

Job 1 (C1,1, (6)) = 0 + 24 = 24

Job (C3,1, (7)) = 0 + 24 = 24

Urutan ke-8 adalah job 7 pada mesin C2 dengan t = 4,9. Waktu penyelesaian job 7 adalah :

Job (C7,1, (8)) = 3,9 + 4,9 = 8,8

Urutan ke-9 adalah job 8 pada mesin C2 dengan t = 1,8. Job 8 baru bisa diproses setelah job 7 selesai diproses pada mesin C2, sehingga waktu penyelesaian job 8 adalah :

Job (C8,1, (9)) = 8,8 + 1,8 = 10,6

Job 5 dan11 yang berada pada urutan berikutnya dan menggunakan mesin yang sama, yaitu C2 diselesaikan dengan cara yang sama dengan job 8. Hasil penjadwalan semua pesanan pada stage 1 dapat dilihat pada Tabel 32.

Tabel 32 Waktu penyelesaian pada stage 1

Job (J) Stage 1 (S1)

Mesin Waktu Start Finish

9 C1 3,0 0,0 3,0 2 C2 3,9 0,0 3,9 10 C1 5,0 3,0 8,0 6 K 0,0 24,0 24,0 4 K 0,0 24,0 24,0 1 K 0,0 24,0 24,0 3 K 0,0 24,0 24,0 7 C2 4,9 3,9 8,8 8 C2 1,8 8,8 10,6 5 C2 12,6 10,6 23,2 11 C2 7,9 23,2 31,1

Langkah-langkah perhitungan waktu penyelesaian setiap job pada kromosom 18 di stage 2 sampai stage 4 adalah :

1. Untuk stage j=2,...,4, urutkan job i berdasarkan waktu selesai terkecil pada stage sebelumnya (Ci,j-1, (k)) dimana i = 1,....n, sehingga diperoleh urutan ke

(k) dimana k = 1,...n.

Urutan job yang akan dikerjakan pada stage 2 berdasarkan waktu selesai (finish) dari stage 1 adalah : 9, 2, 10, 7, 8, 5, 6, 4, 1, 3, 11

2. Untuk job i yang berada pada urutan pertama ( (1)) stage j, pilih mesin eligible (e(i),j, (1)) yg tersedia dengan waktu proses terkecil (min t e(i),j, (1))

dimana e(i),j, (1,) Mj.

Job pertama adalah job 9 yang diproses pada mesin P3 dengan waktu 14,5 jam (Tabel 32)

3. Hitung waktu selesai job i, stage j pada urutan (1) Ci,j, (1) = Ci,j-1, (1) + min t e(i),j, (1,)

Jika tidak ada mesin eligible yang tersedia (job tidak diproses di j=1), set Ci,j, (1) = Ci,j-1, (1)

Jika job i pada stage j urutan (1) disubkontrakkan dalam waktu t = tci,j,

maka set Ci,j, (1) = Ci,j-1, (1) + tci,j

Pada contoh kromosom 18, waktu selesai job 9 pada stage 2 adalah C9,2, (1) = C9,1, (1) + min t e(9),2, (1,) = 3 + 14,5 = 17,5

Tabel 33 Waktu proses pada stage 2

No No.

Job

Waktu Proses (jam)

P1 P2 P3 K 1 Job 1 13,0 2 Job 2 34,3 44,0 3 Job 3 14,0 4 Job 4 22,0 5 Job 5 38,2 48,6 6 Job 6 14,5 7 Job 7 38,2 8 Job 8 72,0 9 Job 9 14,5 10 Job 10 17,0 11 Job 11 21,6 27,1

4. Cek apakah masih ada mesin tersisa pada stage j (Mj≠0). Jika masih ada

mesin tersisa, tugaskan job pada urutan berikutnya ( (k)) untuk diproses pada t =0, jika tidak tunggu sampai ada mesin yang selesai berproses.

Urutan berikutnya adalah job 2 yang bisa diproses pada mesin P1 atau P2. Karena lebih dari satu mesin yang tersedia, maka job 2 bisa diproses pada mesin yang memiliki waktu terkecil, yaitu mesin P1 (34,3 jam). Waktu selesai job 2 pada stage 2 adalah :

C2,2, (2) = C2,1, (2) + min t e(9),2, (2) = 3,9 + 34,3 = 38,2

5. Jika ada mesin selesai berproses, tugaskan job pada urutan berikutnya ( (k+1)) pada mesin tersebut, jika job yang berada pada (k+1) tidak sesuai dengan mesin yang tersedia, maka penugasan bisa diberikan pada job urutan berikutnya ( (k+2)) dst.

6. Jika job i pada stage j urutan (k) disubkontrakkan dalam waktu t = tci,j,

maka set Ci,j, (k) = Ci,j-1, (k) + tci,j

7. Hitung waktu penyelesaian job i yang telah ditugaskan terhadap satu mesin (finish time), shg

Ci,j, (k) = max {CiL,j, (kL), Ci,,j-1, (k) } + min t e(i),j, (k)

Urutan berikutnya adalah job 10 yang diproses pada mesin P3 dengan waktu 17,0. Job 10 ini hanya dapat diproses setelah job 9 yang juga

menggunakan mesin P3 selesai diproses pada jam ke 17,5. Waktu selesai job 10 pada mesin P3 adalah :

C10,2, (3) = max {C10,2, (1), C10,,1, (3) } + min t e(10),2, (3)

= max {17; 8,0} + 17,5 =34,5

Urutan ke-4 adalah job 7 yang hanya bisa diproses pada mesin P2 dengan waktu 38,2 jam. Karena mesin P2 belum pernah digunakan oleh job sebelumnya, maka waktu selesai job 4 adalah :

C7,2, (4) = C7,1, (4) + min t e(7),2, (14,) = 8,8 + 38,2 = 47

Urutan ke 5 adalah job 8 yang diproses dengan cara subkontrak selama 72 jam. Waktu penyelesaian job 8 dihitung dengan cara kasus subkontrak seperti yang dijelaskan pada langkah 3, yaitu :

C8,2, (5) = C8,1, (5) + tc8,2

= 10,6 + 72 = 82,6

Urutan ke-6 adalah job 5 yang diproses pada mesin P1 atau P2. Karena kedua mesin sedang digunakan ketika job 5 selesai diproses pada stage 1, maka job 5 terpaksa menunggu sampai salah satu mesin selesai. Mesin yang selesai lebih dulu adalah mesin P1 pada jam ke 38,2, sehingga job 5 diproses pada mesin P1. Waktu penyelesaian pada job 5 adalah :

C5,2, (6) = max {C2,2, (2), C5,1, (6) } + min t e(5),2, (6)

= max {38,2; 23,2} + 38,2 = 76,4

Urutan ke 7 adalah job 6. Mesin yang diperuntukkan untuk job 6 adalah P3 dengan waktu 14,5. Job 6 harus menunggu job 10 yang berada pada urutan ke-3 selesai diproses pada jam ke 34,5, sehingga waktu penyelesaian job 6 adalah :

C6,2, (7) = max {C10,2, (3), C6,1, (7) } + min t e(6),2, (7) = max {34,5; 24,0} + 14,5 = 49

Urutan ke-8 adalah job 4 yang diproses pada mesin P3 dengan waktu 22,2 jam. Waktu selesai untuk job ke-8 adalah :

C4,2, (8) = max {C6,2, (7), C4,1, (8) } + min t e(4),1, (8)

= max {49; 24,0} + 22,2 = 71

Urutan ke-9 dan ke-10 adalah job 1 dan job 3 yang juga diproses pada mesin P3, sehingga waktu selesai kedua job ini adalah :

C1,2, (9) = max {C4,2, (8) ; C1,1, (9) } + min t e(1),1, (9)

= max {71; 24,0} + 13 = 84

C3,2, (10) = max {C1,2, (9) ; C3,1, (10) } + min t e(1),1, (9)

= max {84; 24,0} + 14 = 98

Urutan ke-11 adalah job 11 yang diproses pada mesin P1 atau P2. Dari kedua mesin ini yang selesai duluan adalah mesin P2. Mesin P2 selesai memproses job 7 yang berada pada urutan ke-4 pada jam ke 47, sehingga waktu penyelesaian job 11 di stage 2 adalah :

C11,2, (11) = max {C7,2, (4) ; C11,2, (11) } + min t e(11),2, (11) = max {47; 31,1} + 27,1 = 74.1

Hasil perhitungan waktu penyelesaian pesanan di stage 2 secara lengkap dapat dilihat pada Tabel 34.

Tabel 34 Waktu penyelesaian pada stage 2

Job (J)

Stage 1 (S1)

Stage 2 (S2)

Finish Urutan Mesin Waktu Start Finish

9 3,0 1 P3 14,5 3,0 17,5 2 3,9 2 P1 34,3 3,9 38,2 10 8,0 3 P3 17,0 17,5 34,5 6 24,0 7 P3 14,5 34,5 49,0 4 24,0 8 P3 22,0 49,0 71,0 1 24,0 9 P3 13,0 71,0 84,0 3 24,0 10 P3 14,0 84,0 98,0 7 8,8 4 P2 38,2 8,8 47,0 8 10,6 5 K 72,0 10,6 82,6 5 23,2 6 P1 38,2 38,2 76,4 11 31,1 11 P2 27,1 47,0 74,1

8. Cek apakah i=n dan k=n ? Jika tidak, kembali ke langkah 5, jika ya lanjutkan ke langkah berikutnya.

Jika semua job sudah dijadwalkan (i=11, dan k=11), maka penjadwalan job pada stage 2 selesai dan selanjutnya dilakukan penjadwalan pada stage 3. Langkah-langkah penjadwalan pada stage 3 sama dengan stage 2. Waktu proses job pada stage 3 dapat dilihat pada Tabel 35 dan hasil penjadwalan job pada stage 3 ditunjukkan pada Tabel 36.

Tabel 35 Waktu proses pada stage 3 No No. Job Waktu Proses D1 D2 D3 K 1 Job 1 15,1 17,7 20,3 2 Job 2 3 Job 3 20,5 23,3 26,3 4 Job 4 70,5 76,7 83,4 5 Job 5 6 Job 6 23,6 26,7 29,9 7 Job 7 150,9 163,8 178,7 8 Job 8 48,0 9 Job 9 25,9 29,2 32,8 10 Job 10 43,7 48,5 53,7 11 Job 11

Tabel 36 Waktu penyelesaian pada stage 3

Job (J)

Stage 3

Urutan Mesin Waktu Start Finish 9 1 D1 25,9 17,5 43,4 2 3 38,2 10 2 D2 48,5 34,5 83,0 6 5 D3 29,9 49,0 78,9 4 6 D3 83,4 78,9 162,3 1 10 D2 17,7 84,0 101,7 3 11 D2 23,3 101,7 125,0 7 4 D1 150,9 47,0 197,9 8 9 K 48,0 82,6 130,6 5 8 76,4 11 7 74,1

Perbedaan stage 3 dengan stage 2 adalah pada stage 3 terdapat kasus

flexible flowshop. Kasus flexible flowshop dicirikan oleh adanya job-job yang melompati salah satu tahapan, seperti job 2, job 5 dan job 11 pada stage 3 ini. Waktu penyelesaian untuk job yang tidak melalui suatu stage dihitung seperti yang dijelaskan pada langkah 3. Sebagai contoh, waktu penyelesaian job 2 pada stage 3 adalah :

Ci,j, (1) = Ci,j-1, (1)

Proses perhitungan waktu penyelesaian dilanjutkan sampai stage ke 4 dengan langkah-langkah yang sama dengan stage 2.

Waktu proses pada Stage 4 dapat dilihat pada Tabel 37, dan waktu penyelesaian pada stage 4 dapat dilihat pada Tabel 38.

Tabel 37 Waktu proses pada stage 4

No No.

Job

Waktu Proses (jam)

G1 G2 S M 1 Job 1 3,3 2 Job 2 28,3 11,0 3 Job 3 6,1 3,0 4 Job 4 28,3 11,0 5 Job 5 56,1 6 Job 6 7,4 7 Job 7 56,1 8 Job 8 3,3 2,0 9 Job 9 7,4 3,5 10 Job 10 14,4 6,0 11 Job 11 4,7

Tabel 38 Waktu penyelesaian pada stage 4

Job (J)

Stage 4

Urutan Mesin Waktu Start Finish 9 2 G1 7,4 43,4 50,8 2 1 G2 11,0 38,2 49,2 10 6 G2 6,0 83,0 89,0 6 5 G1 7,4 132,5 139,9 4 10 G2 11,0 162,3 173,3 1 7 G1 3,3 139,9 143,2 3 8 G2 3,0 125,0 128,0 7 11 G1 56,1 197,9 253,9 8 9 G2 2,0 130,6 132,6 5 4 G1 56,1 76,4 132,5 11 3 S 4,7 74,1 78,8

9. Cek apakah j=4 ? Jika tidak kembali ke langkah 1, jika ya, lanjutkan ke langkah berikutnya

Makespan adalah waktu penyelesaian terbesar dari seluruh job pada stage 4. Pada kromosom 18 ini, waktu penyelesaian terbesar adalah waktu penyelesaian job 7, yaitu 253,9 jam.

Masalah penjadwalan flowshop adalah masalah minimasi makespan, maka nilai fungsi evaluasi setiap kromosom harus dikonversi ke dalam nilai fitness

sehingga kromosom yang lebih fit (lebih bugar) akan memiliki nilai fitness yang lebih tinggi. Konversi dilakukan dengan menggunakan fungsi persamaan dibawah ini.

Nilai fitness kromosom 18 = 1/253,9 = 0,00394. Berikut ini dapat dilihat

source code untuk perhitungan nilai fitness :

function Fitness = EvalPop(x,y) %x = kueri yang dimasukan

%y = populasi u_kromosom = size(y,2); elemen_1 = x * y; for i = 1 : u_kromosom Fitness(i)=elemen_1(i)/(norm(x)*norm(y(:,i))); end end

Tabel 39 Nilai makespan populasi pertama (generasi pertama)

No kromosom Makespan No kromosom Makespan 1 292,2204 11 277,8149 2 279,6093 12 292,2204 3 312,0147 13 292,2204 4 323,2092 14 325,0037 5 277,8149 15 262,6164 6 277,8149 16 333,4583 7 272,6501 17 277,8149 8 255,7025 18 253,9081 9 272,6501 19 326,7466 10 277,8149 20 277,8149

Nilai makespan dan nilai fitness dihitung untuk seluruh kromosom yang terdapat pada populasi awal. Pada contoh kasus ini terdapat 20 kromosom yang

harus dihitung nilai makespannya dan nilai fitnessnya. Pada Tabel 38 dan 39 dapat dilihat nilai makespan dan nilai fitness untuk 20 kromosom yang menjadi anggota populasi pertama.

Tabel 40 Nilai fitness populasi pertama

No kromosom Nilai fitness No kromosom Nilai fitness 1 0,003422 11 0,0036 2 0,003576 12 0,003422 3 0,003205 13 0,003422 4 0,003094 14 0,003077 5 0,0036 15 0,003808 6 0,0036 16 0,002999 7 0,003668 17 0,0036 8 0,003911 18 0,003938 9 0,003668 19 0,00306 10 0,0036 20 0,0036 Elitisme

Nilai evaluasi yang dimiliki tiap individu atau kromosom akan diurutkan untuk mengetahui kromosom yang memiliki nilai terbaik. Kromosom dengan nilai terbaik tersebut akan disalin atau disimpan agar tidak rusak akibat proses genetik (Suyanto 2005). Jumlah kromosom yang digunakan pada percobaan ini sebanyak 2 nilai terbaik. Source code untuk proses elitisme adalah sebagai berikut :

[sortFit m] = sort(Fitness,'descend'); a = size(m,2); elit_1 = Populasi(m(1),:); elit_2 = Populasi(m(2),:); TemPopulasi(1,:) = elit_1; TemPopulasi(2,:) = elit_2; Seleksi Kromosom

Seleksi adalah proses memilih individu pada populasi yang memiliki nilai evaluasi baik untuk dilanjutkan ke proses pindah silang dan mutasi (Cox

2005). Proses seleksi yang digunakan adalah roullete wheel atau tournament selection.

Roulette wheel

Seleksi dilakukan dengan cara mengambil nilai acak antara nilai minimum dan maksimum evaluasi tiap generasi. Jika nilai tersebut lebih kecil dari nilai probabilitas kumulatif maka kromosom yang ditunjuk akan dipilih sebagai kromosom induk.

Tahap awal dari roulette wheel adalah dengan menghitung probabilitas seleksi dengan rumus:

Probabilitas seleksi kumulatif (qk) untuk setiap kromosom Vk:

Algoritma seleksi sebagai berikut:

Langkah 1 : Bangkitkan bilangan acak r antara [0,1]

Langkah 2 : Jika r ≤ q1, pilih kromosom V1, kalau tidak pilih kromosom k dengan

ketentuan :

Vk (2 kPop.Size) dan qk-1 r qk

Kromosom yang memiliki nilai evaluasi yang besar atau mendekati 1 akan memiliki kemungkinan terpilih yang lebih besar sebagai populasi baru untuk proses genetik selanjutnya. Hal tersebut menyebabkan kromosom akan terpilih lebih dari satu kali. Source Code untuk seleksi kromosom dengan roulette wheel adalah :

function newPop = RouletteWheel(PopulasiAwal,Fitness) Jum_Krom=size(PopulasiAwal,1);

total_eval = sum(Fitness); prob = Fitness/total_eval;

prob = sort(cumsum(prob)); a = min(prob); b = max(prob); RN=rand(1,Jum_Krom)* a+((b+0.001)-a); fitIn = 1; newIn = 1; newPop = PopulasiAwal;

while newIn <= Jum_Krom & fitIn <=Jum_Krom if (RN(newIn) <= prob(fitIn)) newPop(newIn,:)=PopulasiAwal(fitIn,:); newIn=newIn+1; fitIn = 1; else fitIn=fitIn+1; end end Tournament Selection

Proses seleksi dengan menggunakan sistem turnamen antara beberapa individu yang dipilih secara acak dari populasi. Pemenang turnamen (yang memiliki nilai fitness terbaik) dari dua individu yang dipilih secara acak akan digunakan sebagai induk untuk melakukan pindah silang dengan peluang seleksi turnamen yang digunakan pt = 0.8 (Wahde & Sandberg 2010). Dengan peluang 1 - pt untuk individu yang memiliki fitness jelek untuk dipilih. Source code untuk seleksi turnamen adalah sebagai berikut :

function newPop = tournament (PopulasiAwal,Fitness,) jmlpop = size(PopulasiAwal,1); pt = 0.8; for i = 1:jmlpop iTmp1 = 1 + fix(rand*(jmlpop)); iTmp2 = 1 + fix(rand*(jmlpop)); r = rand; if (r < pt) if Fitness(iTmp1) > Fitness(iTmp2) newPop(i,:)=PopulasiAwal(iTmp1,:); else newPop(i,:)=PopulasiAwal(iTmp2,:); end else if Fitness(iTmp1) > Fitness(iTmp2) newPop(i,:)=PopulasiAwal(iTmp2,:); else newPop(i,:)=PopulasiAwal(iTmp1,:); end end end

Pindah Silang

Pindah silang merupakan proses paling penting dalam GA pada proses genetik. Proses ini melakukan pindah silang antar kromosom induk yang telah dipilih sebelumnya. Pemilihan antar kromosom induk yang akan dipindahsilang ialah dengan cara mengambil nilai acak yang bernilai lebih kecil dari peluang pindah silang Pc. Pada contoh kasus penelitian ini, peluang pindah silang yang digunakan sebesar 0.8. Proses pindah silang dapat dilihat pada Gambar 43 .

Mulai Kromosom Induk 1 Kromosom Induk 2 P = rand [0,1] Pindah Silang P < Pc Selesai Tidak Ya

Gambar 43 Proses pindah silang.

Pada masalah flowshop ini, operator penyilangan yang digunakan adalah

Partially Mapped Crossover (PMX). Prosedur penyilangan PMX ini yaitu dimulai

dengan menentukan dua buah titik penyilangan seara acak pada sepasang kromosom induk. Setelah itu elemen kromosom yang terletak diantara kedua titik tersebut saling dipertukarkan untuk membentuk dua kromosom anak. Kromosom anak yang baru terbentuk kemudian diperiksa kelegalannya. Apabila kromosom tersebut memiliki elemen yang sama, maka kromosom tersebut dilegalkan berdasarkan kaidah pemetaan. Kaidah ini diperoleh dari hasil penukaran elemen antar kromosom induk. Source code pemilihan induk (parents) yang akan di

cross over adalah :

function Pindex = pilihKros(Populasi,Pc); %Pc = peluang pindah silang

Jum_Krom = size(Populasi,2); j=1;

RN=rand(1,Jum_Krom); for i = 1 : Jum_Krom if RN(i)<Pc Pindex(j) = i; j=j+1; end end

Source code untuk proses pindah silang dengan metode PMX diuraikan di bawah ini :

function Induk = PindahSilang(Induk,indeks,JumGen) parent = Induk;

u_indeks = size(indeks,2); u_Induk = size(Induk,2);

%jika banyaknya yang dikros ganjil..maka dikurangi 1 u_indeks = size(indeks,2); if mod(u_indeks,2)~=0 u_indeks = u_indeks-1; end for i = 1 : 2 : u_indeks a = indeks(i); b = indeks(i+1); TP = sort(1 + fix(rand(1,2)*(JumGen-1))); temp1=Induk(a,TP(1):TP(2)) temp2=Induk(b,TP(1):TP(2)) Induk(a,TP(1):TP(2))=temp2; Induk(b,TP(1):TP(2))=temp1; %checking legalization for n=1 : numel(Induk(a,:)) if( n >= TP(1) & n <= TP(2) ) else loop = 1; while loop == 1

[ok idx] = find(Induk(a,n) == temp2); if numel(ok) == 1 Induk(a,n) = temp1(idx); else loop=0; end end end end for n=1 : numel(Induk(b,:)) if( n >= TP(1) & n <= TP(2) ) else loop = 1; while loop == 1

[ok idx] = find(Induk(b,n) == temp1); if numel(ok) == 1

else loop = 0; end end end end end Mutasi

Proses mutasi yang digunakan adalah sistem gen dengan nilai gen mutasi yaitu bilangan bulat. Gen akan mengalami perubahan yang berguna untuk mengembalikan kerusakan gen akibat genetik lainnya (Aly 2007). Mutasi yang digunakan dalam masalah

flowshop adalah reciprocal exchange mutation yang merupakan bagian dari swap

mutation. Prosedur mutasinya yaitu dimulai dengan menentukan sebiah posisi secara acak

pada kromosom anak yang baru terbentuk hasil pindah silang. Elemen kromosom pada posisi ini kemudian akan dipertukarkan dengan elemen lain disebelah kanannya. Apabila posisi acak yang diperoleh terletak pada posisi akhir kromosom, maka penukaran elemen dilakukan dengan elemen yang berada pada posisi awal. Source code mutasi adalah sebagai berikut :

function pop = mutasi(newPop,Pmutasi) %mengalami revisi setelah sidang [m n] = size(newPop);

%banyaknya yang akan termutasi banyakMutasi = Pmutasi*(m*n); for i = 1 : banyakMutasi x = fix(1+((m+1)-1)*rand); %baris y = fix(1+((n+1)-1)*rand); %kolom %proses pertukaran if y ~= n temp = newPop(x,y); newPop(x,y) = newPop(x,(y+1)); newPop(x,(y+1)) = temp;

else %jika berada diurutan belakang maka dipertukarkan dengan urutan awal

temp = newPop(x,y); newPop(x,y) = newPop(x,1); newPop(x,1) = temp; end end pop = newPop;

Iterasi Algoritma Genetika

Untuk menjalankan operator genetika diperlukan input berupa cara seleksi kromosom, operator pindah silang (crossover), peluang pindah silang (Pc), peluang mutasi (Pc), dan jumlah generasi. Pada kasus ini dilakukan beberapa kali percobaan (iterasi) untuk menghasilkan kromosom dengan nilai makespan yang paling kecil. Iterasi yang digunakan dalam penelitian ini sebanyak 100 kali. Jika iterasi telah mencapai maksimum yaitu 100 kali, maka proses genetik pada percobaan ini akan selesai dan menghasilkan populasi yang lebih baik dari sebelumnya.

Gambar 44 Hasil evaluasi waktu penyelesaian pesanan.

Dari beberapa kali percobaan, didapatkan hasil penjadwalan pesanan seperti dapat dilihat pada Gambar 44. Penjadwalan pesanan dilakukan dengan menggunakan Program Matlab versi 10a. Pada hasil penjadwalan ini maksepan yang dihasilkan adalah 251,7988 jam. Hasil ini diperoleh dengan menggunakan cara seleksi kromosom Tournament, operator pindah silang PMX, peluang pindah silang sebesar 0,8, peluang mutasi 0,01, dan jumlah generasi 100. Jika jam kerja diberlakukan sebanyak 1 shift sehari, dimana satu shift sama dengan delapan jam

kerja, maka semua pekerjaan dapat diselesaikan dalam waktu 32,14 hari (tanpa memperhitungkan hari libur).

Gambar 45 Urutan job, mesin yang terpilih dan waktu selesai setiap job (stage 1 sampai stage 3).

Dari grafik nilai fitness pada Gambar 44 dapat dilihat bahwa nilai fitness maksimum (optimal) sudah mulai tercapai mendekati generasi ke 25. Sebelumnya masih terjadi fluktuasi nilai fitness yang disebabkan oleh proses pindah silang dan mutasi yang dilakukan oleh operator genetika. Proses pencarian jadwal (urutan) optimum dari suatu kromosom yang terdiri dari 11 gen, membutuhkan ruang pencarian yang sangat besar. Apabila tidak digunakan algoritma genetika, maka ruang pencarian jadwal optimum ini akan melibatkan alternatif solusi yang sangat banyak. Jumlah alternatif solusi jadwal adalah 39.916.600. Nilai ini merupakan hasil permutasi dari 11 faktorial, yang merupakan jumlah job yang akan dijadwalkan. Dengan penggunaan algoritma genetika, besarnya area pencarian jauh berkurang. Dalam kasus ini, jika solusi optimal telah tercapai pada iterasi ke-25, dimana setiap iterasi terdiri dari 20 kromosom, maka besarnya area pencarian adalah :

20 x 25 = 500 alternatif solusi.

Persentasi area pencarian yang dilakukan oleh GA pada kasus ini dapat dihitung sebagai berikut :

(500/39.916.600) x 100 % = 0,0012%

Dari nilai di atas dapat dilihat bahwa algoritma genetika bekerja sangat

Dokumen terkait