股票量化交易软件:种群优化算法猴子算法(MA)


猴子算法(MA)是一种元启发式搜索算法。 本文将讲述该算法的主要组成部分,并提出上涨(向上走势)、局部跳跃和全局跳跃的解决方案。 该算法由 R. Zhao 和 W.Tang 于 2007 年提出。 该算法模拟猴子在山上移动和跳跃寻找食物时的行为。 据推测,猴子遵循这样一个事实,即山越高,山顶上的食物就越多。
猴子探索的区域是适应度函数地域,因此最高的山对应于问题的解(赫兹量化软件考虑全局最大化问题)。 从当前位置开始,每只猴子都会向上移动,直至抵达山顶。 攀爬过程旨在逐步提高目标函数的值。 然后,猴子向随机方向进行一系列局部跳跃,希望找到更高的山峰,并重复向上的运动。 在进行了一定次数的攀爬和局部跳跃后,猴子认为它已经充分探索了初始位置附近的地域。
为了探索搜索新的空间区域,猴子进行了一次长距离跳跃。 上述步数在算法参数中重复指定次数。 该问题的解则声明为给定猴子种群发现的最高顶点。 然而,MA 算法在攀登过程中花费了大量的计算时间用于寻找局部最优解。 全局跳跃过程可以加快算法的收敛速度。 这个过程的目的是迫使猴子寻找新的搜索机会,以免陷于本地搜索。 该算法具有结构简单、可靠性较高、能很好地搜索局部最优解等优点。
MA 算法是一种新型的进化算法,可以解决许多具有非线性、不可微分性、和高维性的复杂优化问题。 与其它算法的不同之处在于,MA 算法花费的时间主要集中于攀爬过程中寻找局部最优解。 在下一章节中,我将讲述算法的主要组件、表示的解、初始化、攀登、观察和跳跃。
2. 算法
为了便于理解猴子算法,从伪代码开始是合理的。
MA 算法的伪代码:
1. 将猴子随机分布在搜索空间当中。2. 测量猴子位置的高度。3. 执行固定次数的局部跳转。4. 如果在步骤 3 中得到的新顶点更高,则y以后应从该位置进行局部跳转。5. 如果局部跳转次数限制已用尽,且未找到新顶点,则进行全局跳转。6. 在步骤 5 之后,重复步骤 37. 从步骤 2 开始重复,直到满足停止准则。
赫兹量化软件来更详细地分析伪代码的每个关键点。
1. 在优化伊始,猴子对于搜索空间是未知的。 动物被随机定位在未知的地形中,因为食物出现的位置在任何地方都有同样可能。
2. 测量猴子所在高度的过程是由适应度函数履行任务。
3. 进行局部跳转时,算法参数中指定的数字有限制。 这意味着猴子正试图通过在觅食区域进行小范围局部跳跃来改善其当前位置。 如果新找到的食物来源更好,则转到步骤 4。
4. 找到新的食物来源,重置局部跳跃计数。 现在,将从该位置寻找新的食物来源。
5. 如果局部跳跃不能导致发现更好的食物来源,猴子得出结论,当前区域已充分探索,是时候寻找更远的新地方了。 在此刻,出现进一步跳跃的方向问题? 该算法的思路是取所有猴子的坐标中心,从而提供一些交流 — 猴群中每只猴子之间的交流:猴子可以大声尖叫,并且具有良好的空间听力,能够判定彼此间的确切位置。 同时,知道彼此的位置(伙伴们不会在没有食物的地方呼唤),故可大致计算出食物的最佳新位置,因此,有必要朝这个方向跳跃。
在原始算法中,猴子沿着一条穿过所有猴子坐标中心和动物当前位置的线进行全局跳跃。 跳转的方向可以是朝向坐标中心,也可以是与中心相反的方向。 从中心朝反方向的跳跃,与为所有猴子寻找具有近似坐标的食物的逻辑相矛盾,这已被我使用该算法的实验所证实 — 事实上,它有 50% 的概率,这是与全局最优值的距离。
实践表明,跳出坐标中心之外,比不跳或朝反方向跳跃更有利可图。 不会发生所有猴子集中在某一点的情况,尽管乍一看这种逻辑不可避免。 事实上,猴子已经用尽了局部跳跃的极限,跳得比中心更远,从而扭转了种群中所有猴子的位置。 如果我们在脑海中想象高等类人猿服从这个算法,赫兹量化软件会看到动物团伙不时跳过群体的几何中心,而团伙本身则朝着食物更丰富的来源移动。 这种“团伙移动”的效果在算法的动画上可以清晰地看到(原来的算法没有这个效果,且结果更差)。
6. 进行全局跳跃后,猴子开始把食物来源的位置指定到新的地方。 该过程一直持续到满足停止准则。
该算法的整个思路可以很容易地适应单个示意图。 猴子的运动用图例 1 中带有数字的圆圈表示。 每个数字都是猴子的新位置。 黄色小圆圈表示失败的局部跳转尝试。 数字 6 表示局部跳跃极限已用尽,且未找到新的最佳食物来源位置。 没有数字的圆圈代表其余团伙的位置。 团伙的几何中心由一个带有坐标(x,y)的小圆圈表示。
