solusi algoritma genetika pada permasalahan...

86
Emirul Bahar, Dewi Agushinta R., Rossi Septy Wahyuni SOLUSI ALGORITMA GENETIKA PADA PERMASALAHAN TRANSPORTASI KOMODITAS BUNGA KRISAN Hasil Penelitian Hibah Unggulan Perguruan Tinggi TA 2015-2016 PENERBIT GUNADARMA Matlabprojects.org

Upload: vanminh

Post on 14-Mar-2019

229 views

Category:

Documents


0 download

TRANSCRIPT

Emirul Bahar, Dewi Agushinta R., Rossi Septy Wahyuni

SOLUSI ALGORITMA GENETIKA PADA

PERMASALAHAN TRANSPORTASI KOMODITAS

BUNGA KRISAN

Hasil Penelitian Hibah Unggulan Perguruan Tinggi TA 2015-2016

PENERBIT GUNADARMA

Matlabprojects.org

ii

Emirul Bahar, Dewi Agushinta R., Rossi Septy Wahyuni

SOLUSI ALGORITMA GENETIKA PADA

PERMASALAHAN TRANSPORTASI KOMODITAS

BUNGA KRISAN

PENERBIT GUNADARMA

iii

Solusi Algoritma Genetika Pada Permasalahan Transportasi Komoditas Bunga Krisan

Oleh : Emirul Bahar, Dewi Agushinta R., Rossi Septi Wahyuni

Gambar Sampul : Dewi Agushinta R.

Design dan Layout : Dewi Agushinta R.

Edisi Pertama Cetakan Kedua, Desember 2016

Diterbitkan pertama kali oleh Gunadarma Hak Cipta Dilindungi Undang-Undang Jakarta 2016

ISBN : 978-602-9438-66-6

iv

PRAKATA

Segala puji serta syukur kehadirat Tuhan Yang Maha Esa, karena atas rahmat-

Nya sehingga Penulis dapat menyelesaikan buku hasil dari Penelitian

Unggulan Perguruan Tinggi yang berjudul “Optimalisasi Rute Transportasi

Komoditas Bunga Krisan Dengan Menggunakan Genetic Algorithm Untuk

Kapasitas Kendaraan Angkut Yang Berbeda”. Buku ini merupakan luaran

dari penelitian yang Penulis lakukan dalam rangka mengikuti Program DIKTI.

Penulisan ini tidak luput dari bantuan banyak pihak. Oleh karena itu, pada

kesempatan ini Penulis ingin menyampaikan rasa terima kasih yang sebesar-

besarnya kepada:

1. Prof. Dr. E. S. Margianti, SE., MM., selaku Rektor Universitas Gunadarma,

beserta seluruh pimpinan Universitas Gunadarma.

2. Prof. Dr. Ir. Bambang Suryawan, MT. selaku Dekan Fakultas Teknologi

Industri, Universitas Gunadarma.

3. Dr. Ir. Hotniar Siringoringo MSc., selaku Ketua Lembaga Penelitian,

Universitas Gunadarma.

4. Pihak pemberi hibah dalam hal ini Kementrian Riset Teknologi dan

Pendidikan Tinggi.

5. Maesa, Poltak dan Arum, mahasiswa mahasiswi yang membantu Penulis

melakukan penelitian.

6. Pihak-pihak lain yang tidak dapat disebutkan namanya satu per satu.

Penulis menyadari bahwa buku ini masih jauh dari sempurna karena

keterbatasan waktu dan kemampuan yang dimiliki. Penulis berharap agar buku

ini dapat bermanfaat bagi semua pihak yang membacanya. Untuk itu Penulis

mengharapkan saran dan kritik yang membangun demi kesempurnaan buku ini.

Jakarta, Oktober 2016

Penulis

v

DAFTAR ISI

PRAKATA

DAFTAR ISI

DAFTAR TABEL

DAFTAR GAMBAR

BAB 1. ALGORITMA GENETIKA

1.1 Fitness Value

1.2 Seleksi

1.3 Crossover

1.4 Mutasi

BAB 2. RUTE KENDARAAN ANGKUT

2.1 Masalah Rute kendaraan Angkut

2.2 Variasi Permasalahan VRP

2.2 Metode Penyelesaian VRP

2.4 Heterogeneous Fleet VRP

2.5 Model Matematis Heterogeneous Fleet VRP

2.6 Nearest Neighbor Algorithm

BAB 3. TRANSPORTASI KOMODITAS BUNGA KRISAN

3.1 Transportasi Komoditas

3.2 Profil Perusahaan (Depot)

3.3 Produk dan Armada Pengiriman (Vehicles)

3.4 Data Pelanggan (Customer)

3.5 Lokasi Pelanggan (Rute)

BAB 4. PEMODELAN ALGORITMA GENETIKA

4.1 Pengolahan Data

4.2 Pemodelan Chromosome

4.3 Pergantian Populasi

BAB 5. SOLUSI MASALAH ALAT ANGKUT YANG BERBEDA

5.1 Permasalahan Alat Angkut Berbeda

5.2 Tahap Pengembangan Model

BAB 6. PERANCANGAN DAN IMPLEMENTASI

iv

v

vii

viii

1

5

5

7

7

9

9

12

13

15

15

16

19

19

22

23

26

26

28

28

39

40

40

45

47

vi

6.1 Deskripsi Umum Perangkat Lunak

6.2 Rancangan Perangkat Lunak

6.3 Implementasi Arsitektur

6.4 Batasan Implementasi

6.5 Implementasi Algoritma

6.6 Uji Coba Evaluasi

DAFTAR PUSTAKA

LAMPIRAN BARIS PROGRAM

47

47

52

54

54

59

67

70

vii

DAFTAR TABEL

Tabel 1.1 Daftar Istilah pada AG Beserta Penjelasan

Tabel 3.1 Spesifikasi Kendaraan Perusahaan

Tabel 3.2 Volume Kendaraan

Tabel 3.3 Daftar Customer (Pelanggan) PT. EDAR

Tabel 4.1 Inisialisasi Awal

Tabel 4.2 Evaluasi Fitness Value Populasi Awal

Tabel 4.3 Proses Selection Populasi Awal

Tabel 4.4 Hasil Selection Populasi Awal

Tabel 4.5 Populasi Hasil Proses Crossover

Tabel 4.6 Hasil Proses Mutation

Tabel 4.7 Hasil Populasi Generasi Pertama Pada Tabel Evaluasi

Tabel 5.1 Demand Produk Krisan yang Dikirim Pemasok

Tabel 5.2 Proses Iterasi Mobil Boks L300 Kapasitas 372.000 Batang

Tabel 5.3 Proses Iterasi Mobil Boks Engkle Kapasitas 678.000 Batang

Tabel 5.4 Proses Iterasi Mobil Boks double Kapasitas 1.152.000 Batang

Tabel 5.5 Proses Penentuan Vehicle Untuk Daerah Serpong

Tabel 5.6 Hasil Penentuan Vehicle Optimal Model Permasalahan HFVRP

2

24

24

26

30

30

31

32

35

37

38

41

41

42

42

44

44

viii

DAFTAR GAMBAR

Gambar 1.1 Siklus Algoritma Genetika

Gambar 1.2 Contoh Metode Roulette Wheel

Gambar 1.3 Ilustrasi Proses Crossover

Gambar 1.4 Ilustrasi Proses Mutasi

Gambar 2.1 Solusi dari Sebuah VRP

Gambar 2.2 Permasalahan Dasar Kelas VRP dan Keterkaitannya (Prana, 2007)

Gambar 3.1 Perkembangan Produksi Krisan, 2000-2011 (Dep. Pertanian, 2013)

Gambar 3.2 Perkembangan Produktivitas Krisan, 2000-2011 (Dep. Pertanian,

2013)

Gambar 3.3 Karakteristik Armada Pengiriman

Gambar 3.4 Peta Lokasi Depot dan Customer

Gambar 4.1 Flowchart Proses Manual

Gambar 4.2 Pengkodean Chromosome Untuk Permasalahan VRP

Gambar 4.3 Pembangkitan Bilangan Acak 1 Sampai 25

Gambar 4.4 Hasil Rute Optimal Pendistribusian Bunga Krisan Generasi

Pertama

Gambar 6.1 Desain DFD Level 0

Gambar 6.2 Desain DFD Level 1

Gambar 6.3 Desain DFD Level 2

Gambar 6.4 Desain Perancangan User Interface Aplikasi

Gambar 6.5 Diagram Optimalisasi Rute dengan Fungsi Parameter De Jong

Gambar 6.6 Output Rute Optimal Aplikasi Untuk Skenario 1

Gambar 6.7 Optimalisasi Rute dengan Fungsi Parameter Lee Jacobson

Gambar 6.8 Output Rute Optimal Aplikasi Untuk Skenario 2

Gambar 6.9 Optimalisasi Rute dengan Fungsi Parameter Sri Kusumadewi

Gambar 6.10 Output Rute Optimal Aplikasi Untuk Skenario 3

Gambar 6.11 Output Aplikasi

5

6

7

8

10

13

20

20

25

27

28

29

36

39

49

50

51

52

60

61

62

63

64

65

66

1

BAB 1

ALGORITMA GENETIKA

Pada tahun 1859 Charles Darwin (1809 - 1882), seorang peneliti alam

dari Inggris, mengumumkan teorinya yang berjudul “Theory of Natural

Selection”. Teori tersebut menyatakan bahwa individu-individu yang

mempunyai karakteristik yang bagus (menurut kriteria-kriteria tertentu) akan

mempunyai kemungkinan untuk bertahan hidup lebih besar dan bereproduksi

dengan menurunkan karakteristiknya kepada keturunan-keturunannya.

Berlaku sebaliknya, individu-individu dengan karakteristik yang kurang

bagus secara perlahan akan tersingkir dari populasi.

Pada alam ini, informasi genetik dari sebuah individu disimpan

dalam chromosome, yang terdiri dari sekumpulan gen. Karakteristik dari setiap

individu dikendalikan oleh gen-gen tersebut, yang kemudian akan diwariskan

kepada keturunan-keturunannya ketika individu tersebut berkembang biak.

Selain faktor perkembangbiakan, suatu ketika juga terjadi peristiwa yang

disebut mutasi, yang menyebabkan terjadinya perubahan informasi pada

chromosome. Berdasarkan teori Darwin tersebut, nilai rata-rata karakteristik

dari populasi akan meningkat setiap generasi, seiring dengan bertambahnya

individu-individu yang mempunyai kriteria yang bagus dan punahnya

individu-individu yang mempunyai kriteria yang buruk.

Terinspirasi dari teori Darwin tersebut, pada tahun 1975 John Holland

dan timnya menciptakan teori Algoritma Genetika (AG). Ide utama di balik

Algoritma Genetika ini adalah memodelkan proses evolusi alami menggunakan

warisan genetika seperti yang diumumkan oleh Darwin. Meskipun

diperkenalkan oleh John Holland, penggunaan Algoritma Genetika untuk

memecahkan persoalan yang kompleks baru didemonstrasikan kemudian

(pada tahun yang sama) oleh De Jong, dan kemudian oleh Goldberg pada

tahun 1989. Menyesuaikan dengan teori Darwin, dalam Algoritma Genetika

digunakan istilah-istilah yang mewakili elemen-elemen dalam teori Darwin

tersebut, yaitu seperti yang dapat dilihat pada tabel 1.1.

2

Tabel 1.1 Daftar Istilah pada AG Beserta Penjelasan

Istilah Makna

Population

Merupakan sekumpulan solusi dari permasalahan yang akan diselesaikan menggunakan Algoritma Genetika. Population terdiri dari sekumpulan Chromosome.

Chromosome

Mewakili sebuah solusi yang mungkin (feasible solution) untuk permasalahan yang ingin diselesaikan. Sebuah Chromosome terdiri dari sekumpulan Gen.

Gen Mewakili elemen-elemen yang ada dalam sebuah solusi.

Parent Merupakan chromosome yang akan dikenai operasi genetik (crossover).

Offspring Adalah chromosome yang merupakan hasil dari operasi genetik (crossover).

Crossover

Merupakan operasi genetik yang mewakili proses perkembangbiakan antar individu. Proses crossover ini memerlukan dua buah parent dan menghasilkan satu atau lebih offspring (keturunan).

Mutation

Merupakan operasi genetik yang mewakili proses mutasi dalam perjalanan hidup individu. Mutasi berperan menghasilkan perubahan acak dalam populasi, yang berguna untuk menambah variasi dari chromosome-chromosome dalam sebuah populasi. Detail dari proses mutasi ini juga akan dibahas kemudian.

Selection Procedure

Merupakan proses yang mewakili proses seleksi alam (natural selection) dari teori Darwin. Proses ini dilakukan untuk menentukan parent dari operasi genetik (crossover) yang akan dilakukan untuk menghasilkan keturunan (offspring).

Fitness Value

Merupakan penilaian yang menentukan bagus tidaknya sebuah chromosome. Chromosome yang mempunyai Fitness Value yang rendah pada akhirnya akan tersingkir oleh chromosome-chromosome yang mempunyai Fitness Value yang lebih baik.

Evaluation Function

Merupakan fungsi yang digunakan untuk menentukan nilai dari Fitness Value. Evaluation Function ini merupakan sekumpulan kriteria-kriteria tertentu dari permasalahan yang ingin diselesaikan.

Generation Merupakan satuan dari populasi setelah mengalami operasi-operasi genetika, berkembang biak, dan

3

menghasilkan keturunan. Pada akhir dari setiap generation, untuk menjaga agar jumlah chromosome dalam populasi tetap konstan, chromosome-chromosome yang mempunyai Fitness Value yang rendah dan memiliki peringkat di bawah nilai minimal akan dihapus dari populasi.

Algoritma Genetika merupakan metode pembelajaran heuristic yang adaptif,

karena itu bisa jadi terdapat beberapa versi dari Algoritma Genetika, yang

menyesuaikan dengan permasalahan yang dihadapi. Algoritma Genetika juga

merupakan algoritma yang efektif dan sederhana dan relatif mudah untuk

diimplementasikan. Algoritma Genetika memiliki keunggulan-keunggulan

dibandingkan dengan metode-metode heuristic yang lain, yaitu (Eko, 2007):

1. AG menyelesaikan masalah dengan mengkodekan permasalahan menjadi

chromosome, bukan dengan menyelesaikan permasalahan itu sendiri.

Karena itu diperlukan pemodelan chromosome yang baik dan efektif yang

dapat mewakili solusi dari permasalahan yang dihadapi.

2. AG memulai prosesnya dengan sekumpulan initial solutions, berbeda

dengan metaheuristic lain seperti Simulated Annealing dan Tabu Search yang

memulai proses dengan sebuah solusi tunggal, dan berlanjut ke solusi

lainnya melalui suatu transisi. Karena itu AG melakukan pencarian

multi-directional dalam solution space, yang memperkecil kemungkinan

berhentinya pencarian pada kondisi local optimum.

3. Hanya diperlukan sebuah fungsi evaluasi tunggal yang berbeda untuk tiap

permasalahan.

4. Algoritma Genetika merupakan algoritma yang ‘buta’, karena AG tidak

mengetahui kapan dirinya telah mencapai solusi yang optimal.

Seperti yang telah disebutkan sebelumnya, Algoritma Genetika dapat

dengan mudah beradaptasi dengan berbagai macam permasalahan, sehingga

ada banyak versi dari Algoritma Genetika, tergantung dari permasalahan yang

ingin dipecahkan. Tapi secara umum Algoritma Genetika harus memenuhi

kriteria- kriteria berikut ini untuk menghasilkan solusi yang optimal:

4

1. Sebuah representasi yang tepat dari sebuah solusi permasalahan, dalam

bentuk chromosome.

2. Pembangkit populasi awal. Umumnya populasi awal dibangkitkan secara

acak, namun untuk beberapa kasus juga bisa dibangkitkan melalui

metode-metode tertentu. Penggabungan keduanya (pembangkitan

populasi awal secara acak dan menggunakan metode-metode tertentu)

disebut dengan seeding. Populasi awal yang dihasilkan sebaiknya bersifat

heterogen, karena jika populasi yang terbentuk terlalu homogen, Genetic

Algorithm kehilangan kemampuannya untuk mencari dalam solution space,

sampai populasi mempunyai variasi chromosome yang beragam melalui

operasi genetik lain (mutation).

3. Sebuah evaluation function untuk menentukan fitness value dari tiap

solusi.

4. Genetic Operator, mensimulasikan proses reproduksi (perkembangbiakan)

dan mutasi.

5. Parameter-parameter lain, seperti kapasitas populasi, probabilitas dari

operasi-operasi genetik, dan semacamnya.

6. Kapasitas populasi sangat mempengaruhi kemampuan Algoritma Genetika

dalam mencari solusi. Kapasitas populasi yang terlalu kecil menyebabkan

kurangnya variasi chromosome yang muncul, sehingga dapat menyebabkan

hasil akhir yang buruk. Kapasitas populasi yang besar biasanya

memberikan hasil yang lebih baik, dan mencegah terjadinya konvergensi

yang prematur.

Terbentuknya populasi merupakan sekumpulan individu yang diproses

bersama dalam sebuah siklus proses evolusi. Satu-satuan siklus proses evolusi

dinyatakan dalam generasi. Dalam proses evolusi, individu secara terus-

menerus mengalami perubahan gen untuk menyesuaikan diri dengan

lingkungan hidupnya. Hasil akhir tiap evolusi nantinya diharapkan diperoleh

individu yang terbaik. Siklus proses evolusi Algoritma Genetika ditunjukkan pada

Gambar 1.1.

5

Gambar 1.1 Siklus Algoritma Genetika

1.1 Fitness Value

Untuk melakukan seleksi alam, setiap individual i dievaluasi

menggunakan nilai fitness value fi, yang ditentukan dengan sebuah fungsi

evaluasi. Fitness value mengukur kualitas dari sebuah solusi dan memungkinkan

tiap solusi untuk dibandingkan. Memilih individual untuk proses reproduksi

dan seleksi alam mempunyai efek yang sangat berpengaruh terhadap efisiensi

AG. Seleksi yang berlebihan akan mengarahkan AG ke kondisi konvergen yang

prematur, yang merupakan masalah utama pada AG (Bangun, 2011). Karena

