You are on page 1of 19

# ANT COLONY OPTIMIZATION

MAKALAH

## Untuk memenuhi tugas matakuliah Teknik Optimasi Heuristik

Oleh:

(166090400011012)

## PROGRAM STUDI MAGISTER MATEMATIKA FAKULTAS

MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS
BRAWIJAYA MALANG
2017
DAFTAR ISI

## Daftar isi ..................................................................................................................... i

BAB I PENDAHULUAN
1.1 Pendahuluan .......................................................................................................... 1
1.2 Rumusan Masalah ................................................................................................. 2
1.3 Tujuan ................................................................................................................... 2

## BABA II LANDASAN TEORI

2.1 Optimasi ................................................................................................................ 3
2.2 Ants Colony Optimization ..................................................................................... 4
2.3 Algoritma Ants Colony Optimization .................................................................... 6

## BAB III PEMBAHASAN

3.1 Flowchart Ants Colony Optimization .................................................................... 7
3.2 ACO pada TSP ...................................................................................................... 8
3.2.1 Desain Solusi ................................................................................................ 9
3.2.2 Reverse ......................................................................................................... 9
3.2.3 Penguapan Pheromones (evaporation of pheromones) ................................. 9
3.3 Simulsi ................................................................................................................... 10

BAB IV PENUTUP
4.1 Kesimpulan ............................................................................................................ 12
Lampiran

i
BAB I
PENDAHULUAN
1.1 Pendahuluan
Semut merupakan serangga yang hidup berkoloni. Semut memiliki hal yang
unik dalam mencari sumber makanan yaitu semut berjalan bergerombolan dalam
mencari makanan. Gerombolan semut berjalan secara teratur, ada yang ke arah
makanan ada pula yang ke arah sebaliknya. Awalnya semut mencari makanan secara
random hanya memanfaatkan indra penciumannya yang terkenal tajam, karena semut
tidak memiliki indra penglihatan. Namun setelah menemukan makanan, semut akan
kembali ke sarangnya dengan meninggalkan suatu pheromone yang berperan sebagai
jejak agar semut lain dapat mencium pheromone tersebut sehingga tidak akan mencari
makanan secara random lagi. Hal ini yang menyebabkan adanya semut yang berjalan
ke arah berlawanan dari arah makanan.
Percobaan mengenai prilaku semut pertama kali dilakukan oleh seorang peneliti
Biologi, Richard Feynman. Richard Feynman meletakkan sebongkah gula di salah
satu ujung bak mandi, lalu menunggu seekor semut datang dan menemukannya.
Ketika semut yang pertama kali datang kemudian kembali ke sarangnya, Feynman
mengamati jejaknya yang berkelok.
Dengan inspirasi perilaku semut tersebut maka diciptakanlah suatu algoritma
yang berperan sebagai optimasi dalam mencari jalan terbaik pada suatu graf.
Algoritma tersebut dinamakan Ant Colony Optimization (ACO).
ACO merupakan salah satu jenis pengembangan paradigma yang digunakan
untuk menyelesaikan masalah optimasi, dimana inspirasi yang digunakan untuk
memecahkan masalah tersebut berasal dari prilaku kumpulan atau kawanan. ACO
biasanya digunakan untuk menyelesaikan discrete optimization dan persoalan yang
kompleks dimana terdapat banyak variabel. Hasil yang diperoleh dengan
menggunakan ACO, walaupun tidak optimal tetapi mendekati optimal. ACO sudah
diterapkan di berbagai masalah seperti VRP, penjadwalan proyek dengan sumber
daya terbatas, data mining, penjadwalan pekerjaan (job scheduling), dan beberapa
masalah kombinatorial yang lain.

1
2

## 1.2 Rumusan Masalah

Rumusan masalah dalam makalah ini adalah:
1. Bagaimana algoritma optimasi dengan menggunakan Ants Colony
Optimization (ACO) dan terapannya?

1.3 Tujuan
Tujuan dari makalah ini adalah untuk mengetahui algoritma optimasi dengan
menggunakan Ants Colony Optimization (ACO) dan terapannya.
BAB II
LANDASAN TEORI

