Oleh :
1. HARI KUSUMA D.
2. SIGIT RIMBATMOJO
3. HENDRO NUR B.
(K1310035)
(K1310075)
(K1311040)
PENDAHULUAN
A. Latar Belakang
Permasalahan
distribusi
barang
merupakan
permasalahan
optimasi
kombinatorial. Jika diberikan sejumlah kota (atau tempat) dan biaya perjalanan dari
satu kota ke kota lain. Deskripsi permasalahannya adalah bagaimana menemukan rute
perjalanan paling murah dari suatu kota dan mengunjungi semua kota lainnya.
Masing-masing kota hanya dikunjungi satu kali dan harus kembali ke kota asal
keberangkatan. Biaya perjalanan bisa berupa jarak, waktu, bahan bakar, dan
sebagainya.
Salah satu metode yang dapat dipakai untuk menyelesaikan permasalahan
distribusi barang ini dengan algoritma yang dapat menyelesaikan persoalan tersebut
dengan relatif cepat sehingga diperoleh solusi yang mendekati solusi optimal yaitu
salah satunya menggunakan algoritma genetika.
Algoritma genetika merupakan algoritma adaptive yang biasa digunakan
untuk memecahkan suatu pencarian nilai dalam sebuah masalah optimasi. Algoritma
ini didasarkan pada proses genetika yang ada dalam makhluk hidup yaitu
perkembangan generasi dalam sebuah populasi yang alami, secara lambat laun
mengikuti seleksi alam dengan prinsip siapa yang kuat, dia yang bertahan
(survive).Sebelum algoritma genetika dapat dijalankan, maka sebuah kode yang
sesuai (representatif) untuk permasalahan harus dirancang. Titik solusi dalam ruang
permasalahan dikodekan (encoding) dalam bentuk kromosom yang terdiri atas
komponen genetika terkecil yaitu gen. Dengan teori evolusi dan teori genetika, di
dalam penerapan algoritma genetika akan melibatkan proses seleksi (selection),
operator pindah silang (crossover) dan mutasi (mutation). Untuk memeriksa hasil
optimasi, dibutuhkan fungsi fitness yang menggambarkan hasil (solusi) yang sudah
dikodekan. Selama algoritma berjalan, induk harus digunakan untuk reproduksi,
pindah silang, dan mutasi untuk menciptakan keturunan. Proses terakhir adalah
mengambil makna dari hasil kromosom terbaik (decoding) untuk menjawab
permasalahan. Jika algoritma genetika didesain secara baik, populasi akan mengalami
konvergensi dan akan didapatkan sebuah solusi yang mendekati optimum.
Makalah ini membahas bagaimana algoritma genetika menentukan jarak
terpendek pada jalur distribusi barang dengan menggunakan metode Order Based
Crossover sebagai teknik rekombinasi dan metode swapping mutation sebagai teknik
mutasi.Untuk
mengetahui
bagaimana
penerapan
algoritma
genetika
dalam
selanjutnya mewarisi sifat kedua induknya. Kromosom ini diharapkan bersifat lebih
baik dibanding dengan generasi sebelumnya. Sedangkan proses mutasi merupakan
proses diubahnya satu atau lebih nilai gen kromosom dalam satu populasi. Nilai gen
tersebut akan digantikan dengan suatu nilai yang dipilih secara acak. Pada tahap ini,
terdapat kemungkinan perubahan sifat di luar sifat induk pada keturunan yang
dihasilkan.
Siklus dari Algoritma Genetika pertama kali dikenalkan oleh David Goldberg,
dimana gambaran siklus tersebut dapat dilihat pada gambar 1.
Populasi
Evaluasi
Seleksi
Awal
Fitness
Individu
Populasi
Reproduksi:
Baru
Cross-Over
Dan Mutasi
sudahAda[j] = false;
}
for (int i = 0; i < x; i++) {
int tmp;
do {
tmp = rnd.nextInt(x) + 1; //1 s/d x
} while (sudahAda[tmp]);
kromosom[i] = tmp;
sudahAda[tmp] = true;
}
d. Nilai Fitness
Nilai fitness adalah nilai yang menyatakan baik tidaknya suatu solusi
(individu). Nilai fitness ini yang dijadikan acuan dalam mencapai nilai optimal
dalam algoritma genetika. Algoritma genetika bertujuan mencari individu dengan
nilai fitness yang paling tinggi.
Dalam menentukan jalur terpendek, maka nilai fitnessnya adalah inversi
dari total jarak dari jalur yang didapatkan. Cara melakukan inversi
bisamenggunakan rumus 1/x atau 100000 x, dimana x adalah total jarak dari
jalur yang didapatkan.
Source code mengurutkan nilai fitness :
Individu tmpIdv = new Individu(nGen);
for (int i=0; i<((nIdv+nCr+nMt)-1); i++)
for (int j=i+1; j<(nIdv+nCr+nMt); j++) 30
{
if (pop[i].fitness<pop[j].fitness)
{
tmpIdv = pop[i];
pop[i] = pop[j];
pop[j] = tmpIdv;
}
}
e. Seleksi Dengan Mesin Roulette
Seleksi digunakan untuk memilih individu-individu mana saja yang
akan dipilih untuk proses kawin silang dan mutasi. Seleksi digunakan untuk
mendapatkan calon induk yang baik. Induk yang baik akan menghasilkan
keturunan yang baik. Semakin tinggi nilai fitness suatu individu semakin besar
kemungkinannya untuk terpilih.
Metode seleksi dengan mesin roulette ini merupakan metode yang
paling sederhana dan sering dikenal dengan nama stochastic sampling with
replacement. Cara kerja metode ini adalah sebagai berikut:
1) Menghitung nilai fitness dari masing-masing individu (fi,, dimana i
2)
3)
4)
5)
6)
if (idx<nGen)
{
//copy dari P1 (setelah cut Point)
for (int i=cP; i<nGen; i++)
{
int val = pop[p1].kromosom[i];
if (sudahAda[val]==false)
{
pop[idChd].kromosom[idx] = val;
idx++; sudahAda[val]=true;
}
}
}
if (idx<nGen)
{
//copy dari P2 (setelah cut Point)
for (int i=cP; i<nGen; i++)
{
int val = pop[p2].kromosom[i];
if (sudahAda[val]==false)
{
pop[idChd].kromosom[idx] = val;
idx++; sudahAda[val]=true;
}
}
}
}
Pada gambar 2 diilustrasikan diagram alir penggunaan probabilitas crossover
pada proses crossover.
Induk 1
Induk 2
p = random[0,1]
p < probCO
ya
Cross Over
tidak
B. Pembahasan Masalah
1. Langkah-Langkah Algoritma Genetika
berubah.
Berhenti bila dalam n generasi berikutnya tidak diperoleh nilai fitness
yang lebih tinggi/rendah.
X0
X1
X2
X3
X4
X0
X1
X2
X3
X4
1
X [i]
Fitness[1] =
1
23
= 0,043
Fitness[2] =
1
27
= 0,037
Fitness[3] =
1
29
= 0,034
Fitness[4] =
1
37
= 0,027
Fitness[5] =
1
30
= 0,033
Fitness[6] =
1
30
= 0,033
minTotal += penalti; }
pop[idK].fitness = 1/(double) minTotal;
Untuk mencari probabilitas kita menggunakan rumus berikut:
P[i] =
Fitness [i]
Total
P[1] =
0,043
0,207
= 0,208
P[2] =
0,037
0,207
= 0,179
P[3] =
0,034
0,207
= 0,164
P[4] =
0,027
0,207
= 0,130
P[5] =
0,033
0,207
= 0,159
P[6] =
0,033
0,207
= 0,159
Dari probabilitas di atas dapat terlihat bahwa kromosom ke-1 mempunyai fitness
paling besar maka probabilitas untuk terpilih pada generasi selanjutnya lebih besar
dari kromosom lainnya.
Untuk proses seleksi kita menggunakan mesin roulette, untuk itu terlebih dahulu
mencari nilai kumulatif dari probabilitasnya.
C[1] = 0,028
C[2] = 0,028+0,179 = 0,387
C[3] = 0,387+0,164 = 0,551
C[4] = 0,551+0,130 = 0,681
tbPop1.getColumnModel().getColumn(i).setPreferredWidth(30);
tbPop1.getColumnModel().getColumn(i).setCellRenderer(centerR
enderer);
}
tbPop1.getColumnModel().getColumn(nGen+1).setPreferredWidth(
80);
tbPop1.getColumnModel().getColumn(nGen+1).setCellRenderer(ce
nterRenderer);
for (int i=0; i<nGen; i++)
{ model3.setValueAt(i+1, 0, i+1); }
model3.setValueAt("Fitness", 0, nGen+1);
for (int i=0; i<nIdv; i++)
{ model3.setValueAt("P"+(i+1), i+1, 0); }
for (int i=0; i<(nCr+nMt); i++)
{ model3.setValueAt("C"+(i+1), (nIdv+i+1), 0); }
for (int i=1; i<=nIdv+nCr+nMt; i++)
{
for (int j=1; j<=nGen; j++)
{ model3.setValueAt(pop[i-1].kromosom[j-1], i, j);
}
model3.setValueAt(String.format("%.5f", pop[i1].fitness), i, nGen+1);
}
Untuk memilih posisi gen yang mengalami mutasi dilakukan dengan membangkitkan
bilangan acak antara 1 panjang total gen yaitu 1- 24. Misal kita tentukan P m = 20 %.
Maka jumlah gen yang akan dimutasi adalah
= 0,2*24
= 4,8
=5
5 buah posisi gen yang akan dimutasi, setelah diacak adalah posisi 3, 7, 10, 20, 24.
Proses mutasi :
Kromosom[1] = [X3X1X2X4]
Kromosom[2] = [X1X3X4X2]
Kromosom[3] = [X2X4X3X1]
Kromosom[4] = [X4X2X1X3]
Kromosom[5] = [X3X1X2X4]
Kromosom[6] = [X4X3X1X2]
Proses algoritma genetik untuk 1 generasi telah selesai. Maka nilai fitness setelah 1
generasi adalah:
Fitness[1] = 1/(X0X3 +X3X1+X1X2+X2X4 +X4X0) = 1/(9 + 2 + 7 + 3 + 9) = 1/30 =
0,033
Fitness[2] = 1/(X0X1+X1X3 +X3X4 +X4X2+X2X0) = 1/(7 + 2 + 6 + 3 + 5) = 1/23 =
0,043
Fitness[3] = 1/(X0X2+X2X4 +X4X3 +X3X1+X1X0) = 1/(5 + 3 + 6 + 2 + 7) = 1/23 =
0,043
Fitness[4] = 1/(X0X4 +X4X2+X2X1+X1X3 +X3X0) = 1/(9 + 3 + 7 + 2 + 9) = 1/30 =
0,033
Fitness[5] = 1/(X0X3 +X3X1+X1X2+X2X4 +X4X0) = 1/(9 + 2 + 7 + 3 + 9) = 1/30 =
0,033
Fitness[6] = 1/(X0X4+ X4X3 +X3X1+X1X2+X2X0) = 1/(9 + 6 + 2 + 7 + 5) = 1/29 =
0,034
Sebelumnya telah ditentukan kriteria berhenti yaitu bila setelah dalam beberapa
generasi berturut-turut diperoleh nilai fitness yang tertinggi tidah berubah. Pada 1
generasi telah terlihat bahwa terdapat nilai fitness tertinggi yang tidak berubah.
Apabila perhitungan dilanjutkan hingga ke generasi ke-N maka disimpulkan bahwa
nilai fitness yang terendah tetap tidak akan berubah. Walaupun perhitungan cukup
dijabarkan hingga generasi ke-1 saja namun solusi yang mendekati optimal telah
didapatkan. Oleh karena itu, terbukti bahwa algoritma genetika dapat menyelesaikan
persoalan menentukan jarak terpendek pada jalur distribusi barang.
BAB III
Kesimpulan
Berdasarkan perancangan dan implementasi Aplikasi Optimasi Rute
Pengiriman Barang Menggunakan Algoritma Genetika, maka didapatkan kesimpulan
sebagai berikut:
1. Penentuan jumlah individu dan banyaknya iterasi berpengaruh kepada hasil
fitness.
2.
Aplikasi
Optimasi
Rute
Pengiriman
Barang
Menggunakan
Algoritma
Genetika telah dibuat sesuai dengan perancangan dan dapat digunakan dalam
merekomendasikan rute terdekat dalam pengiriman barang
Daftar Pustaka
Lukas, S., Anwar, T., Yuliani, W., 2005, Penerapan Algoritma Genetika untuk
Traveling Salesmen Problem dengan Menggunakan Metode Order
Crossover dan Insertion Mutation, Seminar Nasional Aplikasi
Teknologi
Informasi.
http://repository.usu.ac.id/bitstream/123456789/21086/2/Reference.p
df di akses pada 20 Mei 2015 pukul 19.30
Lumbantobing, H., Hidayatno, A., Darjat, 2011, Penerapan Algoritma Genetika pada
Perencanaan Lintas Kendaraan, Undergraduate Thesis, Universitas
Diponegoro.
http://eprints.undip.ac.id/view/divisions/sch=5fecs/2011.html
di