2024年新算法||吸引-排斥优化算法(Attraction–Repulsion Algorithm)

本期介绍一种求解约束全局优化问题的元启发式搜索算法——吸引-排斥优化算法Attraction–Repulsion Optimization Algorithm,AROA。该算法模拟自然界中发生的吸引-排斥现象相关的平衡。该成果于2024年2月发表在中科院1区SCI期刊 Swarm and Evolutionary Computation(if = 10)。

一、亮点

  1. 介绍了一种新颖的吸引-排斥搜索方案。
  2. 提出的元启发式由平衡搜索运算符控制。
  3. 算法在三个要求苛刻的CEC基准上得到验证。
    在这项研究中,提出了一种用于约束全局优化问题的新型元启发式搜索(MHS)算法。AROA引入了一种搜索策略,其中候选解决方案根据其邻域中解决方案的质量以及最佳候选方案在搜索空间中移动。候选方案由基于修正布朗运动、三角函数、随机选择的解决方案和记忆形式的局部搜索算子管理。

二、数学模型

2.1 种群初始化

所有种群的初始位置都是随机确定的
X i = x m i n + r a n d ( 0 , 1 ) ⋅ ( x m a x − x m i n ) X_{i}=x_{min}+r a n d\left(0,1\right)\cdot\left(x_{max}-x_{min}\right) Xi=xmin+rand(0,1)(xmaxxmin)

2.2 吸引和排斥

选解决方案的位置根据总体其余部分获得的适应度信息更新。它对个体位置变化的贡献取决于种群成员之间的距离。
a i   =   1 n   ∑ j = 1 k   c ⋅ ( x j   −   x i ) ⋅ I ( d i , j , d i , m a x ) ⋅ s ( f i , f j )   , \mathbf{a}_{\mathrm{i}}\,=\,{\frac{1}{n}}\,\sum_{j=1}^{k}\,c\cdot\left(\mathbf{x}_{\mathrm{j}}\,-\,\mathbf{x}_{\mathrm{i}}\right)\cdot I\left(d_{i,j},d_{i,m a x}\right)\cdot{}s\left(f_{i},f_{j}\right)\,, ai=n1j=1kc(xjxi)I(di,j,di,max)s(fi,fj),

2.3 吸引最好的解