2.1 Optimasi
Optimasi merupakan suatu proses untuk mencapai hasil yang ideal atau optimal
(nilai efektif yang dapat dicapai). Dalam bidang matematika optimasi, merujuk pada
studi permasalahan yang mencoba untuk mencari nilai minimal atau maksimal dari
suatu fungsi. Untuk dapat mencapai nilai optimal tersebut, secara sistematis dilakukan
pemilihan nilai variabel integer atau nyata yang akan memberikan solusi optimal.
Adapun yang dikenal dengan nilai optimal yaitu nilai yang didapat dengan
melalui suatu proses dan dianggap menjadi suatu solusi jawaban yang paling baik dari
semua solusi yang ada. Nilai optimal dapat dicari dengan dua cara:
1. Pertama yaitu cara konvencional, yaitu mencoba semua kemungkinan yang
ada dengan mencatat nilai yang didapat. Cara ini kurang efektif, karena akan
membutuhkan banyak waktu dalam pengecekan sehingga akan menjadi
tidak optimal.
2. Cara kedua adalah dengan menggunakan formula (metode) ataupun media
seperti gambar atau grafik sehingga nilai optimal dapat di perkirakan dengan
cepat dan tepat.
Beberapa contoh yang membutuhkan optimasi diantaranya adalah:
a. Menentukan lintasan terpendek dari suatu tempat ke tempat yang lain.
b. Menentukan jumlah pekerja seminimal mungkin dalam melakukan suatu
proses produksi dengan pengeluaran biaya pekerja dapat seminimal mungkin
dan hasil produksi semaksimal mungkin.
c. Mengatur jalur kendaraan umum agar dapat mencapai semua lokasi.
d. Mengatur routing jaringan kabel telepon agar biaya pemasangan kabel tidak
terlalu besar dan penggunaannya tidak boros.

3
4

## 2.2 Ant Colony Optimization

Ant Colony Optimization merupakan teknik pencarian multi-agent untuk
menyelesaikan permasalahan optimasi kombinatorial yang diinspirasi tingkah laku
semut dalam suatu koloni(Marco,2004). Algoritma Ant Colony pertama kali
diperkenalkan oleh Marco Dorigo pada tahun 1992 yang kemudian dipublikasikan
dengan nama Ant System(AS).
ACO merupakan sebuah probabilistic komputasi teknik untuk memecahkan
masalah yang dapat dikurangi untuk menemukan jalur yang baik melalui grafik.
ACO meniru prilaku koloni semut dalam mencari sumber makanan yaitu bermula
dari sarangnya menuju tempat yang memiliki sumber banyak makanan dan
kembali ke sarangnya yang secara alami mencari rute terpendek. Sehingga hal yang
menarik dari perilaku semut tersebut adalah kemampuannya dalam menemukan jarak
terpendek antara sarang mereka dan sumber makanan.
Dari keadaan tersebut, semut yang melewati lintasan yang pendek akan
meninggalkan jejak pheromone yang lebih tajam dari pada semut yang melewati
lintasan yang lebih panjang. Juga menjadi sifat alami semut untuk mengikuti jalan
yang memiliki jejak pheromone yang lebih kuat, sebagaimana gambar berikut.
obstacle

## Gambar 1. Lintasan semut yang mengikuti pheromone.

Pada saat system (lingkungan semut) telah menemukan solusi yang optimal,
5

merupakan dasar dari ant-system. Pheromone yang lebih kuat akan dimiliki oleh
solusi dengan jalur yang lebih optimal pada akhir suatu algoritma.
ACO dalam prosesnya dimulai dengan semut secara individual memiliki
kemampuan kognitif terbatas secara kolektif mampu menemukan jalur terpendek
antara sumber makanan dan sarang. Misalkan terdapat N semut dalam satu koloni.
Semut-semut memulai perjalanan dari sarang menuju sumber makanan dengan
melalui beberapa titik dan berakhir pada titik akhir setiap siklus atau iterasi. Jika
semua semut sudah menyelesaikan perjalanannya, jumlah pheromone pada lintasan
terbaik secara global akan diperbaharui. Lintasan global terbaik artinya terbaik
diantara semua semut. Pada awal proses, semua ruas dari titik awal akan diberi
jumlah pheromone yang sama. Pada iterasi pertama, semua semut akan mulai dari
titik awal dan berakhir pada titik terakhir dengan memilih titik-titik secara acak.
Proses optimasi berakhir jika jumlah iterasi maksimum sudah tercapai atau tidak ada
lagi solusi yang lebih baik yang bias didapatkan dalam beberapa iterasi yang
berurutan. Hal itu dapat di gambar dari gambar 2 berikut:

