期货量化交易群体优化算法:差分进化(DE)

1.概述

元启发式优化方法是一类使用启发式方法解决复杂优化问题的算法。它们与数值优化方法不同,后者通常基于数学分析,需要了解目标函数的梯度或导数。元启发式方法的主要区别在于,即使函数具有许多局部最优或不连续可微,它们也能探索大的搜索空间并找到全局最优。元启发式方法的优势在于可以处理 "黑盒子" - 一种没有分析解决方案的函数。它们基于随机概率原理,提供了良好的解决方案质量。

进化算法(Evolutionary algorithms,EA)是一类独立的元启发式优化方法,它模拟自然进化过程来解决复杂的优化问题。它们基于遗传、变异、交叉和自然选择的原理。进化算法中的进化过程模拟了自然选择,即最合适的解决方案更有可能存活下来,并将其特性传递给下一代。因此,群体会逐渐向最优解靠拢。最著名的进化算法包括:遗传算法 (GA)、进化编程 (EP)、进化策略 (ES) 和遗传编程 (GP)。这些算法各有特点,并被广泛应用于各个领域。

一般来说,进化算法是解决复杂优化问题的强大工具,尤其是在无法获得分析函数表达式或梯度的情况下。它们允许探索搜索空间,并通过结合来自不同单个解决方案的信息找到最佳解决方案。

差分进化(DE)是元启发式优化方法之一。它与其他方法的不同之处在于简单和高效。DE 使用变异和杂交的载体群体来创造新的解决方案。它不需要梯度知识,能够找到全局最优值。

差分进化算法由 Storn 和 Price 于上世纪 90 年代开发(发表于《差分进化 - 连续空间全局优化的简单高效启发式》),自此成为最流行的优化方法之一,它使用参数向量群来寻找最优解。

2.算法

差分进化的理念是简单和高效的结合。差分进化算法使用代表潜在解决方案的向量群,每个矢量由代表优化问题变量值的分量组成。

在 DE 中,向量扮演搜索代理的角色。该算法首先创建一个随机向量群,然后会出现一个迭代过程,在这个过程中,每个向量都会发生变异,并与种群中的其他向量交叉。突变是通过将从群体中随机选择的两个向量的差值加到第三个向量上实现的。这样就创建了一个新的向量,它代表问题的潜在解决方案。

变异后,变异的向量与原始向量交叉,交叉可以将两个向量的信息结合起来,创造出新的解决方案。将得到的结果与当前群体中的最佳解决方案进行比较,如果新向量更好,它就会取代旧向量,成为种群的一部分。突变允许探索搜索空间,而交叉则允许组合来自不同向量的信息并创建新的解决方案。

突变、交叉和替换在多次迭代中重复进行,直到达到停止条件,如给定的迭代次数或达到要求的求解精度(在我们的例子中,是适应度函数运行达到 10,000 次)。

DE 是广泛用于解决优化问题的进化算法之一。差分算法使用差分算子在当前群体的基础上创建新的候选者。以下是差分算法中使用的基本公式:

1.创建新候选者的公式(差分):

r = r1 + F * (r2 - r3)

其中:

  • r - 新的向量
  • r1、r2 和 r3 - 随机选择的向量(群体中的单个解)
  • F - 差分比,用于控制解决方案的可变性(所得值的分散性),默认范围为 (0.0;1.0] 。

2.交叉公式:

u = crossover (x, v)

公式描述了当前解决方案 x 和新候选方案 v 之间的交叉。交叉算子决定从新的候选方案中提取解决方案的哪些成分。这是使用新向量分量的概率,否则这个部分就不会改变。使用数值范围是 (0.0;1.0]。

让我们赫兹量化来写一个 DE 算法的伪代码,由于算法本身简单易懂(事实上,代码会比其伪代码更复杂一些):

  1. 创建随机向量群
  2. 计算适应度函数
  3. 更新最佳解决方案
  4. 更新群体(用更好的突变体替换向量)
  5. 创建一个突变向量或保留原有向量,这取决于哪个更好
  6. 重复第 2 步。

为了在 DE 算法中描述一个向量,我们赫兹量化将编写一个结构,并将其称为 S_Vector,它是 n 维空间中的一个向量。该结构包含以下字段:

  • Init(int coords):该函数初始化指定长度为 "coords" 的向量。它会创建两个数组 - "c" 和 "cPrev",分别代表矢量的坐标和前一个坐标。此外,f 和 fPrev 的初始值也设置为 -DBL_MAX。
  • c[]:包含向量坐标的数组
  • cPrev[]:包含上一次迭代时向量坐标的数组
  • f:当前向量的适应度函数值
  • fPrev:上一次迭代的向量适应度函数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫兹量化软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值