Optimasi rute kendaraan dengan kapasitas mengunakan modifikasi algoritma artificial bee colony

(1)

OPTIMASI RUTE KENDARAAN DENGAN KAPASITAS

MENGUNAKAN MODIFIKASI

ALGORITMA

ARTIFICIAL BEE COLONY

MUHAMMAD ZIDNY ALAM

PROGRAM STUDI METEMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA 2013 M/ 1434 H


(2)

i

OPTIMASI RUTE KENDARAAN DENGAN KAPASITAS MENGGUNAKAN MODIFIKASI ALGORITMA ARTIFICIAL BEE

COLONY

SKRIPSI

Diajukan Kepada

Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta Untuk Memenuhi Salah Satu Persyaratan Dalam

Memperoleh Gelar Sarjana Sains Fakultas Sains Dan Teknologi

Oleh:

MUHAMMAD ZIDNY ALAM 109094000030

PROGRAM STUDI MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA


(3)

PENGESAHAN

UJIAN

Skripsi berjudul "optimasi Rute Kenda;yaan Dengan Kapasitas Menggunakan Modifikasi Algoritma Artificial Bee colony" yang ditulis oleh Muhammad

zidny Alam, NIM 109094000030 telah diuji dan dinyatakan lulus dalam Munaqosah Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta pada hari Senin, 5 Mei 2014. Skripsi ini telah diterima untuk memenuhi salah satu persyaratan dalam memperoleh gelar sarjana strata satu (S1)

program Matematika. Menyetujui:

Penguji 2, Penguji 1,

.-4n"8r-(/

