Anda di halaman 1dari 15

Studi Kasus : VRP-TW dengan 2 truk berkapasitas 100 satuan / mobil

berkecepatan rata-rata 60 km / jam. Jumlah toko konsumen adalah 5 toko. Lama


pelayanan di tiap toko adalah 10 menit (0,167 jam). Jam kerja kendaraan diawali
pukul 8 pagi dan TW-Awal dan TW-Akhir digambarkan dengan jumlah menit
setelah pukul 8.00 pagi. Matriks Demand dan TW masing-masing toko sebagai
berikut :

Toko Demand TW-Awal TW-Akhir


1 25 90 540
2 50 200 420
3 50 120 600
4 10 180 600
5 15 330 540

Matriks Jarak Antara Gudang (G) dan masing-masing toko adalah sebagai berikut:

Jarak G 1 2 3 4 5
G 0 100 180 160 110 140
1 100 0 60 80 50 120
2 180 60 0 90 30 70
3 160 80 90 0 50 80
4 110 50 30 50 0 60
5 140 120 70 80 60 0

Penyelesaian :
Inisiasi solusi awal dengan metode nearest neighborhood semula tidak ada rute
dan nilai Total Travel Time = 0, nilai awal variabel Sisa Demand untuk semua
toko = Demand masing-masing toko, nilai awal variabel Muatan untuk masing-
masing truk = Kapasitas masing-masing truk (karena asumsi truk dimuati penuh),
nilai awal variabel id_konsumen = 1 (untuk variabel penghitung jumlah konsumen
yang dilayani oleh sebuah truk), nilai awal variabel v_terpakai = 1 (untuk variabel
penghitung jumlah truk yang dipakai untuk menyelesaikan rute), nilai awal
counter_jam masing-masing truk adalah 0 pada awal hari kerja, nilai awal variabel
counter_node = 1 (untuk menghitung jumlah konsumen keseluruhan)
- Pilih konsumen terdekat dari lokasi gudang, yaitu Toko-1
- Pilih kendaraan kapasitas terbesar,karena sama boleh sembarang, misal
kita ambil Truk-1
- Update Rute : Rute(1,1) = Toko-1
- Counter_jam Truk-1 = 0 + (100/60) X 60 menit = 100 > TW-Awal Toko-
1 Bisa Langsung Dilayani karena Toko-1 sudah buka
- Truk-1 selesai dilayani oleh Toko-1 pada saat counter_jam Truk-1 = 100 +
waktu pelayanan 10 menit = 110
- Update nilai Total Travel Time = 0 + 110 = 110
- Update nilai Total Travel Distance = 0 + 100 = 100
- Sisa Demand Toko-1 = 25 < Muatan Truk-1 = 100 sehingga : Sisa
Demand Toko-1 = 25 – 25 = 0 dan Muatan Truk-1 = 100 – 25 = 75
- Id_konsumen = 1 + 1 = 2 (bersiap melayani konsumen yang kedua untuk
Truk-1) dan counter_node = 1 + 1 = 2
- Cek jumlah konsumen yang sudah dilayani melalui variabel counter_node
<= n dan hasilnya < sehingga lanjut untuk pencarian rute berikut
- Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani konsumen berikut
(konsumen yang dilayani berikut adalah konsumen yang posisinya
terdekat dari Toko-1 yaitu Toko-4)  Tidak ada pergantian mobil, tetap
melanjutkan rute untuk Truk-1
- Pilih Konsumen berikut yang terdekat dari Toko-1, yaitu Toko-4
- Update Rute : Rute(1,2) = Toko-4
- Counter_jam Truk-1 = 110 + 50/60*60 = 160 < TW-Awal Toko-4
sehingga ada waktu menunggu selama 180 – 160 = 20 menit
- Truk-1 selesai dilayani oleh Toko-4 pada saat counter_jam Truk-1 = 160 +
waktu pelayanan 10 menit + waktu tunggu 20 menit = 190
- Update nilai Total Travel Time = 110 + 50+ 20 + 10 = 190
- Update nilai Total Travel Distance = 0 + 100 + 50 = 150
- Sisa Demand Toko-4 = 10 < Muatan Truk-1 = 75 sehingga : Sisa Demand
Toko-1 = 10 – 10 = 0 dan Muatan Truk-1 = 75 – 10 = 65
- Id_konsumen = 2 + 1 = 3 (bersiap melayani konsumen yang ketiga untuk
Truk-1) dan counter_node = 2 + 1 = 3
- Cek jumlah konsumen yang sudah dilayani melalui variabel counter_node
<= n dan hasilnya < sehingga lanjut untuk pencarian rute berikut
- Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani konsumen berikut
(konsumen yang dilayani berikut adalah konsumen yang posisinya
terdekat dari Toko-4 yaitu Toko-2)  Tidak ada pergantian mobil, tetap
melanjutkan rute untuk Truk-1
- Pilih Konsumen berikut yang terdekat dari Toko-4, yaitu Toko-2
- Update Rute : Rute(1,3) = Toko-2
- Counter_jam Truk-1 = 190 + 30/60*60 = 220> TW-Awal Toko-2 Bisa
Langsung Dilayani karena Toko-2 sudah buka
- Truk-1 selesai dilayani oleh Toko-2 pada saat counter_jam Truk-1 = 220 +
waktu pelayanan 10 menit = 230
- Update nilai Total Travel Time = 110 + 50+ 20 + 10 + 30 + 10 = 230
- Update nilai Total Travel Distance = 100 + 50 + 30 = 180
- Sisa Demand Toko-2 = 50 < Muatan Truk-1 = 65 sehingga : Sisa Demand
Toko-2 = 50 – 50 = 0 dan Muatan Truk-1 = 65 – 50 = 15
- Id_konsumen = 3 + 1 = 4 (bersiap melayani konsumen yang keempat
untuk Truk-1) dan counter_node = 3 + 1 = 4
- Cek jumlah konsumen yang sudah dilayani melalui variabel counter_node
<= n dan hasilnya < sehingga lanjut untuk pencarian rute berikut
- Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani konsumen berikut
(konsumen yang dilayani berikut adalah konsumen yang posisinya
terdekat dari Toko-2 yaitu Toko-5)  Tidak ada pergantian mobil, tetap
melanjutkan rute untuk Truk-1
- Pilih Konsumen berikut yang terdekat dari Toko-2, yaitu Toko-5
- Update Rute : Rute(1,4) = Toko-5
- Counter_jam Truk-1 = 230 + 70/60*60 = 300 < TW-Awal Toko-5 ada
waktu menunggu selama 330 – 300 = 30 menit
- Truk-1 selesai dilayani oleh Toko-5 pada saat counter_jam Truk-1 = 300 +
waktu pelayanan 10 menit + waktu tunggu 30 menit = 340
- Update nilai Total Travel Time = 230 + 70 + 10 + 30 = 340
- Update nilai Total Travel Distance = 100 + 50 + 30 + 70 = 250
- Sisa Demand Toko-5 = 15 < Muatan Truk-1 = 15 sehingga : Sisa Demand
Toko-5 = 15 – 15 = 0 dan Muatan Truk-1 = 15 – 15 = 0
- Id_konsumen = 4 + 1 = 5 (bersiap melayani konsumen yang kelima untuk
Truk-1) dan counter_node = 4 + 1 = 5
- Cek jumlah konsumen yang sudah dilayani melalui variabel counter_node
<= n dan hasilnya = sehingga lanjut untuk konsumen yang terakhir
- Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani konsumen berikut
(konsumen yang dilayani berikut adalah konsumen yang posisinya
terdekat dari Toko-5 yaitu Toko-3)  Ganti ke Truk-2 karena muatan
Truk-1 sudah maksimal terpakai habis 100 satuan.
- V_terpakai = 1 + 1 = 2 (variabel penghitung jumlah truk yang dipakai
untuk menyelesaikan rute) dan id_konsumen = 1
- Cek apakah jumlah truk yang dibutuhkan tersedia  ya (karena
perusahaan punya truk sejumlah 2 unit)
- Pilih Konsumen berikut yang terdekat dari Gudang, yaitu Toko-3
- Update Rute : Rute(2,1) = Toko-3
- Counter_jam Truk-2 = 0 + 160/60*60 = 160 > TW-Awal Toko-3 Bisa
Langsung Dilayani karena Toko-3 sudah buka
- Truk-2 selesai dilayani oleh Toko-3 pada saat counter_jam Truk-2 = 160 +
waktu pelayanan 10 menit = 170
- Update nilai Total Travel Time = 340 + 170 = 510
- Update nilai Total Travel Distance = 100 + 50 + 30 + 70 + 160 = 410
- Sisa Demand Toko-3 = 50 < Muatan Truk-2 = 100 sehingga : Sisa
Demand Toko-5 = 50 – 50 = 0 dan Muatan Truk-2 = 100 – 50 = 50
- Id_konsumen = 1 + 1 = 2 (bersiap melayani konsumen yang kedua untuk
Truk-2) dan counter_node = 5 + 1 = 6
- Cek jumlah konsumen yang sudah dilayani melalui variabel counter_node
<= n dan hasilnya > sehingga nilai variabel kunci dalam MACS-VEI yaitu
Total Visited Konsumen = counter_node -1 = 5
- Kembalikan semua nilai variabel Muatan untuk masing-masing truk
menjadi sama dengan kapasitas maksimal masing-masing truk dan
variabel Sisa_Demand untuk masing-masing konsumen menjadi sama
dengan Demand untuk masing-masing konsumen
- Nilai variabel ψgb menyimpan semua nilai variabel v_terpakai, Total
Travel Time, Total Travel Distance, Total Visited Konsumen, serta Rute.
- v_terpakai = 2; Total Travel Time = 510; Total Travel Distance = 410;
Total Visited Konsumen = 5; rute = Truk-1 (1-4-2-5); Truk-2 (3)
Setelah mendapat solusi awal dari metode nearest neighbour, baru metode MACS
dapat dimulai dengan iterasi diawali dengan ACS-VEI kemudian ACS-Time, dan
apabila menemukan solusi yang lebih baik baru melakukan update nilai variabel
ψgb .