proses seleksi bergantung pada fitness value, maka penting dalam AG untuk

membuat fungsi evaluasi dengan hati-hati.

1.2 Seleksi

Dari berbagai penelitian, terlihat bahwa keragaman populasi dan

pemilihan seleksi merupakan faktor penting dalam pencarian genetik (Bangun,

2011). Keduanya saling berkaitan, karena penekanan pada proses seleksi akan

menurunkan jumlah populasi dan sebaliknya. Jika anggota populasi menjadi

terlalu homogen, mutasi merupakan satu-satunya faktor untuk menghasilkan

variasi pada populasi. Karena itu proses selection merupakan tahapan yang

penting dalam AG. Individu yang lebih kuat akan mempunyai kemungkinan

yang lebih besar untuk melakukan reproduksi.

Salah satu metode selection yang banyak adalah metode Roulette Wheel.

Pada metode ini, kemungkinan memilih individual berkaitan langsung dengan

fitness value-nya. Gambar 1.3 mengilustrasikan sebuah cara sederhana untuk

menentukan selection pada individu dalam sebuah populasi. Individu P1

6

punya fitness value f1, P2 punya f2, dan seterusnya. Bayangkan ada sebuah pin

di atas roda tersebut, kemudian roda tersebut diputar sampai berhenti. Dari

proporsi pembagian luas roda pada tiap individu, dapat diperkirakan bahwa

individu P3 mempunyai kemungkinan terpilih paling besar, dan individu P4

mempunyai kemungkinan paling kecil. Gambar 1.2 merupakan contoh

pembagian luas roda untuk masing-masing individu.

Gambar 1.2 Contoh Metode Roulette Wheel

Kelemahan metode Roulette Wheel yaitu akan menimbulkan

permasalahan ketika perbedaan fitness value antar individu tidak terlalu besar,

sehingga kemungkinan tiap individu menjadi hampir sama.

Metode lainnya adalah metode Ranking, yang telah memberikan hasil

yang relatif lebih bagus. Metode ini menggunakan perbandingan nilai relatif

dari tiap individual, bukan nilai fitness itu sendiri. Karena jika menggunakan

nilai fitness langsung, jika populasi mempunyai beberapa individu yang

dominan, individu-individu tersebut akan semakin mendominasi populasi dan

menyebabkan konvergensi prematur.

Metode lainnya adalah Tournament Selection, yang merupakan kombinasi

dari selection dan ranking. Pada tournament selection, setiap individu

dibandingkan dalam sebuah ‘turnamen’, individu yang berkualitas lebih baik

akan menang. Metode turnamen yang umum digunakan adalah pendekatan

biner, pada satu waktu dipilih dua pasang individu (secara acak), dan

membandingkan masing-masing pasangan individu untuk mendapatkan dua

individu yang terbaik dari masing-masing pasangan.

7

1.3 Crossover

Operator AG yang paling utama adalah crossover, yang mensimulasikan

proses reproduksi antara dua individu. Cara kerjanya adalah menggabungkan

dua buah individu (yang disebut parent) untuk menghasilkan satu atau lebih

individu baru (yang disebut offspring). Offspring tersebut mewarisi sifat-sifat

genetik dari offspring-nya, sehingga sifat-sifat baik dari parent-nya tetap

dipertahankan dan diharapkan dari dua parent yang baik dapat

menghasilkan offspring/ keturunan yang lebih baik.

Ada beberapa proses crossover yang dapat diaplikasikan pada AG,

bergantung pada tipe permasalahan dan tipe populasi yang ada, namun proses

crossover sederhana dapat diilustrasikan sebagai dua parent P1 dan P2 yang

dipilih menggunakan proses selection (atau random), kemudian masing-masing

parent tersebut dipecah menjadi dua bagian pada bagian yang sama. Kedua

parent tersebut kemudian saling bertukar pasangan untuk menghasilkan dua

offspring O1 dan O2, seperti ditunjukkan pada Gambar 1.4. Offspring O1

dihasilkan dari potongan kanan P1 dan potongan kiri P2, dan offspring O2

dihasilkan dari potongan kiri P2 dan potongan kanan P2. Proses crossover lebih

jelas dapat dilihat pada Gambar 1.3.

P1 :

P2 :

O1 : O2 :

Gambar 1.3 Ilustrasi Proses Crossover

1.4 Mutasi

Operator lain yang juga berperan penting adalah mutation (mutasi), yang

diaplikasikan pada sebuah individual tertentu. Proses ini merubah sedikit

komposisi penyusun individual tersebut, dan menambahkan suatu karakteristik

1 0 1 1 1 0 1

1 1 1 1 0 1 1

1 1 1 1 1 0 1 1 0 1 1 0 1 1

8

tertentu secara acak. Proses ini tidak boleh terlalu banyak dilakukan karena

akan membuat AG menjadi seperti random search, sedangkan jika populasi AG

ada pada kondisi yang sangat konvergen, mutasi justru diperlukan untuk

membuat variasi-variasi baru pada populasi.

P :

O :

Gambar 1.4 Ilustrasi Proses Mutasi

Contoh sederhana operasi mutation dapat dilihat pada Gambar 1.4. Pada

gambar tersebut terdapat sebuah data biner P yang merupakan parent

individual. Kemudian dipilih sebuah bit secara acak untuk dilakukan proses

8utase. Pada contoh, dipilih bit pada posisi nomor 2, yang kemudian dirubah

dari 0 menjadi 1 pada offspring-nya.

1 0 1 1 0 1

1 1 1 1 0 1

9

BAB 2

RUTE KENDARAAN ANGKUT

2.1 Masalah Rute kendaraan Angkut

Masalah rute kendaraan angkut atau yang sangat dikenal dengan istilah

Vehicle Routing Problem (VRP), diperkenalkan pertama kali oleh Dantziq dan

Ramser pada tahun 1959 (Laporte et.al, 2000). Semenjak itu dipelajari secara luas.

Secara sederhana, VRP merupakan permasalahan yang meliputi konstruksi rute-

rute dari sejumlah vehicle (kendaraan) yang dimulai dari suatu depot utama

menuju ke lokasi sejumlah customer (pelanggan) dengan jumlah permintaan

tertentu. Tujuannya adalah untuk meminimumkan biaya total tanpa melebihi

kapasitas kendaraan yang berlokasi pada satu atau lebih depot yang dijalankan

oleh sekelompok pengendara dengan menggunakan road network yang sesuai.

VRP dapat didefinisikan sebagai suatu pencarian solusi yang meliputi

penentuan sejumlah rute. Masing-masing rute dilalui oleh satu kendaraan yang

berawal dan berakhir di depot asalnya sehingga kebutuhan/ permintaan semua

pelanggan terpenuhi dengan tetap memenuhi kendala operasional yang ada,

juga dengan meminimalisasi biaya transportasi global (Toth dan Vigo 2002)

(Prana, 2007).

VRP juga dapat dilihat sebagai kombinasi dari dua permasalahan

optimalisasi lain, yaitu Bin Packing Problem (BPP) dan Travelling Salesman

Problem (TSP). BPP dapat dideskripsikan sebagai “Diberikan sejumlah angka,

yang melambangkan ukuran dari sejumlah item, dan sebuah konstanta K, yang

melambangkan kapasitas dari bin. Berapa jumlah bin minimum yang

diperlukan?” (Falkanauer, 1996). Tentu saja satu item hanya dapat berada dalam

satu bin saja, dan total kapasitas item pada setiap bin tidak boleh melebihi

kapasitas dari bin tersebut. Di samping itu, TSP adalah sebuah permasalahan

tentang seorang salesman yang ingin mengunjungi sejumlah kota. Salesman harus

mengunjungi tiap kota sekali saja, dimulai dan diakhiri dari kota awal. Inti

permasalahan adalah untuk menemukan jalur terpendek melalui semua kota

10

yang ada. Hubungan keduanya dengan VRP adalah vehicle dapat dihubungkan

dengan customer menggunakan BPP, dan urutan kunjungan vehicle terhadap tiap

customer diselesaikan menggunakan TSP. Gambar 2.1 menunjukkan solusi dari

sebuah permasalahan VRP dalam bentuk graph. Pada Gambar 2.1, node 0

melambangkan depot (kota asal), dan node 1-10 melambangkan customer.

Gambar 2.1 Solusi dari Sebuah VRP

Menurut Toth dan Vigo, karakteristik utama VRP berdasarkan komponen-

komponennya adalah sebagai berikut (Prana, 2007):

1. Jaringan jalan, biasanya direpresentasikan dalam sebuah graph (diagram)

yang terdiri dari arc (lengkung atau bagian-bagian jalan) dan vertex (titik

lokasi customer dan depot). Tiap lengkung diasosiasikan dengan biaya

(jarak) dan waktu perjalanan (tergantung jenis kendaraan, kondisi/

karakteristik jalan, dan periode perlintasan).

2. Customer (pelanggan), ditandai dengan vertex (titik) dan biasanya memiliki

hal-hal seperti berikut:

a. Jumlah permintaan barang (untuk dikirim ataupun diambil), jenis

barang dapat berbeda-beda.

b. Periode pelayanan tertentu (time windows), di luar rentang waktu

tersebut konsumen tidak dapat menerima pengiriman maupun

pengambilan.

c. Waktu yang dibutuhkan untuk menurunkan atau memuat barang

(loading/ unloading time) pada lokasi konsumen, biasanya tergantung

dari jenis kendaraan.

11

d. Pengelompokkan (subset) kendaraan yang tersedia untuk melayani

konsumen (sehubungan dengan keterbatasan akses atau persyaratan

permuatan dan penurunan barang).

e. Prioritas atau penalti sehubungan dengan kemampuan kendaraan

untuk melayani permintaan.

3. Depot, juga ditandai dengan suatu titik, merupakan ujung awal dan akhir

dari suatu rute kendaraan. Tiap depot memiliki sejumlah kendaraan

dengan jenis dan kapasitas tertentu yang dapat digunakan untuk

mendistribusikan produk.

4. Vehicle (kendaraan/ armada angkut), memiliki:

a. Depot asal, dan kemungkinan untuk mengakhiri rutenya di depot lain.

b. Kapasitas (berat, volume atau jumlah barang yang dapat diangkut).

c. Kemungkinan untuk dipisah menjadi beberapa kompartemen untuk

mengangkut barang dengan jenis yang berbeda-beda.

d. Alat yang tersedia untuk operasi (permuatan atau penurunan barang).

e. Pengelompokan (subset) lintasan/ lengkung dari diagram jaringan

jalan.

f. Biaya yang berhubungan dengan penggunaan kendaraan tersebut

(unit per jarak, unit per waktu, unit per rute, dan lainnya).

5. Pengemudi, memiliki kendala seperti jam kerja harian, jumlah dan jam

istirahat, durasi maksimum perjalanan, serta lembur yang biasanya juga

dikenakan pada kendaraan yang digunakan.

Dalam membuat konstruksi rute, terdapat beberapa kendala yang harus

dipenuhi, seperti jenis barang yang diangkut, kualitas dari pelayanan, juga

karakteristik konsumen dan kendaraan. Beberapa kendala operasional yang

sering ditemui misalnya:

1. Pada tipe rute, besar muatan yang diangkut oleh kendaraan tidak boleh

melebihi kapasitas kendaraan tersebut.

2. Kegiatan yang dilayani dalam sebuah rute hanya merupakan pengiriman

atau pengembalian, atau mungkin keduanya.

12

3. Konsumen mungkin hanya dapat dilayani dalam rentang waktu tertentu

(time windows) dan jam kerja dari pengemudi kendaraan yang

melayaninya.

4. Kendala prioritas juga mungkin akan timbul ketika suatu konsumen harus

dilayani sebelum konsumen lain. Kendala seperti ini biasanya terdapat

pada kasus pickup and delivery (pengambilan dan pengiriman dalam satu

rute) atau VRP with backhauls di mana pengambilan baru dapat dilakukan

setelah semua pengiriman selesai dikarenakan kesulitan dalam mengatur

peletakan muatan.

Menurut Toth dan Vigo, terdapat empat tujuan umum dalam VRP, yaitu

(Prana, 2007):

1. Meminimumkan biaya transportasi global, terkait dengan jarak dan biaya

tetap yang berhubungan dengan kendaraan.

2. Meminimumkan jumlah kendaraan yang dibutuhkan untuk melayani

semua konsumen.

3. Menyeimbangkan rute-rute dalam hal waktu perjalanan dan muatan

kendaraan.

4. Meminimumkan penalti akibat pelayanan yang kurang memuaskan

terhadap konsumen, seperti ketidaksanggupan melayani konsumen secara

penuh ataupun keterlambatan pengiriman.

2.2 Variasi Permasalahan VRP

Menurut Toth dan Virgo, ditemukan beberapa kelas atau variasi

permasalahan utama dalam VRP, yaitu (Prana, 2007):

1. Capacitated VRP (CVRP), merupakan kelas VRP yang paling sederhana

dan yang paling banyak dipelajari di mana kendala yang ada hanya

berupa kapasitas kendaraan yang terbatas.

2. Distance Constrained VRP (DCVRP), merupakan VRP dengan kendala

batasan panjang rute.

13

3. VRP with Time Windows (VRPTW), merupakan kasus VRP dengan setiap

konsumen memiliki batasan rentang waktu pelayanan.

4. VRP with Pick up and Delivery (VRPPD), merupakan VRP dengan

pelayanan campuran, yaitu pengiriman dan pengambilan barang dalam

satu rute.

5. VRP with Backhauls (VRPB), di mana pengambilan baru dapat dilakukan

setelah semua pengiriman selesai.

Dasar kelas atau variasi dalam VRP di atas membentuk keterkaitan satu

sama lain. VRP with Backhauls bisa jadi membutuhkan kondisi permasalahan

CVRP dalam pemecahan masalah. Banyaknya barang yang akan diambil pada

aktivitas VRPB tidak boleh melebihi kemampuan kapasitas vehicle. Begitu juga

untuk keterkaitan antar variasi permasalahan VRP lainnya yang ditunjukkan

pada Gambar 2.2.

Gambar 2.2 Permasalahan Dasar Kelas VRP dan Keterkaitannya (Prana, 2007)

2.3 Metode Penyelesaian VRP

Sebelumnya telah dijelaskan bahwa VRP dapat dianggap sebagai

kombinasi dari BPP dan TSP. Baik BPP dan TSP, keduanya dikategorikan

sebagai permasalahan NP-hard sehingga VRP juga dikategorikan sebagai NP-

hard yang mungkin belum ditemukan metode eksak untuk mencari nilai

optimalnya. Karena itu digunakan metode selain eksak untuk memecahkan VRP

berskala besar. Untuk VRP skala kecil dengan beberapa customer dan

14

homogeneous fleet (semua kendaraan mempunyai kapasitas yang sama), branch

and bound terbukti merupakan metode terbaik untuk mencari solusi optimal

(Pereira et.al, 2002). Kebanyakan penyelesaian untuk VRP berskala besar

menggunakan heuristic. Heuristic adalah algoritma yang berbasis kira-kira, yang

berusaha mencari solusi optimal secepat mungkin. Secara garis besar, metode

heuristic dapat dikategorikan menjadi dua bagian besar, yaitu heuristic klasik

yang berkembang antara tahun 1960 dan 1990, dan metaheuristic yang

berkembang mulai 1990.

Metode heuristic klasik dapat dikategorikan lagi menjadi tiga kategori,

yaitu Construction Method, Twophase method, dan Improvement methods (Laporte &

Semet, 1999). Metode metaheuristic jauh lebih efektif dibandingkan metode

heuristic klasik. Metode-metode metaheuristic menggabungkan Neighbourhood

Search, Memory Structure, dan Recombination pada tiap solusi untuk

menghasilkan solusi yang lebih baik (Gendreau et. al, 1999). Akan tetapi, waktu

proses yang dibutuhkan metaheuristic tidak dapat diketahui secara pasti, dan

biasanya lebih lama dibandingkan heuristic klasik. Selain itu metaheuristic juga

melibatkan lebih banyak parameter daripada heuristic klasik.

Selama satu dekade terakhir, setidaknya ada enam metode metaheuristic

untuk aplikasi VRP yang ditemukan, metode-metode tersebut adalah Simulated

Annealing (SA), Deterministic Annealing (DA), Tabu Search (TS), Ant Systems (AS),

Neural Network (NN), dan Algoritma Genetika (Gendreau et. al, 1999). Algoritma

SA, DA, dan TS bergerak dari satu solusi ke solusi lain yang merupakan

tetangganya, sampai memenuhi stopping criterion yang ditentukan. Algoritma

AS menggunakan mekanisme konstruktif untuk menciptakan beberapa solusi

pada tiap iterasi berdasarkan informasi yang didapat dari iterasi sebelumnya.

Algoritma NN adalah algoritma pembelajaran, serangkaian parameter secara

bertahap disesuaikan nilainya sampai memenuhi solusi yang sesuai keinginan.

Dan yang terakhir, algoritma AG yang mempertahankan sejumlah solusi-solusi

yang paling berkualitas, dan mengkombinasikannya untuk membentuk solusi

baru.

15

2.4 Heterogeneous Fleet VRP

Aplikasi VRP pada kehidupan nyata dapat ditemukan pada banyak

hal, seperti pada permasalahan pengaturan produk dari supplier kepada agen,

pengangkutan sampah, pengambilan surat pada kotak pos, pengaturan koran

pada para pelanggan, dan sebagainya (Eko, 2007). Tidak semua perusahaan

pengangkut sampah mempunyai armada yang sama persis, tidak semua loper

koran menggunakan kendaraan yang sama, dan tidak semua supplier

menggunakan jenis pengangkutan yang sama, bisa menggunakan kendaraan

darat, sepeda motor, mobil, truk, atau bahkan kapal laut dan pesawat terbang.

Permasalahan-permasalahan tersebut dapat diefisiensikan dengan dicari nilai

optimalnya menggunakan pemodelan VRP. Namun parameter-parameter dari

proses pengiriman barang tidak sesederhana itu. Pada aplikasinya, ada berbagai

konstrain tambahan yang harus dipertimbangkan, seperti biaya perjalanan yang

asimetris, depot yang lebih dari satu, jangka waktu pengiriman (misalnya pada

pengiriman makanan), adanya penjemputan barang selain pengiriman, dan

