文章目录
- SAR(Search and rescue optimization algorithm)背景
- SAR算法流程
- 算法初始化
- 算法迭代
- 返回最佳解决方案
- 伪代码流程
背景
搜索和救援优化算法(Search and Rescue Optimization Algorithm,简称SAR)是一种新的元启发式优化算法,旨在解决受约束的工程优化问题。SAR算法的设计基于人类搜索和救援行动中的两个主要阶段:个体搜索阶段和社会搜索阶段。在实际的搜索和救援任务中,团队成员会分成小组,通过协同合作和信息共享来提高搜索效率。每个团队成员都会根据自身找到的线索进行搜索,并通过通信设备与其他成员共享信息,最终形成一个系统的搜索策略。
算法流程
1、算法初始化
- 初始化种群:随机初始化2N个解决方案,均匀分布在范围𝑋𝑚𝑖𝑛,𝑋𝑚𝑎𝑥Xmin,Xmax内,其中N表示种群大小,D表示问题的维度。
- 排序解决方案:将初始化的解决方案按目标函数值降序排列,并找到当前最佳位置(Xbest)。
- 划分种群和记忆矩阵:前N个排序好的解决方案用于人类位置(X),其余的用于记忆矩阵(M)。
- 定义算法参数:设置最大不成功搜索次数(USN)为0。
2. 算法迭代过程
算法在达到停止条件前进行以下迭代过程:
2.1 更新线索矩阵
- 更新线索矩阵:根据人类位置(X)和记忆矩阵(M),更新线索矩阵(C)。
2.2 搜索阶段
-
社会阶段:以0.5的概率选择社会阶段进行搜索,计算新的位置。
-
确定搜索方向:根据随机选取的线索位置(Ck)和人类当前位置(Xi),确定搜索方向(SDi)。
-
搜索位置更新:如果Ck对应的目标函数值优于Xi,则在Ck位置周围搜索,否则在当前Xi位置周围搜索。
-
位置更新公式:
-
其中,r1是范围在−1,1−1,1的均匀分布随机数。
-
个体阶段:如果未选择社会阶段,则执行个体阶段,计算新的位置。
-
位置更新公式:
-
其中,k和m是范围在1,2𝑁1,2N之间的随机整数,r3是范围在0,10,1的均匀分布随机数。
2.3 边界控制
-
检查新位置:确保新位置在解决方案空间内,如果超出边界,则按如下公式修正:
2.4 信息和位置更新
- 更新记忆矩阵和人类位置:如果新位置的目标函数值优于当前值,则更新记忆矩阵(M)和人类位置(X)。
2.5 放弃线索
-
计算不成功搜索次数:如果新位置未找到更优解,则增加不成功搜索次数(USN),否则重置为0。
-
判断是否放弃当前线索:如果USN超过阈值MU,则放弃当前线索并更新位置:
- 对于可行解,随机生成一个新的解决方案替换当前解。
- 对于不可行解,选择记忆矩阵中最小约束违反度的解替换当前解,并将当前解存入记忆矩阵。
2.6 重启策略
- 检查是否需要重启:如果种群全体陷入不可行区域且相似性过高,则随机重新生成种群和记忆矩阵。
3. 返回最佳解决方案
- 返回结果:在迭代结束后,返回当前找到的最佳解决方案(Xbest)。
伪代码流程
算法步骤
- 初始化种群和记忆矩阵
- 定义算法参数和USN
- 当停止条件未满足时
- 更新线索矩阵C
- 对于每个人类i
- 选择社会阶段或个体阶段进行搜索
- 执行边界控制
- 更新记忆矩阵和人类位置
- 计算不成功搜索次数并判断是否放弃线索
- 检查是否需要重启
- 更新当前最佳位置Xbest
- 返回Xbest
下面是代码中使用的相关公式:
引用
A. Shabani et al. Search and rescue optimization algorithm: A new optimization method for solving constrained engineering optimization problems Expert Systems with Applications(2020)