clc;clear;close all;%Problem Girdileri:
model=createmodel();costfunction=@x mycost(model,x); <<<<<<<<<<<<<<????nvar=model.n;varmin=0;varmax=1;varsize=[1 nvar];%PSO Parametreleri:
maxit=500;npop=100;c1=0.2;c2=0.2;w=1;wdamp=0.99; %İndirim Oranı
%Başlangıç
parca.pozisyon=[];parca.maliyet=[];parca.sol=[];parca.best.pozisyon=[];parca.best.maliyet=[];parca.best.sol=[];parca.velocity=[];parcalar=repmat(parca,npop,1);gbest.maliyet=inf;bestcost=zeros(maxit,1);for i=1:npop; parcalar(i).pozisyon=unifrnd(varmin,varmax,varsize); [parcalar(i).maliyet parcalar(i).sol]=costfunction(parcalar(i).pozisyon); parcalar(i).best.pozisyon=parcalar(i).pozisyon; parcalar(i).best.maliyet=parcalar(i).maliyet; parcalar(i).best.sol=parcalar(i).sol; parcalar(i).velocity=zeros(varsize); if parcalar(i).best.maliyet<gbest.maliyet; gbest=parcalar(i).best; endend%PSO Ana Döngü:
for it=1:maxit; %Hız Vektörünü Güncelleme:
for i=1:npop; parcalar(i).velocity=w*parcalar(i).velocity+c1*rand(varsize).*(parcalar(i).best.pozisyon-parcalar(i).pozisyon)+c2*rand(varsize).*(gbest.pozisyon-parcalar(i).pozisyon); %Güncelleme Pozisyonu:
parcalar(i).pozisyon=parcalar(i).pozisyon+parcalar(i).velocity; [parcalar(i).maliyet parcalar(i).sol]=costfunction(parcalar(i).pozisyon); %Mutasyon:
newsol.pozisyon=Doreversion(parcalar(i).pozisyon); [newsol.maliyet newsol.sol]=costfunction(newsol.pozisyon); if newsol.maliyet<=parcalar(i).maliyet; parcalar(i).pozisyon=newsol.pozisyon; parcalar(i).maliyet=newsol.maliyet; parcalar(i).sol=newsol.sol; end %Kişisel En İyiyi Güncelleme:
if parcalar(i).maliyet<parcalar(i).best.maliyet; parcalar(i).best.maliyet=parcalar(i).maliyet; parcalar(i).best.sol=parcalar(i).best.sol; parcalar(i).best.pozisyon=parcalar(i).pozisyon; end if parcalar(i).best.maliyet<gbest.maliyet; gbest=parcalar(i).best; end end %Mutasyon: newsol.pozisyon=Doreversion(gbest.pozisyon); [newsol.maliyet newsol.sol]=costfunction(newsol.pozisyon); if newsol.maliyet<=gbest.maliyet; gbest=newsol; end bestcost(it)=gbest.maliyet; w=w*wdamp; figure(1); plotsolition(gbest.sol.tour,model);end%Yazdırma:
figure;plot(bestcost);xlabel('İterasyon');ylabel('En İyi Çözüm')____________________________________________________function [z, sol]=mycost(model,x)[~, tour]=sort(x); <<<<<<<<<<<<????D=model.D;n=model.n;L=0;for k=1:n; i=tour(k); if k<n; j=tour(k+1); else j=tour(1); end; L=L+D(i,j); end z=L; sol.tour=tour; sol.L=L; end__________________________________________________________________function model=createmodel()x=[57 96 79 40 93 60 58 82 30 53 86 16 60 43 69 91 23 60 86 15];y=[86 59 53 6 74 23 70 6 35 17 48 87 37 31 45 26 17 75 65 42];n=numel(x);D=zeros(n);for i=1:n-1 for j=i:n D(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2); D(j,i)=D(i,j); endendmodel.n=n;model.D=D;model.x=x;model.y=y;end
MATLAB: Error: File: gsp_opt.m Line: 6 Column: 17 Unexpected MATLAB expression.
unexpected
Best Answer