差分进化算法(Differential Evolution)

差分进化算法(Differential Evolution)一 差分进化算法的由来差分进化算法 Differential DE 于 1997 年由 RainerStorn 和 KennethPrice 在遗传算法等进化思想的基础上提出的 本质是一种多目标 连续变量 优化算法 MOEAs 用于求解多维空间中整体最优解 差分进化思想来源即是早期提出的遗传算法 GeneticAlgor GA 模拟遗传学中的杂交 crossover

一、差分进化算法的由来

差分进化算法(Differential Evolution,DE)于1997年由Rainer Storn和Kenneth Price在遗传算法等进化思想的基础上提出的,本质是一种多目标(连续变量)优化算法(MOEAs),用于求解多维空间中整体最优解。

差分进化思想来源即是早期提出的遗传算法(GeneticAlgorithm,GA),模拟遗传学中的杂交(crossover)、变异(mutation)、复制(reproduction)来设计遗传算子。

差分进化算法相对于遗传算法而言,相同点都是通过随机生成初始种群,以种群中每个个体的适应度值为选择标准,主要过程也都包括变异、交叉和选择三个步骤。不同之处在于遗传算法是根据适应度值来控制父代杂交,变异后产生的子代被选择的概率值,在最大化问题中适应值大的个体被选择的概率相应也会大一些。而差分进化算法变异向量是由父代差分向量生成,并与父代个体向量交叉生成新个体向量,直接与其父代个体进行选择。显然差分进化算法相对遗传算法的逼近效果更加显著。

二、差分进化算法的流程

首先说明一下,差分进化算法中,DE的群体由突变和选择过程驱动。突变过程,包括突变和交叉操作,这两步操作被设计用于利用或探索搜索空间,而选择过程被用于确保有希望的个体的信息可以进一步利用。

1.种群的初始化

在解空间中随机均匀产生M个个体,每个个体由n维向量组成 

                                                     差分进化算法(Differential Evolution)

第i个个体的第j维值取值方式如下:

                                                   差分进化算法(Differential Evolution)

 

对于群体规模参数M,一般介于5×n与10×n之间,但不能少于4×n。

2.变异操作

在第g次迭代中,从种群中随机选择3个个体Xp1(g),Xp2(g),Xp3(g),并且所选择的个体不一样,那么这三个个体生成的变异向量为:

                                                       差分进化算法(Differential Evolution)

其中,Δp2,p3(g)=Xp2(g)−Xp3(g)是一个差分向量,F是缩放因子。

对于缩放因子F来说,一般取值为[0,2]之间进行选择,通常情况下去0.5.

在这里说一下参数F的自适应调整:

将变异算子中随机选择的三个个体进行从优到劣进行排序,得到Xb,Xm,Xw,他们对于的适应度是fb,fm,fw,变异算子改为:

                                                                   差分进化算法(Differential Evolution)

同时,F的取值,根据生成差分向量的两个个体自适应变化:

                                                                 差分进化算法(Differential Evolution)

在这里附上一些变异策略:

差分进化算法(Differential Evolution)

3.交叉操作

                                                              差分进化算法(Differential Evolution)

其中cr是属于[0,1]之间的值,为交叉概率。

其中参数cr的自适应调整如下:

                                            差分进化算法(Differential Evolution)

其中fi是个体xi的适应度值,fmin和fmax分别是当前种群中最差和最优个体的适应度值,f~是当前种群的适应度的平均值,crl和cru分别是cr的下限与上限,一般crl = 0.1,cru = 0.6。

4.选择操作

                                                差分进化算法(Differential Evolution)

对于每一个个体来说,得到的解要好于或者持平于个体通过变异,交叉,选择达到全部最优。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219016.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:59
下一篇 2026年3月17日 下午10:59


相关推荐

  • python怎么保留小数「建议收藏」

    python怎么保留小数「建议收藏」python如何保留小数点几位第一种round()函数a=1.23456print(round(a,2))print(round(a,3))1.231.234第二种format()函数print(format(1.23456,’.2%f’))1.23第三种’.2%f’%fq=1.234print(‘.2%f’%q)1.23

    2022年8月11日
    10
  • 超级小爱是接入豆包模型吗

    超级小爱是接入豆包模型吗

    2026年3月12日
    1
  • C多线程写入日志

    C多线程写入日志这里写自定义目录标题欢迎使用 Markdown 编辑器新的改变功能快捷键合理的创建标题 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右 SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的 KaTeX 数学公式新的甘特图功能 丰富你的文章 UML 图表 FLowchart 流程图导出与导入导出导入 public

    2026年3月16日
    2
  • RLP编码和解码

    RLP编码和解码GitHub 上英文介绍 解码部分为本人所编辑 https github com ethereum wiki wiki RLPRLP RecursiveLen 递归的长度前缀 是一种编码规则 可用于编码任意嵌套的二进制数组数据 RLP 编码的结果也是二进制序列 RLP 主要用来序列化 反序列化数据 目录 1 RLP 数据定义 2 RLP 编码规则 3

    2026年3月19日
    2
  • 在vue中使用tinymce富文本编辑器+tinymce富文本编辑器插入图片

    在vue中使用tinymce富文本编辑器+tinymce富文本编辑器插入图片1.安装#npminstalltinymce-S2.把node_modules\tinymce里面的文件包括tinymce文件夹全部复制到static文件夹下面,如下图3.在mian.js中引入tinymce(也可以在组件中引入)importTinymcefrom’tinymce’Vue.prototype.$tinymce=Tinymce…

    2022年5月1日
    84
  • @RequestParam注解详细使用

    @RequestParam注解详细使用RequestParam 注解 1 作用把请求中的指定名称的参数传递给控制器中的形参赋值 2 属性 1 value name 请求参数中的名称 必写参数 2 required 请求参数中是否必须提供此参数 默认值是 true true 为必须提供 3 defaultValue 默认值 3 使用使用情况一 RequestParam 注解的 value 属性值没有对应上 jsp 中

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号