masih banyak lagi kemungkinan-kemungkinan lain yang spesifik pada aplikasi

tertentu.

2.5 Model Matematis Heterogeneous Fleet VRP

Kebanyakan pemodelan integer programming pada permasalahan VRP

klasik (Capacitated VRP) menggunakan variabel biner sebagai variabel yang

melambangkan rute vehicle, untuk mengindikasikan apakah sebuah vehicle

bergerak antara dua customer pada kondisi optimal. Formulasi ini pertama kali

diajukan oleh Garvin et al. (1957) untuk memodelkan sebuah permasalahan

pengaturan minyak, yang kemudian dikembangkan oleh Garvis dan Graves

(1982).

Gheysens et al. (1984) membuat formulasi menggunakan variabel biner

dengan tiga index Xijk sebagai aliran vehicle yang bernilai 1 jika sebuah vehicle

bertipe k melakukan perjalanan dari customer i ke customer j, dan 0 jika tidak. Di

samping itu ada variabel lain yaitu Yij melambangkan jumlah barang yang

16

dibawa ketika meninggalkan customer i menuju customer j. Formulasi matematis

Heterogeneous Fleet VRP secara lengkap dapat dilambangkan sebagai berikut

(Eko, 2007):

(F1) z(F1) = Min ∑ 𝐹𝑘𝑘∈𝑀 ∑ 𝑥0𝑗𝑘

𝑗∈𝑉′ + ∑ 𝑘∈𝑀 ∑ 𝑐𝑖𝑗𝑖,𝑗∈𝑉 𝑥𝑖𝑗𝑘 (2.1)

s.t. ∑ 𝑘∈𝑀 ∑ 𝑖∈𝑉 𝑥𝑖𝑗𝑘 = 1, ∀𝑗 ∈ 𝑉′ (2.2)

∑ 𝑥𝑖𝑝𝑘 𝑖∈𝑉 − ∑ 𝑗∈𝑉 𝑥𝑝𝑗

𝑘 = 0, ∀𝑝 ∈ 𝑉′, ∀𝑘 ∈ 𝑀 (2.3)

∑ 𝑥0𝑗𝑘 𝑗∈𝑉′ ≤ 𝑚𝑘

, ∀𝑘 ∈ 𝑀 (2.4)

∑ 𝑦𝑖𝑗 𝑖∈𝑉 − ∑ 𝑖∈𝑉 𝑦𝑗𝑖

= 𝑞𝑗, ∀𝑗 ∈ 𝑉′ (2.5)

𝑞𝑗 𝑥𝑖𝑗

𝑘 ≤ 𝑦𝑖𝑗 ≤ (𝑄𝑘 − 𝑞𝑖)𝑥𝑖𝑗𝑘 ,∀𝑖, 𝑗 ∈ 𝑉, 𝑖 ≠ 𝑗, ∀𝑘 ∈ 𝑀 (2.6)

𝑦𝑖𝑗 ≥ 0, ∀𝑖, 𝑗 ∈ 𝑉, 𝑖 ≠ 𝑗 (2.7)

𝑥𝑖𝑗𝑘 ∈ [0, 1], ∀𝑖, 𝑗 ∈ 𝑉, 𝑖 ≠ 𝑗, ∀𝑘 ∈ 𝑀 (2.8)

Fungsi konstrain (2.2) dan (2.3) pada formulasi memastikan tiap customer

hanya dikunjungi sekali saja, dan jika sebuah vehicle mengunjungi seorang

customer, dia juga harus berangkat meninggalkan customer tersebut. Jumlah

maksimal vehicle yang tersedia untuk setiap tipe vehicle dibatasi dengan konstrain

(2.4). Konstrain (2.5) merupakan konstrain pada arus item, di mana perbedaan

jumlah barang pada sebuah vehicle sebelum dan setelah mengunjungi suatu

customer harus sama dengan demand dari customer tersebut. Yang terakhir,

konstrain (2.6) memastikan bahwa jumlah barang yang dibawa sebuah vehicle

tidak boleh melebihi kapasitas maksimal dari vehicle tersebut.

2.6 Nearest Neighbor Algorithm

Nearest Neighbor Algorithm merupakan metode sederhana dalam

menyelesaikan suatu permasalahan dengan cara menghitung kedekatan antara

kasus baru dengan kasus lama, yaitu berdasarkan pada pencocokan bobot dari

sejumlah fitur yang ada (Aswar & Muriana, 2013). Contoh kasus seperti pada

solusi pencarian data seorang pasien baru di sebuah rumah sakit dengan

menggunakan informasi dari pasien terdahulu. Untuk mencari pasien mana

yang akan digunakan maka dihitung kedekatan kasus pasien baru dengan

17

semua kasus pasien lama. Kasus pasien lama dengan kedekatan terbesar yang

akan diambil untuk digunakan pada kasus pasien baru.

Metode Nearest Neighbor merupakan metode paling sederhana untuk

menyelesaikan masalah Travelling Salesman Problem yaitu dengan memilih salah

satu node yang mewakili suatu kota atau lokasi awal. Selanjutnya, pilih node

tujuan atau kota yang akan dikunjungi berikutnya, dengan pertimbangan hanya

memilih kota yang memiliki jarak terdekat dengan kota yang sebelumnya

dikunjungi. Kemudian, setelah seluruh kota dikunjungi atau seluruh node telah

terhubung, maka rute perjalanan ditutup dengan kembali ke kota asal (node asal).

Secara umum langkah-langkah dari metode ini dijabarkan sebagai berikut

(Aswar & Muriana, 2013):

1. Inisialisasi, hal pertama yang perlu dilakukan adalah menentukan nilai N

= {1, 2, 3, 4, …, n} sebagai jumlah kota atau lokasi yang akan dikunjungi.

Kemudian satu kota ditentukan secara sembarang sebagai titik awal

perjalanan (iº). V adalah sejumlah kota lain yang masih harus dikunjungi

serta S adalah urutan rute perjalanan saat ini. Pada langkah pertama, nilai

S dapat diartikan sama dengan (iº), karena belum ada kota lain yang

dikunjungi.

2. Pilih kota yang selanjutnya akan dikunjungi. Jika i1 adalah kota yang

berada di urutan terakhir dari rute S, kota berikutnya (j*) harus ditentukan

dari kota yang memiliki jarak paling minimal dengan i1 dan j* merupakan

anggota dari V. Apabila terdapat beberapa pilihan optimal, maka kota

dipilih secara acak.

3. Kota j* ditambahkan di urutan akhir dari rute sementara dan kota yang

terpilih diambil dari daftar kota yang belum dikunjungi.

4. Jika semua kota yang harus dikunjungi telah dimasukkan ke dalam rute

atau dapat diartikan V = 0, maka tidak ada lagi kota yang tertinggal.

Tahap selanjutnya, menutup rute dengan menambah kota inisialisasi atau

iº di akhir rute. Dengan kata lain, rute ditutup dengan proses kunjungan

kembali lagi ke kota asal.

18

Metode Nearest Neighbor banyak digunakan pada kasus TSP dikarenakan

metode ini merupakan salah satu metode yang memiliki karakteristik

pembentukan rute distribusi sesuai dengan keadaan nyata yang terdapat pada

kondisi di lapangan. Selain itu alasan penggunaan metode ini dikarenakan

teknik penentuan rute yang diterapkan pada metode ini lebih mudah dilakukan

dibandingkan dengan metode TSP yang lain. Metode Nearest Neighbor juga

merupakan metode yang dapat dijadikan sebagai dasar dalam pembuatan rute

distribusi sebelum melakukan proses optimalisasi rute dengan menggunakan

metode lain.

19

BAB 3

TRANSPORTASI KOMODITAS BUNGA KRISAN

3.1 Transportasi Komoditas

Transportasi komoditas merupakan komponen vital pada ranah ekonomi.

Transportasi ini mendukung aktivitas produksi, perdagangan, dan konsumsi

dengan jaminan ketersediaan waktu dan pergerakan yang efisien pada bahan

baku dan produk jadi. Perhitungan transportasi merupakan bagian signifikan

pada biaya akhir produk dan representasi komponen penting pada belanja

nasional suatu negara (Crainic dan Laporte, 1997). Salah satu produk yang

diangkut adalah bunga krisan sebagai komoditas perdagangan holtikultura

signifikan di Indonesia.

Perkembangan produksi krisan di Indonesia selama periode 2000-2011

terus mengalami peningkatan dengan rata-rata pertumbuhan 71,45% per tahun

(Gambar 3.1). Produksi krisan di Indonesia pada tahun 2000 dari hanya sebesar

2,28 juta tangkai meningkat menjadi 305,87 juta tangkai pada tahun 2011.

Kontribusi produksi krisan terbesar rata-rata tahun 2000-2011 diberikan oleh

Jawa sebesar 96,37%, sementara di Luar Jawa hanya memberikan kontribusi

produksi sebesar 3,63% dari total produksi krisan di Indonesia.

Secara umum perkembangan produktivitas krisan di Indonesia selama

periode 2000-2011 mengalami peningkatan dengan rata-rata pertumbuhan

sebesar 44,67% per tahun (Gambar 3.2). Pada tahun 2000 produktivitas krisan di

Indonesia sebesar 1,97 tangkai/m2 dan meningkat menjadi 34,71 tangkai/m2

pada tahun 2011 yang merupakan produktivitas tertinggi selama periode

tersebut. Pada tahun 2005 produktivitas krisan di Indonesia sempat mengalami

penurunan yang sangat drastis hingga mencapai 61,54% menjadi 6,90

tangkai/m2, dari sebesar 17,94 tangkai/m2 pada tahun 2004.

20

Gambar 3.1 Perkembangan Produksi Krisan, 2000-2011 (Dep. Pertanian, 2013)

Gambar 3.2 Perkembangan Produktivitas Krisan, 2000-2011 (Dep. Pertanian,

2013)

Secara umum kegiatan-kegiatan yang termasuk dalam industri bunga

krisan adalah awal pemesanan oleh konsumen pada produsen, pembuatan

kesepakatan antara pemasok dan pembeli, penyediaan pesanan, transportasi,

pendistribusian dan barang sampai di tangan konsumen. Masalah yang sering

timbul di dalam kegiatan tersebut adalah ketidakefisienan pada waktu dan

biaya. Barang yang dipesan sering tiba di tangan konsumen tidak tepat pada

waktu yang telah disepakati, atau jumlah yang diterima konsumen tidak tepat

sesuai dengan kesepakatan. Masalah-masalah ini sering menimbulkan

peningkatan biaya dalam pengiriman ulang barang kepada konsumen dan

penurunan kepercayaan produsen kepada produsen.

Permasalahan terjadi diakibatkan oleh sifat bunga krisan sebagai komoditas

mudah rusak (perishable). Selama pengangkutan sering terjadi penurunan

kualitas akibat pengaruh lamanya waktu pengangkutan terhadap perubahan

21

fisik maupun kimia bunga krisan tersebut. Sedangkan di sisi lainnya, semakin

banyak titik pelanggan yang dikunjungi dalam 1 (satu) rute transportasi, maka

semakin sedikit jumlah kendaraan angkut yang dibutuhkan sehingga akan

meminimumkan biaya transportasi walaupun secara aspek waktu akan

cenderung memperlambat waktu angkut sehingga cenderung akan menurunkan

aspek kualitas bunga krisan.

Penggunaan alat transportasi juga dapat menimbulkan kerugian terutama

bila terjadi kesalahan pemilihan jenis angkutan untuk pengiriman barang ke

konsumen. Apalagi jika pengiriman barang dilakukan dalam jumlah yang tidak

sedikit. Pemilihan jalur transportasi yang tepat juga perlu diperhatikan. Jika

tidak, maka akan terjadi peningkatan biaya transportasi atau biaya kerugian saat

pendistribusian.

Salah satu alternatif penyelesaian masalah tersebut, dapat digunakan

optimasi melalui pendekatan model transportasi Vehicle Routing Problem (VRP)

bunga krisan. VRP adalah sebuah model permasalahan optimasi kombinatorial

yang kompleks, yang didefinisikan sebagai pencarian cara penggunaan yang

efisien dari sejumlah kendaraan yang harus melakukan perjalanan untuk

mengunjungi sejumlah tempat untuk mengantar dan/ atau menjemput orang/

barang (Fisher, 1995). Setiap tujuan hanya boleh dilayani oleh satu kendaraan

saja. Hal ini dilakukan dengan mempertimbangkan kapasitas kendaraan dalam

satu kali angkut untuk meminimalkan biaya yang diperlukan. Biasanya

penentuan biaya minimal erat kaitannya dengan jarak yang minimal.

Permasalahan VRP klasik menganggap kapasitas tiap kendaraan yang

digunakan sama semua. Pada kenyataannya, sebuah perusahaan tidak selalu

mempunyai komposisi kendaraan yang sama sehingga metode penyelesaian

VRP klasik kurang mengena untuk diterapkan. Karena itu muncul varian metode

VRP klasik untuk menyelesaikan permasalahan VRP dengan komposisi

kendaraan yang berbeda, yang dikenal dengan Heterogeneous Fleet VRP. Lingkup

permasalahan VRP pada praktiknya sangat luas (dalam hal banyaknya jumlah

pelanggan), sehingga metode eksak tidak dapat digunakan untuk

22

menyelesaikannya. Penekanan penyelesaian permasalahan optimasi tersebut

akhirnya lebih ditekankan pada metode metaheuristik.

Selama satu dekade terakhir, setidaknya ada enam metode metaheuristik

untuk aplikasi VRP yang ditemukan, metode-metode tersebut adalah Simulated

Annealing (SA), Deterministic Annealing (DA), Tabu Search (TS), Ant Systems (AS),

Neural Network (NN), dan Algoritma Genetika (M. Gendreau, 1999). SA, DA, dan TS

bergerak dari satu solusi ke solusi lain yang merupakan tetangganya, sampai

memenuhi kriteria pemberhentian yang ditentukan. Algoritma AS menggunakan

mekanisme konstruktif untuk menciptakan beberapa solusi pada tiap iterasi

berdasarkan informasi yang didapat dari iterasi sebelumnya. Algoritma NN

adalah algoritma pembelajaran, serangkaian parameter secara bertahap

disesuaikan nilainya sampai memenuhi solusi yang diinginkan. Terakhir,

Algoritma Genetika (AG) mempertahankan sejumlah solusi-solusi yang paling

berkualitas, dan mengombinasikannya untuk membentuk solusi baru.

3.2 Profil Perusahaan (Depot)

PT. EDAR merupakan perusahaan agribisnis yang memproduksi berbagai

sayuran hidroponik maupun konvensional (Aswar & Muriana, 2013). Komoditi

produk perusahaan ini di antaranya adalah paprika, tomat recento, timun

jepang, berbagai jenis sayuran daun, berbagai jenis lettuce dan masih banyak

komoditi lain yang disediakan. Perusahaan ini juga mempunyai unit kerja

processing sayuran siap olah, di antaranya adalah lettuce, daun bawang, bawang

bombay, seledri dan lain-lain. Produk terbaru dari perusahaan ini adalah sayur

siap masak seperti sayur asem, sayur lodeh, mix salad dan lain-lain.

PT. EDAR didirikan pada tahun 1983, berlokasi di Bogor, Indonesia pada

ketinggian 670 meter di atas permukaan laut (mdpl) (Hermada, 2009). Pada

awalnya, perusahaan memulai dengan menanam melon di atas lahan terbuka

dengan beberapa staf dan beberapa karyawan harian. Daerah yang pertama kali

dijadikan lahan adalah daerah Sukamanah.

23

Tahun 1985 usaha mulai dikembangkan dengan menanam bawang putih

seluas 7 Ha di daerah Cipanas, Kab. Cianjur dan memperkerjakan karyawan

sebanyak 100 orang. Banyaknya petani lain yang juga membudidayakan bawang

putih membuat usaha tersebut kurang memberikan keuntungan sehingga

kemudian diputuskan untuk mengembalikan usahanya di sekitar desa

Sukamanah.

Perusahaan melakukan perubahan dalam pola usahanya dari cara

tradisional di lahan terbuka menjadi hidroponik dalam green house (rumah kaca).

Sistem irigrasi yang digunakan di dalam green house tersebut adalah drip

irrigation (irigasi tetes) yang digunakan untuk memproduksi paprika, cabe

jepang (shisito), timun jepang, tomat dan melon. Hasil percobaan teknik baru

tersebut menunjukkan hasil yang memuaskan yang membuat pimpinan

memutuskan untuk memperbesar usaha ini. Untuk itu pada akhir tahun 1991,

luas area green house diperlebar hingga mencapai 1,5 hektar.

Usaha penanaman sayur dalam green house perusahaan ini terus

berkembang. Melihat kondisi tersebut, maka pada tahun 1992 sebagai usaha

diverifikasi, mulai mengadakan percobaan untuk memproduksi stek krisan yang

sudah berakar (unrooted cutting), yang kemudian ditingkatkan kembali

produksinya dalam bentuk bunga pot. Hasil percobaan yang memuaskan

mendorong pembentukan divisi bunga dan mulai memproduksinya secara

komersial dan kontinyu.

3.3 Produk dan Armada Pengiriman (Vehicles)

PT. EDAR mendistribusikan produk bunga krisan dan sayur-sayuran

kepada konsumen menggunakan alat angkutan darat yang berpendingin untuk

menjaga kualitas bunga dan sayuran. Mutu bunga potong bergantung pada

penampilan dan daya tahan kesegarannya. Untuk mempertahankan mutu bunga

potong, perlu dilakukan beberapa perlakuan sejak bunga siap panen sampai tiba

di tangan konsumen. Salah satu tahap yang perlu diperhatikan adalah saat

pengangkutan.

24

Alat transportasi yang digunakan untuk melakukan pengiriman bunga

menggunakan mobil boks berpendingin dengan suhu rata-rata 8ºC. Selain itu

untuk menjaga kondisi bunga agar tetap baik maka bunga dikemas dengan

kertas porla lalu dilakukan pengepakan menggunakan karton dus (kardus) yang

cukup kuat sehingga tidak akan rusak saat disusun secara bertindihan di dalam

kendaraan. Spesifikasi kendaraan yang digunakan dijabarkan di dalam tabel 3.1.

Tabel 3.1 Spesifikasi Kendaraan Perusahaan