Metode ACS-VEI
 dilakukan dengan mengurangi Truk yang digunakan sebanyak 1 buah 
v_VEI = v_terpakai-1  2 (dilihat dari hasil nearest neigbor) - 1 = 1
 melakukan pembuatan rute baru dengan modul new_ant (ACS-VEI dan
ACS-Time sama)

Modul new_ant diawali dengan mengecek apakah counter_konsumen <=
jumlah konsumen  1 <= 5

Cek apakah id_konsumen=1 ada di rute,  belum ada rute yang dipilih 
tidak

Tambahkan id_konsumen = 1 pada himpunan NIK (himpunan konsumen
yang belum dikunjungi,nilai awal anggota_NIK = 0)  anggota_NIK =
0+1 = 1

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=0; TW Awal konsumen Toko-1 = 90;TW
Akhir Toko-1 = 540; Muatan=100 > 25 (demand Toko-1)  ya,semua syarat
terpenuhi

Menghitung Delivery Time ke Toko-1; Delta Time ke Toko-1; Distance
Gudang ke Toko-1; Closeness Gudang ke Toko-1; Nilai Akhir Gudang ke
Toko-1; Jumlah Nilai Akhir.

Delivery Time ke Toko-1 = max{0 + (100/60) X 60 menit = 100,
90} = 100

