• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: Matlab
  • 标签: 遗传算法  matlab  

资源简介

该代码是自己通过学习遗传算法编写的小Demo

资源截图

代码片段和文件信息

%遗传算法编程
clear all;
clc;
x = -5:0.01:5;
y = x.^2;
yn = 30 - x.^2;      %最大值
%figure(1);
%plot(xy‘:‘);
n = (5-(-5))/0.01+1;%因为n=1001个数约等于1024即2的10次方,所以选择10位bit进行编码。
%我们产生的随机数是在0-1000之间。
r = zeros(12);
q = zeros(12);
%----------------------------------------------------------------
%产生种群库  
xn = round(1000*rand(115));
%x = -5+(10*xi)/1000即x=0处xi=500
ExpectMax = yn(1);
ExpectDot = x(1);
for N=1:500;      %N表示进化的次数
    
  for i=1:15;
      for j =1:15;
        if abs(xn(i)-xn(j))<=10 && i~=j; %防止近亲成为了种群族跳转不出循环
           xn(i) = floor(1000*rand(11));
        end  
      end
  end
%----------------------------------------------------------------
%适应度函数和近亲的选择
for i=1:15;
    x(i) = -5+(10*xn(i))/1000;
    yn = 30 - x(i).^2;
    if yn > ExpectMax;
        ExpectMax = yn;
        ExpectDot = x(i);   %xx是我们最后的接近理想值
    end
end
%----------------------------------------------------------------
%交叉算法实现-->>内部交叉       2位随机的连续的bit进行交叉 概率一般0.6左右
   xc = dec2bin(xn(1:15));     %把10进制数转换为2进制数
   j

评论

共有 条评论