量化软件——赫兹MT5群体优化算法思维进化计算(MEC)算法

 

1. 概述
进化计算是计算智能、机器学习和人工智能的一个子领域。它广泛用于优化问题、机器人设计、创建决策树、调整数据分析算法、训练神经网络和调整超参数。进化计算不是使用经典的数值方法,而是利用生物进化的灵感来开发好的解决方案。当没有已知的适应度函数导数时,或者当适应度函数具有许多局部极值时,它们尤其有用,这些极值可能会阻碍序列方法。
在解决复杂的高维问题时,进化计算中使用的群体算法比经典算法具有许多优势。它们可以更有效地找到与最优解足够接近的次优解,这在实际优化问题中通常是可以接受的。

进化计算中一种有趣的方法是Chengai和他的合著者于1998年提出的思维进化计算(Mind Evolutionary Computation,MEC)算法。与所预期的人脑建模不同,MEC算法对人类社会行为的某些方面进行建模。在这种算法中,每个人都被视为在一群人中发挥作用的智能体。在做出决定时,个人会感到受到其团队成员和其他团队成员的影响。要想在社会上获得崇高的地位,个人必须向团队中最成功的人学习。同时,为了使他的团队比其他团队更成功,所有个人在团队间竞争中都必须遵循相同的原则。MEC算法的一个重要方面是组内个体之间以及组之间的信息交换。这反映出需要持续和自由地交换信息,以成功发展一个由聪明的个人组成的社会。
MEC算法分别使用负责局部搜索和全局搜索的局部竞争和异化操作来实现所提出的概念。该算法使用留言板来存储有关种群进化历史的信息。基于该信息来控制优化过程。

2. 算法
MEC算法可以被解释为由领先和滞后组组成的多种群算法。假设每组中的代理数量相同。每个组都有自己的本地留言板,还有一个用于整个多种群的通用全局留言板。
MEC算法的原始版本被称为简单MEC(SMEC),使用了组初始化、局部竞争和异化操作。
初始化操作创建组并将它们放置在搜索区域中。对于每个组,都会生成一个随机向量,该向量与组中的个体相识别。然后,确定组中剩余代理的初始坐标,使用正态分布定律将它们随机放置在组中的个体周围。
局部竞争操作实现对每组的最大适应度函数的局部搜索。对于每个组,都会从其留言板上读取有关当前获胜代理的信息。然后,确定组中剩余代理的新坐标,并使用正态分布定律将其随机放置在获胜者周围。计算组代理的新帐户,并确定具有最大当前帐户的新组获胜者。有关新获胜者的信息发布在小组留言板上。
异化操作控制着全局搜索。首先,读取消息公告板中所有组的帐户。然后将这些账户相互比较。如果领头小组的得分低于其中一个落后小组的得分,那么后者将取代领头者,领头小组将变得落后。如果一个组的得分低于所有落后组的得分,则该组将从群体中移除。使用初始化操作初始化新组,而不是删除组。
因此,MEC算法是一种包括初始化、局部竞争和异化操作的多种群算法。

以上是算法创建者对简单MEC算法的一般描述。在我看来,这样的描述使我们很难理解多维空间中搜索策略的基本原理。因此,出现了许多问题,例如“什么是留言板,它与群体中特定个人的特征有何不同?”和其他问题,所以让我们仔细看看这些微妙之处。

上面已经说过,该算法模拟了人类社会及其成员之间的互动。想象“观念”概念最简单明了的方法是,它可以是科学的观念,也可以是艺术的、文学的或任何其他的。社会上总是有占主导地位的思想和另类的思想。与作者不同的是,我不会根据群体将思想划分为“领先和落后”。正如我们将在下面看到的,与基本版本相比,这将给算法带来一些优势。由于每个想法至少包括一个理论(理论是适应度函数的优化参数),一个想法可以有思想分支,就像在科学中有各种科学理论和运动一样。图1示意性地显示了标记为i1、i2等的思想。每个想法都可以在思维能力(算法的外部参数)确定的范围内给出分支。分支离想法越远,可能性就越小(意识形态分支的概率和边界显示为不断扩大的同心圆)。如果该思想显示出其自身比其意识形态父思想更一致(适应度函数的值更好),那么该分支将取代父思想(作为意识形态分支的结果的新思想在图中显示为i5)

为了确保全局搜索,有必要确保在群体中出现超出当前想法的新想法,否则这些想法将陷入局部极值,并且不会出现更好的适应度函数值。异化(销毁)的过程就是为了这个目的。我们将使用与原始算法中略有不同的方案来交换主导组(绿色)思想和替代组(蓝色)思想。在对每个群体的想法进行单独分类后,我们从占主导地位的群体中去除最差的想法,用另一个群体中最好的想法取代它,从而确保想法的交流。在备选组的空位上,我们放置了一个新的想法,它是从优势组(不包括最后一个)中随机选择的想法的摘要中组装而成的。为了提供可变性,可以在这个动作中添加随机成分,我将其留给优化算法研究人员可能进行的进一步实验。从优势群体的思想中选择摘要增加了算法的组合能力。下面的图2显示了从一个替代组中替换一个想法并创建一个新想法的示意图。

算法的基本逻辑单元是想法,它也将代表一个想法分支。S_Idea结构非常适合描述一个想法。这是一个包含关于坐标和想法适用性的信息的对象。该结构的特点是Init方法,便于用负值DBL_MAX初始化适应度。
//——————————————————————————————————————————————————————————————————————————————
struct S_Idea
{
  void Init (int size)
  {
    ArrayResize (c, size);
    f = -DBL_MAX;
  }
  double c []; //coordinates
  double f;    //fitness
};
//——————————————————————————————————————————————————————————————————————————————
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值