Delta Time ke Toko-1 = 100 – 0 = 100

Distance Gudang ke Toko-1 = 100 x (540-0) = 54000

Distance Gudang ke Toko-1 = max{ 1, 54000-0} = 54000

Closeness Gudang ke Toko-1 = 1/54000 = 1.851 x 10-5

Nilai Akhir Gudang ke Toko-1 = [1/(5x510)] x 1.851 x 10-5 = 7.26 x
10-9

Jumlah Nilai Akhir = 0 + 7.26 x 10-9= 7.26 x 10-9

Menambahkan id_konsumen = 1+1 = 2

Mengecek apakah id_konsumen<=jumlah konsumen  2 <= 5

Cek apakah id_konsumen = 2 ada di rute,  belum ada rute yang dipilih
 tidak

Tambahkan id_konsumen = 2 pada himpunan NIK  anggota_NIK = 1+1
=2

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=0; TW Awal konsumen Toko-2 = 200;
TW Akhir Toko-2 = 420; Muatan=100 > 50 (demand Toko-2)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-2; Delta Time ke Toko-2; Distance
Gudang ke Toko-2; Closeness Gudang ke Toko-2; Nilai Akhir Gudang ke
Toko-2; Jumlah Nilai Akhir.

Delivery Time ke Toko-2 = max{0 + (180/60) X 60 menit = 180,
200} = 200

Delta Time ke Toko-2 = 200 – 0 = 200

Distance Gudang ke Toko-2 = 200 x (420-0) = 84000

Distance Gudang ke Toko-2 = max{ 1, 84000-0} = 84000

Closeness Gudang ke Toko-2 = 1/84000 = 1.19 x 10-5

Nilai Akhir Gudang ke Toko-2 = [1/(5x510)] x 1.19 x 10 -5 = 4.67 x
10-9

Jumlah Nilai Akhir = 7.26 x 10-9 + 4.67 x 10-9 = 11.93 x 10-9

Menambahkan id_konsumen = 2+1 = 3

Mengecek apakah id_konsumen<=jumlah konsumen  3 <= 5

Cek apakah id_konsumen =3 ada di rute,  belum ada rute yang dipilih
 tidak

Tambahkan id_konsumen = 3 pada himpunan NIK  anggota_NIK = 2
+1 = 3

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=0; TW Awal konsumen Toko-3 = 120;
TW Akhir Toko-3 = 600; Muatan=100 > 50 (demand Toko-3)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-3; Delta Time ke Toko-3; Distance
Gudang ke Toko-3; Closeness Gudang ke Toko-3; Nilai Akhir Gudang ke
Toko-3; Jumlah Nilai Akhir.

Delivery Time ke Toko-3 = max{0 + (160/60) X 60 menit = 160,
120} = 160

Delta Time ke Toko-3 = 160 – 0 = 160

Distance Gudang ke Toko-3 = 160 x (600-0) = 96000

Distance Gudang ke Toko-3 = max{ 1, 96000-0} = 96000

Closeness Gudang ke Toko-3 = 1/96000 = 1.042 x 10-5

Nilai Akhir Gudang ke Toko-3 = [1/(5x510)] x 1.042 x 10 -5= 4.087
x 10-9

Jumlah Nilai Akhir = 4.087 x 10-9 + 11.93 x 10-9 = 16.017 x 10-9

Menambahkan id_konsumen = 3+1 = 4

Mengecek apakah id_konsumen<=jumlah konsumen  4 <= 5

Cek apakah id_konsumen = 4 ada di rute,  belum ada rute yang dipilih
 tidak

Tambahkan id_konsumen = 4 pada himpunan NIK  anggota_NIK = 3 +
1=4

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=0; TW Awal konsumen Toko-4 = 180;
TW Akhir Toko-4 = 600; Muatan=100 > 10 (demand Toko-4)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-4; Delta Time ke Toko-4; Distance
Gudang ke Toko-4; Closeness Gudang ke Toko-4; Nilai Akhir Gudang ke
Toko-4; Jumlah Nilai Akhir.

Delivery Time ke Toko-4 = max{0 + (110/60) X 60 menit = 110,
180} = 180

Delta Time ke Toko-4 = 180 – 0 = 180

Distance Gudang ke Toko-4 = 180 x (600-0) = 108000

Distance Gudang ke Toko-4 = max{ 1, 108000-0} = 108000

Closeness Gudang ke Toko-4 = 1/108000 = 9.26 x 10-6

Nilai Akhir Gudang ke Toko-4 = [1/(5x510)] x 9.26 x 10-6= 3.63 x
10-9

