MATLAB: Help for the probel in Firefly Algorithm for PSS, in fitness particle is not run

firefly algorithm

%% -------------------------------------------------------- %
%% 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;
end
end % akhir untuk j
% Konstraint
for irg=1:3
if ns(ikj,irg)<=Lb(irg)
ns(ikj,irg) =Lb(irg) ;
elseif ns(ikj,irg)>=Ub(irg)
ns(ikj,irg) =Ub(irg);
end
end
end % 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.

Best Answer

plotvector(kq)=Lightn(1);
You are always copying the same element of Lightn into plotvector .