Professional Documents
Culture Documents
MAKALAH
Oleh:
Muhammad Sukron
(166090400011012)
BAB I PENDAHULUAN
1.1 Pendahuluan .......................................................................................................... 1
1.2 Rumusan Masalah ................................................................................................. 2
1.3 Tujuan ................................................................................................................... 2
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.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
Pada saat system (lingkungan semut) telah menemukan solusi yang optimal,
yaitu lintasan terpendek, maka ACO akan dapat beradaptasi dengan cepat terhadap
perubahan yang terjadi di sekitar. Adaptasi ini didasarkan pada pheromone yang
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:
mengikuti pheromone yang lebih kuat tersebut. Sehingga dari itu di peroleh lintasana
optimal terpendek seperti iterasi ke-4.
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
7
8
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.
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:
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;
% Empty Ant
empty_ant.Tour=[];
empty_ant.Cost=[];
% 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;
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;
% 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