Jumlah Nilai Akhir = 16.017 x 10-9 + 3.63 x 10-9 = 19.647 x 10-9

Menambahkan id_konsumen = 4+1 = 5

Mengecek apakah id_konsumen<=jumlah konsumen  5 <= 5

Cek apakah id_konsumen = 5 ada di rute  belum ada rute yang dipilih 
tidak

Tambahkan id_konsumen = 5 pada himpunan NIK  anggota_NIK = 4 +
1=5

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=0; TW Awal konsumen Toko-5 = 330;
TW Akhir Toko-5 = 540; Muatan=100 > 15 (demand Toko-5)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-5; Delta Time ke Toko-5; Distance
Gudang ke Toko-5; Closeness Gudang ke Toko-5; Nilai Akhir Gudang ke
Toko-5; Jumlah Nilai Akhir.

Delivery Time ke Toko-5 = max{0 + (140/60) X 60 menit = 140,
330} = 330

Delta Time ke Toko-5 = 330 – 0 = 330

Distance Gudang ke Toko-5 = 330 x (540-0) = 178200

Distance Gudang ke Toko-5 = max{ 1, 178200-0} = 178200

Closeness Gudang ke Toko-5 = 1/178200 = 5.611 x 10-6

Nilai Akhir Gudang ke Toko-5 = [1/(5x510)] x 5.611 x 10 -6 =2.2 x
10-9

Jumlah Nilai Akhir = 19.647 x 10-9 + 2.2 x 10-9 = 21.85 x 10-9

Menambahkan id_konsumen = 5+1 = 6

Mengecek apakah id_konsumen<=jumlah konsumen  6 > 5

Cek apakah anggota_NIK=0  tidak, anggota_NIK = 5

Random_pilih_node = 0.62

Cek apakah random_pilih_node <= 0.9  0.62 <=0.9  eksploitasi

Pilih toko dengan Nilai Akhir Tertinggi  Toko-1 (7.26 x 10-9)

Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani Toko-1  Tidak ada
pergantian mobil, tetap melanjutkan rute untuk Truk-1

Simpan rute(1,1)= Toko-1

Anggota_NIK = 0; Counter_NIK = 1; random_pilih_node = 0

Counter_jam Truk-1 = 0 + (100/60) X 60 menit = 100 > TW-Awal Toko-
1 Bisa Langsung Dilayani karena Toko-1 sudah buka

Truk-1 selesai dilayani oleh Toko-1 pada saat counter_jam Truk-1 = 100 +
waktu pelayanan 10 menit = 110

Update nilai Total Travel Time = 0 + 110 = 110

Update nilai Total Travel Distance = 0 + 100 = 100

Sisa Demand Toko-1 = 25 < Muatan Truk-1 = 100 sehingga : Sisa
Demand Toko-1 = 25 – 25 = 0 dan Muatan Truk-1 = 100 – 25 = 75

Counter_konsumen = 1 + 1 = 2 (bersiap melayani konsumen yang kedua
untuk Truk-1) dan counter_node = 1 + 1 = 2

Pheromone trail (0,1) = (1-0.1)(1/(5x110)) + 0.1(1/(5x510)) = 1.64 x 10 -3 +
3.92 x 10-5 = 1.68 x 10-3

Truk-1 berada di Toko-1

Cek apakah counter_node <= n  2 <=5

Cek apakah counter_konsumen <= n  2 <= 5

Cek id_konsumen = 1 ada di rute  ya

Id_konsumen =1+1 = 2

Cek apakah id_konsumen = 2 ada di rute  belum

Tambahkan id_konsumen = 2 pada himpunan NIK  anggota_NIK = 0 +
1=1

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=110; TW Awal konsumen Toko-2 = 200;
TW Akhir Toko-2 = 420; Muatan=75 > 50 (demand Toko-2)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-2; Delta Time ke Toko-2; Distance
Gudang ke Toko-2; Closeness Gudang ke Toko-2; Nilai Akhir Gudang ke
Toko-2; Jumlah Nilai Akhir.

Delivery Time ke Toko-2 = max{110 + (60/60) X 60 menit = 170,
200} = 200

Delta Time ke Toko-2 = 200 – 110 = 90

Distance Gudang ke Toko-2 = 90 x (420-110) = 27900

Distance Gudang ke Toko-2 = max{ 1, 27900-0} = 27900

Closeness Gudang ke Toko-2 = 1/27900 = 3.58 x 10-5

Nilai Akhir Gudang ke Toko-2 = [1/(5x510)] x 3.58 x 10 -5 = 1.4 x
10-8

Jumlah Nilai Akhir = 0 + 1.4 10-8 = 1.4 x 10-8

Menambahkan id_konsumen = 2+1 = 3

Mengecek apakah id_konsumen<=jumlah konsumen  3 <= 5

Cek apakah id_konsumen = 3 ada di rute  belum

Tambahkan id_konsumen = 3 pada himpunan NIK  anggota_NIK = 1
+1 = 2

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam = 110; TW Awal konsumen Toko-3 =
120; TW Akhir Toko-3 = 600; Muatan=75 > 50 (demand Toko-3) 
ya,semua syarat terpenuhi

Menghitung Delivery Time ke Toko-3; Delta Time ke Toko-3; Distance
Gudang ke Toko-3; Closeness Gudang ke Toko-3; Nilai Akhir Gudang ke
Toko-3; Jumlah Nilai Akhir.

