量化软件下载:赫兹量化中种群优化算法---鱼群搜索

1. 概述

鱼群是聚集在一个地方的任何一堆鱼的总称。 鱼类聚集可以是结构化的,也可以是非结构化的。 非结构化聚集可能是一组混合物种和大小,它们随机聚集在某些局部资源(如食物或筑巢地点)附近。

此外,聚集相遇到一起,并如同社会般互动,那么可以说它们就是团体。 它们中的大多数处于其生命周期的同一阶段,彼此积极接触,并且随时可以表现出对群体成员有用的生物活性和有组织的活动。 与个体相对比,在更好地保护免受捕食者侵害和增加获取食物的竞争方面,群体生活的优势是在这两者之间达成了折衷。

鱼类在自然界中以若干种途径形成群体。 按常规,更喜欢由本物种的个体组成的较大团体。 群落中任何在外貌上出格,或有某种形体差别的成员,都会成为捕食者的主要目标。 这一事实解释了为什么鱼类更喜欢雷同个体的群体。 如此方式就实现了整个团体的同质化。

当鱼类以相同的速度和方向同步游泳时,团体的组织非常严格。 发生这种情况是由于鱼类都是相同的物种,按年龄和大小,彼此之间保持一定距离。 鱼类团体能够执行复杂的动作,就好像它们具有群体智慧和共同的头脑一样。 团体形成的微妙之处远未被完全理解,尤其是运动和喂养方式的各个方面。

已经提出了许多假设来解释群居行为,包括更好的定向、同步狩猎、迷惑捕食者、和降低被捕猎的风险。 鱼群里的鱼类似乎能分享信息,从而在近距离控制彼此的行为。 每条鱼的摄食行为会迅速刺激其它鱼积极寻找食物。 团聚的鱼群在细长的方阵中游弋,经常快速上升和下降,并绕轴线旋转,同时它们改变鱼群的形状,避免相互碰撞。 这种机动需要一个非常快速的响应系统。 团体生活方式意味着鱼类拥有感官系统,可以立即对它们感应到与邻居相对位置的微小变化,并做出反应。

为了创建更完整的图片,以这种行为进行数学建模。 最常见的数学模型假设团体中的个体生物遵循三个基本规则:

  1. 移动方向与邻居相同

  2. 始终与邻居保持近距离

  3. 避免与邻居发生碰撞

团聚的鱼群如何选择游弋方向的问题仍未解决。 在迁移过程中,似乎大多数成员都知道该去哪里。如果一个团体里的所有成员都同样意识到食物的可用性,那么小型组群中仍然有一些领导者比其它邻居更大胆。 这种团体行为促使众多研究人员不仅创建出一个数学模型,而且还创建了一个解决各种优化问题的算法模型。

2. 算法说明

鱼群搜索(FSS)是群体智能算法的一个子家族,属于元启发式算法类。 它由 Bastos Filho 和 Lima Neto 于 2008 年提出,并于 2009 年首次发表。 在 FSS 中,简单的代理者被称为鱼,每条鱼都有一个权重,代表其在搜索过程中取得“成功”。 权重的数值和变化会影响个体和团体运动。 内置的配食和协调的行动机制迫使团体朝着正梯度的方向前进,以增加权重,并找到局部和全局的最佳地点。 FSS 是为多模态搜索空间中的连续优化问题而开发的。 这也促使其他研究人员提出了解决其他问题的选择,例如二元问题的优化和多目标优化。

在 FSS 算法中,可以简化为想象鱼类在有条件的水族箱中游泳,水族箱的外壁是所研究函数定义域的边界。 鱼的权重是衡量成功寻找食物(解)的指标。 此外,它还扮演着鱼的记忆作用。 权重的存在是算法的主要思想,也是与一群粒子的区别。 FSS 算法的这一特性消除了查找和修复全局最佳解的需要,就像一群粒子一样。

FSS 算法的算子分为两组: - 投喂算子(feeding operator)正式确定区域勘探的成功 - 游泳算子(swimming operators)为单个鱼和整个团体实现迁移算法

投喂算子计算鱼的权重。 基本思想是让鱼群朝正梯度“游弋”,以便“进食”并“增重”。 总的来说,权重较大的鱼对整个搜索过程的影响更大,这会导致鱼群质量的中心在迭代中向搜索空间中更好的位置移动。 给定迭代中的权重增量与适应度函数值的归一化差值成正比:

fishes [f].weight = fishes [f].weight + (fishes [f].delta_fitness / max_delta_fitness);

其中:

  • weight - 鱼的权重

  • delta_fitness - 适应度函数值之间的差值

  • max_delta_fitness - 所有鱼之间适应度函数差值的最大值

浮动算子(Floating operators)根据运动类型分为三种类型:

- 个体; - 本能集体; - 集体意志;

个体游弋可以解释为鱼在当前位置附近进行局部搜索。 个体的运动矢量是随机定向的,并且具有不同的值。

fishes [f].new_position [d] = fishes [f].current_position [d] + step_ind [d] * r;

其中:

  • new_position - 相应坐标处的新位置

  • current_position - 相应坐标上的当前位置

  • step_ind - 个体移动步骤的计算为

initial_step_ind * (rangeMax [d] - rangeMin [d]);

其中:

  • initial_step_ind - 个体运动的算法参数

  • rangeMax and rangeMin - 优化的参数值范围

  • r - 随机数值 [-1.0;1.0]

示意性地,个体游弋如图例 1 所示。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 1. 个体游弋 每条鱼的运动向量是随机方向的,并且具有不同的标量值

个体游弋后,测量适应度函数。 如果鱼的最终位置没有改善,那么我们认为这条特殊的鱼没有任何运动,它仍然停在原地。 只有那些改善了适应度函数的鱼才会移动到新的位置。

个体游弋完成后,执行本能集体运动算子。 我们先看一下图例 2。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 2. 本能集体游弋:其运动特征适配于所有相对于质心G 的方向和幅度相同的鱼类。

本能集体运动是为了调整鱼群团的一般位置,同时考虑到上一次迭代中每条鱼的适应度函数的变化。 新坐标的计算方法如下:

fishes [f].new_position [d] = fishes [f].current_position [d] + collective_instinct [d];

其中:

  • new_position - 鱼在相应坐标处的新位置

  • current_position - 相应坐标上的当前位置

  • collective_instinct - 沿相应坐标的移动量,计算公式为:

collective_instinct [d] = fishes [f].delta_position [d] * fishes [f].delta_fitness;

其中:

  • delta_position - 在个体游弋阶段获得的当前坐标与先前位置之间的差值

  • delta_fitness - 个体游弋时当前位置和前一个位置的适应度函数变化

本能集体游弋正式将一群鱼群团同步移动到新地方,从而建立寻找食物的新地点,而个体运动可以改善局部的情况。

现在,我们来研究集体意志游弋。 它分为两种类型:

- 从质心 — 如果与之前的位置相比,团体的整体位置没有改善,而鱼群向两侧扩散,象征着进一步寻找食物(图例 3) - 如果发生改善,则移动到质心。 然后鱼群移动到质心,挤压成环,象征着对猎物的攻击。 从算法上讲,这意味着完善优化问题的解(图例 4)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值