## Contemporary Mathematics and Applications
Vol. 2, No. 2, 2020, pp. 97-108.
Hybrid Crow Search Algorithm - Simulated Annealing untuk Menyelesaikan Vehicle Routing Problem with Time Windows
Bella Pristianisa Subari 1 , Asri Bekti Pratiwi 1,* & Herry Suprajitno 1
1 Departemen Matematika, Fakultas Sains dan Teknologi, Universitas Airlangga
* Corresponding author: asri.bekti@fst.unair.ac.id
Abstract. Penulisan  artikel  ini  bertujuan  untuk  menyelesaikan  permasalahan Vehicle  Routing Problem  with  Time  Windows (VRPTW) dengan  menggunakan Hybrid  Crow  Search  Algorithm (CSA)  dengan Simulated  Annealing (SA). Hybrid CSA  dengan  SA  adalah  gabungan  dari  kedua algoritma dengan cara melakukan proses CSA kemudian hasil terburuknya diperbaiki dengan proses SA  untuk  sepuluh  iterasi  pertama.  Proses  algoritma  ini  dimulai  dengan  inisialisasi  parameter, membangkitkan  posisi  dan  memori  awal,  menghitung  fungsi  tujuan,  memperbarui  posisi  gagak, menghitung fungsi tujuan posisi baru gagak, update memori gagak, menentukan solusi terburuk dari posisi  gagak  kemudian  dilakukan  modifikasi,  hasil  modifikasi  dengan  SA  menggantikan  solusi terburuk  pada  posisi  gagak,  proses  berlanjut  sampai  maksimal  iterasi  dipenuhi  dan  menentukan solusi  terbaik  dari  memori  gagak.  Berdasarkan  hasil  implementasi  pada  tiga  tipe  data  dapat disimpulkan  bahwa semakin banyak jumlah iterasi, jumlah gagak, dan proses Simulated Annealing maka  nilai  fungsi  tujuan  yang  diperoleh  cenderung  semakin  baik,  sedangkan  nilai  probabilitas kewaspadaan (𝐴𝑃) tidak memberikan pengaruh pada solusi permasalahan.
Keywords: crow search algorithm, hybrid, simulated annealing, VRPTW.

## 1 Pendahuluan
Dunia industri saat ini memiliki perkembangan yang sangat pesat, perkembangan industri tersebut sebanding dengan pertumbuhan perusahaan. Perusahaan tentunya membutuhkan perancangan sistem distribusi yang efektif untuk memperlancar sistem produksinya, salah satunya dalam segi transportasi [1]. Khususnya transportasi barang yang merupakan salah satu  hal  penting  dalam    sistem  distribusi  bagi  perusahaan  [2],  sehingga  transportasi merupakan  faktor  penting  dalam  pendistribusian  barang.  Setiap  perusahaan  akan membuat  cara  agar  mendapat  keuntungan  yang  optimal  yaitu  dengan  meminimalkan biaya  distribusi  yang  dapat  diminimalkan  dengan  meminimalkan  rute  pendistribusian. Masalah  pendistribusian    ini  termasuk  dalam Vehicle  Routing  Problem (VRP).  VRP merupakan  permasalahan  penentuan  rute  distribusi  yang  terdiri  dari  satu  depot  yang melayani sejumlah pelanggan, rute pengiriman harus dimulai dan berakhir di depot, dan pengiriman  dilakukan  oleh  beberapa  kendaraan  dengan  kapasitas  tertentu.  Semua permintaan pelanggan harus dipenuhi dan setiap pelanggan dilayani oleh satu kendaraan tepat satu kali [3]. Namun beberapa kasus tertentu, beberapa produsen dihadapkan dengan
batasan waktu dalam penerimaan barang. Kasus ini merupakan perluasan dari VRP yang disebut dengan Vehcile Routing Problem with Time Windows (VRPTW) [4].
VRPTW  merupakan  perancangan  serangkaian  rute  biaya  minimum,  yang  berawal  dan berakhir  pada  depot  pusat,  untuk  armada  kendaraan  yang  melayani  pelanggan  dengan permintaan  yang  diketahui.  Setiap  pelanggan  harus  dialokasikan  tepat  satu  kendaraan agar  kapasitas  kendaraan  tidak  melebihi  batas.  Pelayanan  pada  pelanggan  dilakukan sesuai  dengan time  winodws yang  ditentukan  oleh  waktu  buka  dan  waktu  tutup  ketika pelanggan mengizinkan dilakukannya pelayanan [5].
Crow  Search  Algorithm (CSA)  adalah  algoritma  yang  terinspirasi  dari  kecerdasan perilaku  gagak.  Gagak  berperilaku  seperti  intelijen  memiliki  kewaspadaan,  mengenali wajah,  memperingatkan  kawanan  yang  berpotensi  tidak  aman,  dan  mengingat  tempat menyembunyikan  makanan  [6]. CSA  memiliki  dua  parameter  yaitu  jarak  terbang  dan probabilitas kewaspadaan gagak. CSA dapat membuat proses pencarian optimasi menjadi area  yang  menjanjikan  dengan  waktu  yang  singkat  tetapi  terdapat  kemungkin  untuk terjebak dalam optimal local [7].
Simulated  Annealing (SA)  adalah  algoritma  dengan  metode  yang  dianalogikan  dengan proses annealing atau proses pendinginan material suatu logam padat dan beku menjadi kristal dengan energi minimum. Proses annealing memerlukan pengontrolan yang hati- hati terhadap suhu dan laju pendinginan [8].
Berdasarkan penjelasan dua algoritma diatas dapat memperkaya perilaku pencarian dari optimasi  dan  meningkatkan  kamampuan  serta  efisiensi  dalam  menyelesaikan permasalahn VRPTW dengan menggunakan Hybrid CSA dengan SA karena algoritma CSA  termasuk  algoritma  baru  dan  belum  ada  penelitian  yang  menyelesaikan permasalahan VRPTW dengan algoritma tersebut. Namun tampaknya algoritma ini masih terdapat kemungkinan munculnya optimal local [7]. Sehingga dilakukan hybrid dengan SA karena algoritma tersebut dapat melepaskan diri dari optimal lokal dengan harpaan dapat menghasilkan solusi yang lebih baik, untuk meningkatkan eksplorasi terutama pada awal eksekusi untuk menghindari optimal lokal [9].