Delivery Time ke Toko-3 = max{110 + (80/60) X 60 menit = 190,
120} = 190

Delta Time ke Toko-3 = 190 – 110 = 80

Distance Gudang ke Toko-3 = 80 x (600-110) = 39200

Distance Gudang ke Toko-3 = max{ 1, 39200-0} = 39200

Closeness Gudang ke Toko-3 = 1/39200 = 2.55 x 10-5

Nilai Akhir Gudang ke Toko-3 = [1/(5x510)] x 2.55 x 10-5= 1 x 10-8

Jumlah Nilai Akhir = 1.4 x 10-8 + 1 x 10-8 = 2.4 x 10-8

Menambahkan id_konsumen = 3+1 = 4

Mengecek apakah id_konsumen<=jumlah konsumen  4 <= 5

Cek apakah id_konsumen = 4 ada di rute,  belum ada rute yang dipilih
 tidak

Tambahkan id_konsumen = 4 pada himpunan NIK  anggota_NIK = 2 +
1=3

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=110; TW Awal konsumen Toko-4 = 180;
TW Akhir Toko-4 = 600; Muatan=75 > 10 (demand Toko-4)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-4; Delta Time ke Toko-4; Distance
Gudang ke Toko-4; Closeness Gudang ke Toko-4; Nilai Akhir Gudang ke
Toko-4; Jumlah Nilai Akhir.

Delivery Time ke Toko-4 = max{110 + (50/60) X 60 menit = 160,
180} = 160

Delta Time ke Toko-4 = 160 – 110 = 50

Distance Gudang ke Toko-4 = 50 x (600-110) = 24500

Distance Gudang ke Toko-4 = max{ 1, 24500-0} = 24500

Closeness Gudang ke Toko-4 = 1/24500 = 4.08 x 10-5

Nilai Akhir Gudang ke Toko-4 = [1/(5x510)] x 4.08 x 10-5= 1.6 x 10-
8


Jumlah Nilai Akhir = 2.4 x 10-8 + 1.6 x 10-8 = 4 x 10-8

Menambahkan id_konsumen = 4+1 = 5

Mengecek apakah id_konsumen<=jumlah konsumen  5 <= 5

Cek apakah id_konsumen = 5 ada di rute  belum ada rute yang dipilih 
tidak

Tambahkan id_konsumen = 5 pada himpunan NIK  anggota_NIK = 3 +
1=4

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=110; TW Awal konsumen Toko-5 = 330;
TW Akhir Toko-5 = 540; Muatan=100 > 15 (demand Toko-5)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-5; Delta Time ke Toko-5; Distance
Gudang ke Toko-5; Closeness Gudang ke Toko-5; Nilai Akhir Gudang ke
Toko-5; Jumlah Nilai Akhir.

Delivery Time ke Toko-5 = max{110 + (120/60) X 60 menit = 230,
330} = 330

Delta Time ke Toko-5 = 330 – 110 = 220

Distance Gudang ke Toko-5 = 220 x (540-110) = 94600

Distance Gudang ke Toko-5 = max{ 1, 94600-0} = 94600

Closeness Gudang ke Toko-5 = 1/94600 = 1.057 x 10-5

Nilai Akhir Gudang ke Toko-5 = [1/(5x510)] x 1.057 x 10 -5 = 4.14 x
10-9

Jumlah Nilai Akhir = 4 x 10-8 + 4.14 x 10-9 = 4.14 x 10-8

Menambahkan id_konsumen = 5+1 = 6

Mengecek apakah id_konsumen<=jumlah konsumen  6 > 5

Cek apakah anggota_NIK=0  tidak, anggota_NIK = 4

Random_pilih_node = 0.03

Cek apakah random_pilih_node <= 0.9  0.03 <=0.9  eksploitasi

Pilih toko dengan Nilai Akhir Tertinggi  Toko-3 (1 x 10-8)

Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani Toko-3  Tidak ada
pergantian mobil, tetap melanjutkan rute untuk Truk-1

Simpan rute(1,2)= Toko-3

Anggota_NIK = 0; Counter_NIK = 1; random_pilih_node = 0

Counter_jam Truk-1 = 110 + (80/60) X 60 menit = 190 > TW-Awal Toko-
3 Bisa Langsung Dilayani karena Toko-3 sudah buka

Truk-1 selesai dilayani oleh Toko-3 pada saat counter_jam Truk-1 = 190 +
waktu pelayanan 10 menit = 200

Update nilai Total Travel Time = 110 + 200 = 320

Update nilai Total Travel Distance = 100 + 80 = 180

Sisa Demand Toko-3 = 25 < Muatan Truk-1 = 100 sehingga : Sisa
Demand Toko-3 = 50 – 50 = 0 dan Muatan Truk-1 = 100 – 75 = 25

Counter_konsumen = 2 + 1 = 3 (bersiap melayani konsumen yang ketiga
untuk Truk-1) dan counter_node = 2 + 1 = 3

Pheromone trail (0,1) = (1-0.1)(1/(5x320)) + 0.1(1/(5x510)) = 5.625 x 10-4
+ 3.92 x 10-5 = 6.017 x 10-4

Truk-1 berada di Toko-3

Cek apakah counter_node <= n  3 <=5

