基于柯西变异的蚁狮优化算法 - 附代码

基于柯西变异的蚁狮优化算法


摘要:针对蚁狮优化算法较易陷入局部最优停滞,收敛精度低以及收敛速度较慢等问题,将自适应t分布的柯西变异融入到蚁狮优化算法中,提出了基于柯西变异的蚁狮优化算法(CALO).该算法采用随机的方法挑选出精英蚁狮个体,改善蚁狮群体的适应性,提高种群的总体寻优效率;采用具有自适应的柯西变异算子使得蚁狮个体受局部极值点约束力下降,能够快速跳出局部最优,大大提高了全局搜索能力和收敛速度;

1.蚁狮优化算法

基础蚁狮优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107726004

2. 改进蚁狮优化算法

2.1 基于柯西变异算子改进

针对蚁狮算法的不足,进一步提出了基于柯西变异的蚁狮优化算法 .柯西高斯变异算子可以很大程度上提高算法全局勘探能力, 收敛精度以及稳定度. 比如近年来 柯西累积分布改进的鲸鱼优化算法, 柯西变异策略改进的果蝇算法均得到了良好的优化效果.
柯西分布如下:
s = t π ( x 2 + t 2 ) , − ∞ < x < + ∞ s=\frac{t}{\pi\left(x^{2}+t^{2}\right)}, \quad-\infty<x<+\infty s=π(x2+t2)t,<x<+
柯西分布从峰值向两侧下降相对平缓, 蚁狮个体受局部的极值点约束力在柯西变异后下降, 并且 柯西分布的峰值相对较小, 蚁狮在变异后会花费相 对较少的时间来搜索相邻区间, 把更多的时间放在 掜寻全局最优值上, 使得改进的蚁狮优化算法在寻 找全局的最优值方面具有很好的调节能力. 利用上述柯西分布特点对蚁狮优化算法进行优化改进, 在 精英蚁狮个体的状态上引入服从柯西分布的随机向 量,公式如下:
x ′ = x + η  Cauch  y ( 0 , 1 ) x^{\prime}=x+\eta \text { Cauch } y(0,1) x=x+η Cauch y(0,1)
式中, x ′ x^{\prime} x 为初始位置 x x x 的更新位置; Cauchy ( 0 , 1 ) (0,1) (0,1) t = 1 t=1 t=1 时的标准柯西随机分布; 参数 η \eta η 是用来控制柯西分布变异强度的一个常数.

基于柯西变异的蚁狮优化算法的步㵵为:
步骤 1:执行原基本蚁狮优化算法的步骤 1 ∼ 1 \sim 1 步骤 4 ;
步骤 2 : 在进入循环迭代后, 当䖢狮群体中相邻 两次迭代的几乎没有差别的最优值都作为历史最优 值被记录下来时, 我们认为算法陷入局部最优停滞, 此时需要进行柯西变异;
步骤 3:变异操作: 先将最优蚁狮个体的适应值 和个数复制到原先种群的规模, 然后嵌入柯西变异 算子, 进一步更新蚊狮群体的位置, 并更新最优值.
A 0 ′ = A 0 + A 0 ∗  Cauchy  ( 0 , 1 ) A L 0 ∘ = A L 0 + A L 0 ∗ Cauch ⁡ y ( 0 , 1 ) \begin{aligned} &A_{0}{ }^{\prime}=A_{0}+A_{0} * \text { Cauchy }(0,1) \\ &A L_{0}{ }^{\circ}=A L_{0}+A L_{0} * \operatorname{Cauch} y(0,1) \end{aligned} A0=A0+A0 Cauchy (0,1)AL0=AL0+AL0Cauchy(0,1)
式中, A 0 , A L 0 A_{0}, A L_{0} A0,AL0 是原蚁狮和蚂蚁个体的初始位置; A 0 , A L 0 A_{0}, A L_{0} A0,AL0 '是经过柯西变异操作后更新的新位置.

3.实验结果

请添加图片描述

4.参考文献

[1]于建芳,刘升,韩斐斐,肖子雅.基于柯西变异的蚁狮优化算法[J].微电子学与计算机,2019,36(06):45-49+54.

5.Matlab代码

6.Python代码

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
智能优化算法是一种基于自然进化和人工智能的计算方法,可以应用于解决很多实际问题。其中,柯西变异是一种变异操作,常用于差分进化算法中,用于产生新的候选解。在Matlab中,可以使用遗传算法、粒子群算法算法等智能优化算法,并结合柯西变异来改进算法性能。 以下是一个使用柯西变异的遗传算法的Matlab代码示例: ```matlab %% 遗传算法 + 柯西变异优化 clc, clear all, close all; %% 设定参数 N = 50; % 种群数量 D = 10; % 变量数量 G = 100; % 迭代次数 pc = 0.8; % 交叉概率 pm = 0.1; % 变异概率 lb = -10; % 变量下限 ub = 10; % 变量上限 %% 初始化种群 pop = repmat(lb, N, D) + rand(N, D) .* repmat((ub-lb), N, D); best = inf; % 最佳适应度 best_x = zeros(1, D); % 最佳解 fitness = zeros(N, 1); % 适应度 for i=1:N fitness(i) = rastrigin(pop(i,:)); if fitness(i) < best best = fitness(i); best_x = pop(i,:); end end %% 迭代 for g=1:G % 选择 idx = randsample(N, N, true, fitness./sum(fitness)); pop_sel = pop(idx,:); % 交叉 pop_cross = pop_sel; for i=1:N/2 if rand < pc p1 = pop_sel(i*2-1,:); p2 = pop_sel(i*2,:); c1 = p1; c2 = p2; pos = randi([1 D-1]); c1(pos+1:end) = p2(pos+1:end); c2(pos+1:end) = p1(pos+1:end); pop_cross(i*2-1,:) = c1; pop_cross(i*2,:) = c2; end end % 变异 pop_new = pop_cross; for i=1:N if rand < pm p = pop_cross(i,:); pos = randi([1 D]); p_new = p; p_new(pos) = cauchy(p(pos), 0.1*(ub-lb)); if p_new(pos) > ub p_new(pos) = ub; elseif p_new(pos) < lb p_new(pos) = lb; end pop_new(i,:) = p_new; end end % 更新最佳解 for i=1:N fitness(i) = rastrigin(pop_new(i,:)); if fitness(i) < best best = fitness(i); best_x = pop_new(i,:); end end % 更新种群 pop = pop_new; end %% 输出结果 disp(['Best fitness: ', num2str(best)]); disp(['Best solution: ', mat2str(best_x)]); ``` 该代码实现了一个求解Rastrigin函数最小化问题的遗传算法,其中使用了柯西变异来增加种群的多样性,提高算法的全局搜索能力。在实际应用中,可以根据具体问题选择不同的智能优化算法变异操作,以获得更好的性能表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值