function [xopt,fmin,it]=simpelpso(funname,N,maxit)
%written by budi santosa to implement original PSO
% budi_s@ie.its.ac.id, faculty of industrial eng, ITS
%to find minimum of multi variable function
dim = 2; % Dimension of the problem
upbnd =[6 6]; % Upper bound for init. of the swarm
lwbnd =[-6 -6]; % Lower bound for init. of the swarm
% Initializing swarm and velocities
x = rand(N,dim).*repmat((upbnd-lwbnd),N,1) + repmat(lwbnd,N,1) ;
v = rand(N,dim); %kecepatan awal
[brs,kol]=size(x);
f=zeros(N,1);
%bobot inertia
for i=1:brs
f(i)=feval(funname,x(i,:));
end
it=1;
Pbest=x;
fbest=f;
[minf,idk]=min(f);
Gbest=x(idk,:);
lastbest=[0 0];
minftot=[];
rhomax=0.9;rhomin=0.4;
for it=1:maxit
rho(it)=rhomax-((rhomax-rhomin)/maxit)*it;
end
while it<maxit
r1=rand;r2=rand;
for j=1:brs
v(j,:)=rho(it)*v(j,:)+r1.*(Pbest(j,:)-x(j,:))+r2.*(Gbest-x(j,:));
x(j,:)=x(j,:)+v(j,:);
f(j)=feval(funname,x(j,:));
end
%update Pbest
changerow = f < fbest;
fbest=fbest.*(1-changerow)+f.*changerow;
Pbest(find(changerow),:)=x(find(changerow),:);
[minf,idk]=min(fbest);
minftot=[minftot;minf];
Gbest=Pbest(idk,:);
if sum(var(Pbest))<1e-8
break
end
it=it+1;
lastbest=Gbest;
end
xopt=Gbest;
fmin=minf;
plot(minftot)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Halo pak..salam kenal..saya mau pesan buku metaheristik, gimana caranya ya ?
Salam kenal Arnita. darimana universitasnya? oo bisa transfer ke rek mandiri ana budi santosa no 1420004614086. Tolong kasih alamat kirim nanti buku dikirim dengan TIKI.
Harga 65rb+ongkir. Bisa email langsung ke shima9107@yahoo.com
Terima kasih
Salam kenal pak Budi, saya Noru dari Universitas Diponegoro, saya sedang mendalami PSO untuk Tugas Akhir saya. Ada beberapa hal yang saya mau tanyakan pak..
Bagaimana algoritma PSO bila dalam satu PSO terdapat 2 swarm yang optimasi dan menggunakan 1 fungsi objektif, apakah sama dengan Multi-Species PSO? karena saya rasa itu bukan Multi-Objective PSO karena hanya menggunakan 1 fungsi objektif.
Seperti contohnya saya ingin mengoptimasi (minimasi fungsi) fungsi x = 100*(A + B). Disini A dan B merupakan 2 buah swarm yang memiliki batasan sendiri-sendiri (‘lwbnd’ dan ‘upbnd’).
Dalam memperbarui posisi dan kecepatan tiap swarm apakah menggunakan rumus posisi dan kecepatan sendiri-sendiri untuk masing-masing swarm atau hanya perlu 1 kecepatan pak..?
Saya mohon pencerahannya.Terima kasih.
walaupun saya kurang paham dengan pertanyaanya, saya menduga yang anda bicarakan adalah fungsi dengan multivariabel. Istilah swam juga sdh menunjukkan kumpulan individu. jadi swarm A dan B jadi membingungkan. Mestinya variabel A dan B. Baca buku saya mungkin akan membantu pemahaman.
aslmkm pak, saya roza mhs universitas bengkulu ,, saya mengambil topik pso dalam tugas akhir saya, sebagai referensi ,, saya mencoba menjalankan sourcecode matlab bapak diatas,, tetapi ada pesan error ….. function [xopt,fmin,it]=simpelpso(funname,N,maxit)
|
Error: Function definitions are not permitted in this
context. ,, mohon pencerahan y pak,, trims…
ada function yang ada dalam simpelpso yang belum didefnisikan, yaitu fungsi2. Perlu dibuat function dengan nama fungsi2 yang isinya problem optimasi yang dicari minimalnya.