【智能算法学习】一种简单的人类学习优化算法SHLO

人类学习优化(HLO)是一种基于简化人类学习模型开发的简单而高效的元启发式算法。该算法收敛速度快,全局寻优能力强不易陷入局部最优等优点,且设置参数少、算法简单易实现,已在多个应用问题上表现良好的性能。HLO算法中的每个个体可以通过3个学习算子即随机学习算子、个体学习算子和社会学习算子来模拟人类的3种学习行为进行寻优。

1、初始化

其中,xi表示第i个个体,N是人口的大小,M是解的维数。二进制字符串的每一位都随机初始化为“0”或“1”,这表示人们想要学习和掌握的知识或技能的基本元素。在这里插入图片描述

2、学习阶段

2.1随机学习算子

在学习开始时,人们通常随机学习,因为没有问题的先验知识。在接下来的研究中,由于遗忘,仅知道问题和其他因素的部分知识,个体无法完全复制之前的经验,因此他们仍然以一定的随机性学习。为了模拟人类学习中的这些随机现象,为SHLO开发了简化的随机学习算子,如等式(2)
在这里插入图片描述

2.2个体学习算子

个人学习被定义为通过对外部刺激和来源的个人反思建立知识的能力。在学习过程中,人们利用自己的经验和知识来避免错误和提高绩效是非常普遍的。为了模拟SHLO中人类的个人学习,使用个人知识数据库(IKD)存储个人最佳经验,如等式(3-4)。当SHLO进行个体学习时,它根据IKD中的知识生成新的解决方案,如等式(5)所示
在这里插入图片描述
在这里插入图片描述

2.3 社会学习算子

通过个人学习,如果问题复杂,学习过程可能非常缓慢和低效。在社会环境中,人们可以通过社会学习从集体经验中学习,以进一步发展自己的能力。在这种情况下,人们直接或间接地转移知识和技能,因此,经验分享将提高学习的效率和有效性。为了模拟这种有效的学习策略,使用社会知识数据(SKD)来保留人群的知识,如等式(6)。基于SKD中的知识,SHLO可以执行等式(7)中的社会学习,以在搜索过程中生成更好的解决方案。
在这里插入图片描述
在这里插入图片描述
综上所述,SHLO使用随机学习算子、个体学习算子和社会学习算子来产生新的解决方案,并基于存储在IKD和SKD中的知识搜索最优值,就像人类学习和通过这三种学习形式提高技能一样,这三种形式可以被整合和操作为等式(8)
在这里插入图片描述

3、流程图

在这里插入图片描述

4、Matlab代码

主要代码部分

%% Code starts
clear;
clc;
format long;
popsize = 50;            
runtimes = 1;           %Number of runs
Gmax = 3000;            %Max number of generations - stopping criteria
Dim = 2;                %Variable number
bit = 32;               %Bits numbers
m = bit * Dim;          %Individual lenth
Xmax = 100;             %Vaiable range
Xmin = -100;            %Vaiable range           
p_r = 5.0 / m;               
p_i = 0.85 + 2.0 / m;          

load sphere_func_data.mat;  %Transfer the data of the F1:Shifted Sphere Function in CEC2005

for cn=1:runtimes
%% Initial population 
    popus = inipop(popsize,m);    
    Rpopus = B2R(popus,Dim,Xmax,Xmin);                      %Transform binary to real code
    
%% Evaluate fitness function and initial the IKD and SKD
    Fits = Evfit(Rpopus,popsize,o);                         % Fitness function evaulation 
    IKDfits = Fits;                                         % the best individual fitness    
    IKD = popus;           
    
%% Initial the SKD
    [arrange,position] = sort(IKDfits,1);               
    SKDfit = IKDfits(position(1,1),1);                    
    SKD = IKD(position(1,1),:);                           % the best individual (binary)
    
%% Generation Starts
    for t = 1:Gmax
        for i = 1:popsize
            for j = 1:m
             prob = rand;
                if  prob < p_r && prob > 0                     	%random learning
                    if rand < 0.5
                        popus(i,j) = 1;
                    else
                        popus(i,j) = 0;
                    end
                elseif prob >= p_r && prob < p_i                %individual learning
                    popus(i,j) = IKD(i,j);
                elseif prob >= p_i  && prob < 1               	%social learning
                    popus(i,j) = SKD(1,j);   
                end
            end
        end
%% Evaluate fitness function
        Rpopus = B2R(popus,Dim,Xmax,Xmin);                	%transform binary-string to real variables
        Fits = Evfit(Rpopus,popsize,o);                  	%Fitness function evaulation 
%% Evaluate IKD
        for i = 1:popsize
            if Fits(i) < IKDfits(i)
                IKDfits(i) = Fits(i);
                IKD(i,:) = popus(i,:);
            end
        end
%% Evaluate SKD
        [arrange,postion] = sort(IKDfits,1);                           
        if arrange(1,1) < SKDfit   	% when the best fitness of this generation is better than gloabl best fitness, then update
            SKDfit = arrange(1,1);
            SKD = IKD(postion(1,1),:);
        end
        if (mod(t,200))==0
        fprintf('the %d round\n',t);
        end
        
    end
    fprintf('runtimes = %d\n the best value is:',cn);
    disp(SKDfit);
end

6、实验结果

本文只运行了样例中的函数,被测函数:%% y=x1x1+x2x2
在这里插入图片描述

结论

该算法主要适用于二进制问题,且该算法与GA,PSO,DE都有一定的相似性,可以对比学习。个人觉得HLO与PSO最为相似,不同的是应用的问题不同,一个是二进制,一个是实数问题。但是两者的更新公式主要都是借鉴了全局最优解和个体最优解。但是PSO实在原先解的基础上更新,这一点HLO并没有限制。HLO算法的研究较多,在此原型基础上开发了许多的高效算法,为我们研究提高算法性能提供了研究方案。很多变种都是换汤不换药。详细的代码也可以在网上找到。

参考文献

[1] Wang L, Ni H, Yang R, et al. A simple human learning optimization algorithm[M]//Computational Intelligence, Networked Systems and Their Applications. Springer, Berlin, Heidelberg, 2014: 56-65.

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值