## Gambar 2. Trevelling Salesman Problem.

Misal Dalam iterasi 1 semut mencari sumber makanan melalui jalur manapun,
kemudian kembali kesarang dengan meninggalkan jejak pheromone. Selanjutnya pada
juga semut yang bergerak bebas, akhirnya pada iterasi ke-3 mendapat jarak leih
pendek dari sarang menuju sumber makanan, sehingga semut semut lainya akan
6

mengikuti pheromone yang lebih kuat tersebut. Sehingga dari itu di peroleh lintasana
optimal terpendek seperti iterasi ke-4.

## 2.3 Algoritma Ants Colony Optimization

acak. Kota berikutnya dipilih oleh probabilitas tertimbang yang merupakan fungsi
kekuatan pheromone yang diletakkan di jalur dan jarak kota. Probabilitas bahwa semut
akan melakukan perjalanan dari kota ke kota diberikan oleh

/
=
/
Dimana:
= kekuatan pheromone
= kota yang datang setelah kota
= bobot pheromone; ketika a = 0, kota terdekat dipilih
= bobot jarak; ketika b = 0, jarak antar kota diabaikan
Jalan pendek dengan pheromone tinggi memiliki probabilitas seleksi tertinggi. Pada
jalur awal, pheromone diletakkan pada jalur yang tidak efisien. Karena itu beberapa
pheromone ini harus menguap pada waktunya atau algoritma akan melakukannya
bertemu di jalan yang tidak efisien. Sehingga pheromone mengalami update dengan
formula sebagai berikut,

= (1 ) + +
=1

Dimana;

= pheromone yang diletakkan oleh semut antara kota dan kota
= konstanta penguapan pheromone
= bobot jalur elit konstan

= pheromone yang diletakkan pada jalur terbaik yang ditemukan oleh algoritma
BAB III
PEMBAHASAN

## 3.1 Flowchart Ants Colony Optimization

Pada bab ini akan dibahas iterasi pertama proses- proses yang harus dilakukan
colony optimization berikut:

Ant Colony Optimization (ACO) milik kelompok metode metaheuristik.
Gagasan itu diterbitkan di awal tahun 90an untuk pertama kalinya. Dasar ACO adalah
mensimulasikan perilaku sesungguhnya semut di alam. Fungsi koloni semut

7
8

## memberikan komunikasi tidak langsung dengan pheromone bantuan, yang