Kendaraan Nama Jumlah Kapasitas

(unit) (kardus) (batang)

1 Mobil boks L300 1 71 372000

2 Mobil boks engkle 6 131 678000

3 Mobil boks double 4 223 1152000

Besar kapasitas barang yang dapat diangkut didapat dari ukuran ruang

mobil boks. Berikut ini penjabaran volume masing-masing jenis mobil boks pada

tabel 3.2.

Tabel 3.2 Volume Kendaraan

Jenis Ukuran Ruang Dalam Kap. Ruang

Panjang (m) Lebar (m) Tinggi (m) (m3)

Mobil boks L300 2.30 1.50 1.1 3.80

Mobil boks enkle 2.94 1.57 1.5 6.92

Mobil boks double 4.07 1.7 1.7 11.76

Kapasitas mobil angkut mempengaruhi pemilihan dan penggunaan

jumlah vehicle yang optimal. Karakteristik masing-masing armada angkut yang

digunakan berbeda-beda seperti yang ditunjukkan pada Gambar 3.3.

Produk yang dikirim oleh perusahaan terdiri atas bunga potong, bibit

krisan unrooted cutting dan rooted cutting. Berdasarkan hasil pengamatan, hasil

penghitungan dan informasi dari berbagai sumber di mesin pencarian, kapasitas

angkut setiap kendaraan yang dimiliki perusahaan berbeda-beda. Ukuran tiap

produk krisan juga berbeda-beda sehingga untuk mendapatkan daya angkut

kendaraan yang tepat diasumsikan satuan kardus untuk bunga krisan berjenis

rooted cutting (batang stek berakar) dan bunga potong. Untuk produk unrooted

25

cutting, jumlah batang stek pada setiap kardus tidak seragam. Oleh karena itu,

untuk mendapatkan daya angkut kendaraan yang tepat maka digunakan satuan

batang.

(a) Mobil Boks L300 (b) Mobil Boks Double

(c) Mobil Boks Engkle

Gambar 3.3 Karakteristik Armada Pengiriman

Setiap pelanggan bunga memiliki daya beli yang relatif berbeda sehingga

kuantitas produk yang dibeli pun beragam. Oleh karena itu barang kiriman

untuk beberapa pelanggan yang berbeda dapat digabungkan dan dikirim dalam

satu kendaraan. Pelanggan-pelanggan yang pengiriman pesanannya

digabungkan dalam satu kendaraan merupakan pelanggan yang berdekatan

lokasinya, atau lokasi mereka terletak dalam jalan yang searah sehingga mudah

bagi pihak transportasi saat pendistribusian.

Penyusunan barang (bunga) ke dalam kendaraan sebelum didistribusikan

juga menjadi salah satu perhatian yang khusus untuk menjaga agar produk

tidak mengalami kerusakan saat pengiriman. Urutan pemasukan barang ke

dalam kendaraan disesuaikan dengan letak pelanggan yang bersangkutan.

Penyusunan dimulai dari pemasukan bunga untuk pelanggan yang terletak

paling jauh dari rute sampai ke rute terdekat.

26

3.4 Data Pelanggan (Customer)

Pembeli produk bunga krisan (customer/ pelanggan) di PT. EDAR berasal

dari berbagai daerah. Selain itu masing-masing pembeli melakukan pemesanan

dalam jumlah yang berbeda-beda. Total pembeli bunga krisan sampai Maret

2010 sebesar 41 pelanggan. Data customer diambil dari beberapa data yang

memiliki persentase pemesanan cukup sering atau dianggap sebagai pelanggan

tetap. Ini dilakukan untuk meminimalisir penggunaan data yang tidak tetap

dalam ruang lingkup aktivitas pendistribusian. Data yang tidak tetap adalah

data customer yang tidak pasti dalam melakukan pemesanan bunga krisan secara

berkala. Berikut ini data customer dan jumlah permintaan (demand) yang

dihimpun pada tabel 3.3.

Tabel 3.3 Daftar Customer (Pelanggan) PT. EDAR

No. Tujuan Demand

Kardus Batang

1 Bandara Soekarno-Hatta - 1.500.000

2 Cipanas 250 -

3 Jakarta 150 -

4 Serpong 100 -

5 Cikarang 75 -

Dari tabel 3.3 dapat dilihat jumlah permintaan setiap pelanggan berbeda-

beda dan satuan yang digunakan dalam jumlah permintaan ini adalah per

batang untuk produk jenis unrooted cutting dan kardus khusus untuk produk

bunga krisan jenis lainnya.

3.5 Lokasi Pelanggan (Rute)

Lokasi pendistribusian bunga krisan tersebar ke beberapa titik distribusi

di berbagai wilayah. Data jarak yang diperlukan untuk pengolahan adalah jarak

antara depot dengan titik distribusi (customer) dan jarak antar titik-titik distribusi

27

tersebut. Ilustrasi lokasi titik distribusi bunga krisan PT. EDAR dapat dilihat

pada Gambar 3.4.

Gambar 3.4 Peta Lokasi Depot dan Customer

Untuk mempermudah pengidentifikasian, digunakan pengkodean titik

distribusi berupa pengurutan nomor seperti pada gambar 3.4. Depot diberi

nomor 0 dan titik distribusi lain (customer) diberi nomor 1 sampai 5 sesuai

dengan jumlah customer. Pengukuran jarak antara dua titik dilakukan dengan

mengikuti alur jalan yang ada pada peta sehingga data jarak yang diperoleh

dapat mendekati jarak aktual yang ditempuh oleh vehicle (kendaraan).

Pengukuran jarak antar dua titik disesuaikan dengan rute yang memberikan

jarak terpendek. Pada pengumpulan data jarak ini, diasumsikan jarak tempuh

dari titik A ke titik B sama dengan jarak tempuh dari B ke titik A, sehingga jarak

yang dihasilkan akan simetris. Data jarak dari depot menuju titik distribusi dan

jarak antara titik-titik distribusi dituangkan dalam bentuk matriks jarak. Hasil

data jarak yang diperoleh digunakan sebagai dasar proses penghitungan

Algoritma Genetika.

28

BAB 4

PEMODELAN ALGORITMA GENETIKA

4.1 Pengolahan Data

Berbagai data riel pada bab 3 akan diproses secara manual menggunakan

konstruksi Algoritma Genetika. Tahap ini dilakukan untuk menghasilkan analisis

sistem secara keseluruhan, asumsi-asumsi, serta batasan-batasan sehingga

mempermudah perancangan aplikasi yang akan dibuat nantinya. Tahap

pengolahan data manual dimodelkan dalam bentuk flowchart pada gambar 4.1.

Gambar 4.1 Flowchart Proses Manual

4.2 Pemodelan Chromosome

Chromosome menyatakan salah satu solusi yang mungkin. Terdiri dari

kumpulan gen baik dalam bentuk biner, float maupun kombinatorial. Di dalam

chromosome berisi informasi banyaknya vehicle serta penugasan vehicle terhadap

tiap customer. Karena VRP merupakan permasalahan yang berkaitan dengan

rute, sebaiknya digunakan tipe chromosome yang non-repetitif. Oleh karena itu

chromosome yang terdiri dari angka-angka biner tidak dapat digunakan (Eko,

29

2007). Chromosome yang digunakan berisi angka-angka numerik di mana setiap

angkanya mewakili sebuah customer (gen). Visualisasi chromosome dapat dilihat

pada Gambar 4.2.

1 : 4 :

2 : 5 :

3 :

Gambar 4.2 Pengkodean Chromosome Untuk Permasalahan VRP

Hasil chromosome (rute) paling optimal yang telah dikenai proses

Algoritma Genetika akan diproses kembali untuk dipecah ke dalam beberapa sub

rute di mana tiap sub akan dilewati oleh vehicle yang ditentukan dari solusi

permasalahan HFVRP. Proses tersebut akan diolah dengan bantuan Nearest

Neighbor Algorithm.

4.2.1 Inisialisasi Populasi

Tahap inisialisasi populasi merupakan tahap pembangkitan populasi

awal secara random yang juga memperhatikan urutan node yang akan dilalui

vehicle dengan menyusun rute kunjungan dari titik depot ke titik kandidat

customer (gen) yang terdekat dan belum dikunjungi. Kemudian dari titik

customer yang terdekat tersebut, berangkat ke titik customer selanjutnya yang

paling terdekat sampai seluruh customer (gen) terlayani. Konsep tersebut diambil

dari bantuan metode pencarian solusi algoritma Nearest Neighbor karena pada

proses manual yang akan dijalani hanya akan dilakukan satu kali iterasi dan

menghasilkan populasi generasi pertama. Diharapkan inisialisasi awal yang

dihasilkan mendekati solusi optimal dan mempermudah pemrosesan manual

optimalisasi Algoritma Genetika. Iterasi harus dilakukan berkali-kali agar

menghasilkan banyak generasi untuk mendapatkan solusi yang paling optimal

sesuai dengan konsep Algoritma Genetika pada umumnya.

4 1 3 5 2 3 5 1 4 2

2 5 1 3 4 2 4 5 1 3

4 2 5 1 3

30

Inisialisasi populasi awal ditunjukkan pada tabel 4.1 dengan

menggunakan popsize = 5 di mana akan menghasilkan 5 buah parent yang hanya

muncul tepat 1 dari masing-masing node. Setiap parent memiliki 5 buah node

(gen) sesuai dengan jumlah customer yang akan dikunjungi vehicle.

Tabel 4.1 Inisialisasi Awal

Parent Ke- Chromosome Keterangan

P1 4 1 3 5 2 Serpong-Bandara-Jakarta-Cikarang-Cipanas

P2 2 5 1 3 4 Cipanas-Cikarang-Bandara-Jakarta-Serpong

P3 4 2 5 1 3 Serpong-Cipanas-Cikarang-Bandara-Jakarta

P4 3 5 1 4 2 Jakarta-Cikarang-Bandara-Serpong-Cipanas

P5 2 4 5 1 3 Cipanas-Serpong-Cikarang-Bandara-Jakarta

4.2.2 Evaluasi

Fungsi evaluasi akan menghasilkan suatu nilai yang disebut sebagai fitness

value. Hasil nilai tersebut dapat mengukur kualitas dari suatu chromosome (yang

mewakili sebuah solusi). Nilai fitness dilihat dari total jarak yang harus ditempuh

vehicle dalam sebuah solusi rute. Pada kasus ini, semakin rendah nilai fitness atau

total jarak yang ditempuh, maka solusi semakin baik. Ini dikarenakan jarak

tempuh vehicle semakin minim yang akan berbanding lurus dengan biaya yang

harus dikeluarkan vehicle untuk melakukan aktivitas distribusi.

Evaluasi bukan hanya memproses inisialisasi solusi awal, namun juga

memproses solusi akhir berupa chromosome yang dihasilkan dari porses

optimalisasi Algoritma Genetika nantinya. Semua solusi hasil seleksi, crossover,

dan mutasi akan dijadikan satu dalam tabel evaluasi sebagai individu-individu

terbaik. Untuk fitness value dari populasi awal yang telah dibentuk pada tahap

inisialisasi populasi sebelumnya, ditunjukkan pada tabel 4.2.

Tabel 4.2 Evaluasi Fitness Value Populasi Awal

Parent Inisialisasi Populasi Fitness (i)

P1 0 - 4 - 1 - 3 - 5 - 2 - 0 339

P2 0 - 2 - 5 - 1 - 3 - 4 - 0 391

P3 0 - 4 - 2 - 5 - 1 - 3 - 0 468

P4 0 - 3 - 5 - 1 - 4 - 2 - 0 353

P5 0 - 2 - 4 - 5 - 1 - 3 - 0 388

31

Summary 1939

Average 387.8

Minimum 339

4.2.3 Seleksi

Tahap seleksi (selection) merupakan proses pemilihan beberapa

chromosome dari keseluruhan populasi untuk dikenai operasi-operasi Algoritma

Genetika lainnya. Metode selection yang digunakan pada kasus ini adalah Roulette

Wheel Selection. Menggunakan teknik Roulette Wheel, berarti pemilihan individu

dilakukan berdasarkan pengaruh nilai fitness-nya. Individu dengan nilai fitness

terendah berarti individu yang baik dan akan memiliki peluang yang lebih besar

untuk terpilih.

Tabel 4.3 Proses Selection Populasi Awal

Parent Inisialisasi Fitness Inverse Probabilitas Persentase Expected Actual

Populasi (i) (i) (i) Probabilitas Count Count

P1 0-4-1-3-5-2-0 339 0.00295 0.226 22.6 1.130 2

P2 0-2-5-1-3-4-0 391 0.00256 0.196 19.6 0.980 0

P3 0-4-2-5-1-3-0 468 0.00214 0.164 16.4 0.818 0

P4 0-3-5-1-4-2-0 353 0.00283 0.217 21.7 1.085 2

P5 0-2-4-5-1-3-0 388 0.00258 0.197 19.7 0.987 0

Summary 1939 0.01305 1.000 100.0 5.000

Average 387.8 0.00261 0.200 20.0 1.000

Maximum 339 0.00295 0.226 22.6 1.130

Dari tabel 4.3, nilai fitness masing-masing chromosome didefinisikan dari

jarak total sebuah rute. Hasil fitness value terkecil mempunyai kemungkinan

terpilih besar atau mempunyai nilai probabilitas yang tinggi. Untuk itu

dilakukan pencarian inverse berupa kebalikan nilai fitness (1/ fitness value) untuk

menyatakan probabilitas suatu solusi P[i] = inverse[i]/ total_inverse. Kemudian

nilai probabilitas diubah dalam bentuk persentase sehingga didapat range

masing-masing chromosome dari angka 1 sampai 100. Expected count

menggambarkan gagasan parent yang akan dikenai proses crossover dan mutasi

di mana expected count = inverse[i]/ avg_inverse. Actual count menyatakan jumlah

parent yang akan dikenai proses crossover. Dilihat dari besar nilai probabilitas

32

dan expected count yang melebihi rata-rata nilai keseluruhan individu, parent P1

dan P4 terpilih untuk dikenai proses crossover. Parent P1 disilangkan dengan P4

dan begitu juga berlaku sebaliknya, sehingga P1 dan P4 akan mengalami 2 kali

proses seleksi yang dinyatakan oleh nilai actual count = 2. Hasil seleksi

membentuk populasi baru untuk digunakan pada proses crossover yang

digambarkan pada tabel 4.4. Tanda panah pada tabel menunjukkan keterkaitan

antar dua parent yang akan dikenai proses persilangan.

Tabel 4.4 Hasil Selection Populasi Awal

Parent Inisialisasi Fitness Inverse Probabilitas Persentase

Populasi (i) (i) (i) Probabilitas

P1 0-4-1-3-5-2-0 339 0.00295 0.255 25.5

P4 0-3-5-1-4-2-0 353 0.00283 0.245 24.5

P4 0-3-5-1-4-2-0 353 0.00283 0.245 24.5

P1 0-4-1-3-5-2-0 339 0.00295 0.255 25.5

Summary 1384 0.01157 1.000 100.0

Average 346 0.00289 0.250 25.0

Maximum 339 0.00295 0.255 25.5

4.2.4 Crossover

Tahap ini melibatkan dua parent yang diambil dari hasil selection tahap

sebelumnya untuk membentuk suatu chromosome baru. Crossover tidak selalu

dilakukan pada semua gen yang ada. Hanya gen yang terpilih secara acak yang

akan dikenai proses ini. Individu yang akan mengalami operator crossover adalah

parent yang dihasilkan pada proses selection yaitu P1 dan P4. Metode crossover

yang dipilih pada kasus ini adalah Partial-Mapped Crossover (PMX). Metode ini

diciptakan oleh Goldberg dan Linle yang merupakan rumusan modifikasi dari

crossover dua-poin. Hal penting dari PMX adalah pindah silang 2-poin ditambah

dengan beberapa prosedur tambahan.

Prosedur PMX meliputi :

1. Penentuan dua posisi pada kromosom dengan aturan acak. Substring

yang berada dalam dua posisi ini dinamakan daerah pemetaan.

2. Penukaran dua substring antar induk untuk menghasilkan proto-child.

33

3. Penentuan hubungan pemetaan di antara dua daerah pemetaan.

4. Penentuan chromosome keturunan yang mengacu pada hubungan

pemetaan.

Penentuan dua titik posisi pada chromosome dengan aturan acak pada

permasalahan optimalisasi ini dipilih daerah pemetaan antara gen ke-3 dan ke-4

yang akan dilakukan persilangan. Berikut ini penjabaran masing-masing proses

ke-2 chromosome yang akan dikenai proses crossover.

Chromosome[1] = Chromosome[1] >< Chromosome[4]

Chromosome[4] = Chromosome[4] >< Chromosome[1]

1. Chromosome[1] >< Chromosome[4]

Parent 1

Parent 2

Penggunaan chromosome pada proses crossover tanpa mengikutsertakan

gen depot (0), susunan chromosome hanya mengambil gen dari customer (1-

5).

Penukaran substring antar parent

Proto-child 1

Proto-child 2

Proto-child merupakan susunan chromosome hasil persilangan substring

antar 2 parent. Substring pada proto-child 1 adalah 1 dan 4, gen 1 berada di

posisi ke-3 dan gen 4 berada di posisi ke-4 pada sebuah susunan

chromosome, sesuai dengan 2 titik posisi yang telah ditentukan secara

random sebelumnya.

Menentukan hubungan mapping

1-3 1 3

4-5 4 5

Susunan chromosome pada tahap proto-child masih terjadi duplikasi gen,

sehingga dibutuhkan proses normalisasi perubahan gen di luar daerah

4 1 3 5 2

3 5 1 4 2

4 1 1 4 2

3 5 3 5 2

34

pemetaan dengan menentukan hubungan mapping pada kedua parent.

Pertama untuk gen pada substring proto-child1 yaitu 1 dan 3, gen 1 yang

berada di luar daerah substring akan diubah menjadi 3. Begitu juga jika

ditemukan gen 3 di luar substring, maka gen akan berubah menjadi 1.

Hal ini juga berlaku pada proto-child2. Hasil proses ini akan membentuk

susunan chromosome child.

Menentukan child yang mengacu pada hubungan mapping

Child 1

Child 2

