差分进化算法_智能优化算法 — 差分进化算法示例代码

385ebcbd647dc02f1584ed86fe99ae6f.png点击上方“蓝字”关注我们了解更多精彩

5886bf40f3ce550712fe29d84de5c871.png

差分进化算法(Differential Evolution Algorithm,DE)是一种高效的全局优化算法。它也是基于群体的启发式搜索算法,群中的每个个体对应一个 解向量 。差分进化算法的进化流程则与 遗传算法 非常类似,都包括变异、杂交和选择操作,但这些操作的具体定义与遗传算法有所不同。 基本原理 前文《智能优化算法 — 差分进化算法》

不同的进化策略具有不同的效果,随着研究者有组织的研究,总结出了一套进化策略如:

表示DE/best/1/bin——>表示DE/最优值作为基数也可随机选取(rand)/1个矢量差/二项差求矢量值,还有一种是指数矢量差未列出,如exp。后面解释基本一致。

表示DE/best/1/bin

表示DE/rand-to-best/1/bin,黄色部分是随机和最优值相结合选取作为基数。

表示DE/best/2/bin

表示DE/rand/2/bin·····等。

1.种群初始化设置初始进化代数t=0,在优化问题的可行解空间内按下式,随机产生满足约束条件的NP个个体X构成初始种群,NP的选取一般在维数D的5-10倍之间。

4202b6878852ca5c788998d67bea6461.png

2.变异操作变异操作是DE算法中的关键步骤,也是其与其他进化算法的主要区别所在。DE算法最基本的变异成分是父代的差分矢量,每个差分矢量对应父代种群中两个不同个体的差向量,差分矢量定义见下式:

178d3e93e048e11d216faea947b558b0.png

其中,r1,r2,r3∈{1, 2, …,NP}为随机选取的互不相同的正整数,且r1,r2,r3与当前目标个体矢量索引号i不同,由此可见,DE算法的种群规模必须大于4,否则将无法进行变异操作。Vi(t+1)为目标个体矢量Xi(t)对应的变异个体矢量,Xr3(t)称为基向量,F∈[0, 2]为常数,是DE算法的主要控制参数之一,称为变异因子或缩放因子,控制差异矢量的缩放幅度,也即对基向量影响的大小。

b6d33a456391c433e76b7cb0d177b1c5.png

3.交叉操作为进一步增加种群多样性,DE 算法将目标矢量个体Xi(t)与其对应的变异个体Vi(t+1)进行交叉操作,产生试验个体,即目标个体的候选个体Ui(t+1)。为保证目标个体Xi(t)的进化,必须保证试验个体Ui(t+1)中至少有一维分量由变异个体Vi(t+1)贡献,而其他维分量则由交叉概率因子CR决定。由此试验个体中每一维分量uij(t+1)按下式。

1910f19726af28febcb7744427b8ab70.png其中,xij(t)表示父代种群中目标个体矢量Xi(t)中的第j维分量,vij(t+1)为变异个体Vi(t+1)中的第j维分量,其中i=1,…,NP,j=1,…,D。rand(j)∈[0,1]为第j维分量对应的随机数。交叉概率因子CR∈[0,1]是DE算法的另一个主要控制参数,它决定了变异个体Vi(t+1)在生成的试验个体Ui(t+1)中所占的比例。 k为第i个个体对应的系数,一般是从序列[1, 2, …,D]中随机选择的一个整数,用来确保候选个体Ui(t+1)中至少有一维分量来自变异个体Vi(t+1)。

4.选择操作(优胜劣汰)

8a7a0f0a1bf19280e37ac3b4a5e45e11.png 

Eg:求解f=x1^2+x2^2+……+xn^2,n=2, 求解f=f=x1^2+x2^2,最优值为(0,0),可行域区间取[-20,20], 如下图:

1d1f9f884695da008bf7c718033e2c9b.png

采用DE/rand/1/bin的进化策略,得到如下结果,文末赋代码链接:

a335e2d736036e76eb9d09b0123b860a.png 72c8d07765c458e6d9a2942e8764c084.png

Eg:求解Schaffer函数为例,同样采用不同的进化策略将会得到不同的效果。

ecd54d0d283348b9f4f9200ded88d229.pngc539f08441640c9cf8547580495a494a.png

Schaffer函数的最优值为1,只不过从等高线可以看出解x有很多。运行后的 收敛曲线如下,代码赋在文末:

1122596c8544fe0578261ddec574175b.png

链接:https://pan.baidu.com/s/1BUNnvmawX6m_5Ueter5nNQ

提取码:5u1n

复制这段内容后打开百度网盘手机App,操作更方便哦,代码仅供学习借鉴非商业用途!如有问题可后台回复,小编将尽快回复您!

参考书籍:

《差分进化算法及高维多目标优化应用 》   肖婧

— 往期精彩 —

数据结构 — 线性栈

2020-06-08

da08345f0679944f2584eed8ba9f71b7.png

数据结构 — 链接存储的栈

2020-06-08

245bc92465901f3acdc5495322fd9a73.png

数据结构 — 链接存储的队列

2020-06-08

3de7908958b550bc06977f7cc17acfed.png

数据结构 — 队列

2020-06-08

3de7908958b550bc06977f7cc17acfed.png

c09f742e2b75901b9df12a751042e5d6.png

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值