dikeluarkan semut. Pheromone adalah zat kimia yang menarik semut lain yang
mencari makanan.
Daya tarik jalur yang diberikan bergantung pada jumlah pheromone yang
dirasakan semut. Ekskresi pheromone diatur oleh beberapa peraturan dan tidak selalu
memiliki intensitas yang sama. Kuantitas pheromone bergantung pada daya tarik rute.
Penggunaan rute yang lebih menarik memastikan semut memancarkan lebih banyak
pheromone dalam perjalanan pulang dan jalur lebih menarik bagi semut lainnya. Yang
penting
Karakteristik pheromone adalah penguapan. Proses ini tergantung dari waktu. Bila
jalannya tidak lagi digunakan, pheromone lebih menguap dan semut mulai
menggunakan jalur lain.
Hal yang penting bagi algoritma ACO adalah pergerakan semut. Gerakan ini
tidak deterministik, namun memiliki karakter stokastik, sehingga semut bisa
ditemukan jalan, yang pertama tidak menguntungkan, tapi yang pada akhirnya lebih
baik untuk pencarian makanan. Karakteristik yang penting adalah beberapa individu
terus menggunakan jalur yang tidak disukai dan mencari cara terbaik lainnya.
ACO diformulasikan berdasarkan percobaan dengan model jalur ganda, dimana
kuantifikasi dibuat serupa dengan metode Monte Carlo. Dasar dari simulasi ini adalah
dua hubungan buatan antara anthill dan sumber makanan. Simulasi menunjukkan
bahwa semut dapat menemukan lebih pendek kedua jalur ini. Signifikan
Dampak dari simulasi ini adalah untuk mengkuantifikasi perilaku semut.
Untuk penggunaan ACO secara praktis, perlu dilakukan proyek semut virtual.
Penting untuk mengatur properti mereka. Properti ini membantu semut virtual untuk
memindai grafik dan menemukan tur terpendek. Virtual semut tidak bergerak terus
menerus; Mereka bergerak dalam lompatan, yang berarti bahwa, setelah unit waktu,
mereka akan selalu berada di simpul grafik lainnya. Jalur terlantar disimpan dalam
memori ant. Siklus yang dibuat terdeteksi dalam memori ant. Pada tur berikutnya,
semut memutuskan pangkalan pada pheromones. Hanya karena penguapan penghias
pheromone, pheromone pada tepian terpendek lebih kuat, karena antera melewati
9

## ujung-ujungnya lebih cepat. Berdasarkan fakta ini kita bisa matematis

menggambarkan perilaku semut virtual.
3.2.1 Desain Solusi

+
=
( + )
Dimana
= menunjukkan daya tarik transisi di masa lalu,
= menambah daya tarik transisi semut,
= kumpulan simpul terhubung ke titik , tanpa titik terakhir yang dikunjungi
sebelum ,
, = parameter yang ditentekan saat simulasi.

3.2.2 Reverse
Ant virtual menggunakan jalur reverse yang sama dengan jalan menuju sumber
makanan berbasis memori internal-nya, tapi dalam urutan berlawanan dan tanpa
siklus yang dieliminasi. Setelah siklus eliminasi, semut menempatkan pheromone di
tepinya jalan terbalik sesuai dengan rumus berikut:
+1
= +
Dimana

= nilai dari pheromone pada langkah ,
= nilai yang tersimpan dari pheromones dalam langkah .
Nilai dapat konstan atau berubah tergantung kualitas larutan.

## 3.2.3 Penguapan Pheromones (Evaporation of Pheromones)

Proses penguapan pada pheromone membantu untuk menemukan jalan
terpendek dan tidak memungkinkan jalan lain dinilai sebagai yang terpendek.
Penguapan ini pheromone memiliki intensitas , sebagai berikut:
+1
= (1 )
10

dengan (0,1).

3.3 Simulasi
Pergerakan semut memberikan kesejajaran dan pencarian rute independen
dengan bantuan perubahan dinamis dari jejak pheromone. Semut merupakan unit asar
dengan kemampuan untuk belajar, dan karena kerja sama kolektif dengan anggota
populasi lainnya, ia dapat menemukan solusi yang dapat diterima untuk masalah yang
diberikan.
Untuk percobaan, kami menggunakan ACO untuk mendapatkan solusi optimal
dari masalah 20 kota di india. Dengan didefinisi sebagai berikut:
= [82 91 12 92 63 9 28 55 96 97 15 98 96 49 80 14 42 92 80 96]
dan parameter = 1, = 5, dengan panjang iterasi 1000 dengan bantuan matlab
maka diperoleh solusi jalur terdekat sebagai berikut:

11

## Gambar 4. Nilai cost pada iterasi 1000

Pada iterasi 300 dari gambar 4. menunjukan nilai yang konstans, artinya nilai cost
tidak mengalami perubahan, sehingga untuk mempercepat iterasi maka dapat di lihat
samapai iterasi 300
12

## Gambar 5. Nilai cost pada iterasi 300

BAB IV
PENUTUP
4.1 Kesimpulan
Berdasarkan percobaan, dapat disimpulkan bahwa penggunaan metode yang
tepat adalah bahwa algoritma ACO memberikan hasil yang relatif baik dengan jumlah
iterasi yang relatif rendah, dan oleh karena itu dapat menemukan solusi yang dapat
diterima dalam waktu yang relatif singkat, sehingga dapat digunakan untuk
memecahkan masalah yang terjadi secara praktis.