影响候选解决方案在搜索空间中位置的下一个因素是根据最佳解决方案的吸引力来确定的.在探索应起主导作用的优化过程开始时,假设最佳解应微弱地影响候选者,但随着迭代次数的增加,其影响更好地反映了算法开发阶段的意义,在AROA中,表示吸引引起的动作的向量计算为
b i = { c . m . ( x b e s t − x i ) r 1 ≥ p 1 c . m . ( a 1 ⊙ x b e s t − x i ) r 1 < p 1 \mathbf{b}_{\mathrm{i}}={\left\{\begin{array}{l l}{c.m.\left(\mathbf{x_{best}}-\mathbf{x_{i}}\right)}&{r_{1}\geq p_{1}}\\ {c.m.\left(\mathbf{a_{1}}\odot\mathbf{x_{best}}-\mathbf{x_{i}}\right)}&{r_{1}\lt p_{1}}\end{array}\right.} bi={c.m.(xbestxi)c.m.(a1xbestxi)r1p1r1<p1

2.4 局部搜索算子

为了给算法配备一个开发策略,除了与最佳候选者的吸引力相关的策略之外,每个候选者还使用三个随机局部搜索算子中的一个。第一个算子受到布朗运动的启发,布朗运动通常用于模拟小粒子的步长[19],[20]。它可以用正态分布来描述 ,然而,在所提出的方法中,均方差是通过添加当前迭代次数和搜索空间边界来修改的。
r B = u 1 ⊙ M ( 0 , f r 1  ⁣ ⋅ ( 1 − t t m a z ) ⋅ ( x m a x − x m i n ) ) {\bf r_{B}}={\bf u_{1}}\odot\mathcal{M}\left(0,f r_{1}\!\cdot\left(1-\frac{t}{t_{m a z}}\right)\cdot\left({\bf x_{m a x}}-{\bf x_{m i n}}\right)\right) rB=u1M(0,fr1(1tmazt)(xmaxxmin))

r t r i = { f r 2 ⋅ u 2 ⋅ ( 1 − t t m a x ) ⋅ sin ⁡ ( 2 r 5 π ) ⊙ ∣ a 2 ⊙ x w − x i ∣            r 4 < 0.5 f r 2 ⋅ u 2 ⋅ ( 1 − t t m a x ) ⋅ cos ⁡ ( 2 r 5 π ) ⊙ ∣ a 2 ⊙ x w − x i ∣                r 4 ≥ 0.5 \mathbf{r}_{\mathrm{tri}}={\left\{\begin{array}{l l}{f r_{2}\cdot\mathbf{u}_{2}\cdot\left(1-{\frac{t}{t_{m a x}}}\right)\cdot\sin\left(2r_{5}\pi\right)\odot\left|\mathbf{a}_{2}\odot\mathbf{x}_{w}-\mathbf{x}_{\mathrm{i}}\right|\;\;\;\;\;r_{4}\lt 0.5}\\ {f r_{2}\cdot\mathbf{u}_{2}\cdot\left(1-{\frac{t}{t_{m a x}}}\right)\cdot\cos\left(2r_{5}\pi\right)\odot\left|\mathbf{a}_{2}\odot\mathbf{x}_{w}-\mathbf{x}_{\mathrm{i}}\right|\;\;\;\;\;\;\;r_{4}\geq0.5}\end{array}\right.} rtri= fr2u2(1tmaxt)sin(2r5π)a2xwxir4<0.5fr2u2(1tmaxt)cos(2r5π)a2xwxir40.5

基于种群的算子:影响所有解决方案
在这里插入图片描述

Karol Cymerys, Mariusz Oszust,Attraction–Repulsion Optimization Algorithm for Global Optimization Problems,Swarm and Evolutionary Computation,Volume 84, 2024, 101459, https://doi.org/10.1016/j.swevo.2023.101459.

3、完整代码下载

(1)AROA跑cec2017数据集(完整代码)
(2)AROA跑cec2005数据集(完整代码)

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
多目标黏菌优化算法是一种基于生物黏菌聚集行为的优化算法,可以用于解决多目标优化问题。以下是一个简单的 Python 实现: ```python import random import numpy as np # 定义目标函数 def f1(x): return x[0]**2 + x[1]**2 def f2(x): return (x[0]-1)**2 + x[1]**2 # 定义多目标黏菌优化算法 def MOA(num_particles, num_iterations, num_objectives, search_space, w, c1, c2): # 初始化粒子群 particles = np.zeros((num_particles, len(search_space))) velocities = np.zeros((num_particles, len(search_space))) personal_best = np.zeros((num_particles, len(search_space))) personal_best_fitness = np.zeros((num_particles, num_objectives)) global_best = np.zeros((len(search_space))) global_best_fitness = np.zeros((num_objectives)) for i in range(num_particles): for j in range(len(search_space)): particles[i][j] = random.uniform(search_space[j][0], search_space[j][1]) personal_best[i] = particles[i] personal_best_fitness[i][0] = f1(particles[i]) personal_best_fitness[i][1] = f2(particles[i]) # 迭代优化 for t in range(num_iterations): for i in range(num_particles): # 计算粒子间距离 distances = np.zeros((num_particles)) for j in range(num_particles): distances[j] = np.linalg.norm(particles[i] - particles[j]) # 计算吸引力和斥力 attraction = np.zeros((len(search_space))) repulsion = np.zeros((len(search_space))) for j in range(num_particles): if i == j: continue if personal_best_fitness[j][0] < personal_best_fitness[i][0] and personal_best_fitness[j][1] < personal_best_fitness[i][1]: attraction += (personal_best[j] - particles[i]) / distances[j] if personal_best_fitness[j][0] > personal_best_fitness[i][0] or personal_best_fitness[j][1] > personal_best_fitness[i][1]: repulsion += (particles[i] - particles[j]) / distances[j]**2 # 更速度和位置 velocities[i] = w * velocities[i] + c1 * random.uniform(0, 1) * attraction + c2 * random.uniform(0, 1) * repulsion particles[i] += velocities[i] # 限制位置在搜索空间内 for j in range(len(search_space)): if particles[i][j] < search_space[j][0]: particles[i][j] = search_space[j][0] if particles[i][j] > search_space[j][1]: particles[i][j] = search_space[j][1] # 更个体最优解和全局最优解 fitness = np.zeros((num_objectives)) fitness[0] = f1(particles[i]) fitness[1] = f2(particles[i]) if all(fitness <= personal_best_fitness[i]): personal_best[i] = particles[i] personal_best_fitness[i] = fitness if all(fitness <= global_best_fitness): global_best = particles[i] global_best_fitness = fitness print("Iteration {}: f1 = {}, f2 = {}".format(t, global_best_fitness[0], global_best_fitness[1])) return global_best, global_best_fitness # 测试算法 search_space = [(-5, 5), (-5, 5)] w = 0.5 c1 = 0.5 c2 = 0.5 num_particles = 10 num_iterations = 100 num_objectives = 2 best_solution, best_fitness = MOA(num_particles, num_iterations, num_objectives, search_space, w, c1, c2) print("Best solution: {}, Best fitness: {}".format(best_solution, best_fitness)) ``` 在上述代码中,我们首先定义了两个目标函数 `f1` 和 `f2`。接着,我们实现了多目标黏菌优化算法 `MOA`,其中包括初始化粒子群、迭代优化等步骤。最后,我们使用一个简单的测试案例来演示算法的使用。在本例中,我们使用了两个目标函数,搜索空间为二维平面上的一个矩形区域,粒子数为 10,迭代次数为 100。算法的输出为最优解和最优解的适应度值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

群智能算法小狂人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值