Cek apakah counter_konsumen <= n  3 <= 5

Cek id_konsumen = 1 ada di rute  ya

Id_konsumen =1+1 = 2

Cek apakah id_konsumen = 2 ada di rute  belum

Tambahkan id_konsumen = 2 pada himpunan NIK  anggota_NIK = 0 +
1=1

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=320; TW Awal konsumen Toko-2 = 200;
TW Akhir Toko-2 = 420; Muatan=25 < 50 (demand Toko-2)  tidak, 1 syarat
tidak terpenuhi

Id_konsumen =2+1 = 3

Cek apakah id_konsumen = 3 ada di rute  sudah

Id_konsumen =3+1 = 4

Cek apakah id_konsumen = 4 ada di rute  belum

Tambahkan id_konsumen = 4 pada himpunan NIK  anggota_NIK = 1 +
1=2

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=320; TW Awal konsumen Toko-4 = 180;
TW Akhir Toko-4 = 600; Muatan=25 > 10 (demand Toko-4)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-4; Delta Time ke Toko-4; Distance
Gudang ke Toko-4; Closeness Gudang ke Toko-4; Nilai Akhir Gudang ke
Toko-4; Jumlah Nilai Akhir.

Delivery Time ke Toko-4 = max{320 + (50/60) X 60 menit = 370,
180} = 370

Delta Time ke Toko-4 = 370 – 320 = 50

Distance Gudang ke Toko-4 = 50 x (600-320) = 14000

Distance Gudang ke Toko-4 = max{ 1, 14000-0} = 14000

Closeness Gudang ke Toko-4 = 1/14000 = 7.14 x 10-5

Nilai Akhir Gudang ke Toko-4 = [1/(5x510)] x 7.14 x 10-5= 2.8 x 10-
8


Jumlah Nilai Akhir = 0 + 2.8 x 10-8 = 2.8 x 10-8

Menambahkan id_konsumen = 4+1 = 5

Mengecek apakah id_konsumen<=jumlah konsumen  5 <= 5

Cek apakah id_konsumen = 5 ada di rute  belum

Tambahkan id_konsumen = 5 pada himpunan NIK  anggota_NIK = 2 +
1=3

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=320; TW Awal konsumen Toko-5 = 330;
TW Akhir Toko-5 = 540; Muatan=25 > 15 (demand Toko-5)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-5; Delta Time ke Toko-5; Distance
Gudang ke Toko-5; Closeness Gudang ke Toko-5; Nilai Akhir Gudang ke
Toko-5; Jumlah Nilai Akhir.

Delivery Time ke Toko-5 = max{320 + (80/60) X 60 menit = 400,
330} = 400

Delta Time ke Toko-5 = 400 – 320 = 80

Distance Gudang ke Toko-5 = 80 x (540-320) = 17600

Distance Gudang ke Toko-5 = max{ 1, 17600-0} = 17600

Closeness Gudang ke Toko-5 = 1/17600 = 5.68 x 10-5

Nilai Akhir Gudang ke Toko-5 = [1/(5x510)] x 5.68 x 10-5 = 2.23 x
10-8

Jumlah Nilai Akhir = 2.8 x 10-8 + 2.23 x 10-8 = 5.03 x 10-8

Menambahkan id_konsumen = 5+1 = 6

Mengecek apakah id_konsumen<=jumlah konsumen  6 > 5

Cek apakah anggota_NIK=0  tidak, anggota_NIK = 3

Random_pilih_node = 0.45

Cek apakah random_pilih_node <= 0.9  0.45 <=0.9  eksploitasi

Pilih toko dengan Nilai Akhir Tertinggi  Toko-4 (2.8 x 10-8)

Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani Toko-4  Tidak ada
pergantian mobil, tetap melanjutkan rute untuk Truk-1

Simpan rute(1,3)= Toko-4

Anggota_NIK = 0; Counter_NIK = 1; random_pilih_node = 0

Counter_jam Truk-1 = 320 + (50/60) X 60 menit = 370 > TW-Awal Toko-
4 Bisa Langsung Dilayani karena Toko-4 sudah buka

Truk-1 selesai dilayani oleh Toko-4 pada saat counter_jam Truk-1 = 370 +
waktu pelayanan 10 menit = 380

Update nilai Total Travel Time = 380

Update nilai Total Travel Distance = 180 + 50 = 230

Sisa Demand Toko-4 = 10 < Muatan Truk-1 = 25 sehingga : Sisa Demand
Toko-3 = 10 – 10 = 0 dan Muatan Truk-1 = 25 – 10 = 15

Counter_konsumen = 3 + 1 = 4 (bersiap melayani konsumen yang
keempat untuk Truk-1) dan counter_node = 3 + 1 = 4

Pheromone trail (0,1) = (1-0.1)(1/(5x380)) + 0.1(1/(5x510)) = 4.75 x 10 -4 +
3.92 x 10-5 = 5.13 x 10-4

Truk-1 berada di Toko-4

Cek apakah counter_node <= n  4 <=5

Cek apakah counter_konsumen <= n  4<= 5

Cek id_konsumen = 1 ada di rute  ya

Id_konsumen =1+1 = 2

Cek apakah id_konsumen = 2 ada di rute  belum

Tambahkan id_konsumen = 2 pada himpunan NIK  anggota_NIK = 0 +
1=1

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=320; TW Awal konsumen Toko-2 = 200;
TW Akhir Toko-2 = 420; Muatan=15 < 50 (demand Toko-2)  tidak, 1 syarat
tidak terpenuhi