12
Lampiran

clc;
clear;
close all;

%% Problem Definition
model=CreateModel();

CostFunction=@(tour) TourLength(tour,model);

nVar=model.n;

%% ACO Parameters
MaxIt=300; % Maximum Number of Iterations
nAnt=40; % Number of Ants (Population Size)
Q=1;

## alpha=1; % Phromone Exponential Weight

beta=1; % Heuristic Exponential Weight

## rho=0.05; % Evaporation Rate

%% Initialization
eta=1./model.D; % Heuristic Information Matrix
tau=tau0*ones(nVar,nVar); % Phromone Matrix
BestCost=zeros(MaxIt,1); % Array to Hold Best Cost Values

% Empty Ant
empty_ant.Tour=[];
empty_ant.Cost=[];

## % Ant Colony Matrix

ant=repmat(empty_ant,nAnt,1);

% Best Ant
BestSol.Cost=inf;
%% ACO Main Loop
for it=1:MaxIt

% Move Ants
for k=1:nAnt

ant(k).Tour=randi([1 nVar]);

for l=2:nVar

i=ant(k).Tour(end);
P=tau(i,:).^alpha.*eta(i,:).^beta;

P(ant(k).Tour)=0;

P=P/sum(P);

j=RouletteWheelSelection(P);

ant(k).Tour=[ant(k).Tour j];

end

ant(k).Cost=CostFunction(ant(k).Tour);

if ant(k).Cost<BestSol.Cost
BestSol=ant(k);
end

end
% Update Phromones
for k=1:nAnt

tour=ant(k).Tour;

## tour=[tour tour(1)]; %#ok

for l=1:nVar

i=tour(l);
j=tour(l+1);

tau(i,j)=tau(i,j)+Q/ant(k).Cost;

end
end

% Evaporation
tau=(1-rho)*tau;

## % Store Best Cost

BestCost(it)=BestSol.Cost;

## % Show Iteration Information

disp(['Iteration ' num2str(it) ': Best Cost = '
num2str(BestCost(it))]);

% Plot Solution
figure(1);
PlotSolution(BestSol.Tour,model);
pause(0.01);
end
%% Results
figure;
plot(BestCost,'LineWidth',2);
xlabel('Iteration');
ylabel('Best Cost');
grid on;

function model=CreateModel()

x=[82 91 12 92 63 9 28 55 96 97 15 98 96 49 80 14 42 92 80 96];

y=[66 3 85 94 68 76 75 39 66 17 71 3 27 4 9 83 70 32 95 3];

n=numel(x);

D=zeros(n,n);

for i=1:n-1
for j=i+1:n

D(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);

D(j,i)=D(i,j);

end
end

model.n=n;
model.x=x;
model.y=y;
model.D=D;

end

function L=TourLength(tour,model)

n=numel(tour);

tour=[tour tour(1)];

L=0;
for i=1:n
L=L+model.D(tour(i),tour(i+1));
end
end

function j=RouletteWheelSelection(P)

r=rand;

C=cumsum(P);

j=find(r<=C,1,'first');

end

function PlotSolution(tour,model)

tour=[tour tour(1)];

plot(model.x(tour),model.y(tour),'k-o',...
'MarkerSize',10,...
'MarkerFaceColor','y',...
'LineWidth',1.5);

xlabel('x');
ylabel('y');

axis equal;
grid on;

alpha = 0.1;

xmin = min(model.x);
xmax = max(model.x);
dx = xmax - xmin;
xmin = floor((xmin - alpha*dx)/10)*10;
xmax = ceil((xmax + alpha*dx)/10)*10;
xlim([xmin xmax]);

ymin = min(model.y);
ymax = max(model.y);
dy = ymax - ymin;
ymin = floor((ymin - alpha*dy)/10)*10;
ymax = ceil((ymax + alpha*dy)/10)*10;
ylim([ymin ymax]);

end