Proses persilangan antara parent 1 dan 4 menukarkan daerah pemetaan

yaitu gen yang terletak pada posisi 3 dan 4 dari kedua chromosome

sehingga menghasilkan susunan chromosome baru seperti pada child 1 dan

2. Dari proses ini didapat susunan chromosome child[1] yaitu 0-5-3-1-4-2-0.

2. Chromosome[4] >< Chromosome[1]

Parent 1

Parent 2

Penukaran substring antar parent

Proto-child 1

Proto-child 2

Menentukan hubungan mapping

3-1 3 1

5-4 5 4

Menentukan child yang mengacu pada hubungan mapping

Child 1

Child 2

5 3 1 4 2

1 4 3 5 2

3 5 1 4 2

4 1 3 5 2

3 5 3 5 2

4 1 1 4 2

1 4 3 5 2

5 3 1 4 2

35

Persilangan antara parent 4 dan 1 juga diproses dengan teknik yang sama

seperti persilangan sebelumnya, menghasilkan susunan chromosome baru

child 1 dan child 2 dengan menukarkan daerah pemetaan (gen di posisi

titik 3 dan 4) dari kedua parent. Dari proses ini didapat susunan

chromosome child[2] yaitu 0-1-4-3-5-2-0.

Semua chromosome hasil proses crossover yang telah didapat dari kedua

bagian proses sebelumnya kemudian dimasukkan ke dalam tabel yang

membentuk populasi baru seperti pada tabel 4.5.

Tabel 4.5 Populasi Hasil Proses Crossover

Parent Inisialisasi

Child Inisialisasi Fitness Inverse Probabilitas Persentase

Populasi Child (i) (i) (i) Probabilitas

P1 0-4-1-3-5-2-0 C1 0-5-3-1-4-2-0 344 0.00291 0.254 25.4

P4 0-3-5-1-4-2-0

353 0.00283 0.247 24.7

P4 0-3-5-1-4-2-0 C2 0-1-4-3-5-2-0 361 0.00277 0.242 24.2

P1 0-4-1-3-5-2-0

339 0.00295 0.257 25.7

Summary 1397 0.01146 1.000 100.0

Average 349.3 0.00286 0.250 25.0

Maximum 339 0.00295 0.257 25.7

Populasi hasil persilangan pada tabel 4.5 menunjukkan chromosome atau

rute terbaik yaitu pada parent P1 dengan persentase probabilitas sebesar 25.7%.

C (child) merupakan inisialisasi untuk parent yang telah dikenai proses crossover.

Nilai probabilitas pada hasil proses crossover di atas memberi perubahan

signifikan di mana hasil probabilitas C1 meningkat optimal dibandingkan parent

P1 pada inisialisasi populasi awal yang belum dikenai proses persilangan

dengan probabilitas sebesar 22.6%.

4.2.5 Mutasi

Seperti pada operator crossover, proses mutasi juga dirancang untuk

digunakan pada suatu masalah yang spesifik sehingga tidak setiap proses mutasi

36

dapat diterapkan pada suatu masalah yang akan diselesaikan. Teknik mutasi

yang dipilih juga harus sesuai dengan teknik encoding yang digunakan.

Pada kasus ini, skema mutasi yang digunakan adalah swapping mutation.

Jumlah chromosome yang mengalami mutasi dalam satu populasi ditentukan oleh

parameter mutation rate (ρm). Parameter mutation rate (ρm) pada kasus ini

diambil sebesar 10% (0.1) sesuai rekomendasi penentuan parameter kontrol

Algoritma Genetika, jika fitness dari individu terbaik dipantau pada setiap

generasi, maka ukuran populasi dan mutation rate yang digunakan sebesar

(popsize; ρm) = (80; 0.1).

Jumlah gen yang akan dimutasi adalah perkalian antara mutation rate

dengan jumlah gen dalam satu populasi (0.1*25 = 2.5 = 2). Dua buah gen akan

dimutasi pada kasus ini.

Posisi gen mana saja yang akan dimutasi didapat dari pembangkitan

bilangan acak antara 1 sampai panjang_total_gen (1 – (5*5)) yaitu 1 sampai 25.

Bilangan acak dibangkitkan dengan menggunakan Microsoft Excel dengan fungsi

= RANDBETWEEN(1, 25) di mana fungsi ini akan membangkitkan bilangan

acak dari 1 sampai 25. Hasil pembangkitan bilangan acak dapat dilihat pada

Gambar 4.3.

Gambar 4.3 Pembangkitan Bilangan Acak 1 Sampai 25

Dari pembangkitan bilangan acak pada gambar 4.3 didapat 2 titik gen

yang akan terkena proses mutasi adalah pada posisi ke-3 dan ke-13. Dalam

proses mutasi, populasi yang digunakan adalah dari hasil proses crossover

sebelumnya. Proses mutasi dilakukan dengan cara menukar gen pada posisi

yang dipilih secara acak (3 dan 13) dengan gen sesudahnya. Jadi untuk gen

posisi ke-3 yaitu 1 bertukar posisi dengan gen ke-4 yaitu 4. Begitu juga dengan

37

gen pada posisi ke-13 yaitu 5 ditukar dengan gen posisi setelahnya yaitu 1. Jika

posisi gen berada di akhir chromosome, maka ditukar dengan gen yang pertama.

Hasil proses mutasi ditampilkan pada tabel 4.6.

Tabel 4.6 Hasil Proses Mutation

Parent Inisialisasi Titik Parent Chromosome Fitness Inverse Probabilitas Persentase

Populasi Mutasi Mutasi Baru (i) (i) (i) Probabilitas

C1 0-5-3-1-4-2-0 3 PM1 0-5-3-4-1-2-0 367 0.00272 0.214 21.4

P2 0-2-5-1-3-4-0

391 0.00256 0.201 20.1

P3 0-4-2-5-1-3-0 13 PM2 0-4-2-1-5-3-0 472 0.00212 0.166 16.6

C2 0-1-4-3-5-2-0

361 0.00277 0.217 21.7

P5 0-2-4-5-1-3-0

388 0.00258 0.202 20.2

Summary 1979 0.01275 1.000 100.0

Average 395.8 0.00255 0.200 20.0

Maximum 361 0.00277 0.217 21.7

Pada tabel 4.6, parent C1 dan P3 dikenai proses mutasi dan menghasilkan

susunan rute yang berbeda dari sebelumnya. PM merupakan inisialisasi untuk

parent yang telah dikenai proses mutasi. Hasil fitness kedua parent tidak

menunjukkan value optimal jika dibandingkan dengan chromosome hasil

persilangan sebelumnya. Nilai fitness yang meningkat menunjukkan probabilitas

atau kemungkinan kecil individu untuk terpilih. Meskipun chromosome hasil

mutasi tidak memiliki nilai fitness yang optimal, ada kemungkinan chromosome

tersebut tetap dimasukkan ke dalam populasi. Proses ini diperlukan untuk

memperkaya populasi dengan berbagai variasi chromosome yang berakibat

memperlebar ruang pencarian dan mendapatkan hasil yang lebih optimal.

4.2.6 Proses Elitisme

Operator crossover dan mutasi merupakan proses penting Algoritma

Genetika di mana menghasilkan beberapa chromosome baru dengan value beragam

yang diharapkan menghasilkan sebuah nilai paling optimal. Tahap elitisme ini

bertujuan untuk mempertahankan chromosome dari inisialisasi populasi awal

dengan menyertakan kembali pada populasi baru hasil proses Algoritma Genetika.

Secara teori, tahap elitisme dapat meningkatkan kemampuan dari Algoritma

38

Genetika karena mempertahankan chromosome yang baik pada populasi awal.

Namun kadang tahap ini juga dapat menyebabkan konvergensi prematur karena

nilai fitness terjebak pada optimum lokal.

Setelah melewati proses crossover dan mutasi pertama, chromosome hasil

kedua proses tersebut dan chromosome terbaik disalin ulang dan disimpan pada

tabel evaluasi, begitu seterusnya sampai nilai terbaik keseluruhan diperoleh.

Chromosome pada tabel evaluasi tidak akan mengalami proses crossover dan

mutasi, sehingga chromosome terbaik dapat dipertahankan pada tiap iterasi.

Pada proses penghitungan manual ini, pencarian solusi optimal diproses

hanya sampai 1 kali iterasi (generasi pertama). Untuk memperkaya hasil

perhitungan, iterasi dilakukan berkali-kali untuk menghasilkan keberagaman

solusi. Populasi yang terbentuk dari hasil proses manual Algoritma Genetika pada

generasi pertama ditunjukkan pada tabel 4.7.

Tabel 4.7 Hasil Populasi Generasi Pertama Pada Tabel Evaluasi

Parent Inisialisasi Fitness Inverse Probabilitas Persentase

Populasi (i) (i) (i) Probabilitas

P1 0-4-1-3-5-2-0 339 0.00295 0.125 12.5

P2 0-2-5-1-3-4-0 391 0.00256 0.108 10.8

P3 0-4-2-5-1-3-0 468 0.00214 0.091 9.1

P4 0-3-5-1-4-2-0 353 0.00283 0.120 12.0

P5 0-2-4-5-1-3-0 388 0.00258 0.109 10.9

C1 0-5-3-1-4-2-0 344 0.00291 0.123 12.3

C2 0-1-4-3-5-2-0 361 0.00277 0.118 11.8

PM1 0-5-3-4-1-2-0 367 0.00272 0.116 11.6

PM2 0-4-2-1-5-3-0 472 0.00212 0.090 9.0

Summary 3483 0.02357 1.000 100.0

Average 387 0.00262 0.111 11.1

Maximum 339 0.00295 0.125 12.5

Seperti pada pembahasan sebelumnya, individu terbaik dari sebuah

populasi pada kasus ini dipilih dari fitness terendah dengan hasil probabilitas

tertinggi. Tabel 4.7 merupakan tabel evaluasi generasi pertama yang berisi

penggabungan chromosome inisialisasi populasi awal dan chromosome yang

dikenai proses Algoritma Genetika. Hasil rute terbaik paling optimal untuk kasus

39

pendistribusian bunga krisan dari iterasi pertama ini pada parent 1 (0-4-1-3-5-2-0)

yaitu rute dari mulai Depot–Serpong–Bandara–Jakarta–Cikarang–Cipanas–

sampai kembali ke Depot. Ilustrasi rute optimal pendistribusi bunga krisan PT.

EDAR dapat dilihat pada Gambar 4.4.

Gambar 4.4 Hasil Rute Optimal Pendistribusian Bunga Krisan Generasi Pertama

4.3 Pergantian Populasi

Prosedur pergantian dilakukan dengan membentuk populasi baru yang

diambil dari hasil crossover dan mutasi serta ditambah chromosome hasil elitisme.

Populasi pada generasi sebelumnya yang merupakan parent diganti seluruhnya

dengan populasi baru yang merupakan anak atau turunannya (offspring).

Pergantian populasi diharapkan dapat memperkaya keberagaman solusi seperti

yang telah dibahas sebelumnya di mana iterasi sebaiknya dilakukan berkali-kali.

Proses tahapan Algoritma Genetika akan berlaku sama untuk generasi berikutnya

dan untuk tiap generasi. Penghitungan dilakukan hingga mencapai generasi

paling maksimum sehingga didapat chromosome terbaik dari seluruh generasi

sebagai solusi permasalahan.

40

BAB 5

SOLUSI MASALAH ALAT ANGKUT YANG BERBEDA

5.1 Permasalahan Alat Angkut Berbeda

Selain mencari rute optimal pendistribusian produk ke konsumen,

pemilihan armada kendaraan untuk mengirim produk ke pelanggan juga

menjadi salah satu kendala penting dalam model permasalahan pendistribusian

bunga krisan. Kendala yang dimaksud yaitu permasalahan kapasitas kendaraan

angkut yang berbeda jenis (Heterogeneous Fleet VRP). Penyelesaian tahap ini

menggunakan bantuan algoritma Nearest Neighbor dalam memilih jenis dan

meminimalkan jumlah kendaraan yang beroperasi dalam kegiatan distribusi.

Pada proses penyelesaian permasalahan ini tetap membutuhkan data rute

pendistribusian optimal yang diambil dari proses optimalisasi rute Algoritma

Genetika sebelumnya.

Berdasarkan urutan rute optimal tersebut, berangkat dari depot menuju

customer, muatan kendaraan disesuaikan dengan permintaan dari tiap customer

yang akan dilalui. Kendaraan akan berhenti melakukan pendistribusian pada

suatu customer ketika muatan yang diangkut kurang dari permintaan untuk

customer selanjutnya. Kemudian mengurangi barang yang diangkut ketika

berangkat dari depot dengan jumlah muatan yang tersisa ketika meninggalkan

customer terakhir. Ketika muatan sudah kosong saat customer terakhir, maka

kendaraan kembali ke depot. Langkah tersebut akan diimplementasikan pada

masing-masing kendaraan sampai seluruh customer terlayani.

Pemasok bunga krisan (PT. EDAR) memasok bunga krisan ke lima daerah

pengiriman yaitu Bandara, Cipanas, Jakarta, Serpong dan Cikarang dengan jenis

dan kuantitas permintaan produk yang berbeda pada tiap daerah. Dengan

perbedaan jenis dan kuantitas pemesanan bunga krisan yang dipesan (batang

dan kardus), proses penyelesaian permasalahan ini dibagi ke dalam dua kasus

seperti pada tabel 5.1.

41

Tabel 5.1 Demand Produk Krisan yang Dikirim Pemasok

No. Tujuan Demand Keterangan

1 Bandara Soekarno-Hatta 1.500.000 Batang Kasus 1

2 Cipanas 250 Kardus

Kasus 2 3 Jakarta 150 Kardus

4 Serpong 100 Kardus

5 Cikarang 75 Kardus

Pembagian kasus pada tabel 5.1 didasari karena perbedaan satuan

kuantitas permintaan bunga masing-masing daerah yang dapat berpengaruh

terhadap penghitungan kapasitas vehicle yang dibutuhkan. Pada kasus pertama,

satuan yang digunakan adalah batang karena dapat mewakili kapasitas

kendaraan yang sebenarnya. Hal ini disebabkan oleh perbedaan ukuran batang

stek, sehingga jika menggunakan satuan kardus maka tidak mewakili kapasitas

kendaraan sebenarnya. Berikut ini akan dilakukan proses manual penyelesaian

permasalahan HFVRP yang dibagi menjadi dua kasus seperti pada tabel 5.1.

A. Kasus 1

Proses manual yang dibahas pada kasus pertama ini mengenai

pendistribusian bunga krisan ke customer tujuan Bandara Soekarno-Hatta. PT.

EDAR mengirim produk ke Bandara berupa bunga krisan unrooted cutting

berjumlah 1.500.000 batang. Armada angkut yang dapat digunakan sebagai alat

distribusi yaitu satu unit mobil boks L300, enam unit berjenis engkle dan empat

unit jenis double dengan kapasitas masing-masing 372.000, 678.000, 1.152.000

batang yang selengkapnya dapat dilihat pada tabel 5.2. Untuk pengerjaan proses

manual pada kasus pertama ini terbagi ke dalam beberapa iterasi yang akan

dijabarkan pada tabel 5.2, tabel 5.3 dan tabel 5.4.

Tabel 5.2 Proses Iterasi Mobil Boks L300 Kapasitas 372.000 Batang

Keterangan Demand (batang)

Kapasitas Muatan Lebih

Feasible

Langkah ke-1 1 unit mobil boks L300 Kapasitas total = 372.000

1.500.000 - Tidak

42

Pada tabel 5.2 diperoleh bahwa pendistribusian bunga krisan ke bandara

tidak feasible jika menggunakan kendaraan jenis L300. PT. EDAR hanya memiliki

1 unit kendaraan, sehingga iterasi hanya sampai pada langkah pertama dengan

kapasitas vehicle hanya 372.000 batang. Sedangkan jumlah permintaan lebih besar

dari muatan yang dapat diangkut vehicle pada jenis ini. Kemudian dilakukan

iterasi berikutnya pada mobil boks berjenis engkle yang dijabarkan pada tabel 5.3.

Tabel 5.3 Proses Iterasi Mobil Boks Engkle Kapasitas 678.000 Batang

Keterangan Demand (batang)

Kapasitas Muatan Lebih

Feasible

Langkah ke-1 1 unit mobil boks engkle Kapasitas total = 678.000

1.500.000 - Tidak

Langkah ke-2 Mobil boks engkle & L300 Kapasitas total = 1.050.000

1.500.000 - Tidak

Hasil iterasi pada tabel 5.3 juga menunjukkan bahwa pendistribusian

bunga krisan ke bandara dengan menggunakan mobil boks berjenis engkle tidak

optimal karena kapasitas antara daya angkut vehicle dengan permintaan tidak

mencukupi. Perusahaan memiliki enam unit kendaraan, namun pada kasus ini,

penggunaan kendaraan yang berjenis sama dibatasi hanya maksimal satu unit.

Penggunaan kendaraan yang berjenis sama dengan jumlah banyak hanya untuk

pendistribusian ke sebuah daerah akan menghabiskan biaya yang besar sehingga

tidak optimal dan berbanding terbalik dengan tujuan penelitian ini. Langkah

iterasi selanjutnya pada mobil boks berjenis double yang ditunjukkan pada tabel

5.4.

Tabel 5.4 Proses Iterasi Mobil Boks double Kapasitas 1.152.000 Batang

Keterangan Demand (batang)

Kapasitas Muatan Lebih

Feasible

Langkah ke-1 1 unit mobil boks double Kapasitas total = 1.152.000

1.500.000 - Tidak

Langkah ke-2 Mobil boks double & L300 Kapasitas total = 1.050.000

1.500.000 24.000 Ya

Langkah ke-3 1.500.000 330.000 Ya

43

Mobil boks double & engkle Kapasitas total = 1.830.000

Dari tabel 5.4 diperoleh hasil optimal untuk kasus pendistribusian bunga

krisan ke bandara dengan menggunakan mobil boks berjenis double yang

ditunjukkan pada langkah ke-2 dan ke-3. Kapasitas kendaraan terhadap

banyaknya permintaan customer mencukupi bahkan melebihi muatan.

Perusahaan memiliki 4 unit kendaraan untuk jenis mobil boks double.

Langkah ke-2 merupakan langkah paling optimal karena kelebihan muatan pada

