PANDUAN APLIKASI TSP-VRP
oleh Dra. Sapti Wahyuningsih, M.Si Darmawan Satyananda, S.T, M.T
JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN IPA UNIVERSITAS NEGERI MALANG 2016
0
Pengantar Aplikasi ini dikembangkan sebagai alat bantu dalam melakukan optimasi permasalahan pada varian TSP (Traveling Salesman Problem) dan varian VRP (Vehicle Routing Problem). Varian VRP adalah topik yang berkaitan dengan usaha melakukan optimasi rute transportasi dari Depot ke Customer. VRP dikenalkan oleh Dantzig dan Ramser pada 1959, dan saat ini VRP menjadi topik penting di bidang transportasi, distribusi, dan logistik.
VRP akan menghasilkan rute perjalanan yang melayani semua customer secara optimal dalam jarak, waktu, dan kapasitas. Pengertian secara umum adalah: 1. Terdapat satu depot dan n customer yang harus dilayani oleh setiap depot. Antar depot dan customer memiliki jarak atau cost (cij) 2. Terdapat sebanyak-banyaknya m kendaraan di depot dengan kapasitas (Q) tertentu, kendaraan ini harus mengantarkan barang ke customer melalui rute tertentu 3. Setiap customer memiliki permintaan (q). Total permintaan semua customer yang dilayani oleh suatu rute tidak melebihi kapasitas kendaraan. Jenis barangnya adalah homogen dan tidak bisa dibagi. 4. Terdapat m rute perjalanan dari depot ke customer dengan biaya perjalanan seminimal mungkin 5. Setiap rute berawal dan berakhir di depot 6. Setiap customer dikunjungi tepat sekali oleh setiap rute 7. Setiap rute bisa memiliki panjang rute (durasi) maksimal
Sejumlah varian VRP muncul dikaitkan dengan kejadian di dunia nyata, antara lain:
Permintaan customer dalam satu rute dibatasi oleh kapasitas kendaraan: Capacitated VRP (CVRP)
Setiap customer memiliki batasan waktu pelayanan tertentu: VRP with Time Windows (VRPTW)
Terdapat lebih dari satu depot untuk melayani customer: Multiple Depot VRP (MDVRP)
1
Customer bisa meminta barang dari depot dan mengembalikan barang ke depot: VRP with Pick-Up and Delivery (VRPPD). Ada juga yang menyebutnya sebagai VRPDP (VRP with Delivery and Pickup) karena secara logika kendaraan harus memiliki ruang yang cukup untuk bisa diisi dengan barang yang diambil dari customer. Varian ini kemudian berkembang menjadi apakah harus mendahulukan pengantaran lalu kemudian pengambilan: VRP with Backhauls (VRPB), atau apakah melakukan keduanya secara bersamaan: VRP with Simultaneous Delivery and Pickup (VRPSDP).
Kendaraan yang digunakan memiliki kapasitas yang berbeda: Mixed Fleet VRP (MFVRP). Ada juga yang menyebutnya sebagai Heterogeneous Fleet VRP (HFVRP)
Satu kendaraan bisa menempuh beberapa rute selama dalam batasan waktu pelayanan (time horizon) tertentu: Multi Trip VRP (MTVRP)
Adanya permintaan yang melebihi kapasitas kendaraan, sehingga bisa dibagi ke dalam satuan yang lebih kecil (split load), contohnya adalah SLVRPSDP (Split-load VRP with Simultaneous Delivery and Pickup)
Adanya permintaan yang belum diketahui sejak awal: VRP with Stochastic Demands (VRPSD)
Waktu pelayanan untuk semua customer dilakukan dalam beberapa hari (umumnya diasumsikan dalam 1 hari): Periodic VRP (PVRP)
Suatu varian bisa menggunakan batasan varian lainnya, misalnya batasan permintaan yang tidak bisa melebihi kapasitas kendaraan, yang juga berlaku di semua varian. Bisa juga kombinasi beberapa batasan melahirkan varian baru, misalkan SLVRPSDP, MTVRPTW, MDVRPTW, dan sebagainya.
Dalam aplikasi ini diimplementasikan beberapa varian VRP. File bantuan ini menjelaskan konsep berbagai varian VRP dan bantuan penggunakan aplikasi ini
CVRP CVRP adalah bentuk VRP yang mungkin paling sederhana. Secara umum, ada 1 Depot dan sejumlah customer. Setiap customer memiliki permintaan (demand) tertentu. Depot 2
memiliki kendaraan dalam kapasitas yang sama. Rute disusun dengan batasan kapasitas; selama jumlah permintaan tidak melebihi kapasitas kendaraan, maka rute masih bisa dibentuk. Bila sudah melebihi kapasitas maka harus dibentuk rute baru yang diawali lagi dari depot. Pada dasarnya setiap kendaraan melayani 1 rute saja. Bila ada batasan jumlah dan kapasitas kendaraan, ini akan menjadi varian MTVRP (Multi Trip Vehicle Routing Problem), sedangkan bila jumlah depot lebih dari 1 maka ini akan menjadi MDVRP (Multi Depot Vehicle Routing Problem). Bila ada lebih dari 1 kendaraan dengan kapasitas yang berneda, maka permasalahannya adalah MFVRP.
Tujuan Tujuan CVRP adalah untuk meminimalkan banyaknya kendaraan dan waktu tempuhnya (umumnya berbanding lurus dengan biaya), dengan batasan bahwa keseluruhan permintaan customer dalam satu rute tidak boleh melebihi kapasitas kendaraan yang melayani rute tersebut.
Feasibility Suatu solusi dikatakan feasible bila keseluruhan permintaan pada suatu rute tidak melebihi kapasitas kendaraan yang melayani rute itu
VRPTW VRPTW merupakan salah satu varian VRP yang melibatkan time window, yaitu interval waktu pelayanan pada suatu customer (antara waktu buka dan waktu tutup). Bila kendaraan datang sebelum waktu buka customer, maka ada waktu tunggu yang ditambahkan. Kendaraan harus meninggalkan customer tidak lebih dari waktu tutup yang disediakan. Waktu yang dihitung pada setiap rute meliputi waktu tempuh dari depot ke customer (dan sebaliknya), waktu tempuh antar customer, waktu pelayanan pada setiap customer (loading/unloading time), dan waktu tunggu bila ada. Waktu tempuh itu tidak boleh melebihi waktu pelayanan depot (time horizon).
3
Penggunaan batasan waktu penggunaan kendaraan sehingga memungkinkan satu kendaraan melayani lebih dari 1 rute, menjadi kasus MTVRP.
Tujuan Tujuan VRPTW adalah untuk meminimalkan banyaknya kendaraan serta meminimalkan jumlah keseluruhan waktu perjalanan dan waktu tunggu dalam setiap rute.
Feasibility VRPTW dicirikan dengan tambahan batasan dari yang telah ada di VRP yaitu:
Suatu solusi menjadi tidak feasible bila customer dikunjungi melebihi batas akhir time window (melebihi waktu tutup).
Kendaraan yang datang sebelum batas awal time window (waktu buka) menyebabkan adanya tambahan waktu tunggu.
Setiap rute harus diawali dan diakhiri dalam time window suatu depot.
MTVRP Pada MDVRP, setiap kendaraan mungkin menempuh rute lebih dari sekali dalam rentang waktu (time horizon) tertentu. Pada dasarnya adalah CVRP tetapi dengan batasan adalah time horizon; selama tidak melebihi time horizon maka kendaraan masih bisa melayani rute lain. Bila melebihi, maka rute menggunakan kendaraan lain. Waktu keseluruhan yang diperhitungkan mencakup waktu yang digunakan untuk bergerak dari depot ke customer (atau sebaliknya), dari customer ke customer lain, serta waktu pelayanan pada setiap customer.
Tujuan Tujuan MTVRP adalah untuk memaksimalkan penggunaan kendaraan untuk melayani rute yang ada, dengan batasan bahwa keseluruhan waktu perjalanan tidak boleh melebihi batasan waktu penggunaan kendaraan.
Feasibility
4
Suatu solusi dikatakan feasible bila suatu kendaraan bisa melayani semaksimal mungkin rute yang ada tanpa melebihi batasan waktu penggunaan kendaraan.
MDVRP Pada MDVRP, dimungkinkan adanya lebih dari 1 depot yang melayani sejumlah customer. Setiap depot melayani sekelompok customer (tidak ada customer yang dilayani oleh lebih dari 1 depot). Ada sejumlah cara menentukan pengelompokan customer ke depot tertentu, di antaranya adalah dengan melihat jarak depot yang lebih dekat dengan suatu customer. Untuk setiap depot selanjutnya ditentukan rute paling optimal yang bisa menjangkau semua customer yang dilayani suatu depot. Kendaraan menjadi milik depot tertentu, dan akan kembali ke depot yang sama seperti saat berangkat. Seperti halnya varian VRP lain, permintaan customer pada satu depot tidak boleh melebihi kapasitas kendaraan yang tersedia. Bila hanya ada 1 depot, maka ini menjadi permasalahan CVRP (Capacitated Vehicle Routing Problem).
Tujuan Tujuannya adalah untuk meminimalkan banyaknya kendaraan yang digunakan dan jumlah keseluruhan waktu perjalanan, serta jumlah permintaan harus dilayani dari beberapa depot.
Feasibility Solusi dikatakan feasible bila setiap rute memenuhi batasan standar VRP, dan berawal serta berakhir di depot yang sama. MFVRP Pada berbagai varian VRP lain, kapasitas kendaraan dianggap sama. Dalam kenyataannya, bisa jadi kendaraan yang digunakan memiliki kapasitas yang berbeda. Inilah yang menjadi ciri dari MFVRP. Tersedia sejumlah kendaraan di depot, setiap kendaraan bisa memiliki kapasitas yang berbeda, dan setiap kendaraan melayani rute
5
dengan total permintaan pengantaran yang tidak melebihi kapasitasnya, dan dengan jarak tempuh sekecil mungkin. Pada kasus dimana hanya ada 1 macam kendaraan dengan kapasitas yang sama, maka problemnya adalah CVRP.
Tujuan Tujuan MFVRP adalah untuk meminimalkan banyaknya kendaraan yang memiliki kapasitas berbeda, dan meminimalkan waktu tempuhnya (berbanding lurus dengan biaya), dengan batasan bahwa keseluruhan permintaan customer dalam satu rute tidak boleh melebihi kapasitas kendaraan yang melayani rute tersebut.
Feasibility Suatu solusi dikatakan feasible bila keseluruhan permintaan pada suatu rute tidak melebihi kapasitas kendaraan yang melayani rute itu
VRPDP Pada umumnya varian VRP hanya mengantarkan barang sesuai permintaan pengguna. Dengan kata lain, ketika kembali ke depot, kendaraan dalam keadaan kosong. Kenyataannya ada barang yang harus dikembalikan ke depot, sehingga kapasitas kendaraan yang tersisa bisa dimanfaatkan untuk hal ini.
VRPPD (VRP with Pick-Up and Delivery) atau ada yang menyebutnya sebagai VRPDP (VRP with Delivery and Pick-Up) adalah varian VRP yang memungkinkan kendaraan membawa barang permintaan customer (pelanggan yang menerima disebut pelanggan linehaul), sekaligus membawa barang dari customer ke depot (pelanggan yang mengirim disebut sebagai pelanggan backhaul). Dengan demikian pada saat penentuan rute juga harus mempertimbangkan apakah kapasitas kendaraan masih memungkinkan untuk diisi barang yang diambil dari customer (karena pada saat yang sama kendaraan masih terisi muatan).
6
Dengan pertimbangan ketersediaan tempat di kendaraan, terdapat beberapa varian: VRPB (VRP with Backhaul) yang melakukan pengiriman lebih dulu lalu mengambil barang dari customer, VRPSDP (VRP with Simultaneous Delivery and Pickup) yang melakukan pengantaran dan pengambilan secara bersamaan, dan SLVRPSDP(Split-Load VRP with Simultaneous Delivery and Pickup) yang melakukan pemisahan barang disesuaikan dengan kapasitas maksimum kendaraan.
VRPB Seperti yang disebutkan di VRPDP, salah satu alternatif untuk kendaraan membawa barang permintaan pelanggan sekaligus membawa barang pelanggan ke depot adalah dengan melakukannya bergantian. Dalam VRPB dilakukan pengantaran ke semua pelanggan (pelanggan yang menerima disebut pelanggan linehaul), lalu dilakukan pengambilan barang dari pelanggan (pelanggan yang mengirimkan disebut pelanggan backhaul). Dengan demikian satu pelanggan mungkin didatangi dua kali oleh kendaraan yang sama dalam satu rute yang sama. Hal ini dikarenakan fakta bahwa pintu kendaraan ada di sisi belakang yang menyulitkan proses bongkar-muat bila pengantaran dan pengambilan dilakukan pada saat yang sama.
Tujuan Tujuan VRPB adalah untuk mendapatkan rute yang meminimalkan jarak perjalanan (panjang rute), dan untuk membawa barang dari depot ke pelanggan dan dari pelanggan ke depot semaksimal mungkin.
Feasibility Solusi permasalahan yang feasible adalah sejumlah rute dimana semua pengantaran dilakukan lebih dulu sebelum dilakukan pengambilan, dan kapasitas kendaraan tidak dilanggar masing-masing oleh jumlah permintaan pelanggan linehaul dan jumlah pelanggan backhaul.
VRPSDP
7
Seperti yang disebutkan di VRPDP, salah satu alternatif untuk kendaraan membawa barang permintaan pelanggan linehaul sekaligus membawa barang pelanggan backhaul ke depot adalah dengan melakukannya bersamaan (dalam VRPB dilakukan secara bergantian). Dengan cara ini satu pelanggan hanya didatangi satu kali oleh kendaraan dalam rutenya. Pengaturannya adalah dengan memperhitungkan selisih antara pengiriman dan pengambilan per pelanggan. Selisih yang terbesar akan didulukan sehinggan muatan akan cukup dibawa oleh satu kendaraan. Bila ada permintaan yang tidak terpenuhi maka pelayanan dilakukan dalam rute yang baru.
Tujuan Tujuan VRPSDP adalah untuk mendapatkan rute yang meminimalkan jarak perjalanan (panjang rute), dan untuk membawa barang dari depot ke pelanggan sekaligus dari pelanggan ke depot semaksimal mungkin.
Feasibility Solusi permasalahan yang feasible adalah sejumlah rute dimana semua pengantaran dan pengambilan bisa dilakukan secara bersamaan, dan kapasitas kendaraan tidak dilanggar oleh jumlah permintaan pelanggan linehaul dan jumlah pelanggan backhaul.
SLVRPSDP SLVRPSDP adalah salah satu varian VRPSDP, walaupun prinsip Split-load bisa digunakan di berbagai varian VRP yang lain. Ini didasari fakta bahwa ada permintaan (pengantaran atau pengambilan) yang mungkin melebihi kapasitas kendaraan. Untuk itu permintaan pelanggan dibagi menyesuaikan kapasitas maksimum kendaraan, sehingga pelanggan yang sama bisa didatangi oleh kendaraan yang berbeda.
Tujuan Tujuan SLVRPSDP adalah untuk mendapatkan rute yang meminimalkan banyak kendaraan, jarak perjalanan (panjang rute) untuk membawa barang dari depot ke pelanggan sekaligus dari pelanggan ke depot semaksimal mungkin. 8
Feasibility Solusi permasalahan yang feasible adalah sejumlah rute dimana semua pengantaran dan pengambilan bisa dilakukan secara bersamaan, pelanggan bisa didatangi oleh lebih dari satu kendaraan, dan kapasitas kendaraan tidak dilanggar oleh jumlah permintaan pelanggan linehaul dan jumlah pelanggan backhaul.
9
Penggunaan Aplikasi
Aplikasi yang dibuat mengimplementasikan 8 varian VRP: CVRP, VRPTW, MTVRP, MDVRP, MFVRP, dan VRPB, VRPSDP, dan SLVRPSDP. Algoritma yang digunakan belum bisa dipastikan adalah yang paling optimal. Buka aplikasi dari foldernya, lalu pilih menu File - Baru. Selanjutnya akan ditampilkan pilihan jenis optimasi yang dilakukan. Pilih VRP.
Tampilan berikutnya adalah untuk menentukan jenis algoritma dalam VRP serta cara inputnya. Cara input ada dua macam: input titik secara manual dengan menggunakan mouse, dan dengan membuka file data. Pilih salah satu varian VRP dan aksinya.
10
Input titik secara manual Input secara manual dilakukan dengan menggunakan mouse (untuk menentukan titik) serta keyboard (untuk menentukan bobot, serta parameter lainnya yang diperlukan).
Klik mouse pada bidang gambar untuk menentukan posisi titik. Titik yang berwarna kuning menyatakan depot, sedangkan yang berwarna hijau menyatakan customer. Untuk menghapus titik, klik pada button "Hapus titik terakhir". Sedikit perkecualian adalah pada MDVRP, karena ada lebih dari 1 depot maka disediakan pilihan untuk membuat depot atau customer.
11
Klik pada opsi Depot untuk menyatakan titik sebagai Depot (titik berwarna kuning), dan opsi Customer (titik berwarna hijau). Urutannya adalah menentukan depot lebih dulu, lalu menentukan customer.
Membuka file data File yang dibuka adalah file yang disimpan oleh aplikasi ini (lihat di penyimpanan data). Setelah memilih untuk membuka file data, maka tentukan nama dan lokasi file data. File ini terkait dengan jenis optimasi (TSP atau VRP) dan varian yang telah ditentukan pada awal penggunaan aplikasi. Bila membuka file yang tidak sesuai maka ada peringatan yang ditampilkan. File ini adalah file teks yang antara lain berisi informasi varian VRP, jumlah depot, jumlah customer, posisi titik di bidang gambar, bobot sisi, dan parameter lain yang diperlukan (kapasitas kendaraan, waktu pelayanan, tiime window, dan lainnya).
Menentukan bobot sisi Bobot sisi diisikan melalui grid pada tab Matriks Bobot. Banyaknya baris dan kolom menyesuaikan dengan banyaknya titik dalam bidang gambar. Isikan nilai bobot sisi pada masing-masing sel. Karena grafnya tidak berarah maka pengisian pada sel baris i kolom j akan sekaligus mengisi sel baris j kolom i.
12
Menentukan parameter Bobot sisi diisikan melalui grid pada tab Matriks Bobot. Banyaknya baris dan kolom menyesuaikan dengan banyaknya titik dalam bidang gambar. Isikan nilai bobot sisi pada masing-masing sel. Karena grafnya tidak berarah maka pengisian pada sel baris i kolom j akan sekaligus mengisi sel baris j kolom i.
13
Menyimpan file data Semua parameter, bobot sisi, dan posisi titik bisa disimpan ke dalam file untuk digunakan kembali. Pilih menu File - Simpan Graf untuk menyimpannya. Tentukan nama file dan foldernya. Mendapatkan hasil Setelah data diinputkan, maka jalankan klik pada button Proses VRP untuk mengeksekusi varian VRP yang dipilih sebelumnya. Lihat hasilnya berupa teks di tabsheet Hasil, dan hasil berupa graf di tabsheet Graf Hasil.
14
TSP (Traveling Salesman Problem) TSP adalah permasalahan menentukan rute terpendek yang dilalui salesman ke semua titik dalam graf tepat sekali dan kembali ke titik awal (membentuk sikel Hamilton). Dalam TSP umumnya tanpa pertimbangan adanya batasan waktu atau kapasitas, hanya pertimbangan jarak (bobot) antar sisi.
Usaha mencari rute terpendek dilakukan dengan mengembangkan berbagai algoritma, sampai saat ini usaha itu terus berlangsung.
Sejumlah varian TSP juga dimunculkan menyesuaikan dengan kejadian di lapangan, diantaranya TSP (standar), TSPTW (TSP with Time Windows), dan MTSP (Multiple TSP).
TSP bisa diselesaikan dengan berbagai algoritma, baik yang Eksak (misal dengan Branch and Bound, Brute force), Heuristic (misal dengan Nearest Neighbor, Sequential Insertion, Christofides), ataupun dengan algoritma metaheuristic (misal dengan Genetic Algorithm, Ant-colony Optimization). Masing-masing memiliki kelebihan, misalkan eksak yang sesuai untuk permasalahan dengan titik yang sedikit, atau metaheuristic yang sesuai untuk permasalahan besar yang memerlukan waktu lama bila diselesaikan secara eksak.
TSPTW TSPTW mengkombinasikan penyusunan sikel Hamilton dengan batasan waktu (time window) dimana pemilihan titik berikutnya dari satu titik memperhitungkan time window. Pada setiap titik didefinisikan waktu buka, waktu tutup, dan waktu layanan. Ini mirip dengan kasus VRPTW, hanya saja tidak ada muatan yang harus diantarkan ke pelanggan, dan tidak ada batasan kendaraan dan kapasitasnya. Untuk mengetahui waktu datang, diperhitungkan waktu berangkat dari titik sebelumnya dan jarak antar titik.
Tujuan Tujuan TSPTW adalah untuk meminimalkan rute yang melewati semua titik tepat sekali dengan memperhatikan batasan waktu yang tersedia pada setiap titik. 15
Feasibility Suatu solusi dikatakan feasible bila didapatkan rute yang melewati semua titik dengan panjang minimal dan tidak melanggar time window pada setiap titik.
MTSP MTSP menggunakan lebih dari m salesman dimana setiap salesman harus membentuk rute ke sejumlah kota, dan tidak ada kota yang dikunjungi oleh lebih dari 1 salesman. Pengelompokan kota yang harus dikunjungi salesman bisa berdasarkan kedekatan antara kota dengan salesman atau dengan pertimbangan lain (misal dengan menggunakan sweep algorithm). Dalam VRP, permasalahan ini mirip dengan MDVRP.
Tujuan Tujuan MTSP adalah untuk menghasilkan m rute dengan cost minimal, dan memastikan bahwa semua kota telah dikunjungi salesman tepat sekali.
Feasibility Solusi yang feasible adalah bila didapatkan m rute yang melewati semua kota dalam kelompoknya dan kembali lagi ke kota awal dengan panjang minimal.
Penggunaan aplikasi TSP Aplikasi yang dibuat mengimplementasikan 3 varian TSP: TSP (standar), TSPTW, dan MTSP. Algoritma yang digunakan belum bisa dipastikan adalah yang paling optimal.
Penentuan varian TSP Buka aplikasi dari foldernya, lalu pilih menu File - Baru. Selanjutnya akan ditampilkan pilihan jenis optimasi yang dilakukan. Pilih TSP.
16
Tampilan berikutnya adalah untuk menentukan jenis varian TSP serta cara inputnya. Cara input ada dua macam: input titik secara manual dengan menggunakan mouse, dan dengan membuka file data. Pilih salah satu varian TSP dan aksinya.
17
Input titik secara manual Input secara manual dilakukan dengan menggunakan mouse (untuk menentukan titik) serta keyboard (untuk menentukan bobot, serta parameter lainnya yang diperlukan).
Klik mouse pada bidang gambar untuk menentukan posisi titik. Untuk menghapus titik, klik pada button "Hapus titik terakhir".
Membuka file data File yang dibuka adalah file yang disimpan oleh aplikasi ini. Setelah memilih untuk membuka file data, maka tentukan nama dan lokasi file data. File ini terkait dengan jenis algoritma yang telah ditentukan pada awal penggunaan aplikasi. Bila membuka file yang tidak sesuai maka ada peringatan yang ditampilkan. File ini adalah file teks yang antara lain berisi informasi algoritma TSP, jumlah titik, posisi titik di bidang gambar, bobot sisi, dan parameter lain yang diperlukan.
Menentukan bobot sisi Bobot sisi diisikan melalui grid pada tab Matriks Bobot. Banyaknya baris dan kolom menyesuaikan dengan banyaknya titik dalam bidang gambar. Isikan nilai bobot 18
sisi pada masing-masing sel. Karena grafnya tidak berarah maka pengisian pada sel baris i kolom j akan sekaligus mengisi sel baris j kolom i.
Menyimpan file data Semua parameter, bobot sisi, dan posisi titik bisa disimpan ke dalam file untuk digunakan kembali. Pilih menu File - Simpan Graf untuk menyimpannya. Tentukan nama file dan foldernya.
Mendapatkan hasil Setelah data diinputkan, maka jalankan klik pada button Proses TSP untuk mengeksekusi algoritma yang dipilih sebelumnya. Lihat hasilnya berupa teks di tabsheet Hasil, dan hasil berupa graf di tabsheet Graf Hasil.
19
20