⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spga.m

📁 matlab例子
💻 M
字号:
x = 0:10;  y1 = sin(x);
popsize=50;lchrom=32;gen=50;minn=0;sitea=0;
%a1=zeros(1,length(y)+3);
%a1(2)=rand(1,1)*max(y);
B=zeros(popsize,lchrom);
A=rand(popsize,lchrom);
bestch=zeros(1,lchrom);
format long;
for i=1:popsize
   for j=1:lchrom
      if A(i,j)>=0.5
         A(i,j)=1;
      else
         A(i,j)=0;
      end
   end
end
%hopevalue=zeros(1,popsize);
for kk=1:gen
hopevalue=zeros(1,popsize);
for i=1:popsize
   for j=2:lchrom
      hopevalue(i)=hopevalue(i)+A(i,j)*(2^(-j+1));
   end
   if A(i,1)==1
      hopevalue(i)=-hopevalue(i);
   end
end
%hopevalue
%a2=-0.26627375583248;%*max(y);
%maxerr=gasp(y1,a2) 
maxerr=zeros(1,popsize);
for i=1:popsize
   maxerr(i)=gasp(y1,hopevalue(i));
end
%maxerr
[minerror,k]=min(maxerr);
minerror
bestch=A(k,:);
bestvalue=hopevalue(k)
merror=max(maxerr);
fitness=zeros(1,popsize);
sumfitness=0;
for i=1:popsize
   fitness(i)=1-maxerr(i)/merror;
   sumfitness=sumfitness+fitness(i);
end
%fitness
%sumfitness
for i=1:popsize/2
   mate1=select(sumfitness,fitness);
   mate2=mate1;
   while mate2==mate1
      mate2=select(sumfitness,fitness);
   end
   [B(2*i-1,:),B(2*i,:)]=crossover(A(mate1,:),A(mate2,:));
end
A=B;
A(k,:)=bestch;
kk
pause;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -