资源简介

用遗传算法对f(x,y)=x^2+y^2进行测试,其中x在[-5,5]内。得出测试函数的平均值和最优值。

资源截图

代码片段和文件信息

close all;
clc;

% 遗传算法参数设定和初始化
M=50; % 种群大小
T=1000; % 遗传运算得终止进化代数
Length=16; % 二进制编码长度
pc=0.9; % 交叉概率
pm=0.04; % 变异概率
Max=2048; % 输入值的取值上限
Min=-2048; % 输入值的取值下限
G=round(rand(MLength*2)); % 初始化数值使其成为布尔型
NG=zeros(MLength*2);
 
for k=1:1:T
    T(k)=k;
    for s=1:1:M
        N=G(s:);
        y1=0;
        y2=0;
        
        N1=N(1:Length); % 对x1进行解码
        for i=1:Length
            y1=y1+N1(i)*2^(i-1);
        end
        x1=(Max-Min)*y1/(2^Length-1)+Min;
        x1_G(k)=x1; % 为了便于最后图形输出,而引进的类似指针型变量
        
        N2=N(Length+1:2*Length); % 对x2进行解码
        for i=1:Length
            y2=y2+N2(i)*2^(i-1);
        end
        x2=(Max-Min)*y2/(2^Length-1)+Min;
        x2_G(k)=x2; % 为了便于最后图形输出,而引进的类似指针型变量
        
        F(s)=-[x1.^2+x2.^2]; % 目标函数表达

评论

共有 条评论