2024年7月新算法,徒步优化算法,原理详解,MATLAB代码免费获取

徒步优化算法(Hiking Optimization Algorithm,HOA)是一种受徒步旅行经历启发的元启发式优化算法。徒步旅行者试图登顶山峰、丘陵或岩石的过程中,徒步者有意或无意地考虑到地形的陡峭程度,这是一种流行的娱乐活动,它认识到优化问题的搜索景观与徒步旅行者所穿越的山区地形之间的相似性。HOA的数学模型以Tobler徒步函数为前提,该函数通过考虑地形的高程和行走距离来确定徒步者(即agent)的步行速度。在求解优化问题的过程中,利用Tobler徒步函数(THF)来确定徒步者的位置。

73e84f6970c791422c06da3a114a146c.png

该成果于2024年发表在计算机领域一区SCI期刊“Knowledge-Based Systems”上。HOA方法具有出色的迭代优化性能和鲁棒性。

fd2cd111cc6b5b7e881d1840716c9f61.png

1、算法原理

HOA的数学基础是基于著名的Tobler徒步函数,该函数由美籍瑞士籍地理学家和制图师Waldo Tobler提出。托布勒徒步旅行函数是一个指数函数,它决定了徒步旅行者的速度,考虑到地形或路径的陡峭度或坡度。

托布勒的徒步函数(THF)由下式表示:

其中,wi,t为迭代或时间t时的徒步者速度(即km∕h),Si,t为步道或地形的坡度。另外,斜率Si,t由下式表示:

其中,dℎ和dx分别表示徒步旅行者在海拔和距离上的差异。此外,θ是小径或地形的倾斜角,它位于[0,50◦]内。

HoA利用了徒步旅行者作为一个群体的社会思维和个人徒步旅行者的个人认知能力的好处。徒步旅行者的更新或实际速度是由THF确定的初始速度、领先徒步旅行者的位置、徒步旅行者的实际位置和扫掠系数的函数。因此,徒步旅行者i的当前速度由

其中yi,t是在[0,1]范围内均匀分布的数;Wi,t和Wi,t−1分别表示徒步旅行者i的当前速度和初始速度。βbest是领先徒步旅行者的位置,αi,t是徒步旅行者i的扫描因子(SF),位于[1,3]。SF确保徒步旅行者不会偏离领队徒步旅行者太远,这样他们就可以看到领队徒步旅行者的方向,并接收到领队徒步旅行者的信号。

通过考虑徒步旅行者的速度,由下式给出徒步旅行者βi,t+1的更新位置i:

在包括HOA在内的各种元启发式算法中,智能体的初始设置是显著影响可行解的可达性和收敛速度的关键因素。在这项特殊的研究中,HOA实施了随机初始化技术来初始化其代理的位置。

徒步旅行者位置βi,t的初始化由解的上界Φ2j和下界Φ1j确定,由等式表示:

其中δj是范围[0,1]内的均匀分布数。此外,Φ1j和Φ2j表示优化问题决策变量的jth维的上下界。HOA的探索和开发倾向受一个称为扫描因子(SF)的参数的影响。当SF范围增大时,HOA倾向于更倾向于开发阶段。相反,减小SF范围往往会鼓励在HOA内进入探索性阶段。此外,减小轨道倾斜角的范围会使HOA转向开发阶段。这些因素共同影响了HOA在解决优化问题时的行为和表现。

HOA对应的伪代码过程如下图所示

45d8567344f2a365efbd0afd75b1abad.png

2、结果展示

34ea3357d0f974fad022ca97c0bf9770.png

233bb5fe6b74cb95134542cd8cc662e4.png

4132cbd9e14de6b189a5ebbf683128dd.png

01bc251c3efcfa12e5b01473ac992d14.png

fcb2eb69f7ddef870789f48d1d9361b8.png

3、MATLAB核心代码

% 徒步优化算法(Hiking Optimization Algorithm,HOA)
function [Xbest,Best_fitness,Iter_curve] = HOA(pop,maxIter,lb,ub,dim,fobj)
%% Pre-allocate
fit = zeros(pop,1);                    % vectorize variable to store fitness value
%% Start Tobler Hiking Function Optimizer
Pop = repmat(lb,pop,1) + repmat((ub-lb),pop,1).*rand(pop,dim); % generate initial position of hiker
%% Evaluate fitness
for q = 1:pop
    fit(q) = fobj(Pop(q,:));            % evaluating initial fitness 
end
%% Main Loop
for i = 1:maxIter
        [~,ind] = min(fit);             % obtain initial fitness
        Xbest = Pop(ind,:);             % obtain golbal best position of initial fitness
        Best_fitness = min(fit);
    for j = 1:pop
        Xini = (Pop(j,:));              % obtain initial position of jth hiker
        theta = randi([0 50],1,1);      % randomize elevation angle of hiker        
        s = tan(theta);                 % compute slope
        SF = randi([1 2],1,1);          % sweep factor generate either 1 or 2 randomly 
        Vel = 6.*exp(-3.5.*abs(s+0.05)); % Compute walking velocity based on Tobler's Hiking Function
        newVel =  Vel + rand(1,dim).*(Xbest - SF.*Xini) ; % determine new position of hiker
        newPop = Pop(j,:) + newVel;     % Update position of hiker 
        newPop = min(ub,newPop);        % bound violating to upper bound
        newPop = max(lb,newPop);        % bound violating to lower bound
        fnew = fobj(newPop);            % re-evaluate fitness
        if (fnew < fit(j))              % apply greedy selection strategy
            Pop(j,:) = newPop;          % store best position
            fit(j) = fnew;              % store new fitness 
        end
    end
    Iter_curve(i) = min(fit); % store best fitness per iteration
end
end
微信公众号搜索:淘个代码,获取更多免费代码
%唯一官方店铺:https://mbd.pub/o/author-amqYmHBs/work
%代码清单:https://docs.qq.com/sheet/DU3NjYkF5TWdFUnpu

参考文献

[1]Oladejo S O, Ekwe S O, Mirjalili S. The Hiking Optimization Algorithm: A novel human-based metaheuristic approach[J]. Knowledge-Based Systems, 2024, 296: 111880.

完整代码获取

后台回复关键词:

TGDM811

获取更多代码:

3d048bbd2a0ef7378981792a98831d87.png

或者复制链接跳转:
https://docs.qq.com/sheet/DU3NjYkF5TWdFUnpu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值