kendaraan mendapat value minimum sebesar 24.000. Semakin kecil kelebihan

muatan pada kendaraan menjadi semakin optimal karena tidak membuang

banyak kelebihan muatan secara sia-sia, terutama karena pendistribusian hanya

terpusat pada satu daerah saja. Dapat disimpulkan untuk pendistribusian bunga

krisan ke Bandara Soekarno-Hatta menggunakan 1 unit mobil boks berjenis L300

dan 1 unit mobil boks double.

PT. EDAR hanya memiliki 1 unit mobil boks berjenis L300 dan karena

pada kasus pendistribusian ke customer daerah Bandara sudah menggunakan

kendaraan jenis ini, mobil boks tipe L300 tidak dapat dimasukkan ke daftar

proses iterasi untuk kasus kedua.

B. Kasus 2

Proses manual yang dibahas pada kasus kedua ini mengenai

pendistribusian bunga krisan ke customer tujuan Cipanas, Jakarta, Serpong dan

Cikarang. Jenis bunga krisan yang dikirim adalah jenis bunga potong dan bibit

krisan rooted cutting.

Armada angkut yang dapat digunakan sebagai alat distribusi pada kasus

ini yaitu enam unit berjenis engkle dan tiga unit jenis double. Seperti pada

pembahasan sebelumnya, berbeda dari kasus pertama, pada kasus ini kapasitas

vehicle dihitung dalam satuan kardus dengan ukuran masing-masing 131 kardus

untuk jenis mobil boks engkle dan 223 kardus untuk jenis mobil boks double.

Langkah pengerjaan proses manual pada kasus ini sama seperti pembahasan

pada kasus pertama yang akan dijabarkan pada tabel 5.5.

44

Tabel 5.5 Proses Penentuan Vehicle Untuk Daerah Serpong

Customer Demand (kardus)

Kapasitas Muatan Lebih

Feasible

a. Langkah 1, Mobil Boks Engkle

Serpong 100 31 Ya

Jakarta 150 - Tidak

b. Langkah 2, Mobil Boks Engkle

Serpong 100 31 Ya

Tabel 5.5 merupakan langkah pemilihan vehicle untuk kunjungan pada

customer pertama yaitu Serpong. Vehicle yang digunakan untuk kunjungan ke

daerah Serpong berupa mobil boks engkle yang memiliki kapasitas daya angkut

lebih besar dari banyaknya permintaan.

Seperti yang telah dibahas sebelumnya mengenai metode Algoritma

Nearest Neighbor, selain kapasitas vehicle, permintaan customer lain yang berada di

node terdekat juga perlu diperhatikan. Daerah Jakarta (daerah kunjungan

berikutnya setelah daerah Serpong) memiliki demand lebih besar dari kapasitas

sisa vehicle seperti yang ditunjukkan pada langkah pertama tabel 5.5. Oleh karena

itu, langkah kedua pada tabel adalah menetralkan penghitungan yang tidak

feasible di mana kunjungan mobil boks engkle hanya feasible untuk daerah

Serpong. Demikian halnya dengan pemilihan vehicle untuk pendistribusian

bunga krisan ke daerah lainnya menggunakan langkah dan cara yang sama.

Hasil penentuan vehicle pada tiap daerah pendistribusian bunga krisan

ditunjukkan pada tabel 5.6.

Tabel 5.6 Hasil Penentuan Vehicle Optimal Model Permasalahan HFVRP

Jenis Mobil Customer Demand Muatan Lebih Feasible

Engkle Serpong 100

31 Ya

Double 123 Tidak

Engkle Jakarta 150

- Tidak

Double 73 Ya

Engkle Cikarang 75

56 Ya

Double 148 Tidak

Engkle Cipanas 250

- Tidak

Double - Tidak

45

Engkle & Double 104 Ya

Seperti pada tabel 5.6, vehicle optimal yang digunakan untuk proses

pendistribusian bunga krisan ke daerah Jakarta menggunakan mobil boks jenis

double, daerah Cikarang menggunakan mobil boks engkle, dan daerah Cipanas

menggunakan kombinasi dua unit mobil boks berjenis engkle dan double.

5.2 Tahap Pengembangan Model

Pengembangan model yang dibahas pada sub bab ini mengenai

perancangan suatu model yang dapat menyatukan berbagai kebutuhan

komponen dari aplikasi yang akan dibuat untuk pemecahan masalah

optimalisasi rute transportasi pendistribusian bunga krisan. Perancangan model

berisi penetapan asumsi-asumsi, penetapan variabel keputusan, penentuan

fungsi tujuan serta identifikasi kendala-kendala. Tahap ini disusun sesuai

dengan pemahaman permasalahan yang didapat dari persiapan, pengumpulan

data serta analisis dan pengolahan data manual. Tahap-tahap pengembangan

model dijabarkan sebagai berikut.

5.2.1 Penetapan Asumsi

Asumsi-asumsi yang digunakan terdiri atas customer, produk, jarak dan

armada pengiriman (vehicle), sebagai berikut:

1. Customer

PT. EDAR mendistribusikan produknya ke daerah Bandara, Serpong,

Jakarta, Cikarang dan Cipanas yang diasumsikan perusahaan mampu

memenuhi semua permintaan customer. Customer yang menjadi kandidat

untuk dikenai proses optimalisasi rute transportasi pada kasus ini

diambil dari data customer dengan persentase pemesanan cukup sering

atau dianggap sebagai pelanggan tetap. Ini dilakukan untuk

meminimalisir penggunaan data yang tidak tetap dalam ruang lingkup

aktivitas pendistribusian. Data yang tidak tetap adalah data customer

46

yang tidak pasti dalam melakukan pemesanan bunga krisan secara

berkala.

2. Produk

Produk yang dikirim oleh perusahaan terdiri atas bunga potong, bibit

krisan unrooted cutting dan rooted cutting. Produk diasumsikan bersifat

homogen, artinya dalam satu vehicle hanya terdapat satu varietas. Hal ini

bertujuan untuk memudahkan penghitungan proses Algoritma Genetika

nantinya. Untuk produk bunga krisan jenis bunga potong dan bibit krisan

rooted cutting, dalam penentuan besar kapasitas muatan produk di mobil

boks digunakan satuan kadus. Sedangkan untuk jenis bibit krisan

unrooted cutting digunakan satuan batang.

3. Jarak

Data jarak merupakan data utama dalam kegiatan proses optimalisasi

rute transportasi menggunakan Algoritma Genetika. Jarak yang ditempuh

vehicle menuju titik-titik customer dalam proses pendistribusian bunga

krisan diasumsikan di mana pengukuran jarak antara dua titik dilakukan

dengan mengikuti alur jalan yang ada pada peta, sehingga data jarak

yang diperoleh dapat mendekati jarak aktual yang ditempuh oleh vehicle

(kendaraan). Pengukuran jarak antar dua titik disesuaikan dengan rute

yang memberikan jarak terpendek. Pada pengumpulan data jarak ini,

diasumsikan jarak tempuh dari titik A ke titik B sama dengan jarak

tempuh dari B ke titik A, sehingga jarak yang dihasilkan akan simetris.

4. Vehicle (Kendaraan)

Kendaraan yang digunakan untuk melakukan pendistribusian bunga

krisan adalah mobil boks L300, mobil boks engkle dan mobil boks double.

Masing-masing vehicle memiliki kapasitas angkut yang berbeda-beda.

Jumlah tiap unit kendaraan adalah 1 unit untuk mobil boks jenis L300, 6

unit mobil boks engkle dan 4 unit mobil boks double. Kondisi kendaraan

diasumsikan baik dan layak digunakan. Tiap customer diasumsikan hanya

dapat dikunjungi oleh satu vehicle untuk masing-masing tipe mobil boks.

47

BAB 6

PERANCANGAN DAN IMPLEMENTASI

Pada bab ini akan dibahas mengenai pembuatan perangkat lunak untuk

menyelesaikan permasalahan optimalisasi rute transportasi dan pemilihan vehicle

yang tepat dalam proses kegiatan pendistribusian bunga krisan. Pembahasan

dimulai dari definisi umum perangkat lunak, rancangan perangkat lunak,

implementasi arsitektur dan uji coba evaluasi.

6.1 Deskripsi Umum Perangkat Lunak

Aplikasi ini dibuat untuk menyelesaikan permasalahan optimalisasi rute

transportasi yang bertipe Heterogeneous Fleet VRP pada kasus pendistribusian

bunga krisan.

Metode yang digunakan untuk menghasilkan rute optimal adalah

Algoritma Genetika yang terbukti memiliki kemampuan dalam pemecahan

masalah Integer Programming bersifat metaheuristic. Semakin lama proses

pencarian, solusi yang didapat cenderung semakin baik. Karena itu, proses

komputasi dilakukan berulang sampai menemukan solusi paling optimal. Selain

itu juga digunakan bantuan metode Nearest Neighbor Algorithm untuk

menghasilkan tipe vehicle yang tepat sebagai alat transportasi perndistribusian

bunga.

6.2 Rancangan Perangkat Lunak

Rancangan perangkat lunak merupakan hal yang sangat penting untuk

mempermudah pembuatan aplikasi. Selain itu penggunaan properti yang sesuai

dengan kebutuhan komputasi juga perlu diperhatikan untuk memberi

kemudahan pengguna dalam mengoperasikan aplikasi secara efisien. Rancangan

aplikasi terdiri dari rancangan operator Algoritma Genetika, rancangan aliran data

dan rancangan user interface.

48

6.2.1 Rancangan Operator Algoritma Genetika

Operator Algoritma Genetika yang digunakan pada aplikasi ini meliputi

operator populasi, seleksi, crossover, mutasi, evaluasi dan evolve populasi.

1. Populasi

Operator populasi berisi kumpulan individu atau chromosome yang

menggambarkan solusi rute. Populasi awal dibentuk dari chromosome

acak. Pertama di-list customer (gen) yang sebelumnya telah terdata di

dalam sebuah tabel. Kemudian gen-gen dibentuk menjadi sebuah

chromosome yang menyatakan sebuah rute. Populasi terbentuk dari

beberapa chromosome yang diacak menggunakan fungsi random.

2. Seleksi

Populasi yang telah terbentuk diseleksi dengan dipilih beberapa dari

keseluruhan chromosome dalam sebuah individu. Jumlah chromosome yang

terkena proses seleksi sesuai dengan jumlah parameter seleksi yang diiput

user.

3. Crossover

Chromosome hasil seleksi diproses menggunakan operator crossover dengan

menukar sub chromosome antar kedua chromosome (parent). Sub chromosome

didapat dari penentuan titik awal dan titik akhir masing-masing secara

random. Hasil proses crossover disimpan sebagai chromosome child.

4. Mutasi

Proses mutasi dengan menukar dua posisi gen (customer) menggunakan

teknik swap mutation. Dua posisi gen ditentukan secara acak sesuai dengan

probabilitas mutasi yang diinput user.

5. Evaluasi

Operator evaluasi akan menghasilkan suatu nilai yang disebut sebagai

fitness value sebagai pengukur kualitas suatu chromosome. Fitness value

diperoleh dari total jarak yang ditempuh vehicle dalam tiap solusi rute

(chromosome).

6. Evolve Populasi

49

Evolve populasi adalah pembentukan populasi baru dari hasil populasi

generasi awal. Perkembangan populasi didasari banyaknya generasi yang

diproses. Jumlah generasi diiput oleh user yang melambangkan jumlah

iterasi proses komputasi algoritma.

6.2.2 Perancangan Aliran Data

Aliran data pada aplikasi ditampilkan dengan desain Data Flow Diagram

(DFD) yang terbagi menjadi DFD level 0, level 1 dan level 2. DFD level 0 dari

aplikasi ini dapat dilihat pada Gambar 6.1.

Gambar 6.1 Desain DFD Level 0

Pada Gambar 6.1, pengguna memasukkan input data awal yang

mempengaruhi komputasi Algoritma Genetika seperti jumlah populasi, jumlah

generasi, parameter seleksi dan probabilitas mutasi. Setelah itu aplikasi akan

melakukan proses penyelesaian optimalisasi yang menghasilkan output rute

optimal dan mengembalikannya kembali pada pengguna. Breakdown pada DFD

level 0 ini akan menghasilkan DFD level 1 yang dapat dilihat pada gambar 6.2.

50

Gambar 6.2 Desain DFD Level 1

Alur DFD level 1 pada gambar 6.2, terdapat proses inisialisasi populasi

awal sebelum melakukan komputasi Algoritma Genetika. Pencarian solusi diawali

dengan pembacaan masukan data awal yang diinput user, kemudian dilanjutkan

dengan insialisasi populasi awal. Solusi optimal didapat dari hasil pencarian

solusi menggunakan Algoritma Genetika yang akhirnya dikembalikan dan

ditampilkan kembali kepada user. Desain DFD level 1 kemudian di-breakdown

sehingga menjadi proses pencarian solusi DFD level 2 seperti terlihat pada

Gambar 6.3.

51

Gambar 6.3 Desain DFD Level 2

Dari alur DFD level 2 pada gambar 6.3, proses Algoritma Genetika terdiri

dari proses Generate Initial Population di awal yang bertujuan menghasilkan initial

population yang kemudian diproses dengan AG. Proses Algoritma Genetika ini

kemudian dilakukan berulang sampai memenuhi stopping condition berupa

banyaknya iterasi sesuai dengan data jumlah generasi yang diiput user.

6.2.3 Perancangan User Interface

Seperti yang telah dibahas pada alur DFD level 1, diperlukan penginputan

data yang dilakukan oleh user sebelum akhirnya proses komputasi algoritma

dijalankan. Aplikasi ini dirancang menggunakan user interface sebagai sarana

interaksi user dengan data dan parameter Algoritma Genetika. Berikut ini

rancangan tampilan aplikasi pada gambar 6.4.

52

Gambar 6.4 Desain Perancangan User Interface Aplikasi

Dua buah tabel di gambar 6.4 menunjukkan data customer yang

dibutuhkan untuk mencari rute optimal, dan data vehicle untuk mendapatkan

jenis vehicle yang tepat sebagai alat transportasi. User diharuskan menginput

jumlah populasi, jumlah generasi, probabilitas mutasi dan parameter seleksi

untuk digunakan pada proses iterasi. Button proses untuk menampilkan

keluaran berupa jarak optimal, solusi rute dan solusi vehicle dari proses Algoritma

Genetika.

6.3 Implementasi Arsitektur

Pada sub bab ini akan dibahas mengenai implementasi berdasarkan

perancangan perangkat lunak yang telah dijabarkan sebelumnya. Perangkat

lunak dibuat menggunakan aplikasi pemograman, kemudian dilakukan uji coba

apakah aplikasi menghasilkan keluaran sesuai dengan yang diharapkan.

Pembahasan terdiri dari spesifikasi alat yang digunakan untuk pembuatan

aplikasi, batasan-batasan dalam implementasi, dan implementasi algoritma.

Genetic Algorithm

Optimalisasi Rute Transportasi Pendistribusian Bunga Krisan

Data Customer

Jumlah Populasi Probabilitas Mutasi

Jumlah Generasi Parameter Seleksi Input

HASIL JARAK OPTIMA

SOLUSI RUTE Output

SOLUSI VEHICLE

Reset Proses

53

Spesifikasi software dan hardware yang digunakan dalam pembangunan sistem ini

yaitu:

1. Spesifikasi Software

Spesifikasi software dibagi ke dalam dua bagian yaitu manajemen data dan

manajemen model.

a) Manajemen Data

Data yang digunakan dalam pengolahan Optimalisasi Rute

Transportasi Pendistribusian Bunga Krisan adalah bentuk data yang

dibangkitkan secara random.

b) Manajemen Modal

Bahasa pemrograman yang digunakan adalah bahasa pemrograman

Java. Bahasa pemrograman ini memiliki kelebihan dalam hal

multiplatform dan menggunakan konsep Object Oriented Programming

(OOP). Selain itu Java juga memiliki library yang lengkap di mana

sangat membantu dalam membangun sebuah aplikasi khususnya

aplikasi berbasis pengolahan data.

Netbeans adalah salah satu aplikasi IDE yang digunakan programmer

untuk menulis, mengkompilasi, mencari kesalahan dan menyebarkan

program. Source code Netbeans bukan hanya ditulis dalam bahasa

Java, namun dapat juga mendukung bahasa pemograman lain. Fitur

yang dimiliki Netbeans ini seperti smart code, compilation, code

generator, error stripe, dan go to commands. Netbeans yang digunakan

dalam penelitian ini adalah Netbeans IDE 7.1.

2. Spesifikasi Hardware

Berikut ini perangkat keras yang digunakan dalam mambantu proses

pembuatan program.

Sistem operasi : Windows 7 Ultimate 32-bit (6.1, Build 7601)

System model : TOSHIBA Satellite L730

Prosesor : Intel Core i5, 2.53 GHz

Memori : 4138 MB

54

6.4 Batasan Implementasi

Batasan implementasi adalah batasan proses yang bisa dilakukan sistem

sesuai dengan perancangan awal sistem. Batasan ditampilkan agar penelitian ini

memiliki ruang lingkup yang jelas dalam mengimplementasikan sistem.

Beberapa batasan tersebut antara lain:

1. Aplikasi dijalankan khusus untuk mengolah permasalahan Optimalisasi

Rute Transportasi Pendistribusian Bunga Krisan menggunakan metode

Algoritma Genetika di Netbeans.

2. Data yang diproses sesuai dengan data fungsi yang telah didefinisikan di

dalam program.

3. Data jarak merupakan data terpenting dalam pengolahan ini dan

diperoleh dari jarak antar titik customer (gen).

4. Hasil optimalisasi rute selalu berbeda di tiap running program

dikarenakan beberapa data pengolahan diperoleh dari pembangkitan

bilangan random. Ini juga terjadi karena Algoritma Genetika mencari solusi

yang terbaik dengan metode pendekatan terhadap solusi paling optimal

dari beberapa kali pemrosesan ulang (proses lebih dari satu generasi).

5. Data jarak antar node atau gen dibangkitkan secara random dengan

jumlah node sebanyak 5 sesuai dengan jumlah pelanggan.

6. Solusi jenis vehicle yang tepat untuk melakukan distribusi bunga ke

