首页 > 编程语言 >路径规划之启发式算法之二十一:狼群算法(Wolf Pack Algorithm,WPA)

路径规划之启发式算法之二十一:狼群算法(Wolf Pack Algorithm,WPA)

时间:2024-12-21 22:02:36浏览次数:6  
标签:猎物 Algorithm 人工 狼群 算法 Wolf 探狼 行为

        狼群算法(Wolf Pack Algorithm,WPA)是一种模拟狼群捕食行为及其猎物分配方式的群体智能优化算法。它由吴虎胜等人在2013年提出,算法采用了基于人工狼主体的自下而上的设计方法和基于职责分工的协作式搜索路径结构。它通过抽象狼群搜索、围攻以及更新换代的三种行为方式来实现优化。

一、狼群角色与行为

        1. 角色分类

        狼群算法模拟了狼群的社会分工和捕食行为,主要包括头狼、探狼和猛狼三种角色:

        (1)头狼(Alpha Wolf):狼群的首领,最强壮的狼,通过内部竞争产生,不执行游走、召唤、围攻三种智能行为,直接进入下一次迭代。负责指挥狼群的行动,通常是离猎物气味浓度最高的狼,其角色在搜寻过程中是动态变化的。

        (2)探狼(Scout Wolf):狼群的先锋,精锐的狼,负责在猎物可能出现的范围内根据猎物留下的气味进行搜索。在初期,狼群会派出一部分狼作为探狼,在环境四周搜寻猎物。探狼在搜寻过程中如果发现猎物气味浓度更高,就作为头狼,呼唤其他的狼进行围捕行为。

        (3)猛狼(Fierce Wolf):猛狼感应到头狼的呼唤,就立刻向头狼位置奔袭,在奔袭的过程中,若是发现猎物的适应度更高,则立刻替代原来的头狼,指挥其他狼行动。

        2. 行为模式

        (1)游走行为(Scout Behavior):模拟狼群寻找猎物的过程。探狼在解空间中搜索猎物,计算当前位置的猎物气味浓度,若大于头狼所感知的气味浓度,则表明离猎物较近,可能替代头狼并发起召唤行为;否则,探狼继续游走直到与头狼距离小于一定值时,转入围攻行为。

        (2)召唤行为(Call Behavior):头狼通过嚎叫发起,召集周围的猛狼向其所在位置靠拢。

        (3)围攻行为(Encircle Behavior):猛狼已离猎物较近时,联合探狼对猎物进行围攻以期捕获。

二、算法机制

        (1)头狼产生规则:初始解空间中,具有最优目标函数值的人工狼即为头狼;在迭代过程中,将每次迭代后最优狼的目标函数值与前一代中头狼的值进行比较,若更优则对头狼位置进行更新,若存在多匹最优狼,则随机选一匹成为头狼。

        (2)“强者生存”的狼群更新机制:猎物按照“由强到弱”的原则进行分配,导致弱小的狼会被饿死。即在算法中去除目标函数值最差的R匹人工狼,同时随机产生R匹新的人工狼。R的取值与群体更新比例因子β有关,保证了狼群个体多样性和避免算法陷入局部最优。

、算法实现步骤

        狼群算法的实现步骤通常包括以下步骤,同时狼群算法(WPA)的数学表达式涉及到狼群的三种智能行为:游走行为、召唤行为和围攻行为。

        (1)数值初始化:初始化狼群中人工狼的位置X_{i}、种群数目N、最大迭代次数k_{max}、探狼比例因子\alpha、最大游走次数T_{max}、距离判定因子\omega、步长因子S、更新比例因子\beta等参数。

        设狼群的猎场空间为一个N×D的欧式空间,其中N为狼群中人工狼总数,D为待寻优的变量数。

        某一人工狼i的状态可表示为X_{i}=(x_{i}^{1},x_{i}^{2},...,x_{i}^{D}),其中x_{i}^{d}为第i匹人工狼在欲寻优的第d维变量空间中所处位置。

        人工狼所感知到的猎物气味浓度为Y=f(X),其中

标签:猎物,Algorithm,人工,狼群,算法,Wolf,探狼,行为
From: https://blog.csdn.net/lzm12278828/article/details/144636549

相关文章

  • 动态规划算法-----子数组系列
    1.引言动态规划(DynamicProgramming,DP)是一个强大的算法设计方法,广泛应用于解决最优化问题。它的核心思想是通过将大问题分解为小问题,并利用子问题的解来构建大问题的解。动态规划的核心特点是“重叠子问题”和“最优子结构”。在这篇博客中,我们将探讨动态规划算法在解决“......
  • 动态规划算法-子数组系列之_等差数列划分
    413.等差数列划分( Leetcode)等差数列划分题目描述如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子......
  • 【粉丝福利社】智能优化算法与MATLAB编程实践
    标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度......
  • 强化学习算法中的log_det_jacobian —— 概率分布的仿射变换(Bijector)(续)
    前文:强化学习算法中的log_det_jacobian——概率分布的仿射变换(Bijector)前文说到概率分布的仿射变换(Bijector)在贝叶斯、变分推断等领域有很重要的作用,但是在强化学习中呢,其实在强化学习中也会用到,但是最为普遍的应用场景其实只是做简单的tanh变换。在强化学习中一般用高斯分......
  • 时间复杂度:理解算法性能的核心指标
    在编程和算法设计中,时间复杂度是一个至关重要的概念。它用来衡量一个算法在处理不同规模的输入数据时,执行所需要的时间增长速度。换句话说,时间复杂度能够帮助我们理解算法在面对大数据时的表现,是否能高效地完成任务。什么是时间复杂度?时间复杂度是一个描述算法效率的指标,通常用......
  • 数据结构与算法Python版 散列与区块链
    文章目录一、散列二、完美散列函数三、完美散列函数的应用-区块链一、散列散列Hashing构造一个新的数据结构,使得查找算法的复杂度降到O(1),这种概念称为“散列Hashing”由数据项的值来确定其存放位置,数据项应该出现在大概什么位置,就可以直接到那个位置看看数据项是......
  • 数据结构与算法Python版 顺序查找与二分查找
    文章目录一、顺序查找二、二分查找一、顺序查找顺序查找SequentialSearch通过下标,我们就可以按照顺序来访问和查找数据项,这种技术称为“顺序查找”如果数据项保存在如列表这样的集合中,我们会称这些数据项具有线性或者顺序关系在Python列表中,这些数据项的存储位置......
  • 机器学习实验六:朴素贝叶斯算法实现与测试
    实验六:朴素贝叶斯算法实现与测试一、实验目的深入理解朴素贝叶斯的算法原理,能够使用Python语言实现朴素贝叶斯的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。  二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试集(注......
  • 机器学习实验七:K 均值聚类算法实现与测试
    实验七:K均值聚类算法实现与测试一、实验目的深入理解K均值聚类算法的算法原理,进而理解无监督学习的意义,能够使用Python语言实现K均值聚类算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法......
  • 机器学习实验八:随机森林算法实现与测试
    实验八:随机森林算法实现与测试一、实验目的深入理解随机森林的算法原理,进而理解集成学习的意义,能够使用Python语言实现随机森林算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的......