%% -------------------------------------------------------- %
%% Bismillaahirrahmaanirrahiim %
%% Firefly Algorithm
%%--------------------------------------------------------- %
clc%Parameter PSS
Ks=20;T1=0.02;T2=0.05;T3=3;T4=5.4;T5=2; %% Parameter of FireFly
% Td1 Td2 Td3 Td4 Td5 Td6
Ub=[5 25 1 1 5 5.5]; % Batas atas parameter
Lb=[0.5 0 0 0 0 0]; % Batas bawah parameter
etol=10e-5;% Inisialisasi acak
u0=(Lb+Ub)/2; ns=zeros(20,6);% Algorithm's parameters
%para=[n MaxGeneration alpha betamn gamma]
%para=[20 50 0.35 0.20 1]
% n = Jumlah kunang-kunang
% MaxGeneration = Jumlah iterasi
% ------------------------------------------------
% alpha=0.25; % Nilai acak 0--1
% betamn=0.20; % Nilai beta minimum
% gamma=1; % Koefisien absorbsi
% ------------------------------------------------ n=10; MaxGeneration=5; alpha=0.35; betamin=0.2; gamma=1;% Menghitung dimensi pencarian kunang-kunang
d=length(u0);%Inisialisasi awal kandidat solusi
for ikj=1:n ns(ikj,:)=Lb+(Ub-Lb).*rand(1,d); % Kolom = Dimensi, dan Baris = FireFly
end% Inisialisasi nilai fitness sebelum evaluasi
Lightn = ones(n,1);% Looping Evaluasi algoritma kunang-kunang
hfig = figure(1); hold on title('Behaviour of FireFly Algorithm Graphic'); set(hfig, 'position', [50,40,600,300]); set(hfig, 'DoubleBuffer', 'on'); hbestplot = plot(1:MaxGeneration,zeros(1,MaxGeneration),'-'); xlabel('Iteration'); ylabel('Fitness Function'); hold off drawnow; kq=1;while kq<=MaxGeneration % start iterasi
%Menghitung nilai alpha yang baru
delta=1-(0.005/0.9)^(1/MaxGeneration); alpha=(1-delta)*alpha;%Evaluasi fungsi fitness (untuk semua kunang-kunang)
for ikj=1:n Ks_FF = ns(ikj,1); T1_FF = ns(ikj,2); T2_FF = ns(ikj,3); T3_FF = ns(ikj,4); T4_FF = ns(ikj,5); T5_FF = ns(ikj,6); sim('SkripsiKu') t1=f.time; y1=f.signals.values; for i=1:800 error(i)=t1(i)*abs(y1(i)); end ee_itae=sum(error); fitness_particle(ikj)=ee_itae; zn(ikj) = fitness_particle(ikj); Lightn(ikj) = zn(ikj);end% Merangking kunang-kunang berdasarkan intensitas cahaya
% masing-masing
[Lightn,Index]=sort(zn); ns_tmp=ns;for ikj=1:n ns(ikj,:)=ns_tmp(Index(ikj),:);end %% Mencari kunang-kunang yang terbaik nso=ns; Lighto=Lightn; nbest=ns(1,:); Lightbest=Lightn(1);% Gerakkan semua kunang-kunang ke lokasi yang lebih baik
% Faktor skala pada sistem
scale=abs(Ub-Lb);% Mengupdate posisi kunang-kunang
for ikj=1:n% Parameter Attractiveness Kunang-Kunang : beta=exp(-gamma*r)
for jkj=1:n r=sqrt(sum((ns(ikj,:)-ns(jkj,:)).^2));% MengUpdate Pergerakan kunang-kunang
% Apakah lebih terang dan attractive
if Lightn(ikj)>Lighto(jkj) beta0=1; beta=(beta0-betamin)*exp(-gamma*r.^2)+betamin; tmpf=alpha.*(rand(1,d)-0.5).*scale; ns(ikj,:)=ns(ikj,:).*(1-beta)+nso(jkj,:).*beta+tmpf;endend % akhir untuk j
% Konstraint
for irg=1:3if ns(ikj,irg)<=Lb(irg) ns(ikj,irg) =Lb(irg) ;elseif ns(ikj,irg)>=Ub(irg) ns(ikj,irg) =Ub(irg);endendend % akhir untuk i
plotvector=get(hbestplot,'Ydata'); plotvector(kq)=Lightn(1); set(hbestplot,'Ydata',plotvector); drawnow kq=kq+1;end %%Akhir Iterasi
Ks_FF = nbest(1); T1_FF = nbest(2); T2_FF = nbest(3); T3_FF = nbest(4); T4_FF = nbest(5); T5_FF = nbest(6);% FF.m
% Displaying FF.m.
MATLAB: Help for the probel in Firefly Algorithm for PSS, in fitness particle is not run
firefly algorithm
Best Answer