masing-masing customer ditentukan dari data kapasitas vehicle dan besar

demand dari masing-masing customer. Kapasitas vehicle harus lebih besar

dari permintaan customer yang akan dikunjungi.

6.5 Implementasi Algoritma

Aplikasi Optimalisasi Rute Transportasi Pendistribusian Bunga Krisan

menggunakan Algoritma Genetika terdiri dari beberapa tahapan proses

pengolahan data yang dijabarkan sebagai berikut.

55

6.5.1 Implementasi Algoritma Pembangkitan Populasi Awal

Proses ini merupakan proses di mana populasi awal dibentuk. Di dalam

proses ini akan terbentuk chromosome yang memiliki sifat permutasi. Tiap

chromosome tidak boleh memiliki nilai yang sama, tepat satu nilai dari masing-

masing gen di tiap individu.

public class Chromosome { // chromosome, solusi rute, terdiri dari seluruh gen yg akan di kunjungi private ArrayList chromosome = new ArrayList<Gen>(); // Reset fitness dan jarak awal = 0 private double fitness = 0; private int jarak = 0; // Membangun chromosome awal = null public Chromosome(){ for (int i = 0; i < ChromosomeController.jumlahKota(); i++) { chromosome.add(null); } } public Chromosome(ArrayList chromosome){ this.chromosome = chromosome; } // Membangun sebuah chromosome public void generateIndividual() { for (int genIndex = 0; genIndex < ChromosomeController.jumlahKota(); genIndex++) { setGen(genIndex, ChromosomeController.getGen(genIndex)); } // Random chromsome Collections.shuffle(chromosome); } // Function getGen // Get posisi gen didalam chromosome // chromosomePosition = index posisi gen dalam chromosome public Gen getGen(int chromosomePosition) { return (Gen)chromosome.get(chromosomePosition);

} // Menetapkan kota(gen) dalam posisi tertentu dalam chromosome public void setGen(int chromosomePosition, Gen gen) { chromosome.set(chromosomePosition, gen); // Jika komposisi chromosome berubah, reset ulang fitness dan jarak = 0 fitness = 0; jarak = 0; }

56

6.5.2 Implementasi Proses Algoritma Genetika

Proses optimalisasi rute menggunakan Algoritma Genetika terdiri dari

beberapa tahapan dimulai dengan inisialisasi populasi awal, kemudian seleksi

populasi untuk memperoleh parent yang nantinya dikenai proses crossover dan

mutasi. Tiga tahap penting tersebut dijabarkan ke dalam source code berikut.

//SELEKSI // Seleksi kandidat chromosome yang akan di crossover private static Chromosome rouletteSelection(Population pop) { // Populasi Seleksi Population seleksi = new Population(seleksiSize, false); for (int i = 0; i < seleksiSize; i++) { // chromosome hasil seleksi diambil secara random dari total populasi int randomId = (int) (Math.random() * pop.populationSize()); // chromosome seleksi (index, city) seleksi.saveChromosome(i, pop.getChromosome(randomId)); } // fittest dari chromosome hasil seleksi Chromosome fittest = seleksi.getFittest(); return fittest; }

// CROSSOVER

// Set parent dan offspring dalam proses crossover (kawin silang) public static Chromosome crossover(Chromosome parent1, Chromosome parent2) { // Child Chromosome child = new Chromosome(); // Posisi titik awal dan akhir dari parent yang akan di crossover int awalPos = (int) (Math.random() * parent1.chromosomeSize()); int akhirPos = (int) (Math.random() * parent1.chromosomeSize()); // Menambahkan sub chromosome dari parent1 ke child for (int i = 0; i < child.chromosomeSize(); i++) { // Posisi awal dan akhir titik chromosome yang menjadi daerah pemetaan if (awalPos < akhirPos && i > awalPos && i < akhirPos) { child.setGen(i, parent1.getGen(i)); } else if (awalPos > akhirPos) { if (!(i < awalPos && i > akhirPos)) { child.setGen(i, parent1.getGen(i)); } } } // Chromosome parent 2 for (int i = 0; i < parent2.chromosomeSize(); i++) { // jika child tidak ada dalam chromosome, di add if (!child.containsGen(parent2.getGen(i))) {

57

for (int ii = 0; ii < child.chromosomeSize(); ii++) { if (child.getGen(ii) == null) { child.setGen(ii, parent2.getGen(i)); break; } } } } return child; }

// MUTASI

// Mutasi menggunakan swapp Mutation private static void mutate(Chromosome chromosome) { for(int chromosomePos1=0; chromosomePos1 < chromosome.chromosomeSize(); chromosomePos1++){ // Membandingkan dengan nilai probabilitas mutasi if(Math.random() < mutationRate){ // Posisi gen kedua dari chromosome secara random int chromosomePos2 = (int) (chromosome.chromosomeSize() * Math.random()); // city1 = posisi gen kesatu, city2 posisi gen kedua untuk dimutasi Gen gen1 = chromosome.getGen(chromosomePos1); Gen gen2 = chromosome.getGen(chromosomePos2); // kedua posisi di swap (index, gen) chromosome.setGen(chromosomePos2, gen1); chromosome.setGen(chromosomePos1, gen2); } } }

6.5.3 Implementasi Algoritma Penentuan Jarak dan Nilai Fitness

Penghitungan nilai fitness dilakukan untuk mengetahui solusi rute

(chromosome) yang paling optimal. Dalam menentukan nilai fitness, digunakan

metode seleksi elitisme yaitu memilih fitness yang mempunyai nilai terkecil dari

kumpulan chromosome yang telah dihitung. Nilai fitness merupakan inverse dari

data jarak antar titik distribusi. Struktur program untuk penhitungan fitness

ditunjukkan pada source code berikut.

// Function getFitness // Menghitung fitness tiap chromosome (1/total jarak sebuah rute) public double getFitness() {

if (fitness == 0) { fitness = 1/(double)getJarak();

58

} return fitness; }

// Function getJarak // Get total jarak dari sebuah chromosome public int getJarak(){ if (jarak == 0) { int chromosomeDistance = 0; // looping seluruh gen dalam sebuah chromosome for (int genIndex=0; genIndex < chromosomeSize(); genIndex++) { // Kota (gen) posisi awal Gen fromGen = getGen(genIndex); // Kota (gen) tujuan Gen kotaTujuan; // Cek posisi bukan pada kota (gen) teakhir, // Jika posisi pada kota (gen) terakhir pada sebuah rute (chromosome), // kotaTujuan = kembali ke posisi kota (gen) awal if(genIndex+1 < chromosomeSize()){ kotaTujuan = getGen(genIndex+1); } else{ kotaTujuan = getGen(0); } // Jarak antar dua customer (gen) chromosomeDistance += fromGen.jarakDua(kotaTujuan); } jarak = chromosomeDistance; } return jarak; }

6.5.4 Implementasi Algoritma Fungsi Elitisme

Chromosome dari hasil inisialisasi populasi awal, crossover dan mutasi perlu

dipertahankan terutama untuk individu dengan hasil fitness terbaik. Secara teori,

tahap elitisme dapat meningkatkan kemampuan dari Algoritma Genetika karena

mempertahankan chromosome yang baik. Untuk memperkaya keberagaman hasil

solusi, proses iterasi dilakukan sebanyak jumlah generasi yang diinput user.

Berikut ini source code fungsi elitisme sebagai berikut.

// Mengembangkan populasi lebih dari satu generasi public static Populasi evolvePopulasi(Populasi pop) { Populasi newPopulasi = new Populasi(pop.populasiSize(), false); // Menjaga chromosome terbaik pada fungsi elitisme int elitismOffset = 0; if (elitism) {

59

newPopulasi.saveChromosome(0, pop.getFittest()); elitismOffset = 1; } // Populasi baru didalam fungsi elitisme for (int i = elitismOffset; i < newPopulasi.populasiSize(); i++) { // Parent Hasil seleksi Chromosome parent1 = rouletteSelection(pop); Chromosome parent2 = rouletteSelection(pop); // Parent crossover Chromosome child = crossover(parent1, parent2); // Child newPopulasi.saveChromosome(i, child); } // Mutasi gen didalam sebuah populasi untuk saling ditukar for (int i = elitismOffset; i < newPopulasi.populasiSize(); i++) { mutate(newPopulasi.getChromosome(i)); } return newPopulasi; }

6.6 Uji Coba Evaluasi

Uji coba dilakukan untuk menganalisa kemampuan aplikasi dalam

memecahkan permasalahan optimalisasi rute transportasi. Uji coba berdasarkan

acuan parameter Algoritma Genetika terhadap kualitas solusi yang dihasilkan.

Parameter AG yang digunakan pada aplikasi ini terdiri dari Jumlah chromosome

dalam sebuah populasi, jumlah generasi, besar parameter seleksi dan

probabilitas mutasi.

Jumlah chromosome dalam sebuah populasi menyatakan banyaknya solusi

rute yang dibentuk pada inisialisasi populasi awal. Jumlah generasi akan

membuat proses komputasi Algoritma Genetika mengalami pengulangan proses

iterasi sebanyak jumlah generasi tersebut. Dengan proses iterasi berulang,

diharapkan solusi rute dapat diperoleh mendekati hasil optimal. Selanjutnya

besar parameter seleksi adalah banyaknya parent yang dihasilkan dari proses

penyeleksian seluruh chromosome di dalam sebuah populasi untuk nantinya akan

dikenai proses persilangan (crossover). Sedangkan probabilitas mutasi digunakan

untuk menentukan chromosome-chromsome yang akan mengalami mutasi.

Pengujian akan dibagi ke dalam beberapa scenario, tiap skenario menggunakan

parameter yang berbeda-beda.

60

6.6.1 Uji Coba Skenario 1

Untuk pengujian awal, digunakan nilai-nilai parameter sebagai berikut :

Jumlah Populasi : 50

Jumlah Generasi : 100

Parameter Seleksi : 5

Probabilitas Mutasi : 0.001

Parameter pada skenario pertama menggunakan rekomendasi nilai parameter

De Jong. Untuk permasalahan yang memiliki kawasan solusi cukup besar, De

Jong merekomendasikan nilai parameter (popsize; pc; pm) = (50; 0.6; 0.001). Hasil

pengamatan tiap output komputasi Algoritma Genetika pada kasus permasalahan

ini ditampilkan ke dalam diagram pada gambar 6.5.

Gambar 6.5 Diagram Optimalisasi Rute dengan Fungsi Parameter De Jong

Gambar 6.5 merupakan diagram hasil iterasi proses optimalisasi rute

transportasi pendistribusian bunga krisan sebanyak 10 kali iterasi. Tiap iterasi

menghasilkan jarak optimum 257 titik yang merupakan jarak paling optimal

dari hasil proses komputasi Algoritma Genetika menggunakan aplikasi. Rute

paling optimal pada iterasi skenario pertama ini didapat susunan chromosome (4-

1-3-5-2). Rute ini merupakan solusi rute (chromosome) dengan persentase

kemunculan paling besar dari keseluruhan iterasi seperti yang ditampilkan pada

diagram. Susunan rute tersebut merupakan kunjungan dari Depot-Serpong-

0

0,5

1

1,5

2

2,5

3

3,5

4

5-2-4-1-3 4-2-5-3-1 4-1-3-5-2

Tingkat FrekuensiKemunculan Solusi RuteDalam 10 Kali Iterasi

61

Bandara-Jakarta-Cikarang-Cipanas-kembali ke Depot. Berikut ini tampilan

output aplikasi yang ditunjukkan pada Gambar 6.6.

Gambar 6.6 Output Rute Optimal Aplikasi Untuk Skenario 1

Hasil output pada Gambar 6.6 menunjukkan jarak optimal untuk

populasi awal dan populasi seluruh generasi. Jarak optimal yang diperoleh pada

insialisasi populasi awal adalah sebesar 257 titik. Sedangkan jarak optimal dari

seluruh iterasi (100 generasi) adalah sebesar 257 titik. Jarak optimal yang didapat

pada inisialisasi populasi awal sama dengan jarak optimal dari keseluruhan

generasi, karena pada inisialisasi populasi awal, jumlah populasi terbentuk

sebanyak 50 solusi, sehingga pencarian pada inisialisasi awal langsung

memenuhi hasil rute optimal.

6.6.2 Uji Coba Skenario 2

Skenario ini menggunakan parameter yang diperoleh dari penelitian

terdahulu yang membuat sebuah proyek mengenai Applying a Algoritma Genetika

to The Traveling Salesman Problem oleh Lee Jacobson, seorang developer di Bristol,

UK. Projek tersebut membahas mengenai pencarian solusi optimal dari bentuk

62

TSP dengan menggunakan Algoritma Genetika. Berikut ini parameter-parameter

yang digunakan pada proses komputasi.

Jumlah Populasi : 50

Jumlah Generasi : 100

Parameter Seleksi : 5

Probabilitas Mutasi : 0.015

Hasil uji coba menggunakan parameter tersebut ditampilkan pada diagram

optimalisasi rute Gambar 6.7.

Gambar 6.7 Optimalisasi Rute dengan Fungsi Parameter Lee Jacobson

Rute optimal yang diperoleh dari proses komputasi Algoritma Genetika

pada Gambar 6.7 menggunakan parameter Lee Jacobson dengan susunan rute

dari Depot menuju-Serpong-Bandara-Jakarta-Cikarang-Cipanas-kembali ke

Depot. Pada susunan rute ini mendapatkan persentase muncul sebanyak 4 kali

dari 10 kali iterasi. Hasil susunan solusi rute pada skenario ini sama dengan

hasil solusi rute pada skenario pertama. Hasil output pada aplikasi ditampilkan

pada Gambar 6.8.

0

0,5

1

1,5

2

2,5

3

3,5

4

3-1-4-5-2 2-4-1-3-5 1-4-2-5-3 4-1-3-5-2 4-2-5-3-1

Tingkat Frekuensi

Kemunculan Solusi

Rute Dalam 10 Kali

Iterasi

63

Gambar 6.8 Output Rute Optimal Aplikasi Untuk Skenario 2

6.6.3 Uji Coba Skenario 3

Pada skenario kali ini, komputasi Algoritma Genetika menggunakan

parameter dengan ukuran (popsize; pc; pm) = (80; 0.45; 0.01). Ukuran parameter

ini diperoleh dari rekomendasi nilai parameter oleh Sri Kusumadewi dalam

sebuah modul mengenai Pendahuluan Struktur Umum Komponen Utama

Seleksi, Rekombinasi dan Mutasi Algoritma Genetika Sederhana. Pada modul

dibahas bahwa jika fitness dari individu terbaik dipantau pada setiap generasi,

maka usulan batasan parameternya adalah :

Jumlah Populasi : 80

Jumlah Generasi : 1

Parameter Seleksi : 5

Probabilitas Mutasi : 0.01

Untuk memantau fitness terbaik dari individu ditiap generasi, maka jumlah

generasi pada skenario ini adalah 1. Berbeda seperti skenario sebelumnya yang

melakukan komputasi Algoritma Genetika sebanyak 100 generasi. Hasil uji coba

64

menggunakan parameter ini ditampilkan pada diagram optimalisasi rute

Gambar 6.9.

Gambar 6.9 Optimalisasi Rute dengan Fungsi Parameter Sri Kusumadewi

Hasil optimalisasi rute transportasi yang ditunjukkan diagram pada

Gambar 6.9, terdapat dua solusi rute yang memiliki jumlah frekuensi

kemunculan sama dalam 10 kali iterasi. Berbeda dari skenario sebelumnya, pada

skenario ini komputasi Algoritma Genetika hanya melakukan satu kali proses

optimalisasi sesuai dengan tujuan uji coba skenario ini yaitu untuk menganalisa

solusi rute yang dihasilkan pada tiap generasi. Susunan rute 2-4-1-3-5

menggambarkan rute transportasi beragkat dari Depot menuju-Cipanas-

Serpong-Bandara-Jakarta-Cikarang-kembali ke Depot. Untuk susunan rute 1-4-

2-5-3 menggambarkan rute transportasi dimulai dari Depot-Bandara-Serpong-

Cipanas-Cikarang-Jakarta- kembali ke Depot. Output rute optimal pada aplikasi

ditampilkan pada Gambar 6.10.

0

0,5

1

1,5

2

2,5

3

3-1-4-5-2 2-4-1-3-5 1-4-2-5-3 4-1-3-5-2 4-2-5-3-1

Tingkat Frekuensi

Kemunculan Solusi

Rute Dalam 10 Kali

Iterasi

65

Gambar 6.10 Output Rute Optimal Aplikasi Untuk Skenario 3

6.6.4 Uji Coba Heterogeneous Fleet VRP

Seperti yang telah dibahas sebelumnya bahwa permasalahan

Heterogeneous Fleet VRP pada kasus ini menggunakan bantuan algoritma Nearest

Neighbor dalam proses optimalisasi pemilihan alat transportasi (vehicle). Hasil

optimalisasi ditampilkan pada hasil output aplikasi gambar 6.11.

66

Gambar 6.11 Output Aplikasi

Pada Gambar 6.11, output dari solusi alat transportasi menunjukkan hasil

dengan deskripsi sebagai berikut:

1. Bandara, vehicle yang tepat untuk digunakan sebagai alat angkut

pendistribusian bunga krisan adalah tipe mobil boks L300 dan mobil boks

double. Banyaknya permintaan produk bunga krisan membutuhkan dua

kombinasi alat angkut transportasi.

2. Cipanas, pada output aplikasi menghasilkan solusi vehicle optimal pada

jenis mobil boks engkle dan double untuk melakukan pendistribusian

bunga krisan. Cipanas juga membutuhkan kombinasi dua mobil boks

sesuai dengan banyaknya permintaan dan kapasitas alat angkut.

3. Jakarta, solusi alat transportasi yang optimal pada customer ini adalah

jenis mobil boks double.

4. Serpong, optimal mengangkut bunga krisan dengan mobil boks engkle.

5. Cikarang, optimal mengangkut bunga krisan dengan mobil boks engkle.

67

DAFTAR PUSTAKA

Aswar, Wahyuda dan Muriana Emelda. 2013. Penerapan Metode Nearest Neighbor untuk Menentukan Rute Distribusi Roti Tawar Citarasa Bakery PT KMBU Bontang. Jurnal Teknik Industri. Tidak dipublikasikan. Samarinda: Universitas Mulawarman Samarinda.

