ANALISIS & DESAIN
3.4 Perancangan Umum Sistem
3.4.2 Proses Sistem
Didalam sistem yang akan dibangun terdapat beberapa proses untuk mencapai tujuan utama yaitu mencari rute terpendek. Tahap-tahap nya adalah men-set tujuan pengiriman, mencari urutan cluster, mencari rute tercepat.
Tahap-tahap proses sistem yang akan dibangun: 1. Men-set tujuan pengiriman
Pada langkah awal ini sistem akan mengambil data daftar pengirim&penerima, dari tabel pada frame DaftarPengirimanInternalFrame. Kemudian data tesebut dicocokan dengan data peta yang ada diprogram. Ketika nama node pada data peta mempunyai nama yang sama dengan node pengirim&penerima, maka atribut destinasi pada node,wilayah pada peta, akan di set true . Gambar 3.3, 3.4, 3.5 adalah diagram alir dari tahap 1.
Gambar 3.3 Set node Awal
Daftar pengirim&penerima ditampilkan ditabel daftarpengirimanTabel, waktu
berangkat dipilih dari comboBox wktbrgkt, parameter dan banyak semut
terima daftar node pengirim&penerima dari tabel
terima daftar peta dari kelas load peta
set riut18 mjd node awal set variabel string Dest=riut18 A
Gambar 3.4 Set wilayah Pengiriman
For j=0 to jml wilayah
true
set array vertexList = array nama node ke j
For k = 0 to jml vertexList
true Jika nama vertexList
ke k = Dest true set tujuan pada
wilayah ke j menjadi true k++ j++ A B falsefalse false
Gambar 3.5 Set node Pengiriman 2. Mencari urutan cluster pengiriman
Setelah menentukan node dan cluster pengiriman maka langkah selanjutnya adalah mencari urutan cluster. Ditujukan untuk mengetahui cluster mana yang akan dikunjungi lebih dahulu. Hal ini ditujukan untuk mempersingkat waktu pencarian rute pengiriman. Gambar 3.6 adalah diagram alir untuk mencari urutan cluster pengiriman.
For j=0 to jml wilayah
true
set array vertexList = array nama node ke j
For k = 0 to jml vertexList
true
Jika nama vertexList ke k = Dest
true
set tujuan pada wilayah ke j menjadi true k++ j++ A B falsefalse false
Gambar 3.6 Mencari urutan Cluster 3. Mencari rute pengiriman tercepat
Setelah mendapatkan urutan cluster. Maka selanjutnya adalah mencari rute pengiriman tercepat. Gambar 3.7, 3.8, 3.9, 3.10, 3.11 adalah diagram alir untuk mencari rute pengiriman tercepat.
A
mencari urutan waktu pengiriman mencari jalur urutan cluster mulai dari vertexList 3 mengubah urutan cluster ke angka
mencari rute pengiriman kembali set cluster awal =
cluster akhir rute
set cluster vertexList 3 menjadi Dest mengubah urutan cluster ke angka D
Gambar 3.7 Pencarian rute cluster ke 0
D
For i to bnyk semut
set array vr= array nama node dengan cluster urutan pengiriman pertama set array amNew=array bobot waktu dengan urutan
cluster pengiriman pertama
mengubah susunan matrik amNew dan array vr dengan titik 0 sebagai node awal
set array vrTmp= susunan node baru yang telah diubah, set matriks amNewTmp =susunan matriks yang telah diubah, set matriks amBobot =susunan
matriks invers semut =0 true set matriks tMatAwal = matriks pheromone awal mencari rute terpendek untuk urutan cluster ke 0
get list finalPath = array susunan jalan terpendek, get finalBobot = matriks bobot jalan, get finalTau = matriks
pheromone baru
E
set list gabungFT = tampung list finalTau, gabungFP = tampung list
finalPath, gabungVertUrut = tampung vrTmp set matriks tMatAwal = matriks finalTau false for i=0 to finalPath -1
set list gabungPath = tampung finalPath-1, set gabungbobot =
Gambar 3.8 Pencarian rute cluster ke-i E
for i=1 to urutanCluster-1
set array vrIn= array nama node dengan cluster urutan pengiriman ke i set array amIn=array bobot
waktu dengan urutan cluster pengiriman ke i
semut = 0 true set matriks tMatAwal2 = matriks pheromone awal set matriks tMatAwal2 = matriks tauTemp false mencari rute terpendek untuk urutan cluster ke i memasukkan rute terpilih ke tmpInCluster
set finalPath tmpInCluster ke 0, set finalBobot tmpInCluster ke 1, setfinalTau tmpInCluster ke 2,
set testVertexBaru tmpInCluster ke 3
set list tauTemp = tampung finalTau, gabungFT = tampung finalTau, gabungFP =
tampung finalPath, gabungVertUrut =tampung testVertexBaru
for d=0 to ukuran finalPath-1
set gabungPath =tampung finalPath, set gabungBobot = gabungBobot
sebelum + finalBobot, i++
Gambar 3.9 Pencarian rute cluster akhir F
set vrLast = daftar vertex urutan cluster terakhir, set amLast =daftar matriks urutan cluster akhir
semut = 0 set matriks tMatAkhir = matriks pheromone awal set matriks tMatAkhir= matriks finalTau true false mencari rute terpendek untuk urutan cluster akhir memasukkan rute terpilih ke tmpAkhCluster
set finalPath tmpAkhCluster ke 0, set finalBobot tmpAkhCluster ke 1, set
finalTau tmpAkhCluster ke 2, set testVertexAkhir tmpAkhCluster ke 3
set gabungFT = tampung finalTau, gabungFP = tampung finalPath, gabungVertUrut
=tampung testVertexAkhir
for d=0 to ukuran finalPath
set gabungPath =tampung finalPath, set gabungBobot = gabungBobot
sebelum + finalBobot
set list bandingbobot = tampung gabungbobot, set list bandingpath =tampung gabungpath
Gambar 3.10 Set destinasi ulang dan pencarian rute semut ke n G
for j=o to ukuran listVertexMap
set vertex vere = listVertexMap ke j for k=0 to ukuran vere vere ke k DestNext = true
set Dest vere = true, k++
j++
D
Gambar 3.11 Pencarian rute terbaik
Selain diagram alir tersebuat ada proses-proses utama dalam tahap pencarian rute terpendek dengan algoritma Ants Colony System.
1. Algoritma proses inisialisasi status
Algoritma ini merupakan tahap pertama algoritma Ants Colony System. Algoritma ini dibagi dua yaitu inisialisasi status 1 dan inisialisasi status 2. Dimana semut dapat memilih algoritma mana yang akan digunakan. Jika nilaiQ <= nilaiQ0, maka dipilih inisialisasi status1, dan jika nilaiQ > nilaiQ0, maka dipilih inisialisasi status2
H
set double bbtTerbaik = bandingbobot ke 0, set list pathTerbaik = bandingPath ke 0, set
nilaiI = 0
for i = 1 to ukuran bandingBobot
bbtTerbaik > bandingBobot ke i
set bbtTerbaik = bandingBobot ke i, set pathTerbaik = bandingPath ke i, set nilaiI = i
set global = pheromoneGloba
l
nilai balik rute alternatif dan
Gambar 3.12 Proses Inisialisasi Status 1 for i = 0 to ukuran adjMat for j = 0 to ukuran adjMat set krMatrik[i][j] = adjMat[i][j], j++ i++ for x = 1 to ukuran B for i = 0 to ukuran adjMat for j=0 to ukuran adjMat
krMatrik[i][j] = krMatrik[i][j] * adjMat[i] [j], j++ i++ x++ for i =0 to ukuran adjMat for j = 0 to ukuran adjMat
baru[i][j] = tMatrik[i][j] * krMatrik[i][j], j++
i++
return hasil inisialisasi
Gambar 3.13 Proses Inisialisasi Status 2 for i = 0 to ukuran adjMat for j = 0 to ukuran adjMat set krMatrik[i][j] = adjMat[i][j], j++ i++ for x = 1 to ukuran B for i = 0 to ukuran adjMat for j=0 to ukuran adjMat
krMatrik[i][j] = krMatrik[i][j] * adjMat[i] [j], j++ i++ x++ for i =0 to ukuran adjMat for j = 0 to ukuran adjMat
baru[i][j] = tMatrik[i][j] * krMatrik[i][j], j++
i++
for k = 0 to ukuran baru jumlah = 0
jumlah = jumlah + baru[angkajalanawal] [k]
for m = 0 to ukuran baru
baru[angkajalanawal] [m] = baru[angkajalanawal] [m] / jumlah
return hasil inisialisasi status 2
2. Algoritma proses pheromone lokal
Gambar 3.14 Proses Update Phremone Lokal
Lnn = 0, c = ukuran adjMat for i = 0 to ukuran adjMat for j=0 to ukuran adjMat
vertexList ke i = jalanPresent && vertexList ke j = nextJalan Lnn = adjMat[i][j] j++ i++ true false set double deltaT = 1/ (Lnn*C) for i = 0 to ukuran tMatriks for j = 0 to ukuran tMatriks
vertexList ke i = jalanPresent && vertexList ke j = nextJalan
tMatriks[i][j] = ((1-nilaiP) * tMatriks[i][j]) + (nilaiP*deltaT)
j++
i++ true
false
3. Algoritma proses pheromone global
Gambar 3.15 Proses menentukan pheromone yang akan di update Pheromone Global
set int bagi = jmlcluster/bnyksemut, set int q = 0 for i=0 to ukuran tMatrik for j=0 to bnyk semut jmlCluster==bnyksemut for k=q to bagi
set list baruTau = tampung tMatriks ke k, set list baruVert = tampung InvVert ke k,
set baruRut = tampung rute ke k k++
true
set q=bagi, set bagi = bagi * semut false
j++
i++
Gambar 3.16 Proses Update Pheromone Global
A
for i = 0 to ukuran baruTau
set double perCluster = baruTau ke i, set vertex perVert = baruRut ke i,
set string perRut = baruRut ke i
set double deltaT1 = 1/Lgb, set deltaT2 = 0 for j=0 to ukuran perCluster for k=0 to ukuran perCluster for l=0 to ukuran perRut-1 perVert[j].toString().equals(perRut[l].toString()) && perVert[k].toString().equals(perRut[l+1].toString())
hasilGlobal[j][k] = ((1-a) * percluster[j][k]) + (a*deltaT1) hasilGlobal[j][k] = ((1-a) * percluster[j][k]) + (a*deltaT2)
true false
l++
k++
j++
set list finalHasilGlobal = tampung nilai hasilGlobal, i++
Gambar 3.17 berikut ini merupakan diagram konteks dari proses yang terjadi didalam system optimasi rute terpendek pengiriman barang P.T. Pos Indonesia secara umum.