{

\.-/

Yanne Irene, M.Si

NrP. 19741231 200s01 2 018 Pembimbing 1,

Sumaoinna, M.Si NIP. 150 408 699

dan Teknologi,

NIP. Pembimbing 2,

4futq

"//

Nina Fitriyati" M.Kom

NrP. 19760414 200604 2 001

Ketua Program Studi Matematika,

.fyr

(.-'/ !

Yanne Irene. M.Si

NrP. 19741231 200501 2 018 Mengetahui


(4)

iii

PERNYATAAN

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN

Jakarta, 10Mei 2014

Muhammad Zidny Alam 109094000030


(5)

vi ABSTRACT

Muhammad Zidny Alam, Capacitated Vehicle Routing Optimization by Using Modification Of Artificial Bee Colony Algorithm. Supervised by Suma’inna, M.Si and Nina Fitriyati, M.Kom.

Capacitated vehicle routing problem is one of combinatorial optimization problems, which is NP-Hard. In this paper we introduce an artificial bee colony heuristic which is swarm-based heuristic, which mimics the foraging behavior of honey bee swarm. Artificial bee colony algorithm will be developed with other algorithm to get the best results. There are 8 different benchmark problems that will be solved by artificial bee colony algorithm and then be compared with other algorithm to determine how well the artificial bee colony algorithm solving capacitated vehicle routing problem. The output of this study are in the form of a matrix that shows the order of vehicle’s routes is formed.

Kata kunci : CVRP, Capacitated Vehicle Routing Problem, artificial bee colony


(6)

v ABSTRAK

Muhammad Zidny Alam, Optimasi Rute Kendaraan dengan Kapasitas Menggunakan Modifikasi Algoritma Artificial Bee Colony. Di bawah bimbingan Suma’inna, M.Si dan Nina Fitriyati, M.Kom.

Permasalahan rute kendaraan dengan kapasitas adalah permasalahan optimasi kombinatorial yang masuk dalam kategori NP-Hard. Pada tulisan ini kami mengusulkan algoritma artificial bee colony yaitu metode yang diadaptasi dari kecerdasan perilaku lebah dalam mencari sumber makanan. Algoritma artificial bee colony akan dikembangkan dengan algoritma lain untuk mendapatkan hasil terbaik. Ada 8 buah permasalhan benchmark berbeda yang akan diselesaikan dan kemudian akan dibandingkan dengan algoritma lain untuk mengetahui seberapa baik algoritma artificial bee colony menyelesaiakan permasalahan optimasi rute kendaraan dengan kapasitas. Hasil output dari penelitian ini adalah berupa matrik yang menunjukkan urutan rute kendaraan yang terbentuk.

Kata kunci : CVRP, Capacited Vehicle Routing Problem,optimasi rute kendaraan, artificial bee colony, algoritma lebah,


(7)

vii

KATA PENGANTAR

Bismillahirrohmanirrohim

Puji dan syukur kehadirat Allah SWT karena limpahan nikmatnya sehingga terselesaikanlahsalah satu tanggung jawab ini. Shalawat serta salam teruntukNabi Muhammad SAW, menjadi sosok tauladan nyata seluruh umat agar selalu bersabar dan bertawakal, yang merupakan pengiring langkah penulis dalam menyusun penelitian yang berjudul “Optimasi Rute Kendaraan dengan Kapasitas Menggunakan Modifikasi Algoritma Artificial Bee Colony”.

Dalam proses pelaksanaan sampai penyelesaian penelitian ini, banyak kesulitan yang mengiringi langkah penulis. Alhamdulillah,hal itu terlewati karena merekayang dengan ketulusan hati membantu. Untuk itu,tiada ragu rasa terima kasih ini terucap kepada mereka :

1. Kedua orang tua tercinta yang tak henti-hentinya memberikan doa, motivasi, kasih sayang dan dukungan baik secara moril, materil, maupun spiritual dalam menyelesaikan skripsi ini.

2. Bapak Dr. Agus Salim, M.Si, Dekan Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta.

3. Ibu Yanne Irene, M.Si selaku Ketua Program Studi Matematika Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta. 4. Ibu Suma’inna M.Si dan Ibu Nina Fitriyati M.Kom selaku pembimbing

yang senantiasa memberikan arahan dan saran-saran dalam penyelesaian penelitian ini.


(8)

viii

5. Ibu Yanne Irene M.Si dan Pak Mahmudi M.Si selaku penguji yang memberikan koreksi membangun untuk penelitian ini.

6. Seluruh Dosen pengajar Prodi Matematika, terima kasih atas semua ilmu yang telah diberikan yang secara tidak langsung saya gunakan dalam memahami materi penelitian ini, terima kasih.

7. Kepada Ifta Afifah, Syifa Ainul Yaqin, Maida Vitaloka, Alfain Suhuda, dan Firly Octavianti yang telah membantu dalam pelaksanaan sidang dan penyelesaian tugas akhir ini. Semangat buat kalian selangkah lagi menuju kemengan .

8. Terima kasih buat “Kepo Team” yang telah memotivasi penulis untuk menyelesaikan tugas akhir ini.

9. Seluruh teman-temanku yang tak bisa kusebutkan yang telah mendukung dan membantu penulis dalam menyelesaikan tugas akhir ini.

Penulis berharap agar pembahasan dalam penelitian ini dapat memberikan informasi yang berguna serta kontribusi yang membangun, baik bagi para pembaca maupun saya sendiri sebagai penulis. Banyak kekurangan yang tidak luput dari penelitian ini, penulis berharap adanya saran yang dapat menjadikan penelitian ini lebih baik lagi.

Jakarta, 10 Mei 2014


(9)

DAFTAR ISI

HALAMAN JUDUL...i

LEMBAR PENGESAHAN...ii

PERNYATAAN...iii

PERSEMBAHAN DAN MOTTO...iv

ABSTRAK...v

ABSTRACT...vi

KATA PENGANTAR...vii

DAFTAR ISI...ix

BAB I. PENDAHULUAN...1

1.1. Latar Belakang...1

1.2. Rumusan Masalah...3

1.3. Tujuan Penelitian...3

1.4. Batasan Masalah...3

1.5. Manfaat Penelitian...4

BAB II. LANDASAN TEORI...6

2.1. Graf...6

2.2.1. Jenis - Jenis Graf...7

2.2. Capacited Vehicle Routing Problem (CVRP)...9

2.3. Artificial Bee Colony (ABC)...13

2.4. Neighbourhood Operator...17

BAB III. METODE PENELITIAN...19


(10)

3.2. Chart Alur Penelitian...20

3.2.1. Studi Literatur...20

3.2.2. Tahap Pengembangan...21

3.2.2.1. Route Construction...21

3.2.2.2. Distance Improvements...24

3.2.3. Tahap Pengujian...25

3.2.4. Tahap Pembahasan dan Kesimpulan...25

3.2.5. Flowchart...26

BAB IV. PEMBAHASAN DAN HASIL...27

4.1. Data Uji Coba...27

4.2. Implementasi Algoritma...27

4.2.1. Route Construction...28

4.2.2. Distance Improvements...33

4.3. Hasil Eksperimen...38

BAB V. KESIMPULAN...40

5.1. Kesimpulan...41

5.2. Saran...42

DAFTAR PUSTAKA...43


(11)

1 BAB I

PENDAHULUAN

1.1 Latar Belakang

Seiring berkembangnya dunia industri dalam satu dekade ini, persaingan antar perusahaan sudah menjadi hal yang biasa. Setiap perusahaan berlomba-lomba dalam meningkatkan kinerja perusahaan agar mampu bertahan dalam persaingan global yang sangat ketat ini. Peningkatan kualitas pelayanan terhadap permintaan konsumen menjadi salah satu cara yang dilakukan perusahaan untuk bertahan dalam persaingan di dunia industri. Salah satu untuk mewujudkan hal tersebut yaitu dengan mengoptimalkan proses distribusi yang didukung dengan kemajuan teknologi saat ini. Tentunya setiap perusahaan menginginkan penyaluran distribusi yang efektif dengan biaya perjalanan yang minimum.

Permasalahan rute kendaraan dengan kapasitas (Capcited Vehicle Routing Problem (CVRP)) adalah suatu jenis permasalahan yang mewakili permasalahan yang disebutkan tadi. CVRP adalah permasalahan optimasi kombinatorial kompleks yang masuk dalam kategori NP-Hard Problem yaitu suatu permasalahan yang membutuhkan komputasi yang sulit dan waktu yang banyak seiring dengan bertambahnya ukuran data permasalahan.

Seiring dengan berkembangnya metode optimasi, ditemukan beberapa pendekatan baru dalam menyelesaikan permasalahan optimasi. Salah satunya melalui pendekatan Artificial Bee Colony (ABC). ABC merupakan algoritma


(12)

2 baru yang dikembangkan oleh peneliti dari turki Darvis Karaboga pada tahun 2005 dan telah diterapkan ke berbagai bidang permasalahan optimasi, salah satunya yaitu Traveling Salesman Problem dan Vehicle Routing Problem.

Beberapa metode yang telah dikembangkan untuk menyelesaiakan permasalahan CVRP, di antaranya adalah integer programming (Kulkarni and Bhave, 1985), mixed integer programming (Longo and Aragao, 2004), tabu

search (Fermin and Roberto, 2004), genetic algorithm (Baker and Ayechew,

2003), simulated annealing (Tavakkoli et al, 2005), ant colony (Bell and McMullen, 2004), branch and cut (J. Lysgaard, A.N Letchford, dan R.W Eglese, 2003), artificial bee colony (WY Szeto, Y Wu, dan Sc Ho, 2011) dan lain-lain.

Penelitian ini merupakan penelitian lanjutan dari WY Szeto, Y Wu, dan Sc Ho pada tahun 2011 dan pembuktian secara fisik bagaimana CVRP diterapkan dalam kondisi sebenarnya. Namun dalam penelitian sebelumnya belum dijelaskan bagaimana model dan bentuk penyelesaian algoritma yang dibangun. Pada penelitian ini akan diterapkan metode Artificial Bee Colony (ABC) dengan modifikasi menggunakan neighborhood operator random swap dan random insertions untuk menyelesaikan masalah CVRP. Data yang digunakan sebagai simulasi pemograman berasal dari [12] dan kemudian akan dibandingkan hasil simulasi dengan algoritma branch and cut. Hasil yang diharapkan adalah penelitian ini dapat menunjukkan performansi komputasi ABC untuk masalah CVRP dan program komputer sebagai implementasi algoritmanya.


(13)

3 1.2 Rumusan Masalah

Berdasarkan uraian latar belakang yang telah dikemukakan di atas, permasalahan yang akan dibahas pada penelitian ini adalah bagaimana menerapkan algoritma ABC untuk menyelesaikan permasalahan CVRP agar didapatkan hasil terbaik yaitu biaya total perjalanan yang minimum.

1.3 Tujuan Penelitian

Adapun tujuan yang ingin dicapai oleh peneliti dalam penelitian ini adalah sebagai berikut :

1. Mendapatkan algoritma ABC yang mampu menyelesaikan permasalahan CVRP.

2. Menyelesaikan permasalahan CVRP dengan mendapatkan hasil terbaik menggunakan algoritma ABC dan kemudian akan dibandingkan hasil yang didapat melalui algoritma ABC dengan hasil algoritma lain yaitu Branch and Cut yang telah dilakukan oleh J. Lysgaard, A.N Letchford, dan R.W Eglese pada tahun 2003.

1.4 Batasan Masalah

Untuk lebih memfokuskan penelitian dan menyederhanakan permasalahan, ada batasan-batasan yang digunakan dalam penelitian ini adalah sebagai berikut :

1. Kendaraan yang digunakan homogenous fleet artinya armada angkutan yang digunakan memiliki kapasitas maksimum seragam.


(14)

4 3. Semua kendaraan bermula dari depot dan berakhir depot.

4. Tidak ada batasan waktu dan total jarak pada suatu rute tertentu.

Sedangkan asumsi yang digunakan dalam penelitian ini adalah sebagai berikut :

1. Dalam konsep perhitungan jarak digunakan metode symetric distance dengan menggunakan persamaan Euclidian :

� , = ( 1− 1)2+ ( 2− 2)2

Keterangan

�( , ) = jarak antara kota p dan q

1 = titik aksis dari kota p 2 = titiki ordinat dari kota p 1 = titik aksis dari kota q 2 = titik ordinat dari kota q

2. Biaya perjalanan berbanding lurus dengan total jarak tempuh untuk semua kendaraan.

1.5 Manfaat Penelitian

Manfaat yang bisa diperoleh dari penelitian ini dalam bidang keilmuan adalah :

1. Adanya pendekatan baru dalam menyelesaiakan permasalahan CVRP dengan menggunakan algoritma ABC.


(15)

5 2. Penelitian ini dapat digunakan sebagai acuan atau referensi bagi peneliti lain yang ingin mempelajari algoritma ABC atau permasalahan CVRP.


(16)

6 BAB II

LANDASAN TEORI

2.1 Graf

Sebuah graf = (�, ) terdiri atas sekumpulan objek �= { 1, 2,…, } yang disebut himpunan titik atau simpul, dan sebuah himpunan lain = { 1, 2,…, } yang merupakan himpunan sisi, sedemikian hingga setiap sisi dikaitkan dengan suatu pasangan tak terurut ( , ) [1]. Banyaknya titik atau simpul (anggota V) disebut order Graf G, sedangkan banyaknya sisi (anggota E) disebut size atau ukuran Graf G. Cara merepsentasikan sebuah graf yang paling umum adalah berupa diagram. Dalam menggambar sebuah graf, bentuk sisi dapat berupa garis lurus atau garis lengkung. Demikian pula ukurannya, dalam penggambaran sebuah graf tidaklah diperhatikan. Hal yang perlu diperhatikan dalam sebuah graf adalah insidensi antara titik-titk dengan sisi-sisinya. Untuk lebih jelasnya dapat dilihat pada Gambar 1 dibawah ini.


(17)

7 Pada Gambar 1, 1 adalah graf sederhana dengan

� = {1, 2, 3, 4}

= { 1, 2 , 1, 3 , 2, 3 , 2, 4 , (3, 4)}

2adalah multigraf dengan

� = {1, 2, 3, 4} = { 1, 2 , 2, 3 , 1, 3 , 1, 3 , 2, 4 , 3, 4 , (3, 4)}

Pada 2 sisi 3 = (1, 3) dan 4 = (1, 3) dinamakan sisi berganda atau ruas sejajar (multiple edges atau parralel edges), karena kedua sisi ini menghubungi dua buah titik yang sama, yaitu titik 1 dan titik 2.

3 adalah graf dengan

� = {1, 2, 3, 4} = { 1, 2 , 2, 3 , 1, 3 , 1, 3 , 2, 4 , 3, 4 , (3, 4)}

Pada 3 sisi 8 = (3, 3) dinamakan gelang atau loop, karena ia berawal dan berakhir pada simpul yang sama.

2.1.1 Jenis-Jenis Graf

Menurut [1] berdasarkan ada atau tidaknya loop atau sisi ganda pada suatu graf, maka graf digolongkan menjadi dua jenis :

1. Graf sederhana (simple graph).

Graf yang tidak mengandung loop maupun sisi berganda dinamakan graf sederhana, seperti pada Gambar 1. 1

2. Graf tak-sederhana (multigraph)

Graf yang mengandung sisi berganda atau loop dinamakan graf tak-sederhana, seperti pada Gambar 1 2dan 3


(18)

8 Berdasarkan jumlah titik atau simpul pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis :

1. Graf tak-berhingga (unlimited Graph)

Graf yang jumlah simpulnya, n, tidak berhingga banyaknya, untuk lebih jeasnya seperti Gambar 2 dibawah ini.

Gambar 2. Graf tak-berarah

2. Graf berhingga (limited Graph)

Graf berhingga adalah graf yang jumlah titiknya, sejumlah n, berhingga.

Berdasarkan orientasi arah pada sisi, maka secara umum graf dibedakan menjadi dua jenis yaitu :

1. Graf tak-berarah (undirected graph)

Graf yang sisinya tidak mempunyai orientasi arah disebut graf tak-berarah.

2. Graf berarah (directed graph atau digraph)


(19)

9

a � (b) �

Gambar 3. (a) Graf berarah dan (b) Graf berganda berarah

Pada kehidupan nyata pengembangan graf sangatlah luas dan menghasilkan bermacam-macam permasalahan salah satunya adalah Capcaited Vehicle Routing Problem, dimana peneliti akan mencoba menyelesaikannya dengan algoritma Artificial Bee Colony.

2.2 Capacitated Vehicle Routing Problem (CVRP)

Capacitated vehicle routing problem(CVRP) adalah suatu

permasalahan dimana terdapat sejumlah titik customer atau kota dan sejumlah kendaraan yang berada pada satu depot yang harus ditentukan rutenya agar mampu melayani semua customer dengan batasan kapasitas pada setiap kendaraannyadan mendapatkan biaya yang minimum. CVRP adalah salah satu permasalahan NP-Hard yaitu suatu permasalahan yang membutuhkan usaha komputasi yang besar seiring dengan bertambahnya ruang lingkup permasalahan, dalam hal ini adalah jumlah titik customer atau kota. Karena hal inilah tidak mungkin menggunakan metode eksak untuk menyelesaiakannya.


(20)

10 Secara formal CVRP didefinisikan sebagai sejumlah graph tak berarah = (�, ), dimana � = {0,1,…, } adalah himpunan titik dan = { , : , ∈ �, < } adalah himpunan sisi. Titik1,…, menunjukkan customers; setiap customer i memilikisuatu permintaanyang bervariasi yaitu nilai tak negatif . Sedangkan simpul 0 menunjukkan sebagai depot yang memiliki sejumlah armada dengan kapasitas angkut . Jumlah armada ditentukan sesuai ketentuan. Setiap sisi ( , ) memiliki biaya perjalanan dengan nilai tak negatif [2].

Gambar 4. Contoh rute dalam CVRP

Pada permasalahan CVRP setiap rute yang terbentuk dari sejumlah kendaraan harus memenuhi beberapa kriteria, yaitu (a) setiap rute bermula dan berakhir pada depot; (b) setiap customers hanya boleh dikunjungi satu kali oleh satu kendaraan; (c) total dari seluruh permintaan tidak boleh

Depot

Rute I

Rute III

Rute II


(21)

11 melebihi kapasiatas kendaraan ; dan (d) total dari jumlah biaya seluruh rute harus minimum[3]. Setiap sisi dalam jaringan menunjukan koneksi antara dua titik dan juga mengindikasikan arah perjalanannya. Jumlah rute dalam jaringan setara dengan jumlah kendaraan yang digunakan. Jadi, satu kendaraan digunakan hanya untuk satu rute.Dengan tujuan minimasi biaya transportasi maka perhitungan jarak merupakan proses penting.

Adapun proses perhitungan jarak terbagi menjadi dua :

- Symetric distance

Merupakan konsep perhitungan jarak yang mengasumsikan besarnya jarak dari kota A ke kota B sama dengan ke kota B ke kota A.

- Asyimetric distance

Yaitu kebalikan dari symetric distance, perhitungan jarak yang menganggap besarnya jarak kota A ke kota B tidak sama dengan kota B ke kota A.

Pada penelitian ini peneliti menggunakan peeritungan jarak Symetric Distance.

Berikut ini merupakan formulasi matematis dari CVRP:

Minimasi �

� =0 � =0 � =0

(1)


(22)

12

� ≤ � untuk = 0

� =1 � =1 (2) � = � � =1

≤ 1 untuk = 0 dan ∈{1,2,…,�} N

j=1

(3)

� ≤1 untuk ∈{1,2,…,�}

� =0 � =1

(4)

� ≤ 1 untuk ∈{1,2,…,�}

� =0 � =1 (5) � � =0

≤ ∈{1,2,…,�} N

j=1

(6)

� �� � ∈{0,1}

0 jika tidak ada busur dari titik i ke j, 1 jika ada

≠ , ∈0,1,2,…,�

� ∶jumlah total kendaraan

� ∶jumlah total

∶ , dimana ∈1,2,…,� 0 ∶depot

� ∶ jarak euclidean anatara titik dan

∶biaya pada busur dari titik ke

∶ � � � pada titik i


(23)

13 Formula (1) adalah fungsi objektif untuk permasalahan ini. Persamaan (2) menunjukkan bahwa maksimum kendaraan yang digunakan adalah K. Persamaan (3) memastikan semua rute berawal dan berakhir pada depot pusat. Persamaan (4) dan (5) menunjukkan bahwa setiap titik pelangganhanya bisa dikunjungi sekali oleh sebuah kendaraan. Persamaan (6) adalah kendala kapasitas kendaraan. Rumus-rumusan diatas mendefinisikan solusi yang mungkin untuk permasalahan CVRP.

2.3Artificial Bee Colony

Artificial bee colony (ABC) adalah algoritma optimasi yang terinspirasi berdasarkan kecerdasan perilaku lebah dalam mencari sumber makanan[5]. ABC pertama kali diperkenalkan pada tahun 2005 oleh Dervis Karaboga, dengan mempelajari perilaku lebah dikehidupan nyata dalam mencari nektar sebanyak mungkin dan menyebarkan informasi sumber makanan kepada lebah lain di sarang. Para lebah mencoba memaksimalkan jumlah nektar yang akan di serahkan ke sarang mereka dengan melakukan pembagian tugas kepada setiap lebah. Dalam satu koloni ABC terbagi menjadi tiga jenis lebah; (1) Employed Bee, (2) Onlooker Bee, (3) Scout Bee.

Employed Bee memiliki peran sebagai lebah pekerja yang mengumpulkan nektar dari sumber makanan yang ditemukan. Ketika Employed Bee menemukan sumber makanan, Employed Bee akan melakukan local search dan mencoba memanfaatkan lokasi disekitar sumber makanan yang ditemukannya dan mencari sumber makanan lain yang lebih baik.Employed Bee akan mengingat letak sumber makanan tersebut dan


(24)

14 seberapa baik kualitasnya. Employed Bee memiliki memory, jadi mereka tahu dimana tempat yang telah mereka kunjungi sebelumnya dan seberapa baik kualitas sumber makanan disana [6][7].Setelah mendapatkan nektar mereka kembali ke sarang dan menyerahkan nektar yang didapat sekaligus memberikan informasi tentang sumber makanan kepada Onlooker Bee.

Kemudian tugas Onlooker Beeadalah mengumpulkan dan mengevaluasi semua informasi tentang sumber makanan yang didapat dari penjelajahanEmployed Bee. Setelah itu Onlooker Bee akan memilih mana sumber makanan yang memiliki kemungkinan terbesar menghasilkan nektar terbaik, artinya apakah sebanding nektar yang didapat dengan usaha lebah mencapai sumber makanan tersebut. Kemudian Onlooker Bee akan melakukan sebuah isyarat yaitu sebuah tarian untuk memberi tahu lebah lain agar memilih sumber makanan yang memiliki kemungkinan terbaik dalam menghasilkan nektar. Lebah lain akan melihat seberapa lama Onlooker Bee menari, semakin lama lebah itu menari maka semakin besar juga keuntungan yang akan didapat jika memilih sumber makanan tersebut [14]. Onlooker Bee mencari sumber makanan secara global dari informasi yang telah didapat dari Employed Bee untuk mendapatkan nilai optimal global.

Kemudian tugas dari Scout Bee adalah berkelana ke segala arah secara random mencari sumber makanan baru yang belum pernah dikunjungi oleh Employed Bee. Hal ini dilakukan agar lebah tidak terjebak pada satu sumber makanan saja. Jika sumber makanan yang baru ditemukan menghasilkan nektar tebaik dari sebelumnya, maka sumber makanan yang lama akan ditinggalkan dan digantikan dengan yang baru. Lebah akan melupakan


(25)

15 sumber makanan yang lama dan akan mengingat sumber makanan yang baru. Jika sumber makanan yang dimanfaatkan Employed Bee telah habis maka Employed Bee akan meninggalkan sumber makanan tersebut dan bertindak sebagai Scout Bee mencari makanan secara random ke segala arah.

Dalam algoritma ABC sumber makanan menggambarkan kandidat solusi pada permasalahan optimasi dinotasikan sebagai NF, kemudian banyaknya nektar pada sumber makanan menggambarkan seberapa baik nilai fitness pada solusi tersebut. Penetapan nilai fitness ditentukan sesuai solusi yang diinginkan. Jumlah Employed Bee atau Onlooker Bee sama dengan jumlah sumber makanan.Berikut ini adalah langkah-langkah algoritma ABC menurut [5] dalam menyelesaikan permasalahan optimasi:

Langkah 1. Inisialisasi :Menentukan solusi awal dengan me-randomsembarang nilai sebanyak populasi yang telah ditentukan dan hitung nilai fitness dari setiap solusi yang terbentuk. Setiap populasi menggambarkan sebagai posisi dari sumber makanan dan dinotasikan sebagai � , dimana i adalah banyaknya solusi yang telah ditentukan ( = 1,2,…,� ) dan setiap solusi memiliki D vektor dimensi, jadi j menunjukkan dimensi dari solusi ( = 1,2,…, ).

Langkah 2. Employed Bee: Setelah inisialisasi solusi awal Employed Bee akan melakukan pencarian sumber makanan baru di sekitar sumber makan lama dengan menggunakan persamaan (7), kemudian hitung nilai fitness pada sumber makanan baru, jika nilai fitness sumber makanan baru lebih besar daripada sumber makanan lama, maka sumber makanan lama akan digantikan


(26)

16 dengan yang baru seperti metode Greedy. Pencarian sumber makanan baru oleh Employed Bee akan berakhir sampai memenuhi iterasi yang telah ditentukan.

Langkah 3. Onlooker Bee : Hitung probabilitas dari setiap sumber makanan yang terpilih menggunakan persamaan (8). Setelah itu pilih sumber makanan menggunakan metode rhoulette wheel untuk setiap Onlooker Bee. Kemudian sumber makanan yang terpilih akan digunakan sebagai patokan untuk mencari sumber makan baru disekitarnya menggunakan persamaan (7). Setelah itu hitung nilai fitnessnya dan lakukan pemilihan sumber makanan baru dengan metode Greedy.

Langkah 4. Scout Bee : Jika sumber makanan tidak mengalami perbaikan sampai batas yang telah ditentukan, maka sumber makanan tersebut akan ditinggalkan dan Employed Bee akan menjadi Scout Beemencari sumber makanan baru secara random menggunakan persamaan (9).

Langkah 5. Best Food : Simpan nilai fitness terbesar dan sumber makanan terbaik selama pencarian oleh para lebah.

Langkah 6. Selesai : Periksa apakah program berhenti telah sesuai dengan iterasi, kemudian periksa juga apakah hasil yang diperoleh telah memuaskan, jika tidak kembali ke langkah 2.

� + 1 = � +∅ � − � (7) dimana � dinotasikan sebagai posisi lebah ke i, kemudian j adalah dimensi dari solusi atau sumber makanan, t adalah angka iterasi, � adalah


(27)

17 posisi lebah ke k yang dipilih secara acak, dan ∅ adalah suatu bilangan riil yang dipilih secara acak pada range [-1,1].

= (�) (� )

� =1

(8)

dimana adalah probabilitas ke i, kemudian � adalah posisi lebah ke i , S menunjukkan jumlah Employed Bee.

� =� + . � �� − � (9) dimana r adalah bilangan riil yang dipilih secara acak pada range [0,1].

2.4 Neighbourhood Operator

Neighbourhood Operator adalah salah satu metode yang termasuk kedalam Local Searchyaitu metode heuristik sederhana untuk menyelesaiakan permasalahan optimasi [4]. Karena neighbourhood operator adalah metode heuristik maka tidak ada jaminan solusi yang dihasilkan adalah optimal. Solusi dari metode heuristik didapat selain dengan cara trial and error juga dengan pendekatan secara intuitif [9]. Pada penelitian ini peneliti menggunakan dua neighbourhood operator sebagai pengembangan algoritma ABC untuk menyelesaikan permasalahan CVRP yaitu Random Swaps dan Random Insertions.

- Random Swaps

Operator ini akan memilih posisi (dalam matriks) i dan j dengan ≠ dan menukar pelanggan yang terletak pada posisi indeks i dan j[3].Pada metode ini, dua tempat dapat saling dipertukarkan urutan kunjungannya.


(28)

18 Metode random swaps dapat diterapkan baik pada satu rute maupun dua rute kendaraan [10]. Selama perubahan yang terjadi tidak melanggar kendala yang ada dan dapat mengurangi biaya yang dikeluarkan. Untuk lebih jelasnya dapat dilihat seperti gambar 1 dibawah ini. Misalkan i = 3 dan j = 7.

Gambar 1. Random Swaps [3]

- Random Insertions

Operator ini akan memilih nilai i dan j secara random dimana ≠ dan merelokasi pelanggandi posisi i pindah ke posisi j[3]. Dalam metode ini, sebuah tempat dalam satu rute dapat dipindahkan urutan kunjungannya. Dengan syarat biaya rute berkurang dan tidak melanggar kendala yang ada maka hal tersebut dapat dilakukan. Metode random insertionsini dapat memindahkan sebuah kunjungan pada rute yang sama ke posisi yang berbeda. Untuk lebih jelasnya dapat dilihat seperti gambar di bawah ini, misalkan i = 7 dan j = 3.


(29)

19 BAB III

METODE PENELITIAN

3.1 Alur Penelitian

Penelitian ini dilakukan untuk menerapkan dan mengembangkan model ABC dalam menyelesaikan permasalahan CVRP. Untuk mendapatkan hasil terbaik, dibutuhkan suatu langkah-langkah sistematis dalam menyelesaiakan permasalahan ini, yaitu menguraikan kerangka berpikir, membuat formulasi dan mengembangkan model, hingga sampai menghasilkan pembahasan dan mendapatkan kesimpulan dari penelitian ini.

Pada dasarnya metodologi yang dilakukan peneliti dapat dibagi menjadi 4 bagian, yaitu (1) studi literatur : peneliti melakukan persiapan dengan mempelajari permasalahan CVRP dan algoritma ABC; (2) tahap pengembangan : pada tahap ini peneliti mencoba mengembangkan algoritma ABC agar dapat diterapkan pada permasalahan CVRP; (3) tahap pengujian : ditahap ini peneliti mencoba menerapkan model yang telah dibuat kedalam permasalahan CVRP melalui simulasi pemograman; (4) tahap pembahasan dan kesimpulaan : untuk tahap ini peneliti telah mendapatkan hasil yang diinginkan melalui simulasi pemograman kemudian menganalisanya untuk mendapatkan kesimpulan dari penelitian ini.


(30)

20

Studi Literatur

Tahap

Pengembangan

Tahap Pengujian

Tahap Pembahasan

dan Kesimpulan

Studi Pustaka

Route Constructions Distance Improvements

Perumusan Masalah 3.2 Chart Alur Penelitian

3.2.1 Studi Literatur

Pada tahap ini persiapan yang dilakukan adalah merumuskan permasalahan, menentukan tujuan penelitian, dan studi pustaka. Adapun perumusan permasalahan yang akan diteliti yaitu bagaimana menerapakan algoritma ABC ke dalam permasalahan CVRP untuk mendapatkan jarak yang minimum dengan tanpa melanggar kendala dengan sejumlah kendaraan yang telah ditentukan. Kemudian data yang digunakan adalah data benchmark dari [12] yang terdiri dari 8 persoalan berbeda dan memiliki pelanggan yang beragam pada setiap persoalan. Tujuan yang akan dicapai pada penelitian ini


(31)

21 adalah mampu menyelesaikan permasalahan CVRP dengan algoritma ABC dan diharapkan mampu memberikan hasil yang lebih baik dari metode lain yang pernah diterapkan ke permasalahan ini.

Studi literatur yang dilakukan peneliti adalah bertujuan untuk memperoleh dan memahami teori-teori yang berhubungan dengan metode yang digunakan dan permasalahan pada penelitian ini. Selain itu studi literatur ini juga digunakan untuk mencari refrensi tentang penelitian-penelitian sebelumnya khsususnya yang terkait dengan algoritma ABC dan permasalahan CVRP.

3.2.2 Tahap Pengembangan

Pada tahap ini dilakukan pengembangan model algoritma ABC agar mampu menyelesaikan CVRP. Pengembangan model algoritma terbagi menjadi 2 fase, yaitu fase pertama route construction dan fase kedua adalah distance improvement. Pada fase pertama peneliti menggunakan algoritma Clark and Wright. Sedangkan pada fase kedua digunakan algoritma ABC untuk memperbaiki total jarak dari solusi yang dihasilakan pada fase pertama.

3.2.2.1 Route Construction

Dalam fase route construction peneliti menggunakan algoritma Clark

and Wright karena mampu meminimumkan rute dengan baik dan waktu

perhitungan yang cepat. Algoritma Clark and Wright adalah algoritma yang memperkenalkan konsep savings, yaitu pembentukan rute baru bergantung pada perhitungan suatu nilai yang disebut nilai savings. Algoritma ini pertama


(32)

22 kali diperkenalkan pada tahun 1964 dan terus dikembangkan untuk penelitian sampai saat ini. Secara umum cara kerja algoritma Clark and Wright adalah pertama-tama membangun tur yang menghubungkan depot kepada pelanggan dengan syarat setiap tur yang terbentuk hanya menghubungkan depot dan satu pelanggan. Kemudian menggabungkan dua pelanggan kedalam satu rute, jika total permintaan tidak melebihi kapasitas kendaraan. Setelah itu hitung nilai

savings dan pilih pelanggan dengan nilai savings terbesar. Ketika

penggabungan dua rute tidak menghasilkan jarak total yang baik, maka algoritma Clark and Wright akan mencoba menukar dua pelanggan dalam dua rute yang berbeda dengan menghancurkan dua ikatan rute dan menyusun kembali dua ikatan rute yang baru. Kemudian hitung nilai savings dari rute yang terbentuk dengan pertukan dua pelanggan, dan seterusnya dipilih nilai savings terbesar sebagai acuan pembentukan rute baru jika total permintaan tidak melebihi kapasitas kendaraan.

Dalam metode Clark and Wright perhitungan nilai savings untuk penggabungan dua pelanggan i dan j ke dalam satu rute, dapat dilihat seperti di bawah ini :

� =�0 +�0 − �

Dimana � dinotasikan sebagai jarak perjalanan dari pelanggan i ke j. Pelanggan ke 0 adalah depot. Berikut ini adalah langkah-langkah matematis pada algoritma Clark and Wright :

Langkah 1 : Hitung nilai savings � =�0 +�0 − � untuk setiap ikatan pelanggan (i,j).


(33)

23 Langkah 2 : Buatlah urutan nilai saving � mulai dari terbesar sampai yang terkecil.

Langkah 3 : Buatlah rute awal dengan memilih nilai � terbesar, jika tidak melanggar kendala. Untuk setiap ≠ . maka rue awal adalah [0, , , 0].

Langkah 4 : Untuk memperluas rute selanjutnya, ada beberapa kasus yang perlu diperhaikan untuk membentuknya, misalakan (i, j) adalah rute awal yang telah terbenuk dan (k, l) adalah rute yang akan dipilih selanjunya. Rute yang akan dipilih selanjutnya adalah dengan nilai savings terbesar namun dengan beberapa kasus, yaitu:

(a) Jika indeks (i, j) tidak sama dengan indeks (k, l) maka rute baru yang terbentuk [0, , , , , 0].

(b) Jika salah satu indeks (i, j) dan (k, l) ada yang sama, maka rute baru terbentuk dengan menyelipkan salah satu indeks yang sama ke dalam rute baru.

(c) Jika indeks (i, j) = (k, l), maka rute baru tidak terbentuk.

Proses perluasan rute terus dilanjutkan sampai jumlah permintaan memenuhi kapasitas kendaraan.

Langkah 5 : Jika semua nilai � terpilih dan ada ∈ �/{0} yang belum tercakup dalam rute pada langkah 4, maka terbentuk rute baru yaitu [0, , 0].

Langkah 6 : Proses perluasan rute dihentikan setelah semua pelanggan tercakup dalam semua rute yang telah terbentuk pada langkah 4 dan langkah


(34)

24 5. Untuk setiap pelanggan yang telah terpilih pada rute sebelumnya maka pelanggan tersebut tidak dapat dipilih kembali untuk rute berikutnya.

3.2.2.2 Distance Improvement

Dalam fase kedua ini perbaikan total jarak pada permasalahan CVRP peneliti menggunakan algoritma ABC dengan alasan karena penelitian mengenai algoritma ini masih cukup sedikit dan juga peneliti mencoba mencari algoritma lain yang mampu menyelesaiakan permasalahan CVRP dengan baik.

Pengembangan algoritma ABC terjadi pada neighbourhood operator yaitu formula untuk mencari sumber makanan baru disekitar sumber makanan lama. Pada algoritma ABC asli yang diperkenalakan oleh Dervis Karaboga neighbourhood operator yang digunakan akan menghasilkan nilai riil sebagai hasil pencarian, hal inilah yang membuat peneliti melakukan pengembangan algoritma ABC agar mampu menyelesaikan permasalahan CVRP. Neighbourood operator akan ditukar dengan metode neighbourhood operator lain agar dapat menghasilkan nilai diskrit sebagai hasil pencarian. Hal ini dilakukan karena pada permasalahan CVRP nilai yang digunakan haruslah diskrit yang mana berkaitan dengan indeks dari suatu matrik. Solusi pada permasalahan CVRP akan berbentuk beberapa matrik yang terisi dari sekumpulan pelanggan menggambarkan rute yang dikunjungi kendaraan.

Peneliti akan mencoba mengganti metode neighbourhood operator (7) pada bab sebelumnya dengan metode neighbourhood operator lain yaitu


(35)

25 neighbourhood operator yang digunakan adalah Random Swaps dan pada tahap Onlooker Bee neighbourhood operator yang digunakan adalah Random Insertions. Untuk langkah-langkah algoritama ABC dalam menyelesaiakan permasalahan CVRP tidak ada yang berubah mengikuti pada bab dua, hanya neighbourhood operator-nya saja yang berubah.

3.2.3 Tahap Pengujian

Dalam tahap ini dilakukan pengujian model yang telah dikembangkan sebelumnya melalui simulasi pemograman, yang kemudian akan diuji pada permasalahan validasi serta dibandingkan dengan metode lain seperti Harmony Search. Pengujian algoritma akan dilakukan dengan menggunakan simulasi pemograman. Sedangkan untuk spesifikasi hardware yang digunakan adalah komputer dengan prosesor AMD A6-3400M APU Quad Core 1.4 Ghz dengan RAM berkapasitas 4 GB. Untuk tahap pengujian pada data uji, peneliti menggunakan data uji dari website Branchandcut. Karena web tersebut memberikan data secara gratis sekaligus memberikan nilai optimal dari hasil penelitian mereka, sehingga nilai optimal tersebut dapat digunakan oleh peneliti sebagai acuan untuk membandingkan nilai optimal yang dihasilkan melalui penelitian ini. Pada penelitian ini peneliti menggunakan 8 data uji dengan jumlah customer yang berbeda-beda.

3.2.4 Tahap Pembahasan dan Kesimpulan

Pada tahap ini, dilakukan analisa hasil yang didapat pada peroses pengujian, apakah hasilnya memuaskan atau tidak dan peneliti akan mencoba


(36)

26 untuk membandingkan hasil dari algoritma ABC dengan algoritma lain. Kemudian akan disimpulkan hasil dari penelitian ini.

3.2.5 Flowchart

Random rute baru kemudian simpan sebagai rute terbaik

End Start

Input Data

Hitung nilai fitness kemudian simpan rute awal sebagai rute terbaik sementara

Perbaikan rute dengan Rand. Swap

memenu hi iterasi

Evaluasi rute; cek kapasitas dan hitung nilai fitness kemudian simpan rute Tentukan nilai

Limit & trial=0

Perbaikan rute dengan Rand. Insert

Simpan rute terbaik sebagai rute optimal global Evaluasi rute; cek kapasitas

dan hitung nilai fitness kemudian simpan rute

memenu hi iterasi

trial > Limit ? Generate rute awal dengan

algoritma Clark and Wright

memenu hi iterasi Output Y N Y N N Y N Y


(37)

27 BAB IV

PEMBAHASAN DAN HASIL

4.1 Data Uji Coba

Data yang digunakan dalam peroses uji coba yang dilakukan pada algoritma ABC dalam menyelesaikan permasalahan CVRP ada tujuh jenis permasalahan berbeda yaitu :

1. Data A-n32-k5 dengan jumlah pelanggan 32 dan 5 kendaraan. 2. Data A-n45-k7 dengan jumlah pelanggan 45 dan 7 kendaraan. 3. Data A-n46-k7 dengan jumlah pelanggan 46 dan 7 kendaraan. 4. Data A-n60-k9 dengan jumlah pelanggan 60 dan 9 kendaraan. 5. Data B-n78-k10 dengan jumlah pelanggan 78 dan 10 kendaraan. 6. Data P-n101-k4 dengan jumlah pelanggan 101 dan 4 kendaraan. 7. Data M-n121-k7 dengan jumlah pelanggan 121 dan 7 kendaraan 8. Data F-n135-k7 dengan jumlah pelanggan 135 dan 7 kendaraan. Data-data diatas akan menjadi masukkan dalam pembentukan rute yang dilakukan dengan menggunakan algoritma ABC.

4.2 Implementasi Algoritma

Pada tahapan ini akan dilakukan penerapan algoritma ABC ke dalam permasalahan CVRP melalui simulasi pemograman. Untuk memudahkan penjelasan dan pemahaman, peneliti menggunakan sebagian dari data A-n32-k5 sebagai data dalam pembahasan. Dari data tersebut diambil sebuah depot


(38)

28 dan sembilan pelanggan pertama dengan kapasitas kendaraan 50. Berikut ini adalah data masukkan yang akan diselesaiakan :

Tabel 4.1 Data Permasalahan

Pelanggan x Y permintaan 1 82 76 0 2 96 44 19 3 50 5 21 4 49 8 6 5 13 7 19 6 29 89 7 7 58 30 12 8 84 39 16 9 14 24 6 10 2 39 16

Data tersebut akan diselesaikan dengan menggunakan algoritma ABC. Dalam Subbab ini nantinya akan dijelaskan mengenai aalur penyelesaian permasalahan tersebut dengan menggunakan algoritma yang diusulkan.

4.2.1 Route Constructions

Sesuai dengan yang dijelaskan pada bab sebelumnya, pada fase ini pembentukan rute awal akan dilakukan menggunakan metode Clark and Wright dan kemudian akan diperbaiki dengan algoritma ABC. Untuk lebih


(39)

29 memudahkan pemahaman berikut ini adalah matrik nilai saving dari data permasalahan yang didapat dari perhitungan formula (1) pada metode Clark and Wright :

Tabel.4.2 Matrik Saving

Saving i j

166,1551 5 9 154,5363 9 10 151,8848 5 10 150,3002 3 4 138,4048 3 5 137,1512 4 5 122,7756 3 9 122,7044 4 9 107,4236 4 10 107,1983 3 10 103,6991 4 7 103,5138 3 7 98,9281 5 7 93,0810 7 9 85,8887 6 10 83,3078 7 10 73,4665 6 9


(40)

30 68,6054 5 6

66,8489 3 8 65,8837 4 8 61,4249 7 8 58,9825 2 8 56,7566 5 8 52,4991 2 3 51,3098 2 4 51,0686 8 9 46,7228 4 6 46,3161 2 7 45,8639 3 6 43,1959 8 10 41,6357 2 5 40,7136 6 7 36,1284 2 9 28,9375 2 10 17,2947 6 8

8,7902 2 6

Berikut ini adalah penjelasan pembentukan rute awal menggunakan algoritma Clark and Wright


(41)

31 1. Berdasarkan pada tabel matriks nilai saving diatas, rute awal dipilih dengan menyisipi pasangan pelanggan yang memiliki nilai saving terbesar yaitu (5,9), maka rute awal yang terbentuk adalah [1 5 9 1]. 2. Kemudian pilih lagi pelanggan yang memiliki nilai saving terbesar

yaitu (9,10), maka sisipi pelanggan 10 ke dalam rute setelah pelanggan 9, jadi rute sementara adalah [1 5 9 10 1].

3. Setelah itu cek apakah permintaan pelanggan pada rute yang terbentuk melebihi kapasitas kendaraan, Jika tidak maka lanjutkan penyisipan rute dengan nilai saving terbesar. Dari tabel matriks nilai saving diatas maka rute yang terbentuk adalah dengan menyisipkan pelanggan 4 kedalam rute sebelum pelanggan 5, maka rute yang terbentuk adalah [1 4 5 9 10 1].

4. Kemudian cek kembali apakah permintaan pelanggan pada rute yang terbentuk melebihi kapasitas kendaraan, Jika iya maka harus dibentuk rute baru. Total permintaan pada rute yang terbentuk di atas adalah 49 dengan kapasitas kendaraan 50, maka rute di atas tidak mungkin lagi untuk disisipi pelanggan baru.

5. Pilih pelanggan baru dengan nilai saving terbesar sebagai pelanggan awal pembentukan rute baru, yaitu pasangan pelanggan yang mungkin adalah (3,7), maka rute baru yang terbentuk adalah [1 3 7 1].

6. Cek apakah permintaan pelanggan pada rute yang terbentuk melebihi kapasitas kendaraan. Jika tidak, maka lanjutkan penyisipan pelanggan pada rute. Pelanggan yang mungkin disisipi adalah pelanggan 8, maka rute yang terbentuk adalah [1 3 7 8 1].


(42)

32 7. Cek kembali kapasitas kendaraan apakah permintaan melebihi kapasitas kendaraan. Karena total permintaan pada rute yang terbentuk adalah 49, maka tidak ada lagi pelanggan yang mungkin untuk disisipi.

8. Buat rute baru dengan memilih pasangan pelanggan dengan nilai saving terbesar. Karena pelanggan yang tersisa adalah (2,6), maka rute terakhir yang terbentuk adalah [1 2 6 1].

9. Berikut ini adalah rute yang terbentuk dengan maksimum tiga kendaraan:

1. [1 4 5 9 10 1] 2. [1 3 7 8 1] 3. [1 2 6 1]


(43)

33 4.2.2 Distance Improvement

Setelah pembentukan rute awal yang dilakukan menggunakan metode Clark and Wright maka dilanjutkan dengan tahap perbaikan rute menggunakan algoritma ABC agar mendapatkan jarak yang minimum. Dalam hal ini digunakan beberapa parameter dan aturan sebagai berikut :

Rute awal yang terbentuk digabungkan dalam satu buah baris matriks dan disimpan sebagai rute terbaik sementara

BestFood = [1 4 5 9 10 1 3 7 8 1 2 6 1 ]

Jumlah kendaraan tidak boleh melebihi dari yang ditentukan Nilai awal trial adalah 0

Langkah 1 Employed Bee

1. Random dua indeks matriks yang berbeda, dalam hal ini terpilih indeks ke 4 dan ke 7.

2. Kemudian lakukan swap atau pertukaran terhadap dua indeks tersebut maka rute [1 4 5 9 10 1 3 7 8 1 2 6 1 ] berubah menjadi [1 4 5 3 10 1 9 7 8 1 2 6 1 ].

3. Cek total permintaan dari setiap rute apakah melebihi kapasitas kendaraan, Jika tidak maka bandingkan jaraknya dengan rute sebelumnya, dan jika ya maka kembali random dua indeks matriks berbeda dan tambah nilai trial dengan 1, dalam hal ini total permintaan dari setiap rute diatas adalah [62 34 26].


(44)

34

Gambar 4.2. Perbaikan Rute

4. Karena kapasitas maksimum kendaraan 50, maka rute diatas tidak mungkin untuk dibentuk dan rute kembali kebentuk awal. Karena percobaan diatas gagal maka nilai trial = 1. Masuk iterasi selanjutnya. 5. Kemudian lakukan random kembali dua indeks matriks, dan kali ini

yang terpilih adalah indeks ke 7 dan ke 8.

6. Lakukan swap indeks dan rute yang terbentuk adalah [1 4 5 9 10 1 7 3 8 1 2 6 1 ] dengan menukar posisi pelanggan 3 dengan pelanggan 7.

7. Cek permintaan setiap rute apakah melebihi kapasitas. Total permintaan dari rute diatas adalah [47 49 26], rute yang terbetuk tidak melebihi kapasitas.

8. Setelah cek permintaan, periksa apakah jarak rute yang terbentuk lebih minimum dari rute sebelumnya. Jika ya, maka rute tersebut dapat


(45)

35 digunakan kemudian disimpan sebagai BestFood dan rubah nilai trial menjadi 0.

9. Karena jarak total rute diatas lebih baik yaitu 569,4584 dan yang sebelumnya 574,8824, maka BestFood = [1 4 5 9 10 1 7 3 8 1 2 6 1 ].

Gambar 4.4. Rute Terbaik Employed Bee

10.Lakukan langkah-langkah diatas sampai memenuhi length dari rute. 11.Nilai trial akan terus ditambah 1 jika percobaan perbaikan rute tidak

menghasilkan rute terbaik dan nilai trial akan dirubah menjadi 0 jika rute terbaik ditemukan.

12.Kemudian hitung nilai probabilitas untuk setiap rute berdasarkan jarak.

Langkah 2 Onlooker Bee

1. Pilih salah satu rute berdasarkan probabilitas, dalam hal ini rute yang terpilih adalah rute pertama yaitu [1 4 5 9 10 1 ].


(46)

36 2. Pilih indeks matriks pada rute pertama secara random, dan yang

terpilih adalah indeks 3 pada rute pertama.

3. Pilih sebarang indeks matriks secara random, kali ini yang terpillih adalah indeks ke 10.

4. Lakukan insert indeks 3 setelah indeks rute ke 10, maka rute yang terbentuk adalah [1 4 9 10 1 7 3 8 1 5 2 6 1 ], pelanggan 5 di subtitusikan setelah indeks ke 10.

Gambar 4.5. Perbaikan Rute

5. Cek apakah total permintaan setiap rute melebihi kapasitas, jika tidak maka lanjutkan ke tahap berikutnya yaitu bandingkan total jarak dengan rute sebelumnya, dan jika iya maka kembali ke tahap awal langkah 2 dan nilai trial ditambah 1.


(47)

37 6. Total permintaan dari rute diatas adalah [28 49 45], karena tidak melebihi kapasitas kendaraan, maka rute tersebut dibandingkan jaraknya dengan rute sebelumnya.

7. Karena total jarak rute sebelumnya lebih baik yaitu 569,45584 dan rute perbaiakan 708,4247, maka rute perbaikan tidak digunakan dan nilai trial ditambah 1. BestFood tetap tidak berubah

8. Kemudian kembali ketahap awal Onlooker Bee, ulangi tahapan diatas sampai memenuhi length rute.

9. Sama seperti langkah 1 nilai trial akan terus ditambah 1 jika percobaan perbaikan rute gagal dan nilai trial dirubah ke 0 jika rute terbaik ditemukan.

10.Kemudian simpan BestFood kedalam GlobalFood.

11.Setelah itu periksa apakah nilai trial melebihi limit, jika tidak maka kembali ke langkah 1 employed bee, dan jika iya, maka akan masuk kelangkah 3 scout bee.

Langkah 3 Scout Bee

1. Ketika nilai trial melebihi limit yang ditentukan maka random rute baru dan jadikan rute baru tersebut sebagai BestFood. Hal ini dilakukan agar algoritma lebah tidak terjebak pada nilai minimum lokal.

2. Rubah nilai trial sama dengan 0 dan kembali ke langkah 1 sampai memenuhi iterai yang ditentukan.


(48)

38 Dari percobaan di atas menggunakan simulasi pemograman dengan maksimal iterasi 100 dan limit 10, didapat rute optimal dengan jarak minimum 486,8920 dan rute yang terbentuk adalah [1 6 10 9 5 1 3 4 7 1 2 8 1].

Gambar 4.6. Solusi Optimal.

4.3 Hasil Eksperimen

Berikut ini merupakan data hasil eksperimen algoritma ABC untuk permasalahan CVRP. Dalam hasil ini hanya akan ditampilkan mengenai jumlah kendaraan yang diugnakan serta total jarak yang ditempuh oleh suatu solusi. Waktu komputasi tidak diperbandingkan mengingat ada perbedaan terkait spesifikasi komputer terhadap refrensi pembanding. Data yang digunakan serta solusi optimal untuk perbandingan berasal dari website branchandcut.org.


(49)

39 Tabel 4.3 Hasil Eksperimen

Data Pelanggan

Artificial Bee Colony Branch and Cut Kendaraan Total Jarak Kendaraan Total Jarak A-n32-k5 32 5 416,4145 5 784 A-n45-k7 45 7 761,7256 7 914 A-n46-k7 46 7 681,2391 7 1146 A-n60-k9 60 9 1046,5 9 1354 B-n78-k10 78 10 964,3149 10 1221 P-n101-k4 101 4 973,108 4 681 M-n121-k7 121 7 1087,2 7 1034

F-n135-k7 135 7 1710,6 7 1162

Dari 8 data permasalahan berbeda yang diselesaikan dengan algoritma ABC, Khususnya untuk data A-n32-k5, A-n45-k7, An46-k7, A-n60-k9, dan B-n78-k10 menghasilkan solusi yang lebih baik. Hal ini menunjukkan bahwa untuk permasalahan dengan pelanggan yang berukuran sedang algoritma ABC mampu menyelesaikan permasalahan dengan lebih baik karena pada algoritma ABC terdapat sistem limit yaitu rute terbaik akan dibuang jika percobaan perbaikan pada rute tersebut telah mencapai limit yang ditentukan, hal ini dilakukan agar ABC tidak terjebak pada solusi optimal lokal. Dari 8 permasalahan hanya 3 permasalahan dimana algoritma ABC tidak lebih baik dari algoritma Branch and Cut yaitu untuk permasalahan diatas 100 pelanggan. Hal ini dikarenakan cara perbaikan rute oleh algoritma ABC


(50)

40 menggunakan fungsi random, dimana pencarian akan semakin sulit dengan bertambahnya pelanggan.

Dalam menyelesaiakan permasalahan-permasalahan diatas tidak semata-mata hanya diselesaiakn dengan menggunakan algoritma ABC melainkan juga menyertakan algoritma Clark and Wright sebagai pembentuk rute awal. Perbaikan rute yang dilakukan oleh algoritma ABC diatas terlihat mampu menghasilkan solusi yang lebih baik dari algoritma Branch and Cut pada permasalahan tertentu. Namun untuk mendapatkan solusi optimal algoritma ABC membutuhkan percobaan beberapa kali sampai menemukan solusi terbaik, hal ini karena pencarian solusi pada algoritma ABC menggunakan fungi random. Selain itu penetuan limit juga mempengaruhi pembentukan solusi optimal.

Dalam implementasinya, ketika perbaikan rute dilakukan pada tahap Employed Bee dan Onlooker Bee perubahan akan selalu terjadi pada rute. Dengan perubahan yang terjadi, maka konsekuensinya solusi secara keseluruhan juga berubah. Dengan batasan yang ketat, khusunya jumlah kendaraan dan total jarak yang minimum, perubahan solusi tidak selalu bisa diterima. Pada kondisi ini solusi akan kembali pada kondisi semula.

Selain itu ketika nilai trial telah melebihi limit, solusi terbaik akan ditinggalkan dan random rute baru secara keseluruhan dilakukan. Namun, solusi terbaik sebelum ditinggalkan akan disimpan terlebih dahulu kedalam memori, jadi solusi terbaik tetap tersimpan dan rute random baru akan dilakukan perbaikan kembali untuk mendapatkan solusi terbaik yang lebih baik dari sebelumnya.


(51)

41 BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari hasil simulasi terhadap data n32-k5, n45-k7, n46-k7, A-n60-k9, B-n78-k10, P-n101-k4, M-n121-k7, dan F-n135-k7 menggunakan algoritma ABC untuk menyelesaiakan permasalahan CVRP dapat disimpulkan sebagai berikut :

1. Metode optimasi ABC merupakan algoritma metaheuristik yang dapat menjadi salah satu alternatif dan mampu diterapkan untuk menyelesaikan permasalahan CVRP dengan baik.

2. Percobaan yang dilakukan untuk menyelesaikan data permasalahan untuk pelanggan kurang dari 100, algoritma ABC mampu menghasilkan solusi yang lebih baik dari solusi algoritma Branch and Cut.

3. Sedangkan untuk data permasalahan yang memiliki pelanggan lebih dari 100 algoritma ABC mampu menyelesaikannya namun tidak lebih baik dari algoritma pembanding.


(52)

42 5.2 Saran

Berdasarkan evaluasi yang dilakukan terhadap performansi algoritma ABC, ada beberapa saran yang perlu dipertimbangkan dalam pengembangan tugas akhir ini, antara lain sebagai berikut :

1. Algoritma ABC merupakan salah satu alternatif dalam penyelesaian CVRP, diharapkan dapat dikembangkan algoritma lainnya atau penggabungan ABC dengan algoritma lain.

2. Algoritma yang diterapkan ini masih berupa simulasi, diharapkan nantinya dapat diterapkan lebih lanjut kedalam permasalahan nyata dengan penggabungan pada Sistem Informasi Geografis

3. Untuk permasalahan Vehicle Routing Problem, pengembangannya sangatlah luas. Diharapkan untuk penelitian lebih lanjut algoritma ABC dapat diterpakan pada permasalahan Vehicle Routing Problem jelanis lain.


(53)

43 DAFTAR PUSTAKA

[1] Munir, R.2012. Matematika Dsikrit. Bandung: Informatika.

[2] Toth, P & Vigo, D. 2002. The Vehicle Routing Problem .Italy: SIAM.

[3] WY. Szeto,Y. Wu, SC. Ho. An artificial bee colony algorithm for the capacited. vehicle routing problem. European Journal Of Operation Research, 2011, v.215n. 1, p. 126-135.

[4] Eiben, E., Smith, J. E, Introduction to evolutionary computing, Natural computing series, Springer, 300p.,2003.

[5] Karaboga, D. Artificial Bee Colony Algorithm. Scholarpedia 2010,5,6915.

Availableonline: http://www.scholarpedia.org/article/Artificial_bee_colony_algorithm/ di akses tanggal 13 Januari 2014.

[6] Pathak, N., Tiwari S. P. Traveling salesman problem using bee colony with spv. International Journal Of Soft Computing and Engineering, 2231-2307, Volume-2, Issue-3, July 2012.

[7] Bhagade, A. S., Puranik P. V. Artificial bee colony (ABC) algorithm for vehicle rpouting problem. International Journal of Soft Computing and Engineering, 2231-2307, Volume-2, Issue-2, May 2012.

[8] Rera, Gladiez Florista. 2010. “Penerapan Metode Cross Entropy Dalam Penyelesaian

Capacited Vehicle Routing Problem (Studi Kasus : Distribusi Koran Jawa Pos)”. Jurusan


(54)

44 [9] Winston WL. 2004. Operation Reserch Applications and Algorithms. Ed ke-4.

Belmont, California : Brooks/Cole Thompson Learning.

[10] Caric T, Galic A, Fosin J, Gold H, Reinholz. 2008. A Modelling and Optimization Framework for Real-Word Vehicle Routing Problem. Vehicle Routing Problem : 142, I-Tech, Vienna, Austria.

[11] S., Joseph Christian. 2011 “Analisis Sistem Pengangkutan Sampah Kota Makassar

Dengan Metode Penyelesaian Vehicle Routing Problem”. Jurusan Mesin. Universitas Hasanuddin. Makassar.

[12] Vehicle routing data sets, 2003, URL http://www.branchandcut.org/VRP/data

diakses tanggal 2 Desember 2013.

[13] Larson, Richard C., Odoni, Amedeo R. 1981. Urban Operation Reserch. Chapter 6, Section 6-4-12. Massachusets: Prentice-Hall.

[14] Nismah. 2006. Evaluasi Perilaku Antara Lebah Pekerja Apis Cerana Javan FABR Untuk Menginformasikan Sumber Makanan. Indonesia : Institut Teknologi Bandung.


(55)

45 LAMPIRAN

Algoritma Clark and Saving

function [dist,cluster]=savings(xy,g,c,K) N=length(xy);

a=meshgrid(1:N);

dist=reshape(sqrt(sum((xy(a,:)-xy(a',:)).^2,2)),N,N); S=zeros;a=[];

%saving

for i=1:N-2 for j=i:N-2

S(i,j)=dist(1,i+1)+dist(1,j+2)-dist(i+1,j+2); if S(i,j)==0

S(i,j)=-1; end end end %matrik list L=zeros(length(find(S)),3);

L_temp=sort(reshape(S,numel(S),1),1,'descend'); L(:,1)=L_temp(find(L_temp),:);

[M,O]=size(L); s0=0;A=[];B=[];

for i=1:M

if s0 ~=L(i,1)

[a,b]=find(S==L(i,1)); else a=[]; b=[];

end s0=L(i,1); A=[A;a]; B=[B;b]; end L(:,2)=A+ones(M,1);L(:,3)=B+2*ones(M,1); %merge operation cluster=zeros(K,N-1);

for i=1:M if i==1

cluster(1,1:2)=L(1,2:3); else

x=cluster(find(ismember(cluster,L(i,2:3)))); w=length(x);

if x>=0 & w==1

[m,n]=find(cluster==x);

Q_temp=cluster(m,[find(cluster(m,:)~=0)]); Q=[Q_temp,L(i,find(L(i,2:3)~=x)+1)];

new=Q-1;

if sum(g(new))<=c


(56)

46

end

elseif w>=1 continue

else

if max(find(cluster(:,1)))<K

cluster(max(find(cluster(:,1)))+1,1:2)=L(i,2:3); else i=1; end end end end for i=1:K

cluster(i,find(cluster(i,:)))=sort(cluster(i,find(cluster(i, :))));

if i==1

t=length(find(cluster(i,:))); else

if t<length(find(cluster(i,:))); t=length(find(cluster(i,:))); end end end %o=find(cluster==0); %[u,v]=size(cluster); %b=o(1)-1; %if u==o(1) %cluster=cluster(1:b,1:t); %else cluster=cluster(:,1:t); %end %cluster=cluster(1:b,1:t); rute=zeros; end

Algoritma Artificial Bee Colony

load cord.txt

load dem.txt

xy=[cord(1:10,2) cord(1:10,3)]; g=dem(1:10); c=50; K=3; [d,cluster]=savings(xy,g,c,K); dist=d;

%%%%%%%%%%%%Artificial Bee Colony%%%%%%%%%%%%%%% rute=rubahmatrix(cluster);

%rute=cekcapacities(rute,g,c);%ini baru dirubah 15-12-2013 FoodNumber=length(rute);

maxcycle=1000; limit=128;


(57)

47

Food=rute;

Fitness=sum(calculateFitness(Food,dist) ); BestFood=Food;

insert = @(a, x, n)cat(2, x(1:n), a, x(n+1:end)); GlobalFood=BestFood;

GlobalJarak=sum(eval_dist(GlobalFood,dist)); Batas=30;coba=0;

%%%%%%%%%%Employe Bee Phase%%%%%%%%%% iter=1;

while(iter<maxcycle)

for i= 1:FoodNumber Sol=Food;

adx1=fix(rand*(FoodNumber))+1;adx2=fix(rand*(FoodNumber))+1;

while(Sol(adx1)==Sol(adx2) | Sol(adx1)== 1 | Sol(adx2)== 1) adx1=fix(rand*(FoodNumber))+1;adx2=fix(rand*(FoodNumber))+1; end Sol(adx1)=Food(adx2); Sol(adx2)=Food(adx1); q=capacities(Sol,g);

if max(q)<=c

FitnessSol=sum(calculateFitness(Sol,dist)); if FitnessSol>Fitness

Food=Sol; Fitness=FitnessSol; BestFood=Food; trial(i)=0; else trial(i)=trial(i)+1; end else trial(i)= trial(i)+1; end end subFitness=calculateFitness(Food,dist); %Prob=(0.9*(min(subFitness)./subFitness))+0.1; Prob=(0.9*(subFitness./max(subFitness)))+0.1; %%%%%%%%%%%%%%%%%Onlooker Bee Phase%%%%%%%%%%%%%% i=1;

t=0;

while(t<FoodNumber) r=rand;

if (r<Prob(i)) t=t+1; Sol=Food;

d=find(Sol==1);


(58)

48 if(idx1==1) idx1=idx1+1; end ignore=Sol(idx1); Sol(idx1)=[]; idx2=randi([1,length(Sol)-1]); Sol=insert(ignore,Sol,idx2); q=capacities(Sol,g);

if max(q)<=c

FitnessSol=sum(calculateFitness(Sol,dist)); if FitnessSol>Fitness

Food=Sol; Fitness=FitnessSol; BestFood=Food; trial(t)=0; else trial(t)=trial(t)+1; end else trial(t)= trial(t)+1; end i=i+1;

if (i==length(Prob)) i=1; end end end Jarak=sum(eval_dist(BestFood,dist));

if Jarak<GlobalJarak GlobalFood=BestFood; GlobalFitness=Fitness; coba=0; else coba=coba+1; end %ind=find(trial==max(trial)); %ind=ind(end);

if (max(trial)>limit)

dummy=randperm(length(g)); d=dummy==1;

dummy(d)=[]; nrute=[1 1];

while ~isempty(dummy)

idx=randi([1,length(dummy)]); i=length(nrute);

nrute=insert(dummy(idx),nrute,i-1); q=capacities(nrute,g);


(59)

49

if max(q)>c nrute(i)=1; else dummy(idx)=[]; end end nFitness=sum(calculateFitness(nrute,dist)); Food=nrute; Fitness=nFitness; BestFood=Food; trial=zeros(1,length(Food)); end FoodNumber=length(Food); if (coba<batas) iter=iter+1; else iter=maxcycle; end total_jarak=sum(eval_dist(BestFood,dist)); GlobalJarak=sum(eval_dist(GlobalFood,dist)); disp(GlobalFood); disp(total_jarak); disp(GlobalJarak); disp(iter); end figure

for i=1:length(xy)

plot(xy(GlobalFood(i),1),xy(GlobalFodd(i),2), '-','color','b');

plot(xy(i,1), xy(i,2),

's','MarkerFaceColor','g','MarkerEdgeColor','k');

text(xy(i,1)+1.5,xy(i,2),num2str(i,'%d'),'FontSize',12) hold on;


(1)

44

[9] Winston WL. 2004. Operation Reserch Applications and Algorithms. Ed ke-4.

Belmont, California : Brooks/Cole Thompson Learning.

[10] Caric T, Galic A, Fosin J, Gold H, Reinholz. 2008. A Modelling and Optimization

Framework for Real-Word Vehicle Routing Problem. Vehicle Routing Problem : 142,

I-Tech, Vienna, Austria.

[11]

S., Joseph Christian. 2011 “Analisis Sistem Pengangkutan Sampah Kota Makassar

Dengan Metode Penyelesaian Vehicle Routing Problem”. Jurusan Mesin. Universi

tas

Hasanuddin. Makassar.

[12] Vehicle routing data sets, 2003, URL

http://www.branchandcut.org/VRP/data

diakses tanggal 2 Desember 2013.

[13] Larson, Richard C., Odoni, Amedeo R. 1981.

Urban Operation Reserch

. Chapter 6,

Section 6-4-12. Massachusets: Prentice-Hall.

[14] Nismah. 2006. Evaluasi Perilaku Antara Lebah Pekerja Apis Cerana Javan FABR

Untuk Menginformasikan Sumber Makanan. Indonesia : Institut Teknologi Bandung.


(2)

45

LAMPIRAN

Algoritma Clark and Saving

function [dist,cluster]=savings(xy,g,c,K) N=length(xy);

a=meshgrid(1:N);

dist=reshape(sqrt(sum((xy(a,:)-xy(a',:)).^2,2)),N,N); S=zeros;a=[];

%saving for i=1:N-2 for j=i:N-2

S(i,j)=dist(1,i+1)+dist(1,j+2)-dist(i+1,j+2); if S(i,j)==0

S(i,j)=-1; end

end end

%matrik list

L=zeros(length(find(S)),3);

L_temp=sort(reshape(S,numel(S),1),1,'descend'); L(:,1)=L_temp(find(L_temp),:);

[M,O]=size(L); s0=0;A=[];B=[]; for i=1:M

if s0 ~=L(i,1)

[a,b]=find(S==L(i,1)); else a=[]; b=[];

end

s0=L(i,1); A=[A;a]; B=[B;b]; end

L(:,2)=A+ones(M,1);L(:,3)=B+2*ones(M,1); %merge operation

cluster=zeros(K,N-1); for i=1:M

if i==1

cluster(1,1:2)=L(1,2:3); else

x=cluster(find(ismember(cluster,L(i,2:3)))); w=length(x);

if x>=0 & w==1

[m,n]=find(cluster==x);

Q_temp=cluster(m,[find(cluster(m,:)~=0)]); Q=[Q_temp,L(i,find(L(i,2:3)~=x)+1)];

new=Q-1;

if sum(g(new))<=c


(3)

46 end

elseif w>=1

continue

else

if max(find(cluster(:,1)))<K

cluster(max(find(cluster(:,1)))+1,1:2)=L(i,2:3); else

i=1; end end end end for i=1:K

cluster(i,find(cluster(i,:)))=sort(cluster(i,find(cluster(i, :))));

if i==1

t=length(find(cluster(i,:))); else

if t<length(find(cluster(i,:))); t=length(find(cluster(i,:))); end

end end

%o=find(cluster==0); %[u,v]=size(cluster); %b=o(1)-1;

%if u==o(1)

%cluster=cluster(1:b,1:t); %else

cluster=cluster(:,1:t); %end

%cluster=cluster(1:b,1:t); rute=zeros;

end

Algoritma Artificial Bee Colony

load cord.txt

load dem.txt

xy=[cord(1:10,2) cord(1:10,3)]; g=dem(1:10);

c=50; K=3;

[d,cluster]=savings(xy,g,c,K); dist=d;

%%%%%%%%%%%%Artificial Bee Colony%%%%%%%%%%%%%%% rute=rubahmatrix(cluster);

%rute=cekcapacities(rute,g,c);%ini baru dirubah 15-12-2013 FoodNumber=length(rute);

maxcycle=1000; limit=128;


(4)

47 Food=rute;

Fitness=sum(calculateFitness(Food,dist) ); BestFood=Food;

insert = @(a, x, n)cat(2, x(1:n), a, x(n+1:end)); GlobalFood=BestFood;

GlobalJarak=sum(eval_dist(GlobalFood,dist)); Batas=30;coba=0;

%%%%%%%%%%Employe Bee Phase%%%%%%%%%% iter=1;

while(iter<maxcycle)

for i= 1:FoodNumber

Sol=Food;

adx1=fix(rand*(FoodNumber))+1;adx2=fix(rand*(FoodNumber))+1; while(Sol(adx1)==Sol(adx2) | Sol(adx1)== 1 | Sol(adx2)== 1)

adx1=fix(rand*(FoodNumber))+1;adx2=fix(rand*(FoodNumber))+1; end

Sol(adx1)=Food(adx2); Sol(adx2)=Food(adx1); q=capacities(Sol,g); if max(q)<=c

FitnessSol=sum(calculateFitness(Sol,dist)); if FitnessSol>Fitness

Food=Sol;

Fitness=FitnessSol; BestFood=Food; trial(i)=0; else

trial(i)=trial(i)+1; end

else

trial(i)= trial(i)+1; end

end

subFitness=calculateFitness(Food,dist);

%Prob=(0.9*(min(subFitness)./subFitness))+0.1; Prob=(0.9*(subFitness./max(subFitness)))+0.1; %%%%%%%%%%%%%%%%%Onlooker Bee Phase%%%%%%%%%%%%%% i=1;

t=0;

while(t<FoodNumber) r=rand;

if (r<Prob(i)) t=t+1; Sol=Food;

d=find(Sol==1);


(5)

48 if(idx1==1)

idx1=idx1+1; end

ignore=Sol(idx1); Sol(idx1)=[];

idx2=randi([1,length(Sol)-1]); Sol=insert(ignore,Sol,idx2); q=capacities(Sol,g);

if max(q)<=c

FitnessSol=sum(calculateFitness(Sol,dist)); if FitnessSol>Fitness

Food=Sol;

Fitness=FitnessSol; BestFood=Food; trial(t)=0; else

trial(t)=trial(t)+1; end

else

trial(t)= trial(t)+1; end

i=i+1;

if (i==length(Prob)) i=1;

end end end

Jarak=sum(eval_dist(BestFood,dist)); if Jarak<GlobalJarak

GlobalFood=BestFood; GlobalFitness=Fitness; coba=0;

else

coba=coba+1; end

%ind=find(trial==max(trial)); %ind=ind(end);

if (max(trial)>limit)

dummy=randperm(length(g)); d=dummy==1;

dummy(d)=[]; nrute=[1 1];

while ~isempty(dummy)

idx=randi([1,length(dummy)]); i=length(nrute);

nrute=insert(dummy(idx),nrute,i-1); q=capacities(nrute,g);


(6)

49 if max(q)>c

nrute(i)=1; else

dummy(idx)=[]; end

end

nFitness=sum(calculateFitness(nrute,dist)); Food=nrute;

Fitness=nFitness; BestFood=Food;

trial=zeros(1,length(Food));

end

FoodNumber=length(Food); if (coba<batas)

iter=iter+1; else

iter=maxcycle;

end

total_jarak=sum(eval_dist(BestFood,dist)); GlobalJarak=sum(eval_dist(GlobalFood,dist)); disp(GlobalFood);

disp(total_jarak); disp(GlobalJarak); disp(iter);

end figure

for i=1:length(xy)

plot(xy(GlobalFood(i),1),xy(GlobalFodd(i),2), '-','color','b');

plot(xy(i,1), xy(i,2),

's','MarkerFaceColor','g','MarkerEdgeColor','k');

text(xy(i,1)+1.5,xy(i,2),num2str(i,'%d'),'FontSize',12) hold on;