Menambahkan id_konsumen = 2+1 = 3

Mengecek apakah id_konsumen<=jumlah konsumen  3 <= 5

Cek apakah id_konsumen = 3 ada di rute  sudah

Menambahkan id_konsumen = 3+1 = 4

Mengecek apakah id_konsumen<=jumlah konsumen  4 <= 5

Cek apakah id_konsumen = 4 ada di rute  sudah

Menambahkan id_konsumen = 4+1 = 5

Mengecek apakah id_konsumen<=jumlah konsumen  5 <= 5

Cek apakah id_konsumen = 5 ada di rute  belum

Tambahkan id_konsumen = 5 pada himpunan NIK  anggota_NIK = 1 +
1=2

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=380; TW Awal konsumen Toko-5 = 330;
TW Akhir Toko-5 = 540; Muatan=15 <= 15 (demand Toko-5)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-5; Delta Time ke Toko-5; Distance
Gudang ke Toko-5; Closeness Gudang ke Toko-5; Nilai Akhir Gudang ke
Toko-5; Jumlah Nilai Akhir.

Delivery Time ke Toko-5 = max{380 + (60/60) X 60 menit = 440,
330} = 440

Delta Time ke Toko-5 = 440 – 380 = 60

Distance Gudang ke Toko-5 = 60 x (540-380) = 9600

Distance Gudang ke Toko-5 = max{ 1, 9600-0} = 9600

Closeness Gudang ke Toko-5 = 1/9600 = 1.042 x 10-4

Nilai Akhir Gudang ke Toko-5 = [1/(5x510)] x 1.042 x 10 -4 = 4.086
x 10-8

Jumlah Nilai Akhir = 0 + 4.086 x 10-8 = 4.086 x 10-8

Menambahkan id_konsumen = 5+1 = 6

Mengecek apakah id_konsumen<=jumlah konsumen  6 > 5

Cek apakah anggota_NIK=0  tidak, anggota_NIK = 2

Random_pilih_node = 0.76

Cek apakah random_pilih_node <= 0.9  0.76 <=0.9  eksploitasi

Pilih toko dengan Nilai Akhir Tertinggi  Toko-5 (4.086 x 10-8)

Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani Toko-5  Tidak ada
pergantian mobil, tetap melanjutkan rute untuk Truk-1

Simpan rute(1,4)= Toko-5

Anggota_NIK = 0; Counter_NIK = 1; random_pilih_node = 0

Counter_jam Truk-1 = 380 + (60/60) X 60 menit = 440 > TW-Awal Toko-
5 Bisa Langsung Dilayani karena Toko-5 sudah buka

Truk-1 selesai dilayani oleh Toko-5 pada saat counter_jam Truk-1 = 380 +
waktu pelayanan 10 menit = 390

Update nilai Total Travel Time = 390

Update nilai Total Travel Distance = 230 + 60 = 290

Sisa Demand Toko-5 = 15 <= Muatan Truk-1 = 15 sehingga : Sisa
Demand Toko-5 = 15 – 15 = 0 dan Muatan Truk-1 = 15 – 15 = 0

Muatan Truk-1 sudah habis, maka diganti dengan Truk-2

Counter_konsumen = 4 + 1 = 5 (bersiap melayani konsumen yang kelima
untuk Truk-2) dan counter_node = 4 + 1 = 5

Pheromone trail (0,1) = (1-0.1)(1/(5x390)) + 0.1(1/(5x510)) = 4.615 x 10-4
+ 3.92 x 10-5 = 5.01 x 10-4

Truk-1 berada di Toko-5

V_terpakai=1+1=2

Cek apakah jumlah truk yang dibutuhkan tersedia  ya (karena
perusahaan punya truk sejumlah 2 unit)

Id_kendaraan = 1+1=2

Cek apakah counter_node <= n  5 <=5

Cek apakah counter_konsumen <= n  5 <= 5

Cek id_konsumen = 1 ada di rute  ya

Id_konsumen = 1+1 =2

Cek id_konsumen = 2 ada di rute  belum

Cek apakah id_konsumen = 2 ada di rute  belum

Tambahkan id_konsumen = 2 pada himpunan NIK  anggota_NIK = 0 +
1=1

Cek apakah jam kerja (variabel Counter_jam) tiap konsumen berada
diantara waktu TW-Awal dan TW-Akhir konsumen berikutnya dan sisa
muatan (variabel Muatan) truk masih mencukupi untuk melayani
konsumen berikut. Counter_jam=0; TW Awal konsumen Toko-2 = 200;
TW Akhir Toko-2 = 420; Muatan=100 > 50 (demand Toko-2)  ya,semua
syarat terpenuhi

Menghitung Delivery Time ke Toko-2; Delta Time ke Toko-2; Distance
Gudang ke Toko-2; Closeness Gudang ke Toko-2; Nilai Akhir Gudang ke
Toko-2; Jumlah Nilai Akhir.

Delivery Time ke Toko-2 = max{0 + (180/60) X 60 menit = 180,
200} = 200

Delta Time ke Toko-2 = 200 – 0 = 200

Distance Gudang ke Toko-2 = 200 x (420-0) = 84000

Distance Gudang ke Toko-2 = max{ 1, 84000-0} = 84000

Closeness Gudang ke Toko-2 = 1/84000 = 1.19 x 10-5

Nilai Akhir Gudang ke Toko-2 = [1/(5x510)] x 1.19 x 10 -5 = 4.67 x
10-9

Jumlah Nilai Akhir = 0 + 4.67 x 10-9 = 4.67 x 10-9

Id_konsumen = 2+1 =3

Cek id_konsumen = 3 ada di rute  sudah

Id_konsumen = 3+1 =4

Cek id_konsumen = 4 ada di rute  sudah

Id_konsumen = 4+1 =5

Cek id_konsumen = 5 ada di rute  sudah

Id_konsumen = 5+1 =6

Mengecek apakah id_konsumen<=jumlah konsumen  6 > 5

Cek apakah anggota_NIK=0  tidak, anggota_NIK = 1

Random_pilih_node = 0.06

Cek apakah random_pilih_node <= 0.9  0.06 <=0.9  eksploitasi

Pilih toko dengan Nilai Akhir Tertinggi  Toko-2 (4.67 x 10-9)

Cek apakah jam kerja (variabel Counter_jam) waktu sampai ke tujuan
belum melewati TW-Akhir konsumen berikut dan sisa muatan (variabel
Muatan) truk masih mencukupi untuk melayani Toko-2  Tidak ada rute
selanjtunya

Simpan rute(2,1)= Toko-2

Anggota_NIK = 0; Counter_NIK = 1; random_pilih_node = 0

Counter_jam Truk-1 = 0 + (180/60) X 60 menit = 180 > TW-Awal Toko-
2 Bisa Langsung Dilayani karena Toko-2 sudah buka

Truk-2 selesai dilayani oleh Toko-2 pada saat counter_jam Truk-1 = 180 +
waktu pelayanan 10 menit = 190

Update nilai Total Travel Time = 190+390=580

Update nilai Total Travel Distance = 180+290=470

Sisa Demand Toko-2 = 50 <= Muatan Truk-2 = 100 sehingga : Sisa
Demand Toko-2 = 50 – 50 = 0 dan Muatan Truk-2 = 100– 50 = 0

Pheromone trail (0,1) = (1-0.1)(1/(5x580)) + 0.1(1/(5x510)) = 3.44 x 10 -4 +
3.92 x 10-5 = 3.84 x 10-4

Truk-2 berada di Toko-2

V_terpakai=2+1=3

Cek apakah v_terpakai <= v  3<2

Total visited konsumen =5

Counter node=0

Muatan truk dan sisa demand konsumen dikembalikan menjadi nilai asal.

Nilai Ψk adalah v_terpakai=2, total travel time = 580, total travel
distance=470, total visited konsumen = 5
 Cek apakah node(1) ada di rute  ada
 Id_konsumen = 1+1=2
 Cek apakah node(2) ada di rute  ada
 Id_konsumen = 2+1=3
 Cek apakah node(3) ada di rute  ada
 Id_konsumen = 3+1=4
 Cek apakah node(4) ada di rute  ada
 Id_konsumen = 4+1=5
 Cek apakah node(5) ada di rute  ada
 Id_konsumen = 5+1=6
 Cek apakah id_konsumen <=n  6>5  tidak;id_konsumen =1
 Cek apakah Ψk > ΨVEI  v_VEI =2; total total visited konsumen =
5
 Bukan solusi terbaik untuk ACS-VEI

Pheromone trail (0,1) = (1-0.1)(1/(5x180)) + 0.1(1/(5x580)) = 1 x 10-3 +
3.45 x 10-5 = 1.0392 x 10-3

Pheromone trail (1,3) = (1-0.1)(1/(5x320)) + 0.1(1/(5x580)) = 5.625 x 10-4
+ 3.45 x 10-5 = 5.974 x 10-4

Pheromone trail (3,4) = (1-0.1)(1/(5x380)) + 0.1(1/(5x580)) = 4.75 x 10 -4 +
3.45 x 10-5 = 5.095 x 10-4

Pheromone trail (4,5) = (1-0.1)(1/(5x390)) + 0.1(1/(5x580)) = 4.615 x 10-4
+ 3.45 x 10-5 = 4.96 x 10-4

Pheromone trail (5,2) = (1-0.1)(1/(5x580)) + 0.1(1/(5x580)) = 3.1 x 10 -4 +
3.45 x 10-5 = 3.55 x 10-4

ACS-TIME
 Dilakukan modul new ant  sama dengan hasil ASC-VEI
 Cek apakah total travel time Ψk < total travel time Ψgb  580 > 510
 Hasil total travel time tidak diperbarui  menggunakan total travel time
nearest neigbor

MACS
 Cek hasil total travel time,jumlah v_terpakai, total travel distance hasil
perhitungan dengan hasil nearest neigbor  lebih baik hasil nearest
neigbor
 Lakukan iterasi lagi (ACS-VEI dan ACS Time)

Hasil nearest neigbor


 Total travel time = 510
 Total travel distance = 410
 V_terpakai = 2
 Rute: Truk-1= 1-4-2-5 ; Truk-2 = 3

Hasil perhitungan ACS-VEI & ACS-TIME


 Total travel time = 580
 Total travel distance = 470
 V_terpakai = 2
 Rute: Truk-1= 1-3-4-5 ; Truk-2 = 2

Anda mungkin juga menyukai