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

📄 main.m

📁 遗传算法实现50维函数优化
💻 M
字号:
%用遗传算法进行50维函数的优化
clear

bn=50; %个体串长度
inn=50; %初始种群大小
gnmax=500;  %最大代数
pc=0.75; %交叉概率

%产生初始种群
s=round(rand(inn,bn)*64)-32;

%计算适应度,返回适应度f和累积概率p
[f,p]=objf(s);  

gn=1;
while gn<gnmax+1
   for j=1:2:inn
      
      %选择操作
      seln=sel(s,f);
      
      %交叉操作
      scro=cro(s,seln,pc);
      scnew(j,:)=scro(1,:);
      scnew(j+1,:)=scro(2,:);
      
      %变异操作
      smnew(j,:)=mut(scnew(j,:),gn,gnmax);
      smnew(j+1,:)=mut(scnew(j+1,:),gn,gnmax);
   end
   s=smnew;  %产生了新的种群
   
   %计算新种群的适应度   
   [f,p]=objf(s);
   
   %记录当前代最好和平均的适应度
   [fmax,nmax]=max(f);
   fmean=mean(f);
   ymax(gn)=fmax;
   ymean(gn)=fmean;
   %记录当前代的最佳个体
   x=s(nmax,:);
   xmax(gn,:)=x;
   xmean(gn)=abs(mean(x));
   
   gn=gn+1
end
gn=gn-1;

%绘制曲线
subplot(2,1,1);
plot(1:gn,[ymax;ymean]);
title('历代适应度变化','fonts',10);
legend('最大适应度','平均适应度');
string1=['最终适应度',num2str(ymax(gn))];
gtext(string1);
subplot(2,1,2);
plot(1:gn,xmean,'r-');
legend('自变量');
string2=['最终自变量绝对平均值',num2str(xmean(gn))];
gtext(string2);

⌨️ 快捷键说明

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