## 2 Vehicle Routing Problem with Time Windows
Vehicle Routing Problem (VRP) apabila ditambahkan kendala time window pada masing- masing pelanggan, maka permasalahan tersebut menjadi Vehicle Routing Problem Time Windows (VRPTW),  dimana  VRPTW  sendiri  adalah  permasalahan  bagaimana  sebuah depot, pusat distribusi barang, dengan sejumlah kendaraan berkapasitas tertentu melayani sejumlah pelanggan pada lokasi  terpisah, dengan permintaan dan batasan time window tertentu, dengan tujuan meminimalkan total biaya perjalanan, tanpa mengabaikan batasan kapasitas  kendaraan  [4].  Desain  rute  dilakukan  sedemikian  hingga  setiap  pelanggan
hanya  dikunjungi  sekali  oleh  satu  kendaraan,  dan  setiap  kendaran  memulai  dan mengakhiri rutenya pada depot [2]. Tujuan dari VRPTW adalah menentukan rute yang optimal untuk sejumlah kendaraan agar pelanggan bisa dilayani tepat waktu [10].
Menurut [10] model matematika dari VRPTW disajikan sebagai berikut:
𝑀𝑖𝑛 𝑍 =   ∑ 𝐾 𝑘=1 ∑ 𝐿 𝑖=0 ∑ 𝐿 𝑗=0 𝑐 𝑖𝑗 𝑥 𝑖𝑗𝑘 (1)
Dengan kendala-kendala:
1. Total  permintaan  dari  setiap  kota  dalam  rute  yang  dilalui  setiap  kendaraan  tidak melebihi kapasitas muat kendaraan
∑ 𝐿 𝑖=1 𝑔 𝑖 𝑦 𝑖𝑘 ≤ 𝑞, ∀ 𝑘 = 1,2, … , 𝐾 (2)
2. Setiap pelanggan dikunjungi tepat satu kali oleh satu kendaraan:
∑ 𝐾 𝑘=1 𝑦 𝑖𝑘 = 1, ∀ 𝑖 = 1,2, … , 𝐿 (3)
3. Memastikan bahwa setiap rute yang dilalui telah lengkap:
∑ 𝐿 𝑖=0 𝑥 𝑖𝑗𝑘 =   𝑦 𝑗𝑘, ∀ 𝑘, 𝑗,    𝑘 = 1,2, … , 𝐾, 𝑗 =  1,2, … , 𝐿
(4) ∑ 𝐿 𝑗=0 𝑥 𝑖𝑗𝑘 =   𝑦 𝑖𝑘, ∀ 𝑘, 𝑖,    𝑘 = 1,2, … , 𝐾, 𝑖 =  1,2, … , 𝐿 (5)
∑ ∑ 𝑥 𝑖𝑗𝑘 ≤ |𝑆| − 1, 𝑆  ⊂ {1,2, … , 𝐿}, 𝐿 𝑖≠𝑗 𝐿 𝑖∈𝑆,𝑗∈𝑆 ∀ 𝑘 = 1,2, … , 𝐾 (6) 4. Memastikan bahwa dua pelanggan yang saling berdekatan berada dalam rute yang sama:
𝑠𝑙 𝑖 + 𝑡 𝑖𝑗 ≤ 𝑠𝑒 𝑗 , ∀ 𝑘, 𝑖, 𝑗
𝑘 = 1,2 … , 𝐾, 𝑖 = 1,2, … , 𝐿,
𝑗 = 1,2, … , 𝐿
(7)
5. Batasan pelayanan kepada pelanggan ( time window ):
𝑒 𝑖 ≤   𝑠𝑒 𝑖 ≤   𝑙 𝑖 ∀ 𝑖 = 1,2, … , 𝐿 (8)
Dengan,
𝑦 𝑖𝑘 = { 1, 𝑝𝑒𝑟𝑚𝑖𝑛𝑡𝑎𝑎𝑛 𝑑𝑎𝑟𝑖 𝑝𝑒𝑙𝑎𝑛𝑔𝑔𝑎𝑛 𝑖 𝑑𝑖𝑝𝑒𝑛𝑢ℎ𝑖 𝑘𝑒𝑛𝑑𝑎𝑟𝑎𝑎𝑛 𝑘
0, 𝑦𝑎𝑛𝑔 𝑙𝑎𝑖𝑛𝑛𝑦𝑎
𝑥 𝑖𝑗𝑘 = { 1, 𝑘𝑒𝑛𝑑𝑎𝑟𝑎𝑎𝑛 𝑘 𝑚𝑒𝑙𝑎𝑘𝑢𝑘𝑎𝑛 𝑝𝑒𝑟𝑗𝑎𝑙𝑎𝑛𝑎𝑛 𝑑𝑎𝑟𝑖 𝑝𝑒𝑙𝑎𝑛𝑔𝑔𝑎𝑛 𝑖 𝑘𝑒 𝑗 0, 𝑦𝑎𝑛𝑔 𝑙𝑎𝑖𝑛𝑛𝑦𝑎
Keterangan:
𝐾 : Total Kendaraan, 𝐾(𝑘 = (1,2, … , 𝐾) 𝐿
: Total Pelanggan, 𝐿(𝑖 = 1,2, … , 𝐿)
𝑥 𝑖𝑗𝑘 : Kendaraan 𝑘 yang melayani pelanggan 𝑗 setelah mengunjungi pelanggan 𝑖 𝑐 𝑖𝑗 : Biaya pengiriman dari pelanggan 𝑖 ke pelanggan 𝑗 (dapat juga berarti jarak)
𝑞 : Kapasitas kendaraan 𝑔 𝑖 : Permintaan dari pelanggan 𝑖(𝑖 = 1,2, … , 𝐿) [𝑒 𝑖 , 𝑙 𝑖 ] : Time windows pada pelanggan 𝑖 𝑒 𝑖 : Waktu paling awal untuk melakukan pelayanan pada pelanggan 𝑖
𝑙 𝑖
: Waktu paling akhir untuk melakukan pelayanan pada pelanggan 𝑖 𝑠𝑒 𝑖 : Waktu ketika pelayanan pada node pelanggan 𝑖 dimulai 𝑠𝑒 𝑗 : Waktu ketika pelayanan pada node pelanggan 𝑗 dimulai 𝑠𝑙 𝑖 : Waktu ketika pelayanan pada node pelanggan 𝑖 berakhir 𝑡 𝑖𝑗 : Waktu perjalanan dari node pelanggan 𝑖 ke node pelanggan 𝑗
𝑆
: Himpunan pelanggan |𝑆| adalah kardinalitas 𝑆

## 3 Crow Search Algorithm
Crow  Search  Algorithm (CSA)  adalah  algoritma  pencarian  metaheusristik  yang terinspirasi dari perilaku cerdas  gagak  yang menyimpan kelebihan makanan mereka di tempat  persembunyian  dan  mengambilnya  saat  makanan  dibutuhkan.  Burung  gagak diketahui  mengawasi  burung-burung  lain,  mengamati  di  mana  burung-burung  lain menyembunyikan mkanan mereka dan mencurinya begitu pemiliknya pergi. Jika seekor gagak  melakukan  pencurian,  akan  diperlukan  tindakan  pencegahan  ekstra  seperti memindahkan tempat persembunyian untuk menghindari menjadi korban di masa depan [7].
Berdasarkan pada perilaku gagak yang cerdas, algoritma metaheuristik berbasis populasi CSA akan dikembangkan. Prinsip-prinsip dari CSA sebagai berikut [7]:
1. Gagak hidup dalam bentuk kawanan.
2. Gagak menghafal posisi tempat persembunyian mereka.
3. Gagak mengikuti satu sama lain untuk melakukan pencurian.
4. Gagak melindungi tempat penyimpanan mereka dari kemungkinan pencurian.
a. Pergerakan Kawanan Gagak Jumlah  dari  gagak  (jumlah  kawanan)  adalah  N  dan  posisi  dari  gagak- 𝑖 pada  saat (iterasi) 𝑖𝑡𝑒𝑟 pada  ruang  pencarian  ditentukan  dari  vektor 𝑋 𝑖,𝑖𝑡𝑒𝑟 (𝑖 = 1,2, … , 𝑁; 𝑖𝑡𝑒𝑟 = 1,2, … , 𝑖𝑡𝑒𝑟 max ) . Sedangkan 𝑖𝑡𝑒𝑟 𝑚𝑎𝑥 adalah nilai maksimum dari iterasi. Setiap gagak memiliki memori dimana posisi dan tempat persembunyiannya telah  disimpan.  Pada  iterasi 𝑖𝑡𝑒𝑟 ,  posisi  dan  tempat  sembunyi  dari  gagak- 𝑖 ditunjukkan oleh 𝑚 𝑖,𝑖𝑡𝑒𝑟 . Posisi ini adalah yang terbaik bagi gagak- 𝑖 . Setiap gagak akan  mengingat  pengalaman  posisi  terbaiknya.  Gagak  bergerak  dilingkungan  dan mencari sumber makanan yang lebih baik (tempat persembunyian) [7].
b. Probabilitas Kewaspadaan ( AP )
Diasumsikan  bahwa  pada  iterasi 𝑖𝑡𝑒𝑟 ,  gagak- 𝑗 ingin  mengunjungi  tempat persembunyian, 𝑚 𝑗,𝑖𝑡𝑒𝑟 .  Pada  iterasi  ini,  gagak- 𝑖 memutuskan  untuk  mengikuti gagak- 𝑗 guna mendekati tempat persembunyian dari gagak- 𝑗 . Pada kasus ini ada 2 kejadian yang mungkin terjadi, yaitu:
Keadaan  1:  Gagak- 𝑗 tidak  tahu  bahwa  gagak- 𝑖 mengikutinya.  Sebagai  hasilnya, gagak- 𝑖 akan mendatangi tempat persembunyian dari gagak- 𝑗 . Pada kasus ini, posisi baru dari gagak- 𝑖 diperoleh sebagai berikut:
dimana 𝑟 𝑖 adalah  bilangan real dengan  distribusi  seragam  antara  0  dan  1  dan 𝑓𝑙 menunjukkan jarak terbang dari gagak- 𝑖 . Keadaan  2:  Gagak- 𝑗 tahu  bahwa  gagak- 𝑖 mengikutinya.  Sebagai  hasilnya,  untuk melindungi  persembunyiannya  dari  pencurian,  gagak- 𝑗 akan  mengelabui  gagak- 𝑖 dengan terbang ke posisi yang lain dari ruang pencarian.
Secara keseluruhan keadaan 1 dan 2 dapat ditunjukkan seperti berikut:
𝑥 𝑖,𝑖𝑡𝑒𝑟+1 = { 𝑥 𝑖,𝑖𝑡𝑒𝑟 + 𝑟 𝑖 × 𝑓𝑙 × (𝑚 𝑗,𝑖𝑡𝑒𝑟 − 𝑥 𝑖,𝑖𝑡𝑒𝑟 ), 𝑟 𝑗 ≥ 𝐴𝑃 𝑟𝑎𝑛𝑑𝑜𝑚, 𝑙𝑎𝑖𝑛𝑛𝑦𝑎 (10)
dimana 0 < 𝑟 𝑗 < 1 berdistribusi  seragam  dan 𝐴𝑃 menujukkan  probabilitas kewaspadaan [7].
4 Simulated Annealing
Simulated Annealing adalah algoritma yang meniru proses Annealing pada pemrosesan material  suatu  logam  padat  dan  beku  menjadi  kristal  dengan  energi  minimum  dengan ukuran kristal lebih besar sehingga dapat mengurangi cacat pada struktur logam. Proses annealing memerlukan kontrol yang hati-hati terhadap suhu dan laju pendinginan (sering disebut sebagai jadwal annealing ) agar diperoleh struktur yang keras [8].
Terdapat empat hal utama yang perlu diperhatikan dalam penggunaan algoritma ini untuk memodelkan sebuah masalah yaitu [11]:
𝑥 𝑖,𝑖𝑡𝑒𝑟+1 = 𝑥 𝑖,𝑖𝑡𝑒𝑟 + 𝑟 𝑖 × 𝑓𝑙 × (𝑚 𝑗,𝑖𝑡𝑒𝑟 − 𝑥 𝑖,𝑖𝑡𝑒𝑟 ) (9)
1. Representasi yang akurat dari konfigurasi dalam suatu permasalahan.
2. Proses modifikasi, langkah acak atau perubahan apa yang harus dilakukan terhadap elemen-elemen konfigurasi untuk menghasilkan konfigurasi berikutnya.
3. Fungsi  evaluasi  atau  fungsi  objektif  yang  dapat  menyatakan  baik  buruknya  suatu solusi terhadap permasalahan.
4. Jadwal  penurunan  suhu  dalam  proses annealing dan  berapa  lama  proses  tersebut dilakukan.
a. Probabilitas Penerimaan
Dalam  permaslahan  meminimalkan  sebarang  perubahan  yang  lebih  baik  atau menurunkan  nilai  fungsi  tujuan 𝑓 akan  diterima,  sedangkan  untuk  beberapa perubahan yang menaikkan nilai fungsi tujuan 𝑓 juga diterima dengan menghitung probabilitas 𝑃 .  Probabilitas 𝑃 disebut  probabilitas  penerimaan,  ditentukan  dengan rumus sebagai berikut:
𝑃 = 𝑒 − 𝛿𝑓 𝑇 (11)
𝑇 merupakan suhu untuk mengontrol proses annealing dan 𝛿𝑓 merupakan perubahan dari fungsi tujuan. Perubahan akan diterima jika 𝑃 > 𝑟 dengan 𝑟 merupakan bilangan real acak pada interval [0,1] [11].
b. Penurunan Suhu
Persoalan  penting  yang  lain  adalah  bagaimana  mengontrol annealing atau  proses pendinginan sehingga sistem mengalami penurunan suhu secara bertahap dari suhu yang  tinggi  sampai  akhirnya  membeku  ke  kondisi  minimum  global.  Ada  du  acara untuk mengontrol nilai pendinginan atau penurunan suhu. Biasanya digunakan dua jadwal annealing (jadwal  pendinginan)  yakni  pendinginan  linier  dan  geometris.
Untuk proses pendinginan linier, sebagai berikut
𝑇 = 𝑇 0 − 𝛽𝑡 𝑎𝑡𝑎𝑢 𝑇 = 𝑇 0 − 𝛿𝑡                            (12) dengan 𝑇 0 adalah suhu awal dan 𝑡 adalah waktu semu untuk iterasi. 𝛽 adalah nilai penurunan,  dan  dipilih  sedemikian  sehingga 𝑇 → 0 ketika 𝑡 → 𝑡𝑓 (jumlah maksimum iterasi), biasanya digunakan
𝛽 = 𝑇 0 𝑡𝑓 (13)
Pendinginan geometris pada dasarnya menurunkan suhu dengan menggunakan faktor penurunan 0 < 𝛼 < 1 sedemikian sehingga 𝑇 digantikan oleh 𝛼𝑇 atau 𝑇(𝑡) = 𝑇 0 𝛼 𝑡 , 𝑡 = 1,2, … , 𝑡𝑓                                    (14)
Keuntungan  dari  metode  ini  adalah  bahwa 𝑇 → 0 ketika 𝑡 → ∞ ,  dan  dengan demikian  tidak  perlu  untuk  menentukan  jumlah  maksimum  iterasi 𝑡𝑓 .  Proses pendinginan harus cukup lambat yang memungkinkan sistem mudah stabil [11].
5

## Hybrid CSA dengan SA untuk Menyelesaikan VRPTW
Pada bab ini akan diberikan prosedur dari Hybrid CSA dengan SA untuk menyelesaikan VRPTW. Pseudo  code dari Hybrid CSA  dengan  SAuntuk  menyelesaikan  VRPTW disajikan pada Gambar 1.
Langkah 1: Input data dan Inisialisasi Parameter CSA dan SA
Pada  langkah  ini  menginputkan  data  posisi  depot,  posisi  pelanggan,  permintaan masing-masing pelanggan, time window tiap pelanggan, banyaknya kendaraan, dan kapasitas maksimum kendaraan. Kemudian inisialisasi parameter yaitu banyak gagak ( 𝑁 ),  jarak  terbang  ( 𝑓𝑙 ),  banyak  iterasi  ( 𝑖𝑡𝑒𝑟 𝑚𝑎𝑥 ),  probabilitas  kewaspadaan  ( 𝐴𝑃 ), suhu awal ( 𝑇 0 ), suhu akhir ( 𝑇 𝑎𝑘 ), faktor penurunan suhu ( 𝛼 ). Langkah 2: Inisialisasi Posisi dan Memori Awal Gagak
Inisialisasi  posisi  gagak  dengan  membangkitkan  bilangan  real  acak  pada  interval (0,1) sebanyak  jumlah  pelanggan  yang  akan  mewakili  posisi  gagak  ( 𝑋 𝑖 )  dimana 𝑚𝑒𝑚𝑜𝑟𝑖 𝑎𝑤𝑎𝑙  =  𝑝𝑜𝑠𝑖𝑠𝑖 𝑎𝑤𝑎𝑙 . Langkah 3: Evaluasi Fungsi Tujuan
Mengevaluasi  fungsi tujuan dengan menghitung total jarak  yang dilalui kendaraan tiap rute.
Langkah 4: Memperbarui Posisi Gagak Pada langkah ini gagak akan memperbarui posisi gagak dengan memilih secara acak gagak lain untuk diikutinya. Sehingga pada langkah ini akan dibangkitkan bilangan real 𝑟 𝑗 pada  interval (0,1) secara  acak.  Kemudian  untuk  menentukan  posisi  baru 𝑥 𝑖,𝑖𝑡𝑒𝑟+1 akan menggunakan Persamaan (10) dimana 𝑟 𝑖 merupakan bilangan real yang dibangkitkan secara acak pada interval (0,1). Selanjutnya memastikan bahwa kondisi 𝑖 = 𝑁 adalah benar sehingga dapat menuju ke langkah selanjutnya. Langkah 5: Evaluasi Fungsi Tujuan Posisi Baru
Mengevaluasi  fungsi tujuan dengan menghitung total jarak  yang dilalui kendaraan tiap rute.
Langkah 6: Update Memori Gagak Pada langkah ini akan dilakukan update memori gagak dengan membandingkan nilai fungsi tujuan memori awal gagak dengan nilai fungsi tujuan posisi baru gagak. Syarat yang digunakan untuk memperbarui memori gagak adalah sebagai berikut:
𝑚 𝑖,𝑖𝑡𝑒𝑟+1 = { 𝑥 𝑖,𝑖𝑡𝑒𝑟+1 , 𝑗𝑖𝑘𝑎 𝑓(𝑥 𝑖,𝑖𝑡𝑒𝑟+1 ) < 𝑓(𝑚 𝑖,𝑖𝑡𝑒𝑟 ) 𝑚 (𝑖,𝑖𝑡𝑒𝑟) , 𝑙𝑎𝑖𝑛𝑛𝑦𝑎 (15)
dimana 𝑓 menunjukkan nilai fungsi tujuan. Jika nilai fungsi tujuan posisi baru gagak lebih  baik  daripada  nilai  fungsi  tujuan  memori  gagak,  gagak  akan  memperbarui memori dengan posisi baru [7].
Langkah 7: Mengecek Kondisi Iterasi
Pada langkah ini akan dipastikan bahwa kondisi iterasi adalah 𝑖𝑡𝑒𝑟 < 10 , jika kondisi tersebut dipenuhi maka meuju Langkah 8 tetapi jika kondisi tersebut tidak terpenuhi maka menuju Langkah 9.
Langkah 8: Simulated Annealing
Pada 10 iterasi pertama akan melalui proses hybrid dimana untuk setiap 1 iterasi pada CSA  mengalami  100  iterasi  pada  SA.  Solusi  awal  yang  digunakan  pada  langkah modifikasi  SA merupakan posisi  baru dari CSA yang memiliki nilai  fungsi tujuan terburuk.
Langkah 9: Mengecek Kondisi Iterasi Maksimum
Langkah 4-9 akan melalui perulangan hingga kondisi iterasi  yang telah ditentukan tercapai. Ketika kriteria iterasi terpenuhi, posisi terbaik dalam memori akan menjadi solusi terbaik dari permasalahan VRPTW.
Prosedur  Hybrid  Crow  Search  Algorithm  dengan  Simulated  Annealing  untuk menyelesaikan VRPTW begin Input data VRPTW ( ); Inisialisasi parameter CSA dan SA( ); Bangkitkan posisi awal ( ); //Proses Crow Search Algorithm (CSA) 𝑚𝑒𝑚𝑜𝑟𝑖 𝑎𝑤𝑎𝑙  =  𝑝𝑜𝑠𝑖𝑠𝑖 𝑎𝑤𝑎𝑙 ; Evaluasi fungsi tujuan posisi awal gagak (); do Memperbaharui posisi gagak (); Evaluasi fungsi tujuan posisi baru gagak dan update memori gagak (); if ( 0 ≤ 𝑖𝑡𝑒𝑟𝑎𝑠𝑖 & 𝑖𝑡𝑒𝑟𝑎𝑠𝑖 ≤ 10 ) Menentukan gagak terburuk ( 𝑓(𝑥) ) (); do do Modifikasi(); //Proses Simulated Annealing Evaluasi fungsi tujuan hasil modifikasi (𝑓 ∗ (𝑥)) (); 𝛿𝑓 = 𝑓 ∗ (𝑥) − 𝑓(𝑥) ; if ( 𝛿𝑓 > 0 )
𝑃(𝑝𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑎𝑠 𝑝𝑒𝑛𝑒𝑟𝑖𝑚𝑎𝑎𝑛) ← 𝑒 −𝜎𝑓 𝑇 ;
𝑟 ← random (0,1); if ( 𝑃 > 𝑟 ) terima hasil modifikasi; 𝑠𝑢𝑘𝑠𝑒𝑠 ← 𝑠𝑢𝑘𝑠𝑒𝑠 + 1 ; else tolak hasil modifikasi; 𝑔𝑎𝑔𝑎𝑙 ← 𝑔𝑎𝑔𝑎𝑙 + 1 ; end if else terima hasil modifikasi; 𝑠𝑢𝑘𝑠𝑒𝑠 ← 𝑠𝑢𝑘𝑠𝑒𝑠 + 1 ; end if while (𝑠𝑢𝑘𝑠𝑒𝑠 < 3||𝑔𝑎𝑔𝑎𝑙 < 3) ; 𝑇 ∗ ← 𝑇 𝑡 − 𝛼𝑇 0 ; while ( 𝑇 ∗ ≤ 𝑇 𝑎𝑘 ) ; Menyimpan solusi terbaik (); else Menyimpan solusi terbaik (); end if while (𝑖𝑡𝑒𝑟𝑎𝑠𝑖 ≤ 𝑚𝑎𝑥𝑖𝑡𝑒𝑟𝑎𝑠𝑖) Menentukan gagak terbaik dari memori(); End
Gambar 1. Prosedur Hybrid CSA dengan SA

## 6 Hasil dan Pembahasan
Program Hybrid CSA  dengan  SA  untuk  menyelesaikan  VRPTW  yang  dibuat  dengan bahasa pemrograman C++ menggunakan Borland C++. Program telah
diimplementasikan  dan  percobaan  dalam  beberapa  data  telah  dilakukan.  Data  yang digunakan  diperoleh  dari http://neo.lcc.uma.es/vrp/vrp-instances/capacitated-vrp-with- time-windows-instances/ . Data yang diambil terdiri dari tiga jenis, yaitu data kecil dengan 25 pelanggan, data sedang dengan 50 pelanggan, dan data besar dengan 100 pelanggan. Berikut  ini  adalah  solusi  terbaik  dari  hasil running program  yang  dibuat  dengan  nilai parameter 𝑀𝑎𝑥𝑖𝑡𝑒𝑟 , 𝑁 ,  dan 𝐴𝑃 berbeda-beda  serta  nilai 𝑓𝑙 = 2 [7] , 𝑇 0 = 1000, 𝛼 = 0.01, 𝑇 𝑎𝑘 = 0 ,  jumlah  kendaraan  25,  kapasitas  tiap  kendaraan  1000.  Hasil running program menggunakan data kecil disajikan pada Tabel 1.
Tabel 1 Hasil Running Program Data Kecil Maks Iterasi Popsize 𝑨𝑷 0.2 0.5 0.8 10 10 748 829 844 50 758 702 797 100 719 707 715 100 10 718 629 663 50 621 667 607 100 605 557 612 1000 10 567 581 654 50 613 563 576 100 577 517 568 Hasil running program menggunakan data sedang yang disajikan pada Tabel 2.
Tabel 2 Hasil Running Program Data Sedang Maks Iterasi Popsize 𝑨𝑷 0.2 0.5 0.8 10 10 2273 2006 2223 50 2061 2169 2200 100 2140 2028 2182 100 10 1990 1972 2082 50 1706 1777 1939 100 1778 1783 1838 1000 10 1780 1710 1572 50 1701 1616 1526 100 1642 1675 1666
Hasil running program menggunakan data besar yang disajikan pada Tabel 3.
Tabel 3 Hasil Running Program Data Besar Maks Iterasi Popsize 𝑨𝑷 0.2 0.5 0.8 10 10 4251 4171 4245 50 4129 4196 4191 100 4089 4102 4100 100 10 3893 4016 4123 50 3680 3886 4012 100 3744 3880 3960 1000 10 3717 3620 3718 50 3614 3540 3519 100 3389 3413 3604
Berdasarkan hasil running program,  diketahui bahwa semakin besar maksimum  iterasi dan jumlah gagak atau popsize ( 𝑁 ) maka nilai fungsi tujuan yang diperoleh cenderung semakin  baik,  sedangkan  nilai  probabilitas  kewaspadaan  ( 𝐴𝑃 )  tidak  memberikan pengaruh terhadap nilai fungsi tujuan.

## 7 Kesimpulan
Implementasi  program  untuk  contoh  kasus  dengan  menggunakan  data  kecil  dengan jumlah pelanggan 25, data sedang dengan jumlah pelanggan 50, dan data besar dengan jumlah pelanggan 100  yang masing-masing dilakukan dengan beberapa  jumlah iterasi, jumlah  gagak  atau popsize ( 𝑁 ),  dan  probabilitas  kewaspadaan  ( 𝐴𝑃 ).  Dari  hasil implementasi dapat disimpulkan bahwa semakin besar jumlah iterasi dan jumlah gagak atau popsize ( 𝑁 )  maka  nilai  fungsi  tujuan  cenderung  semakin  baik,  sedangkan  nilai
probabilitas kewaspadaan ( 𝐴𝑃 ) tidak memberikan pengaruh terhadap fungsi tujuan yang diperoleh.

## 8 Daftar Pustaka
[1]   Christofides, N., A. Migozzi dan P. Toth. 1979. “ The Vehicle Routing Problem in Combinatorial Optimization ”. N. Christofides, A. Mongozzi, P. Toth and C. Sandi. (eds). J. Wiley. 315-338.
[2]   Braysy,  O.  dan  Dullaert,  W.,  2003, A  Fast  Evolutionary  Metaheuristic  For  The Vehicle  Routing  Problem  with Time  Windows ,  International  Journal  on Artificial Intelligence Tools, Vol. 12, No. 2, 153-172.
[3] Baker,  B.M.  dan  Ayehew,  M.A.,2003,.  A  Genetic  Algorithm  For  The  Vehicle Routing Problem. Elsevier: Computers & Operations Research , Vol 30 (5), pp. 787- 800.
[4] Kallehauge, B., J. Larsen, dan O.B.G. Marsen. 2001. Lagrangean Duality Applied on  Vehicle  Routing  Problem  with  Time  Windows, Technical  Report. IMM:Technical University of Denmark.
[5] Nasser A. El-Sherbeny. 2010. Vehicle Routing With Time Windows: An Overview of Exact, Heuristic and Metaheuristic Methods . Mathematics Department, Faculty of Science, Al-Azhar University, Nasr City 1184, Cairo, Egypt.
[6] Diaz, P., Cuevas, E., dan Avalos, O., 2018, An Improved Crow Search Algorithm Applied to Energy Problems , Guadalajara University, Departement of Electronica, Guadalajara, Mexico.
[7] Askarzadeh,  A.,  2016, A  Novel  Metaheuristic  Method  for  Solving  Constrained Engineering Optimization Problems: Crow Search Algorithm, Graduate University of  Advance Technology, Institute  of  Science  and  High  Technology  and Environmental  Science,  Department  of  Energy  Management  and  Optimization, Kerman, Iran.
[8] Chibante, R., 2010, Simulated Annealing Theory and Applications , Sciyo, Crotia.
[9] Assad, A., dan Deep, K., 2018, A Hybrid Harmony Search and Simulated Annealing Algorithm for Continuous  Optimization, Indian  Institute  of Technology Roorkee, Department of Mathematics, Roorkee, India.
[10]   Pan,  F.,  Chinming,  Y.,  Wang,  K.  dan  Cao,  j.,2013.,  Research  on  the  Vehicle Routing  Problem  with  Time  Windows  Using  Firefly  Algorithm, Journal  of Computers., Vol 8., No. 9., pp. 2256-2257.
[11]  Kirkpatrick, S., Gelatt, C. D. dan Vecchi, M. P., 1983, Optimization by Simulated Annealing, Science, 220, pp, 671-680