ALGORITMA
IMPROVED ANT COLONY OPTIMIZATION
(IACO) UNTUK MENYELESAIKAN
VEHICLE ROUTING
PROBLEM
SKRIPSI
MUHAMMAD HARUN AR ROSYID
PROGRAM STUDI S-1 MATEMATIKA
DEPARTEMEN MATEMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
ALGORITMA
IMPROVED ANT COLONY OPTIMIZATION
(IACO)
UNTUK MENYELESAIKAN
VEHICLE ROUTING PROBLEM
SKRIPSI
Sebagai Salah Satu Syarat untuk Memperoleh
Gelar Sarjana Sains Bidang Matematika
Pada Fakultas Sains dan Teknologi
Universitas Airlangga
Disetujui Oleh :
Pembimbing I
Dr. Herry Suprajitno, M.Si
NIP. 19680404 199403 1 020
Pembimbing II
LEMBAR PENGESAHAN NASKAH SKRIPSI
Judul
: Algoritma
Improved Ant Colony Optimization
(IACO)
untuk Menyelesaikan
Vehicle Routing Problem
Penyusun
: Muhammad Harun Ar Rosyid
Nomor Induk : 080810651
Tanggal Ujian : 10 Agustus 2012
Disetujui Oleh :
Pembimbing I
Dr. Herry Suprajitno, M.Si
NIP. 19680404 199403 1 020
Pembimbing II
Dr. Miswanto, M.Si
NIP. 19680204 199303 1 002
Mengetahui :
Ketua Program Studi S-1 Matematika
Departemen Matematika
Fakultas Sains dan Teknologi
Universitas Airlangga
PEDOMAN PENGGUNAAN SKRIPSI
KATA PENGANTAR
Dengan menyebut asma Allah SWT yang Maha Pengasih dan Maha
Penyayang. Segala puji syukur tercurahkan kepada Allah SWT sumber inspirasi
kehidupan yang telah melimpahkan rahmat dan karunia-Nya sehingga dapat
terselesaikannya penulisan skripsi ini. Shalawat serta salam semoga senantiasa
tercurahkan kepada junjungan kita, Nabi Muhammad SAW, pemimpin sekaligus
sebaik-baiknya suri tauladan bagi kehidupan umat manusia, sehingga penulis
dapat menyelesaikan skripsi dengan judul
“Algoritma
Improved Ant Colony
Optimization
(IACO) untuk Menyelesaikan
Vehicle Routing Problem”
.
Ucapan terima kasih disampaikan kepada:
1.
Kedua orang tuaku Achmad Dahuri dan Siti Arliyah yang selalu memberikan
kasih dan sayang terbaiknya untukku dengan setulus hati. Skripsi ini
merupakan salah satu bentuk hormatku kepada orang tuaku.
2.
Kakakku Nur Emey Kurniati dan adikku Nur Rohma Zamzami yang selalu
memberikan inspirasi dalam kehidupanku.
3.
Dr. Miswanto, M.Si selaku Kepala Departemen Matematika Fakultas Sains
dan Teknologi Universitas Airlangga sekaligus sebagai dosen pembimbing II
yang telah memberikan banyak masukan, waktu, pikiran, dan semangat.
4.
Dr. Herry Suprajitno, M.Si selaku dosen pembimbing I yang telah memberikan
dan pengetahuan yang tidak ternilai harganya baik dalam bidang akademik
maupun pengetahuan agama.
5.
Auli Damayanti, S.Si, M.Si dan Dra. Utami Dyah Purwati, M.Si selaku dosen
penguji I dan penguji II yang telah memberikan banyak masukan berupa kritikan
dan saran yang sangat bermanfaat demi perbaikan skripsi ini.
6.
Dra. Inna Kuswandari, M.Si selaku dosen wali selama menjadi mahasiswa
Fakultas Sains dan Teknologi Universitas Airlangga yang telah banyak
memberikan arahan dan saran demi kesuksesan menjadi mahasiswa.
7.
Sahabat terhebatku yang selalu menginspirasi dan memberikan motivasi
dalam bentuk apapun, I Putu Andeandika “
thanks a lot for all of your support
and your help brother”
, dan untuk sohib sekamar kos 3 tahunku, Abie Jaydin
“
thanks a lot for your help and you give me many inspiration brother”
.
8.
Teman – teman seperjuangan, Safik, Rijal, Zuda, Anas, Adis, Yani, Andry,
Atok, dan Bimbim, kalianlah yang memberikan pengalaman hebat selama kuliah
serta sahabat-sahabatku semua mahasiswa Matematika FSainTek Universitas
Airlangga angkatan 2008 atas dukungan dan kebersamaannya selama ini yang
telah menjadi
“keluarga baruku”, I wanna say, “YOU ARE GREAT
GUYS…!!!”
.
9.
Seorang perempuan berkerudung yang terlihat sangat anggun ketika
mengenakan
style
kerudung “Paris” nya, Vindya Ian Padmasari, S.T, “
thanks so
much for your support and I hope u will be better woman with many story about
your success”.
11.
Serta semua pihak yang tidak dapat disebutkan, yang telah membantu
terselesaikannya skripsi ini.
Penulis menyadari bahwa skripsi ini masih banyak terdapat kekurangan. Oleh
karena itu, penulis mengharapkan kritik dan saran yang membangun agar skripsi ini
dapat lebih baik lagi.
Surabaya, Juli 2012
Penyusun
Muhammad Harun Ar Rosyid, 2012. Algoritma
Improved Ant Colony
Optimization
(IACO) untuk Menyelesaikan
Vehicle Routing Problem
. Skripsi
ini di bawah bimbingan Dr. Herry Suprajitno, M.Si, dan Dr. Miswanto, M.Si.
Departemen Matematika. Fakultas Sains dan Teknologi. Universitas Airlangga.
ABSTRAK
Vehicle Routing Problem
(VRP) merupakan salah satu masalah transportasi yang
dapat digambarkan sebagai sekumpulan kendaraan
yang memulai dan mengakhiri
perjalanannya untuk melayani sejumlah
customer
pada pusat fasilitas yang
dinamakan depot, dengan setiap
customer
mempunyai
demand
atau permintaan
dan setiap kendaraan memiliki kapasitas kendaraan yang sama dan total jarak
tempuh maksimum kendaraan. Penulisan skripsi ini bertujuan untuk menentukan
rute yang optimal untuk sejumlah kendaraan sebagai solusi dari permasalahan
vehicle routing problem
dengan menggunakan algoritma
Improved Ant Colony
Optimization
(IACO). Algoritma IACO merupakan
ant colony optimization
(algoritma semut) yang ditambah dengan proses mutasi dan
local search
untuk
memperbaiki solusi. Algoritma
ant colony optimization
merupakan algoritma yang
meniru perilaku semut dalam pencarian makanan dengan mencari rute perjalanan
terpendek dimulai dari sarang hingga ke tempat makanan. Algoritma IACO
mencakup lima proses dasar, yaitu proses inisialisasi parameter, konstruksi rute,
proses mutasi,
local search
, dan proses
update pheromone
. Proses mutasi yang
digunakan adalah
reciprocal exchange
, dan proses
local search
yang digunakan
adalah
local search
2-opt
exchange.
Data dari beberapa permasalahan
vehicle
routing problem
yang mempunyai variasi pada banyaknya
customer
, kapasitas
kendaraan, dan total jarak tempuh maksimum kendaraan diimplementasikan pada
algoritma IACO. Program dibuat dengan bahasa pemrograman Java dan
menggunakan
software
NetBeans IDE 7.0 untuk menerapkan algoritma IACO
dalam pencarian solusinya. Berdasarkan perbandingan hasil untuk nilai parameter
yang berbeda, semakin kecil nilai
alpha
,
rho
, dan konstanta Q, serta semakin besar
nilai
beta
menghasilkan solusi yang lebih baik.
Muhammad Harun Ar Rosyid, 2012.
Improved Ant Colony Optimization (IACO)
Algorithm to solve Vehicle Routing Problem
. This
Skripsi
is supervised by
Dr. Herry Suprajitno, M.Si, and Dr. Miswanto, M.Si. Mathematics Department,
Faculty of Science and Technology, Airlangga University.
ABSTRACT
Vehicle routing problem (VRP) is one of the transportation problem that can be
described as a set of vehicles that start and end its journey to serve a customer at a
facility called a depot, with every customer has a demand or request, and all of the
vehicle has same capacity and maximum total distance of vehicle. The thesis aims
to determine the optimal route for a number of vehicles as the solution of the
problem of vehicle routing problem using Improved Ant Colony Optimization
(IACO) algorithm. IACO algorithm is ant colony optimization (ant algorithm)
which coupled with the process of mutation and local search to improve solutions.
Ant colony optimization algorithm is an algorithm that mimics the behavior of
ants in search of food by finding the shortest route starts from the nest to the food
place. IACO algorithm includes five basic processes, namely the process of
initialization parameters, construction of the route, the process of mutation, local
search, and update the pheromone. Mutation process used is a reciprocal
exchange, and the local search process used is a local search 2-opt exchange. Data
from some of the problems of vehicle routing problem that has many variations on
the customer, vehicle capacity, and maximum total distance of vehicle
implemented on IACO. Programs created with the Java programming language
and use the NetBeans IDE 7.0 software for implementing the solution in the search
algorithm IACO. Based on the comparison of results for different parameter
values, the smaller the value of
alpha, rho
, and the constant Q, and the greater the
value of
beta
produces a better solution.
DAFTAR ISI
Halaman
LEMBAR JUDUL ………....…… ...i
LEMBAR PERNYATAAN ....……….……….. ...ii
LEMBAR PENGESAHAN ………... ...iii
LEMBAR PEDOMAN PENGGUNAAN SKRIPSI …….……….. ...iv
KATA PENGANTAR ...v
ABSTRAK ...viii
ABSTRACK ...ix
DAFTAR ISI ...x
DAFTAR GAMBAR ...xii
DAFTAR TABEL ...xiii
BAB I PENDAHULUAN ...1
1.1 Latar Belakang ...1
1.2 Rumusan Masalah ...3
1.3 Tujuan ...3
1.4 Manfaat ...3
BAB II TINJAUAN PUSTAKA ...5
2.1
Graph
...5
2.2
Vehicle Routing Problem
...6
2.2.1 Jenis-jenis
Vehicle Routing Problem
...9
2.3 Algoritma ...12
2.4 Optimisasi ...13
2.5 Algoritma
Ant Colony Optimization
(ACO) ...13
2.6 Algoritma
Improved Ant Colony Optimization
(IACO) ...16
2.6.1 Konstruksi Rute ...14
2.6.2 Mutasi ...17
2.6.3
Local Search
...19
2.6.3.1 Metode 2-Opt ...19
2.6.4
Update Pheromone
...21
BAB III METODE PENELITIAN...22
BAB IV PEMBAHASAN ...27
4.1 Prosedur Algoritma IACO ...27
4.1.1 Prosedur Inisialisasi ...27
4.1.2 Prosedur Konstruksi Rute ...29
4.1.3 Prosedur Cek nilai_
random ≤
Pm(t)
...33
4.1.4 Prosedur Mutasi ...35
4.1.5 Prosedur
Local search
...35
4.1.6 Prosedur
Update pheromone
...36
4.2 Data ...37
4.3 Penyelesaian Manual terhadap Permasalahan P01 ...39
4.4 Implementasi Program pada Beberapa Permasalahan ...44
4.4.1 Permasalahan P01 ...44
4.4.2 Permasalahan P02 ...45
4.4.4 Permasalahan P04 ...49
4.4.5 Permasalahan P05 ...50
4.4.6 Permasalahan P06 ...53
4.4.7 Permasalahan P07 ...54
4.4.8 Permasalahan P08 ...56
4.4.9 Permasalahan P09 ...58
4.4.10 Permasalahan P10 ...61
4.4.11 Permasalahan P11 ...65
4.4.12 Permasalahan P12 ...66
4.4.13 Permasalahan P13 ...68
4.4.14 Permasalahan P14 ...70
4.5 Perbandingan Hasil untuk Nilai Parameter yang Berbeda ...72
BAB V KESIMPULAN DAN SARAN ...75
DAFTAR GAMBAR
Gambar
Judul
Halaman
2.1
Contoh penyelesaian VRP dengan 3 rute
Percobaan yang dilakukan Goss
et al.
(1989)
Contoh metode 2-opt
Flowchart
dari algoritma IACO
Prosedur algoritma IACO
Prosedur cek nilai_
random
≤
Pm(t)
DAFTAR TABEL
Tabel
Judul
Halaman
2.1
2.2
4.1
4.2
4.3
4.4
4.5
Parameter yang digunakan pada model matematis dasar
VRP
Indeks yang digunakan pada model matematis VRP
Permasalahan VRP (Beasley, 1990)
Total jarak semua rute dengan pembanding
alpha
Total jarak semua rute dengan pembanding
beta
Total jarak semua rute dengan pembanding
rho
Total jarak semua rute dengan pembanding konstanta Q
9
DAFTAR LAMPIRAN
No.
Judul Lampiran
1.
Data Permasalahan P01
2.
Data Permasalahan P02
3.
Data Permasalahan P03
4.
Hasil Implementasi Program pada Permasalahan P01
Hasil Implementasi Program pada Permasalahan P02
Hasil Implementasi Program pada Permasalahan P03
Hasil Implementasi Program pada Permasalahan P04
Hasil Implementasi Program pada Permasalahan P05
Hasil Implementasi Program pada Permasalahan P06
Hasil Implementasi Program pada Permasalahan P07
Hasil Implementasi Program pada Permasalahan P08
Hasil Implementasi Program pada Permasalahan P09
Hasil Implementasi Program pada Permasalahan P10
Hasil Implementasi Program pada Permasalahan P11
Hasil Implementasi Program pada Permasalahan P12
Hasil Implementasi Program pada Permasalahan P13
Hasil Implementasi Program pada Permasalahan P14
Output
program
PENDAHULUAN
1.1
Latar Belakang
Perancangan sistem distribusi yang efektif dapat menghasilkan
penghematan biaya pengeluaran yang cukup signifikan bagi perusahaan. Potensi
penghematan biaya dapat dihasilkan dari distribusi produk ke beberapa lokasi
customer
yang dikombinasikan ke dalam beberapa rute. Masalah pengoperasian
dan perencanaan yang berhubungan dengan pendistribusian barang dipengaruhi
oleh beberapa faktor seperti jangkauan area, biaya pengangkutan dan waktu yang
diperlukan untuk pengangkutan. Permasalahan pendistribusian barang tersebut
bertujuan meminimalkan beberapa sasaran pendistribusian dengan mengambil
asumsi untuk semua rute, kendaraan harus berangkat dan kembali pada pusat
fasilitas (
Christofides et al., 1979
).
Permasalahan untuk meminimalkan rute pendistribusian barang dengan
keterbatasan kapasitas kendaraan biasanya disebut dengan
Vehicle Routing
Problem
(VRP). VRP adalah suatu nama umum yang diberikan kepada suatu
permasalahan dengan satu set rute untuk sejumlah armada angkut atau kendaraan
yang berangkat dan kembali ke suatu tempat yang dinamakan dengan depot, yang
harus disebarkan untuk melayani beberapa pelanggan.
Masalah
vehicle routing
termasuk dalam permasalahan
NP-hard
(
Non
Polynomial Hardness
), yaitu suatu permasalahan yang membutuhkan komputasi
yang lama dalam mencari penyelesaian masalah yang optimal sehingga diperlukan
metode yang digunakan untuk mencari solusi melalui semua kemungkinan yang
ada, tetapi dalam pencariannya tidak bisa dijamin akan ditemukan solusi yang
terbaik, sehingga metode ini biasanya disebut dengan metode perkiraan. Salah
satu metode heuristik yang digunakan adalah
Ant Colony Optimization
(ACO)
(
Christofides et al. (1979)
;
Foulds (1984)
).
Jika dengan memisalkan depot pusat sebagai sarang dan
customer
sebagai
makanan, maka VRP sangat mirip dengan perilaku pencarian makanan (
food-seeking
) oleh koloni semut yang terjadi di alam. Hal ini membuat pengkodean
ACO untuk VRP cukup sederhana. Pada studi yang dilakukan oleh
Bullnheimer
et al.
(1997)
menunjukkan sebuah algoritma
hybrid ant system
dengan
menggunakan prosedur
local search
2-opt
exchange
dan algoritma
saving
untuk
VRP yang mampu memperbaiki kualitas dari solusi awal yang diperoleh dari
algoritma semut. Dalam ACO, 2-opt
exchange
digunakan untuk memperbaiki
solusi dalam rute-rute yang telah ditemukan oleh masing-masing kendaraan.
Pada skripsi ini akan dibahas masalah
vehicle routing
yang bertujuan
menentukan rute yang optimal untuk sejumlah kendaraan yang akan beroperasi
mendistribusikan barang ke sejumlah pelanggan. Rute yang terbentuk diharapkan
menghasilkan total jarak yang minimum sehingga akan menghemat biaya
transportasi untuk pendistribusian barang. Dari uraian di atas, penulis tertarik
untuk menyelesaikan masalah
vehicle routing
dengan menggunakan algoritma
improved ant colony optimization
, yaitu algoritma yang dibentuk dengan
menambahkan proses mutasi dan
local search
sebelum proses
update pheromone
dari solusi awal yang terbentuk pada proses konstruksi rute.
1.2
Rumusan Masalah
Berdasarkan uraian latar belakang di atas, maka permasalahan yang akan
dibahas dalam skripsi ini adalah:
1.
Bagaimana menyelesaikan
vehicle routing
problem
(VRP) dengan
menggunakan algoritma
Improved Ant Colony Optimization
(IACO) ?
2.
Bagaimana membuat program komputer untuk menyelesaikan VRP
dengan algoritma IACO ?
3.
Bagaimana menerapkan program ke dalam contoh kasus ?
1.3
Tujuan
Dalam penulisan skripsi ini, penulis mempunyai tujuan sebagai berikut:
1.
Menyelesaikan
vehicle routing problem
(VRP) dengan menggunakan
algoritma
Improved Ant Colony Optimization
(IACO)
2.
Membuat program komputer untuk menyelesaikan VRP dengan algoritma
IACO
3.
Menerapkan program ke dalam contoh kasus
1.4 Manfaat
alternatif metode penyelesaian yang dapat digunakan untuk menyelesaikan
VRP dalam kehidupan nyata.
2.
Diharapkan pula dapat menjadi bahan pertimbangan dan perbandingan
untuk penerapan algoritma lainnya pada VRP yang dapat mendukung
TINJAUAN PUSTAKA
Dalam penulisan ini, diperlukan definisi maupun informasi guna
memperdalam materi dan mempermudah dalam pembuatan penulisan, diantaranya
sebagai berikut:
2.1
Graph
Pada bagian ini, definisi diambil dari buku karya
Chartrand dan
Oellerman (1993).
Definisi 2.1
Graph G
didefinisikan sebagai himpunan berhingga V(G) yang tidak
kosong yang anggotanya disebut titik (
vertice
) dan himpunan E(G) yang
mungkin kosong, yang anggotanya terdiri dari pasangan dua elemen yang
berbeda dari V(G) dan disebut garis (
edge
). Elemen dari V(G) dinotasikan
dengan
v
idan elemen dari E(G) dinotasikan dengan
v
iv
jdan kadang
dinotasikan dengan
e
i. Jika terdapat garis
e
yang menghubungkan titik
v
idan
v
jmaka
v
idikatakan terhubung (
adjacent
) dengan
v
jdalam hal ini
titik
v
idan
v
jdikatakan insiden dengan
e
.
Definisi 2.2 Order dari graph G adalah banyaknya titik-titik pada graph G,
dinotasikan |V(G)|.
Definisi 2.3 Perjalanan (
walk
) dari graph G adalah urutan secara bergantian
titik-titik elemen |V(G)| dan garis-garis elemen E(G) yang terbentuk :
dengan titik sebelumnya dan sesudahnya.
Definisi 2.4 Path adalah
walk
dimana tidak ada titik yang diulang (titiknya tidak
boleh berulang).
Definisi 2.5 Sikel
(
cycle
) adalah
walk
v0, v1, …, vn, n ≥ 3, dengan v0 = vn, dan
titik-titik v1, v2, …, vn semuanya berbeda. Dengan kata lain sikel adalah
path
tertutup. Sikel dengan panjang n mempunyai n titik.
Definisi 2.6
Misalkan u dan v titik-titik dalam graph G, u dikatakan terhubung
(
connected
) pada v jika terdapat path u-v.
Definisi 2.7
Graph G dikatakan terhubung (
connected
) jika setiap dua titiknya
dihubungkan oleh suatu path.
Definisi 2.8 Graph lengkap (
complete graph
) adalah suatu graph dengan
order
p
dimana setiap dua titik yang berbeda selalu
adjacent.
2.2
Vehicle Routing Problem
(VRP)
Vehicle routing problem
berkaitan dengan penentuan rute optimal untuk
permasalahan lebih dari satu kendaraan (
vehicle
) dengan kapasitas tertentu untuk
mengunjungi sejumlah pelanggan dengan permintaannya masing-masing. Rute
yang terbentuk harus dimulai dan diakhiri di suatu tempat yang disebut depot.
Setiap pelanggan dikunjungi hanya satu kali dan total permintaan semua
pelanggan dalam satu rute tidak melebihi kapasitas kendaraan yang melayani rute
Gambar 2.1 Contoh penyelesaian VRP dengan 3 rute
Menurut
Toth dan Vigo (2002), secara matematis VRP dapat dinyatakan
sebagai suatu digraph
G
= (
V, A
) dengan
V
= {
0, 1, …, n
} adalah himpunan
simpul yang menunjukkan lokasi pelanggan dan
A
= {(
i, j
)
| i, j
V, i ≠ j
} yaitu
himpunan sisi berarah yang menyatakan jalan penghubung lokasi pelanggan.
Simpul 0 menunjukkan depot, yaitu tempat menyimpan kendaraan yang
digunakan untuk distribusi dan merupakan tempat dimulai dan diakhirinya suatu
rute kendaraan. Banyaknya kendaraan yang tersedia di depot adalah
K
dengan
kapasitas kendaraan adalah
Q
. Setiap pelanggan
i
memiliki permintaan sebanyak
q
i.
Tujuan dari VRP adalah menentukan rute yang optimal untu`k sejumlah
kendaraan maka VRP dapat dimodelkan dalam bentuk sebagai berikut (Toth dan
Vigo, 2002):
n n
∑ ∑ ∑
1 0 01.
Setiap pelanggan hanya dikunjungi satu kali:
∑ ∑
1
10
1,2,…,
≠
2.
Kendaraan yang sama akan mengunjungi dan meninggalkan setiap pelanggan:
∑
0∑
00
1,2,…,
0,1,…,
3.
Terdapat
K
kendaraan yang beroperasi yang berawal dari depot:
∑
0 11 1,2,…,
4.
Total permintaan dari setiap kota dalam rute yang dilalui setiap kendaraan
tidak boleh melebihi kapasitas muatan kendaraan:
∑ ∑
1
1,2,…,
5.
Total jarak dari rute yang dilalui setiap kendaraan tidak boleh melebihi jarak
tempuh maksimal kendaraan yang diberikan:
∑ ∑
0 01,2,…,
dengan:
Tabel 2.1 Parameter yang digunakan pada model matematis dasar VRP
Notasi
Keterangan
x
ijkKendaraan
k
melayani kota
j
setelah mengunjungi kota
i
d
ijJarak antara kota
i
dengan kota
j
q
iPermintaan dari kota
i
W
Kapasitas maksimum dari kendaraan
E
Jarak tempuh maksimum kendaraan
Tabel 2.2 Indeks yang digunakan pada model matematis VRP
Notasi
Keterangan
i
Indeks kota awal
j
Indeks kota tujuan
k
Indeks kendaraan
2.2.1 Jenis-jenis
Vehicle Routing Problem
Dalam penggunaan VRP untuk dunia nyata, banyak faktor sampingan yang
muncul. Faktor-faktor tersebut berpengaruh pada munculnya variasi dari VRP,
antara lain:
tertentu yang harus melayani sejumlah permintaan pelanggan yang telah
diketahui untuk satu komoditas dari sebuah depot dengan biaya
minimum. Pada dasarnya CVRP sama seperti VRP dengan faktor
tambahan yaitu setiap kendaraan mempunyai kapasitas tertentu untuk
satu komoditas. CVRP bertujuan meminimalisasi jumlah kendaraan dan
total waktu perjalanan, dan total permintaan barang untuk tiap rute tidak
melebihi kapasitas kendaraan yang melewati rute tersebut.
2. VRP
with Time Windows
(VRPTW), dengan faktor: Setiap pelanggan
harus disuplai dalam jangka waktu tertentu.
3.
Mulitple
Depot VRP (MDVRP), dengan faktor: Distributor memiliki
banyak depot untuk menyuplai pelanggan.
Sebuah perusahaan yang memiliki lebih dari satu depot, dan
pelanggan-pelanggannya tersebar di sekitar depot-depot yang ada, maka masalah
pendistribusiannya harus dimodelkan menjadi sebuah kumpulan dari
VRP-VRP yang independen. Namun, jika pelanggan dan depot-depot
tidak terkumpul secara teratur maka masalahnya menjadi Multi-Depot
VRP atau MDVRP. Sebuah MDVRP membutuhkan pengaturan para
pelanggan ke depot-depot yang ada. Setiap kendaraan berangkat dari satu
depot melayani pelanggan-pelanggan yang sudah ditentukan oleh depot
dan jarak perjalanan diminimalisasi.
4. VRP
with Pick-Up and Delivering
(VRPPD), dengan faktor: Pelanggan
mungkin mengembalikan barang pada depot asal.
VRPPD adalah sebuah VRP dimana pelanggan mengembalikan barang
yang sudah diantarkan. Barang yang dikembalikan dapat dimasukkan ke
dalam kendaraan pengantar. Perencanaan pengantaran menjadi lebih sulit
dan dapat mengakibatkan penyalahgunaan kapasitas kendaraan,
memperbesar jarak perjalanan atau kendaraan yang diperlukan lebih dari
yang seharusnya. Seluruh permintaan pengantaran dimulai dari depot dan
seluruh permintaan penjemputan dibawa kembali ke depot, sehingga
tidak ada pertukaran barang antar pelanggan.
5.
Split Delivery
VRP (SDVRP), dengan faktor: Pelanggan dilayani dengan
kendaraan berbeda.
SDVRP adalah perluasan VRP dimana setiap pelanggan dapat dilayani
dengan kendaraan yang berbeda bilamana biayanya dapat dikurangi.
Perluasan ini dapat dilaksanakan jika jumlah permintaan pelanggan sama
dengan kapasitas kendaraan. Tujuan dari SDVRP untuk
meminimalisasikan jumlah kendaraan dan total waktu perjalanan untuk
(seperti jumlah pelanggan, jumlah permintaan, waktu pelayanan atau
waktu perjalanan).
Untuk mendapatkan solusi dari SDVRP, maka masalah harus dibagi
dalam dua tahap, solusi pada tahap pertama ditentukan sebelum variable
random diketahui. Pada tahap kedua pengoreksian dilakukan jika nilai
dari variable random sudah diketahui.
7.
Periodic
VRP (PVRP), dengan faktor: Pengantaran hanya dilakukan di
hari tertentu.
PVRP merupakan VRP yang digeneralisasi dengan memperluas rentang
perencanaan pengiriman menjadi M hari, dari semula hanya dalam
rentang sehari, dengan tujuan meminimalisasi jumlah kendaraan dan total
waktu perjalanan untuk melayani tiap pelanggan.
(Tarigan, 2008)
2.3 Algoritma
Penjelasan mengenai algoritma akan dijelaskan pada definisi berikut.
Definisi 2.9
Algortima merupakan suatu himpunan aturan atau instruksi yang
telah dirumuskan dengan baik (
well – defined
) dengan masukan
khusus (
spesific input
) untuk memperoleh keluaran khusus (
spesific
output
) dalam langkah – langkah yang jumlahnya berhingga.
Optimisasi
adalah suatu proses untuk mencapai hasil yang optimal (nilai
efektif yang dapat dicapai). Dalam disiplin matematika optimisasi merujuk pada
studi permasalahan yang mencoba untuk mencari nilai minimal atau maksimal
dari suatu fungsi riil. Untuk dapat mencapai nilai optimal baik minimal atau
maksimal tersebut, secara sistematis dilakukan pemilihan nilai variabel integer
atau riil yang akan memberikan solusi optimal.
(Wardy, 2007)
2.5 Algoritma
Ant Colony Optimization
(ACO)
Pada tahun 1989,
Goss
et al.
membuat percobaan dengan menggunakan
spesies semut
Iridomyrmex Humilis
(semut Argentina). Percobaan itu untuk
menunjukkan kemampuan kerjasama semut mendapatkan jalan terpendek menuju
sumber makanan dengan bantuan
pheromone
yaitu zat kimia yang berasal dari
kelenjar endokrin dan digunakan makhluk hidup untuk mengenali sesama jenis
dalam satu spesies. Percobaan tersebut seperti terlihat pada Gambar 2.2.
Pada Gambar 2.2, semut 1 dan semut 2 meninggalkan sarang pada waktu
yang sama. Semut-semut tersebut sampai pada titik pilihan 1 bersama-sama dan
membuat keputusan dengan probabilitas yang sama untuk memilih cabang. Semut
1 memilih cabang yang lebih pendek dan mencapai sumber makanan lebih dulu
(melalui titik A), mengambil makanan dan kembali lagi ke sarang. Ketika kembali
pada titik pilihan 2, semut tersebut mendeteksi
pheromone
pada cabang yang lebih
pendek (
pheromone
yang ditaruh oleh semut 1 itu sendiri pada saat perjalanan
dekat titik percabangan karena semut yang memilihnya (termasuk semut 2) belum
sampai pada titik pilihan 2. Pada akhirnya kedua semut pada saat menuju dan dari
sumber makanan akan mengambil jalan yang lebih pendek dengan probabilitas
yang tinggi dan
pheromone
yang ada pada cabang yang lebih panjang tidak diberi
penguatan lagi karena tidak ada semut yang menaruh
pheromone
dijalur tersebut
sehingga
pheromone
akan menguap dan semut akan berjalan pada jalan yang
paling pendek.
(Gaertner, 2004)
Sarang
Titik pilihan 1 Titik A Titik pilihan 2
Sumber makanan
Titik B
Semut 1
Semut 2
Dari percobaan yang digambarkan pada Gambar 2.2 disusun sebuah
algoritma untuk mencari solusi dari sebuah permasalahan optimalisasi
kombinatorik yang dinamakan
Ant Colony Optimization
(ACO). ACO secara
umum terdapat sejumlah populasi semut buatan (
ant
) yang melakukan sebuah
perjalanan untuk membentuk solusi dari sebuah permasalahan optimalisasi
kombinatorik. Algoritma ini menyatakan permasalahan ke dalam sebuah
graph
,
ant
melakukan perjalanan pada setiap cabang dari
node
satu ke
node
yang lain
sehingga membentuk suatu
path
yang merupakan representasi dari solusi pada
permasalahan tersebut.
Langkah-langkah ACO:
1.
Inisialisasi parameter, yaitu:
Tetapan pengendali intensitas
pheromone
α ≥ 0 , betha β ≥ 0), nilai
pheromone
awal antara
node
i dan
node
j (
ij), koefisien penguapan (),
jarak antara
node
i dan
node
j (dij), jumlah semut atau kendaraan, jumlah
node
atau pelanggan, jumlah siklus atau iterasi, dan kostanta Q (Q > 0).
2.
Menempatkan sejumlah
ant
pada
node
awal
3.
Mengisi
tabu list
dengan cara menghitung nilai probabilitas dari
node
awal
ke
node
yang akan dikunjungi.
Tabu list
adalah tempat yang disediakan
untuk penyiimpanan sementara dari solusi – solusi yang dihasilkan pada
tiap iterasi. Persamaan untuk menentukan nilai probabilitas sebagai
berikut:
(
)
[ ] [ 1]
∑ n [ ] [ 1]
p
ij(
t
) = probabilitas dari
node
i ke
node
j disaat t
4.
Menghitung panjang perjalanan.
Setelah semua semut menyelesaikan satu siklus selanjutnya dihitung
panjang perjalanan. Indeks s menyatakan indeks urutan perjalanan, node
asal dinyatakan tabuk (s) dan
node – node
lainnya dinyatakan sebagai
{N-tabuk}. Menghitung panjang perjalanan dengan rumusan sebagai berikut:
n
1
∑
n 1-11
(2.9)
5.
Perbaruhi matrik
pheromone
(
1
)
(
)
∑
1(2.10)
dengan
adalah perubahan harga
pheromone
antar
node
setiap semut
yang dihitung berdasarkan persamaan
{
t
(
,
)
n
a a tab
0,
t
(
,
)
a a
(2.11)
6.
Apabila siklus maksimum atau kondisi stagnan belum terpenuhi, maka
kosongkan tabu list dan kembali ke langkah 2. Apabila siklus maksimum
atau kondisi stagnan telah terpenuhi maka iterasi berakhir. Kondisi stagnan
yaitu kondisi semua
ant
melakukan tour yang sama.
(Dorigo
et al.
, 1996)
2.6 Algoritma
Improved Ant Colony Optimization
Dalam jurnal karya
Bin
et al.
(2008) dijelaskan bahwa algoritma IACO
adalah algoritma ACO yang telah dimodifikasi dengan menyertakan proses mutasi
Pada ACO, seekor semut disimulasikan sebagai kendaraan, dan semut
tersebut membentuk sebuah rute, rute tersebut terdiri dari pelanggan-pelanggan
(kota) yang terpilih oleh semut tersebut. Pelanggan-pelanggan yang sudah
dikunjungi oleh seekor semut akan disimpan dalam
tabu list
. Dalam pengambilan
keputusan seekor semut
k
memilih pelanggan (kota)
j
setelah mengunjungi
pelanggan (kota)
i
menggunakan formula probabilitas sebagai berikut:
(
)
{
∑
0
(2.12)
dengan
(
)
adalah probabilitas semut
k
memilih pelanggan (kota)
j
setelah
mengunjungi pelanggan (kota)
i
pada sebuah rute ke-
k
,
adalah feromon jarak
pelanggan
i
ke pelanggan
j
,
adalah visibilitas dari jarak pelanggan
i
ke
pelanggan
j
dan nilai
diperoleh dari
1
dimana
d
ijadalah jarak
pelanggan
i
ke pelanggan
j
,
dan
adalah masing-masing pengendali intensitas
jejak semut dan pengendali visibilitas jarak pelanggan
i
ke pelanggan
j
(α ≥ 0, β ≥
0)
, dan
adalah himpunan dari pelanggan-pelanggan yang tidak boleh dipilih
oleh semut
k
.
(Bin
et al.
, 2008)
2.6.2 Mutasi
secara random yang menghasilkan struktur genetik baru.
(Obitko, 1998)
Ada beberapa jenis mutasi yang didefinisikan Obitko (1998), diantaranya:
a.
Mutasi Inversi (
inversion Mutation
)
Memilih dua posisi dalam kromosom secara acak dan kemudian membalik
untaian diantara dua posisi itu.
b.
Mutasi Sisipan (
Insertion Mutation
)
Memilih gen secara acak dan menyisipkannya di posisi acak.
c.
Mutasi perpindahan (
Displacement Mutation)
Memilih sebuah
subtour
secara acak dan memasukkannya pada posisi lain
secara acak.
d.
Reciprocal Exchange Mutation
Memilih dua posisi gen secara acak kemudian menukar gen pada kedua posisi
tersebut.
Pada algoritma IACO, proses mutasi yang digunakan adalah
reciprocal
exchange mutation
. Berikut adalah langkah-langkah dari proses
reciprocal
exchange mutation
menurut Bin
et al.
(2008):
Langkah 1
Pilih dua rute secara acak dari
parent solution.
Kemudian pilih
satu kota atau
customer
dari masing-masing rute yang terpilih.
Langkah 2
Tukar posisi dari kedua kota atau
customer
yang terpilih pada
dalam populasi yang dimutasi.
(Gen dan Cheng, 1997)
Probabilitas mutasi yang digunakan oleh Bin
et al.
(2008) adalah sebagai berikut:
(
)
n(
n)
1(2.13)
dimana
(
)
adalah probabilitas mutasi pada iterasi ke-
t
,
nadalah tingkat
probabilitas mutasi terendah yang didefinisikan dengan persamaan
n 1 ndengan
n
adalah jumlah semua pelanggan (kota),
adalah tingkat probabilitas
mutasi tertinggi yang didefinisikan dengan persamaan
1n
dengan
n
adalah
jumlah rute yang terbentuk pada solusi,
t
adalah iterasi saat ini, dan
T
adalah
iterasi maksimum yang diberikan.
(Bin
et al.,
2008)
2.6.3
Local Search
Metode untuk mengidentifikasi sebuah solusi dari suatu permasalahan
dengan mempertimbangkan solusi-solusi potensial yang tersedia sampai
ditemukan satu solusi yang memenuhi kriteria.
(Stützle, 1998)
2.6.3.1 Metode 2-Opt
Algoritma 2-opt merupakan salah satu algoritma
local search
yang
mengeliminasi
arc
/ jalur yang bersilangan pada suatu rute tunggal dengan cara
pelanggan
c
i, c
jdengan
i
<
j
;
i,j
{1, 2, … ,
k
− 1} akan diperiksa apakah jalur dari
c
i−1ke
c
jdan dari
c
ike
c
j+1lebih baik daripada jalur awal dari
c
i−1ke
c
idan dari
c
jke
c
j+1. Jika demikian, bentuk jalur baru dari
c
ike
c
jdan dilanjutkan untuk
kombinasi lainnya yang tersisa. Setelah semua kombinasi diperiksa, maka urutan
kunjungan diperbaiki sesuai urutan perbaikan yang diperoleh. Jadi, jika urutan
sebelum perbaikan adalah sebagai berikut:
c
0, c
1, c
2, … ,
i−1, c
i, c
i+1, c
i+2,… ,
j−1, c
j, c
j+1, …,
k, c
0.maka setelah perbaikan menjadi:
c
0, c
1, c
2, … ,
i−1, c
j, c
j−1, c
j−2,… ,
i+1, c
i, c
j+1, c
j+2,…,
k, c
0.Gambar 2.3 Contoh metode 2-opt
Contoh metode 2-opt dapat dilihat pada Gambar 2.3. Pada gambar
tersebut, pelanggan
i
+1 yang dilayani setelah pelanggan
i
diubah menjadi
pelanggan yang dilayani setelah pelanggan
j
+1, sedangkan pelanggan setelah
j
+1
yaitu
j
dilayani setelah pelanggan
i
+1. Hal ini dilakukan dengan mengganti sisi (
i
,
i
+1) dan (
j
+1,
j
) berturut-turut dengan sisi (
i
,
j
+1) dan (
i
+1,
j
).
Pada proses
update pheromone
ini menggunakan persamaan sebagai
berikut :
n
∑
0, 1
(2.14)
dengan
nadalah feromon jarak pelanggan (kota)
i
ke pelanggan (kota)
j
setelah
di
update
,
adalah feromon jarak pelanggan (kota)
i
ke pelanggan (kota)
j
sebelum di
update
,
adalah konstanta yang mengontrol kecepatan evaporasi dan
,
k
menunjukkan suatu rute,
K
adalah jumlah semua rute pada solusi
dan
K
> 0, dan
adalah total perubahan feromon jarak pelanggan (kota)
i
ke
pelanggan (kota)
j
pada rute ke-
k
yang dihitung berdasarkan persamaan
{
n
n n
0 n nn
(2.15)
dimana
Q
adalah sebuah konstanta positif (
Q
> 0),
L
adalah total jarak semua rute
pada solusi,
adalah total jarak pada rute ke-
k
,
adalah jarak pelanggan
i
ke
pelanggan
j
, dan
adalah banyaknya pelanggan pada rute ke-
k
.
METODE PENELITIAN
Adapun langkah-langkah yang digunakan dalam penulisan ini adalah
sebagai berikut:
1.
Studi pustaka mengenai
vehicle routing problem,
algoritma ACO, dan
algoritma IACO.
2.
Menerapkan algoritma IACO dalam menyelesaikan
vehicle routing problem
dengan langkah (secara ringkas disajikan dalam Gambar 3.1) sebagai berikut:
a.
Inisialisasi
Proses ini adalah menginputkan data-data yang akan dimasukkan, antara
lain jumlah kendaraan (
K
), jumlah pelanggan atau kota (
N
), jarak tempuh
maksimum kendaraan (
E
), kapasitas maksimum kendaraan (
W
),
pengendali intensitas jejak semut (
), pengendali visibilitas jarak kota
i
ke
kota
j
konstanta pengontrol kecepatan penguapan jejak semut (
ρ
),
konstanta
Q
, feromon awal (
τ
awal), jarak setiap pelanggan (
d
ij), permintaan
setiap pelanggan (
q
i), dan total iterasi (
T
). Dengan mengacu pada jurnal
Bin
et al
(2008), nilai
α
= 2,
β
= 1,
Q
= 1000, dan
ρ
= 0,8.
b.
Konstruksi rute
Langkah-langkah proses konstruksi rute adalah sebagai berikut:
i.
Posisi awal
vehicle
atau semut ada di depot.
ii.
Memilih semut atau
vehicle
pertama yang selanjutnya
vehicle
tersebut
memilih pelanggan-pelanggan (kota) mana yang akan dilalui atau
vehicle
selanjutnya.
iii.
Untuk memilih pelanggan-pelanggan mana yang akan dipilihnya,
setiap
vehicle
menggunakan formula
iv.
Rute yang terbentuk haruslah sesuai dengan
constraints
di bawah ini:
1. Total jarak setiap rute yang terbentuk harus kurang dari atau
sama dengan ( ≤ ) jarak tempuh maksimum kendaraan (
E
).
2. Total
demand
dari pelanggan-pelanggan yang ada pada rute
yang terbentuk haruslah kurang dari atau sama dengan (
≤ )
kapasitas maksimum kendaraan (
W
)
c.
Cek nilai_
random
≤
Pm(t)
Pada proses ini, nilai
Pm(t)
ditentukan dengan menggunakan persamaan
2.13. Langkah-langkah pada proses ini adalah sebagai berikut:
i.
Pilih dua rute berbeda secara acak.
ii.
Bangkitkan nilai
random
riil [0, 1] pada masing-masing pelanggan
di setiap rute yang terpilih.
iii.
Cek apakah ada nilai
random
≤
Pm(t)
pada setiap pelanggan.
iv.
Jika pada setiap rute yang terpilih tadi terdapat
sekurang-kurangnya satu pelanggan yang mempunyai nilai
random
≤
Pm(t),
maka lanjutkan ke proses mutasi, atau jika tidak ada pelanggan
yang mempunyai nilai
random
≤
Pm(t),
maka lanjutkan ke proses
Berikut ini adalah langkah-langkah dari proses mutasi:
i.
Pilih satu pelanggan dengan nilai
random
≤
Pm(t)
pada setiap rute
yang terpilih pada proses (c) tadi.
ii.
Jika terdapat lebih dari satu pelanggan di setiap rute terpilih yang
mempunyai nilai
random
≤
Pm(t),
maka pilih pelanggan dengan nilai
random
≤
Pm(t)
terkecil pada setiap rute terpilih.
iii.
Setiap rute terpilih harus ada satu kota untuk ditukar.
iv.
Tukar kedua pelanggan yang terpilih pada langkah (ii).
v.
Selesai.
e.
Local Search
Proses ini dilakukan pada solusi yang terbentuk dari proses konstruksi rute
jika proses mutasi diabaikan, atau dilakukan pada setiap solusi yang
terbentuk dari proses mutasi. Proses
local search
ini bertujuan untuk
menemukan solusi yang lebih baik dari solusi yang terbentuk pada proses
konstruksi rute maupun dari solusi yang terbentuk pada proses mutasi. Jika
solusi yang terbentuk pada proses
local search
ini
infeasible
, maka solusi
diabaikan dan solusi yang dipakai adalah solusi pada proses konstruksi
rute.
Berikut ini adalah langkah-langkah dari proses
local search
:
i.
Tukar posisi pelanggan baru dengan posisi pelanggan yang ada pada
rute baru.
solusi.
f.
Update Pheromone
Proses
update pheromone
dilakukan setelah proses
local search
. Proses ini
bertujuan untuk mengurangi jumlah
pheromone
pada semua
link
seperti
proses evaporasi atau penguapan
pheromone
, dan untuk memastikan
bahwa tidak ada satu jalur yang menjadi terlalu dominan.
g.
Maximum
iterasi
Jika iterasi sudah mencapai iterasi maksimum, maka proses berhenti dan
dipilih solusi terbaik dari
vehicle routing problem
. Apabila iterasi belum
mencapai iterasi maksimum, proses dilanjutkan kembali pada langkah b.
3.
Membuat program untuk menyelesaikan
vehicle routing problem
dengan
algoritma IACO.
4.
Mengimplementasikan program yang telah dibuat pada beberapa
Gambar 3.1
Flowchart
dari algoritma IACO.
Mulai
Inisialisasi
Konstruksi Rute
Local Search
Update Pheromone
Cek
Iterasi_Max
?
Selesai
Ya
Tidak
Mutasi
Ya
Tidak
Cek
BAB IV
PEMBAHASAN
Pada bab ini dijelaskan penggunaan algoritma
improved ant colony
optimization
(IACO) untuk menyelesaikan
vehicle routing problem
dengan tujuan
mengoptimalkan rute kendaraan.
4.1
Prosedur Algoritma IACO
Berdasarkan Bin
et al
(2009), prosedur dari algoritma IACO ditunjukkan
pada Gambar 4.1.
Prosedur Algoritma IACO
mulai
inisialisasi()
untuk t dari 1 sampai dengan iterasi_max
lakukan konstruksi_rute() lakukan cek nilai_random ≤ Pm(t)
lakukan mutasi() lakukan local_search()
lakukan update_pheromone()
jika (t < iterasi_max) maka,
kembali ke proses konstruksi_rute() jika (t = iterasi_max) maka,
cetak solusi terbaik selesai
selesai
Gambar 4.1 Prosedur algoritma IACO
4.1.1 Prosedur Inisialisasi
Prosedur inisialisasi terdiri dari pengisian parameter dan pengisian data
Prosedur inisialisasi
mulai
pengisian parameter() pengisian data pelanggan() selesai
Gambar 4.2 Prosedur inisialisasi
Dalam prosedur pengisian parameter, nilai
E
atau jarak tempuh maksimum
kendaraan mempunyai dua kemungkinan. Kemungkinan yang pertama adalah
nilai
E
= 0, artinya dalam pemilihan kota yang akan dikunjungi hanya
memperhatikan batasan kapasitas maksimum kendaraan (
W
), dan
W
pasti positif
(
W
> 0).
Kemungkinan yang kedua adalah nilai
E
positif (
E
> 0), artinya dalam
pemilihan kota yang akan dikunjungi, batasan yang harus diperhatikan adalah
kapasitas maksimum kendaraan (
W
) dan total jarak tempuh maksimum kendaraan
(
E
). Pada parameter
service duration
, nilai tersebut berarti bahwa durasi
pelayanan pada setiap kota yang dikunjungi, dan nilai tersebut diimplementasikan
atau ditambahkan ke dalam jarak di setiap kota. Prosedur pengisian parameter
disajikan pada Gambar 4.3.
Prosedur pengisian parameter
mulai
jumlah kendaraan = nV
jarak tempuh maksimum kendaraan = E
kapasitas maksimum kendaraan = W
pengendali intensitas jejak semut = alpha
pengendali visibilitas jejak semut = beta
konstanta pengontrol kecepatan penguapan jejak semut = rho
konstanta Q = Q
feromon awal = thau
total iterasi = iterasi_max
service duration = serviceDuration
selesai
Prosedur pengisian data pelanggan dibedakan menjadi 2 tipe, yakni posisi
pelanggan dengan koordinat
x
dan
y
, dan posisi pelanggan yang tidak ditentukan
dengan koordinat
x
dan
y
. Posisi pelanggan yang tidak ditentukan dengan
koordinat
x
dan
y
berarti jarak antar pelanggan sudah diketahui. Prosedur
pengisian data pelanggan disajikan pada Gambar 4.4.
Prosedur pengisian data pelanggan
mulai
jumlah pelanggan = nC
jika (posisi pelanggan = koordinat (x,y)) maka, untuk i dari 0 sampai dengan nC
posisi pelanggan i pada koordinat X = xi
posisi pelanggan i pada koordinat Y = yi
permintaan pelanggan i = qi
set matriks jarak() selesai
jika yang lain maka,
untuk i dari 0 sampai dengan nC
permintaan pelanggan i = qi
untuk j dari 0 sampai dengan nC
jika (i = j) maka,
jarak pelanggan i ke pelanggan j = d(i,j) = 0 jika yang lain maka,
jarak pelanggan i ke pelanggan j = d(i,j) > 0 selesai
selesai selesai
Gambar 4.4 Prosedur pengisian data pelanggan
4.1.2 Prosedur Konstruksi Rute
Prosedur konstruksi rute bertujuan untuk membentuk rute-rute pada setiap
kendaraan dengan memperhatikan batasan kapasitas kendaraan dan total jarak rute
kendaraan yang diinputkan. Prosedur ini meliputi proses hitung
P
ij(k)
, cek
Prosedur konstruksi rute
mulai
hitung nilai Pij(k)()
cek konstrain() pembentukan rute() selesai
Gambar 4.5 Prosedur konstruksi rute
P
ij(k)
adalah suatu nilai probabilitas untuk semut
k
memilih kota
j
setelah
mengunjungi kota
i
. Prosedur hitung nilai
P
ij(k)
bertujuan untuk menghitung nilai
probabilitas
P
ij(k)
setiap pelanggan yang belum terpilih dan nantinya nilai tersebut
dijumlahkan secara komulatif. Setelah itu, dibangkitkan satu nilai random riil
antara 0 sampai dengan 1. Jika nilai random tersebut masuk dalam area
P
ij(k)
komulatif, maka pilih kota dengan nilai
P
ij(k)
terpilih tersebut. Prosedur hitung
P
ij(k)
disajikan pada Gambar 4.6
Prosedur hitung nilai Pij(k)
mulai
nAvCity = kota yang belum terpilih set kotaAwal = 0
untuk i dari 0 sampai dengan nAvCity-1 hitung nilai PijkAvCity sumPIJK += PijkAvCity
RANDOM = nilai random antara 0 sampai dengan 1 jika RANDOM <= sumPIJK maka
kotaTujuan = i selesai
selesai selesai
Gambar 4.6 Prosedur hitung nilai Pij(k)
Pada prosedur hitung nilai
P
ij(k)
, formula yang digunakan dalam
perhitungan nilai PijkAvCity adalah
∑
, dengan
adalah feromon jarak
nilai
diperoleh dari
dimana
d
ijadalah jarak kota
i
ke kota
j
,
dan
adalah
masing-masing pengendali intensitas jejak semut dan pengendali visibilitas jarak
kota
i
ke kota
j
(
≥ 0,
≥ 0)
, dan
adalah himpunan dari kota-kota yang
tidak boleh dipilih oleh semut
k
.
Prosedur cek konstrain bertujuan untuk memeriksa apakah pelanggan yang
terpilih dari proses hitung
P
ij(k)
memenuhi batasan kapasitas kendaraan dan total
jarak maksimal kendaraan yang diinputkan. Jika pelanggan yang terpilih tidak
melanggar batasan atau konstrain yang diinputkan maka pelanggan tersebut
terpilih untuk dilayani oleh kendaraan. Proses cek konstrain disajikan pada
Gambar 4.7.
Prosedur cek konstrain
mulai
jika (E > 0) maka
untuk i dari 0 sampai dengan nAvCity-1 kotaTujuan = indexRW[PijkAvCity]
jika (mJarak[kotaAwal][kotaTujuan]+serviceDuration < E dan q[kotaTujuan] ≤ W dan (E - (mJarak[kotaAwal][kotaTujuan] + serviceDuration)) ≥ (mJarak[kotaTujuan][0])) maka
E mJarak[kotaAwal][kotaTujuan]+serviceDuration W q[kotaTujuan]
jika (q[kotaTujuan] > W dan mJarak[kotaAwal][kotaTujuan] + serviceDuration > E) maka
set kotaTujuan = 0 selesai
selesai
jika yang lain (E = 0) maka
untuk I dari 0 sampai dengan nAvCity-1 kotaTujuan = indexRW[PijkAvCity]
jika (q[kotaTujuan] < W) maka W q[kotaTujuan]
jika yang lain (q[kotaTujuan] > W) maka set kotaTujuan = 0
selesai selesai
selesai