Bahar, Emirul. 2003. Analisis Penentuan Jalur Transportasi Limbah Minyak Pada Aktivitas Pelayaran Laut Untuk Menghasilkan Total Biaya Pelayaran Minimum. Jurnal Ilmiah Ekonomi & BisnisUniversitas Gunadarma. Terakreditasi Nomor 2 Jilid 8 Agustus 2003, ISSN : 0853 – 862 X hal. 88 – 102. Bahar, Emirul. 2011. Optimasi Biaya Sistem Transportasi Berbasis Waktu, Jurnal Ilmiah Ekonomi Bisnis Universitas Gunadarma. Terakreditasi Volume 16 Nomor 2 Agustus 2011, ISSN 0853 – 862 X hal. 135 – 146.

Balai Pengkajian Teknologi Pertanian. 2006. Budidaya Tanaman Krisan, Yogyakarta.

Ballou, R. H. 1999. Business Logistics Management, 4th Ed. Prentice Hall International.

Bangun, Paulus Martua. 2011. Perancangan Algoritma Ant Colony Optimization (ACO) untuk Penyelesaian Vehicle Routing Problem (VRP). Skripsi. Tidak dipublikasikan Depok: Universitas Indonesia.

Charles Darwin. 2004. Britannica concise encyclopedia. URL: http://concise.britannica.com/ebc/article?eu=387589. (diakses 25 Mei 2015)

Crainic, T.G., Laporte, G. 1997. Planning Models for Freight Transportation. European Journal of Operational Research 97 (3): 409 438. Departemen Pertanian. 2013. Pusat Data Dan Sistem Informasi Pertanian No. 01/03/I, 5 Maret 2013. Dewi Agushinta Rahayu. 1994. A Algoritma Genetika on Coin Recognition System. Thesis. AIT. Thailand. Dunn, N. W. 1994. Analisis Kebijakan Publik, edisi kedua. Yogyakarta: AGdjah Mada University Press.

Eko, Bambang. 2007. Implementasi Algoritma Paralel Algoritma Genetika Untuk

68

Penyelesaian Heterogeneous Fleet Vehicle Routing Problem. Skripsi. Tidak dipublikasikan. Surabaya: Institut Teknologi Sepuluh Nopember.

Falkenauer. E. 1996. A Hybrid Grouping Algoritma Genetika for Bin Packing. Journal of Heuristics. 2:5-20.

Fisher. M. 1995. Vehicle Routing. Handbooks of Operations Research and Management Science. New York: North-Holland.

Gendreau, M. Laporte, G. and Potvin. J-Y. 1999. Metaheuristics for The Vehicle Routing Problem. Technical Report G-98-52, GERAD.

Gheysens, F. G., Golden, B.L. and Assad. A.A. 1984. A comparison of techniques for solving the fleet size and mix vehicle routing problem. OR Spectrum, 6(4):207-216.

Hermada, Johan. 2009. Info Perusahaan PT. Saung Mirwan. URL: http://saung-mirwan.indonetwork.co.id/. (diakses 1 Maret 2015)

Jacobson Lee. 2012. Applying a Algoritma Genetika To The Traveling Salesman Problem. URL: http://www.theprojectspot.com/tutorial-post/applying-a-genetic-algorithm-to-the-travelling-salesman-problem/5. (diakses 14 September 2015)

Kusumadewi, Sri dan Luger Subblefield. Pendahuluan Struktur Umum Komponen Utama Seleksi Rekombinasi Mutasi Algoritma Genetika Sederhana.

Laporte, G. Gandreau, M. Potvin, J-Y. dan Semet, F. 2000. Classical and Modern Heuristic for the Vehicle Routing Problem. International Transactions in Operational Research. 7:285-300.

Laporte G. dan Semet. F. 1999. Classical Heuristic for the Vehicle Routing Problem. Technical Report.

Leonita dan Evi Sipayung. 2011. Kajian Jaringan Transportasi dalam Manajemen Rantai Pasokan Bunga Krisan di Jawa Barat. Skripsi. Tidak dipublikasikan. Bogor: Institut Pertanian Bogor.

69

Liu, Shuguang, Weilai, Huang, Huiming, Ma. 2009. An Effective Algoritma Genetika for The fleet Size and Mix Vehicle Routing Problems. Transportation Research Part E45 (2009) 434–445, Elsevier.

Pankratz, Giselher. 2005. A Grouping Algoritma Genetika for the Pickup and Delivery Problem with Time Windows. OR Spectrum 27:21–41.

Pavela, V. dan Nurhadi, I. 2013. Penyelesaian Vehicle Routing Problem dengan Menggunakan Algoritma Nearest Neighbor dan Tabu Search. Studi Kasus di PT Nippon Indosari Corpindo. Skripsi. Tidak dipublikasikan. Malang: Universitas Brawijaya.

Pereira, F. B., Tavares, J., Machado P. dan Costa, E. 2002. A New Genetic Representation for the Vehicle Routing Problem. Prodeedings of the 13th Irish International Conference on Artifical Intelligence and Cognitive Science. Hal 95-102.

Pisinger, David, Ropke, Stefan. 2007. A General Heuristic for Vehicle Routing Problems. Computers & Operations Research 34 2403–2435, Elsevier.

Prana, Raden A. 2007. Aplikasi Kombinatorial pada Vehicle Routing Problem. Jurnal Teknik Informatika. Tidak dipublikasikan. Bandung: Institut Teknik Bandung.

Russel, R. S., Taylor, B. W. 2003. Operations Management. New Jersey: Prentice Hall. Sait S.M. and Youssef, H. editors. 1999. Iterative Computer Algorithms with Application in Engineering: Solving Combinatorial Optimization Problems, Chapter 3. IEEE Computer Society.

Wikimapia. 2006. PT. Saung Mirwan. URL: http://wikimapia.org/1661888/PT-Saung-Mirwan. (diakses 12 April 2015)

70

LAMPIRAN

BARIS PROGRAM

AGBungaKrisan.java /* * Teknik Informatika Fak. Teknologi Industri Universitas Gunadarma * Optimalisasi Rute Transportasi Heterogeneous Fleet VRP * Pendistribusian Bunga Krisan * Menggunakan Algoritma Genetika */ package AGbungakrisan; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame; /** * * @author Maesa Maziah */ public class AGBungaKrisan extends JFrame { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //Menampilkan interface hasil berupa frame Interface.java Interface frame = new Interface(); frame.setVisible(true); frame.setTitle("Optimalisasi Rute Transportasi Pendistribusian Bunga Krisan Menggunakan Algoritma Genetika"); frame.pack(); frame.setDefaultCloseOperation(Interface.EXIT_ON_CLOSE); } } Gen.java

/* * Teknik Informatika Fak. Teknologi Industri Universitas Gunadarma * Optimalisasi Rute Transportasi Heterogeneous Fleet VRP * Pendistribusian Bunga Krisan * Menggunakan Algoritma Genetika */ package AGbungakrisan; /** * * @author Maesa Maziah */ public class Gen { int x; int y; // Menentukan titik x,y dari tiap gen secara random public Gen(){

71

this.x = (int)(Math.random()*108); this.y = (int)(Math.random()*78); } // Gen(x,y) // Membangun suatu posisi gen dari titik x,y public Gen(int x, int y){ this.x = x; this.y = y; } // Function getX() // Get koordinat x sebuah gen public int getX(){ return this.x; } // Function getY() // Get koordinat y sebuah gen public int getY(){ return this.y; } // Function jarakDua // Menghitung jarak antar dua titik gen public double jarakDua(Gen gen){ int xJarak = Math.abs(getX() - gen.getX()); int yJarak = Math.abs(getY() - gen.getY()); double jarak = Math.sqrt( (xJarak*xJarak) + (yJarak*yJarak) ); return jarak; } @Override // Output posisi gen (x, y) public String toString(){ return getX()+", "+getY(); } } Chromosome.java

/* * Teknik Informatika Fak. Teknologi Industri Universitas Gunadarma * Optimalisasi Rute Transportasi Heterogeneous Fleet VRP * Pendistribusian Bunga Krisan * Menggunakan Algoritma Genetika */ package AGbungakrisan; import java.util.ArrayList; import java.util.Collections; /** * * @author Maesa Maziah */ public class Chromosome { // chromosome, solusi rute, terdiri dari seluruh gen yg akan di kunjungi private ArrayList chromosome = new ArrayList<Gen>(); // Reset fitness dan jarak awal = 0 private double fitness = 0;

72

private int jarak = 0; // Membangun chromosome awal = null public Chromosome(){ for (int i = 0; i < ChromosomeController.jumlahKota(); i++) { chromosome.add(null); } } public Chromosome(ArrayList chromosome){ this.chromosome = chromosome; } // Membangun sebuah chromosome public void generateIndividual() { for (int genIndex = 0; genIndex < ChromosomeController.jumlahKota(); genIndex++) { setGen(genIndex, ChromosomeController.getGen(genIndex)); } // Random chromsome Collections.shuffle(chromosome); } // Function getGen // Get sebuah gen didalam chromosome // chromosomePosition = index posisi gen dalam chromosome public Gen getGen(int chromosomePosition) { return (Gen)chromosome.get(chromosomePosition); } // Menetapkan kota(gen) dalam posisi tertentu dalam chromosome public void setGen(int chromosomePosition, Gen gen) { chromosome.set(chromosomePosition, gen); // Jika komposisi chromosome berubah, reset ulang fitness dan jarak = 0 fitness = 0; jarak = 0; } // Function getFitness // Menghitung fitness tiap chromosome (1/total jarak sebuah rute) public double getFitness() { if (fitness == 0) { fitness = 1/(double)getJarak(); } return fitness; } // Function getJarak // Get total jarak dari sebuah chromosome public int getJarak(){ if (jarak == 0) { int chromosomeDistance = 0; // looping seluruh gen dalam sebuah chromosome for (int genIndex=0; genIndex < chromosomeSize(); genIndex++) { // Kota (gen) posisi awal Gen fromGen = getGen(genIndex); // Kota (gen) tujuan Gen kotaTujuan; // Cek posisi bukan pada kota (gen) teakhir, // Jika posisi pada kota (gen) terakhir pada sebuah rute (chromosome), // kotaTujuan = kembali ke posisi kota (gen) awal if(genIndex+1 < chromosomeSize()){ kotaTujuan = getGen(genIndex+1);

73

} else{ kotaTujuan = getGen(0); } // Jarak antar dua customer (gen) chromosomeDistance += fromGen.jarakDua(kotaTujuan); } jarak = chromosomeDistance; } return jarak; } // Jumlah customer (gen) dalam sebuah chromosome (solusi rute) public int chromosomeSize() { return chromosome.size(); } // Cek sebuah chromosome berisi gen (customer) public boolean containsGen(Gen gen){ return chromosome.contains(gen); } // Output Solusi rute, pembatas antar gen (customer) @Override public String toString() { String geneString = " | "; for (int i = 0; i < chromosomeSize(); i++) { geneString += getGen(i)+" | "; } return geneString; } } ChromosomeController.java /* * Teknik Informatika Fak. Teknologi Industri Universitas Gunadarma * Optimalisasi Rute Transportasi Heterogeneous Fleet VRP * Pendistribusian Bunga Krisan * Menggunakan Algoritma Genetika */ package AGbungakrisan; import java.util.ArrayList; /** * * @author Maesa Maziah */ public class ChromosomeController { // kotaTujuan = gen-gen dalam satu buah rute (chromosome) private static ArrayList kotaTujuan = new ArrayList<Gen>(); // Prosedur add gen ke dalam kotaTujuan public static void addGen(Gen gen) { kotaTujuan.add(gen); } // Function getGen // get gen dari sebuah kotaTujuan public static Gen getGen(int index){ return (Gen) kotaTujuan.get(index);

74

} // Function jumlahKota // Total gen di dalam kotaTujuan public static int jumlahKota(){ return kotaTujuan.size(); } } Population.java

/* * Teknik Informatika Fak. Teknologi Industri Universitas Gunadarma * Optimalisasi Rute Transportasi Heterogeneous Fleet VRP * Pendistribusian Bunga Krisan * Menggunakan Algoritma Genetika */ package AGbungakrisan; /** * * @author Maesa Maziah */ public class Population { // Inisialisasi populasi = chromosome Chromosome[] chromosomes; // Membangun sebuah populasi public Population(int populationSize, boolean initialise) { chromosomes = new Chromosome[populationSize]; // if initialise = true, inisialisasi populasi if (initialise) { // membangun chromosome // prosedure generateIndividual pada Chromosome.Java for (int i = 0; i < populationSize(); i++) { Chromosome newChromosome = new Chromosome(); newChromosome.generateIndividual(); saveChromosome(i, newChromosome); } } } // Save sebuah chromosome public void saveChromosome(int index, Chromosome chromosome) { chromosomes[index] = chromosome; } // Get sebuah chromosome dari populasi public Chromosome getChromosome(int index) { return chromosomes[index]; } // Get chromosome terbaik dari populasi public Chromosome getFittest() { Chromosome fittest = chromosomes[0]; // Looping chromosome-chromosome untuk mendapatkan fittest for (int i = 1; i < populationSize(); i++) { if (fittest.getFitness() <= getChromosome(i).getFitness()) { fittest = getChromosome(i); } } return fittest;

75

} // PopulastionSize = Seumlah populasi pada array tours public int populationSize() { return chromosomes.length; } } AG.java /* * Teknik Informatika Fak. Teknologi Industri Universitas Gunadarma * Optimalisasi Rute Transportasi Heterogeneous Fleet VRP * Pendistribusian Bunga Krisan * Menggunakan Algoritma Genetika */ package AGbungakrisan; /** * * @author Maesa Maziah */ public class AG { /* Parameter AG */ private static final double mutationProb = Interface.probMutasi; private static final int seleksiSize = Interface.probSeleksi; private static final boolean elitisme = true; // Mengembangkan populasi lebih dari satu generassi public static Population evolvePopulation(Population pop) { Population newPopulation = new Population(pop.populationSize(), false); // Elitism // Menjaga chromsome terbaik // elitismOffset = generasi awal == 0 int elitismeOffset = 0; if (elitisme) { // Chromosome terbaik (Fittest) dengan index 0 newPopulation.saveChromosome(0, pop.getFittest()); // generasi + 1 elitismeOffset = 1; } // Populasi crossover // Membangun populasi baru pada generasi-generasi selanjutnya // Populasi saat ini for (int i = elitismeOffset; i < newPopulation.populationSize(); i++) { // Parent seleksi Chromosome parent1 = rouletteSelection(pop); Chromosome parent2 = rouletteSelection(pop); // di Crossover menghasilkan chromosome child Chromosome child = crossover(parent1, parent2); // child di tambahkan ke dalam newPopulation dengan index = i newPopulation.saveChromosome(i, child); } // Memutasi populasi baru untuk mendapatkan beberapa materi genetik baru (gen hasil mutasi) for (int i = elitismeOffset; i < newPopulation.populationSize(); i++) { mutate(newPopulation.getChromosome(i)); } return newPopulation;

76

} // Crossover // Set parent dan menghasilkan offspring (child) public static Chromosome crossover(Chromosome parent1, Chromosome parent2) { // Membuat chromosome child Chromosome child = new Chromosome(); // Mendapatkan titik (gen) awal dan akhir sebagai posisi sub chromosome dari chromosome Parent1 // Titik awal dan akhir di dapat secara acak int startPos = (int) (Math.random() * parent1.chromosomeSize()); int endPos = (int) (Math.random() * parent1.chromosomeSize()); // Looping dan tambahkan sub chromosome tersebut ke chromosome child for (int i = 0; i < child.chromosomeSize(); i++) { // Jika posisi mulai lebih kecil dari posisi akhir if (startPos < endPos && i > startPos && i < endPos) { child.setGen(i, parent1.getGen(i)); } // Jika posisi mulai lebih besar else if (startPos > endPos) { if (!(i < startPos && i > endPos)) { child.setGen(i, parent1.getGen(i)); } } } // Looping sebanyak gen didalam chromosome parent2 for (int i = 0; i < parent2.chromosomeSize(); i++) { // If chromosome child tidak berisi gen, add gen if (!child.containsGen(parent2.getGen(i))) { // Looping untuk menemukan sebuah posisi lain di chromosme child (cadangan) // Loop to find a spare position in the child's tour for (int ii = 0; ii < child.chromosomeSize(); ii++) { // posisi di temukan, add if (child.getGen(ii) == null) { child.setGen(ii, parent2.getGen(i)); break; } } } } return child; } // Mutasi menggunakan swap mutation private static void mutate(Chromosome chromosome) { // Looping keseluruhan gen didalam chromosome, posisi gen kesatu for(int chromosomePos1=0; chromosomePos1 < chromosome.chromosomeSize(); chromosomePos1++){ // Menerapkan probabilitas mutasi (Mutation Rate) if(Math.random() < mutationProb){ // Posisi gen kedua dari chromosome secara random int chromosomePos2 = (int) (chromosome.chromosomeSize() * Math.random()); // city1 = posisi gen kesatu, city2 posisi gen kedua untuk dimutasi Gen gen1 = chromosome.getGen(chromosomePos1); Gen gen2 = chromosome.getGen(chromosomePos2); // kedua posisi di swap (index, gen) chromosome.setGen(chromosomePos2, gen1); chromosome.setGen(chromosomePos1, gen2); }

77

} } // Seleksi kandidat chromosome yang akan di crossover private static Chromosome rouletteSelection(Population pop) { // Populasi Seleksi Population seleksi = new Population(seleksiSize, false); for (int i = 0; i < seleksiSize; i++) { // chromosome hasil seleksi diambil secara random dari total populasi int randomId = (int) (Math.random() * pop.populationSize()); // chromosome seleksi (index, city) seleksi.saveChromosome(i, pop.getChromosome(randomId)); } // fittest dari chromosome hasil seleksi Chromosome fittest = seleksi.getFittest(); return fittest; } }

Solusi Algoritma Genetika Pada Permasalahan Transportasi Komoditas Bunga Krisan Emirul Bahar, Dewi Agushinta R., Rossi Septy Wahyuni

Diterbitkan pertama kali oleh Gunadarma Hak Cipta Dilindungi Undang-Undang Jakarta 2016