• Tidak ada hasil yang ditemukan

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.

Dokumen terkait