最近因为论文和审稿等综合因素的影响,决定对DE进行多一些研究,发现原先自己的了解太肤浅了发现了不少非常经典和实用的参考文献以及论述
包括但不限于以下专家和教授的文章
[I] 差分演化算法的理论与应用 [M] 熊盛武,胡中波,苏清华
[II] S. Das and P. N. Suganthan, “Differential Evolution: A Survey of the State-of-the-Art,” IEEE Transactions on Evolutionary Computation, vol. 15, no. 1, pp. 4–31, Feb. 2011, doi: 10.1109/TEVC.2010.2059031.
[III] A. K. Qin, V. L. Huang, and P. N. Suganthan, “Differential Evolution Algorithm With Strategy Adaptation for Global Numerical Optimization,” IEEE Trans. Evol. Computat., vol. 13, no. 2, pp. 398–417, Apr. 2009, doi: 10.1109/TEVC.2008.927706.
差分进化算法最具有特色的是它的自适应变异操作,在演化的初期阶段,因为种群中个体的差异较大,因此用来作为变异扰动的差向量也较大,个体的扰动就较大,有利于算法的全局搜索;随着演化的进行,当算法趋于收敛的时候,种群中个体的差异随之较小,因此用来变异扰动的差向量也随之自适应地变小,较小的扰动有利于局部搜索。正是由于这种简单又独具特色的变异操作有效地平衡了差分演化算法的全局搜索能力和局部搜索能力。值得注意的是,差分进化算法的变异操作对于搜索空间是不封闭的,即变异后得到的捐助向量有可能溢出搜索空间。
差分演化算法仅有三个经验控制参数,即种群规模N,变异因子F和交叉概率CR,算法的表现对于参数的设置是敏感的,针对其中两个关键控制参数F和CR,已经研究出了较多简单有效的自适应控制方法。
算子的搜素能力可以分为全局搜索和局部搜索能力,全局搜索能力可由种群的多样性反映,种群的多样性又可由种群的方差反映,沿着这一研究思路,Zaharie应用基于统计量的方法从理论上研究了差分演化算法的算子搜索机理。
生物学上,“突变(mutation)”是指染色体基因特征的突变。然而,在进化计算范式的背景下,突变也被视为随机元素的变化或扰动。在DE文献中,来自当前世代的亲本载体称为目标载体 (target vector),通过差分突变操作获得的突变载体称为供体载体(donor vector),最后通过将供体与目标载体重组形成的后代称为试验载体(trial vector)。在一种最简单的DE突变形式中,为了从当前种群中为每个第i个目标向量创建供体向量,还需要另外三个不同的参数向量,比如
X
⃗
r
1
i
,
X
⃗
r
2
i
,
X
⃗
r
3
i
\vec{X}_{r^i_1},\vec{X}_{r^i_2},\vec{X}_{r^i_3}
Xr1i,Xr2i,Xr3i是从当前种群中随机采样的。索引
r
1
i
,
r
2
i
,
r
3
i
r^i_1,r^i_2,r^i_3
r1i,r2i,r3i是从范围[1,NP]中随机选择的互斥整数,它们也不同于基向量索引i。这些索引对于每个突变向量随机生成一次。现在,这三个向量中任意两个向量的差按标量F(通常位于区间[0.4,1])缩放,并将缩放后的差加到第三个向量上,我们从那里获得供体向量
V
⃗
i
,
G
\vec{V}_{i,G}
Vi,G。我们可以将过程表示为
V
⃗
i
,
G
=
X
⃗
r
1
i
,
G
+
F
⋅
(
X
⃗
r
2
i
,
G
−
X
⃗
r
3
i
,
G
)
(
3
)
\vec{V}_{i, G}=\vec{X}_{r_1^i, G}+F \cdot\left(\vec{X}_{r_2^i, G}-\vec{X}_{r_3^i, G}\right) (3)
Vi,G=Xr1i,G+F⋅(Xr2i,G−Xr3i,G)(3)
决策空间示意图


[74] K. Price, R. Storn, and J. Lampinen, Differential Evolution—A Practi-cal Approach to Global Optimization. Berlin, Germany: Springer, 2005.
[75] K. V . Price, “An introduction to differential evolution,” in New Ideas in Optimization, D. Corne, M. Dorigo, and V . Glover, Eds. London,U.K.: McGraw-Hill, 1999, pp. 79–108.
[92] R. Storn and K. Price, “Differential evolution: A simple and efficient heuristic for global optimization over continuous spaces,” J. Global Optimization, vol. 11, no. 4, pp. 341–359, 1997.
V ⃗ i , G = X ⃗ r 1 , G + F 2 ⋅ ( X ⃗ r 1 , G − X ⃗ r 2 , G − X ⃗ r 3 , G ) \vec{V}_{i, G}=\vec{X}_{r_1, G}+\frac{F}{2} \cdot\left(\vec{X}_{r_1, G}-\vec{X}_{r_2, G}-\vec{X}_{r_3, G}\right) Vi,G=Xr1,G+2F⋅(Xr1,G−Xr2,G−Xr3,G)
[26] V . Feoktistov and S. Janaqi, “Generalization of the strategies in differential evolution,” in Proc. 18th IPDPS, Apr. 2004, p. 165a.
[56] E. Mezura-Montes, J. V elázquez-Reyes, and C. A. Coello Coello,“A comparative study of differential evolution variants for globaloptimization,” in Proc. Genet. Evol. Comput. Conf., 2006, pp. 485–492
其中 X ⃗ r 1 , G , X ⃗ r 2 , G , X ⃗ r 3 , G \vec{X}_{r_1,G},\vec{X}_{r_2,G},\vec{X}_{r_3,G} Xr1,G,Xr2,G,Xr3,G是独立的个体,并且满足 X ⃗ r 1 , G ≤ X ⃗ r 2 , G , X ⃗ r 3 , G \vec{X}_{r_1,G}\leq{\vec{X}_{r_2,G},\vec{X}_{r_3,G}} Xr1,G≤Xr2,G,Xr3,G Mezura Montes等人进行的实验表明,基于结果的最终准确性和鲁棒性,DE/best/1/bin(始终使用最佳解决方案来寻找搜索方向,也使用二项式交叉)仍然是最具竞争力的方案,无论要解决的问题的特征如何。[56]中的作者还提到,对于单峰和可分离函数,DE/rand/2/dir取得了相当好的结果。对于单峰和不可分离函数,DE/best/1/bin始终获得最佳性能。该变型也成功地优化了多模态和可分离基准。DE/rand/1/bin和DE/rand/2/dir在这类函数上提供了类似质量的性能。然而,在多模态和不可分离函数上,DE/rand/2/dir仍然最具竞争力,收敛到全局最优的速度稍快。
变异基矢量是best,即是对种群当前最优个体进行变异搜索,该变异方式具有良好局部搜索能力,而不是全局搜索能力,并且能够快速收敛;对于变异基矢量是rand的方式,其变异基底是一个随机选择的个体,该变异方式具有良好的全局搜索能力。
[11] R. Storn, “On the usage of differential evolution for function optimiza-tion,” in Proc. Biennial Conf. North Amer. Fuzzy Inf. Process. Soc.,Berkeley, CA, 1996, pp. 519–523.
[34] A. Iorio and X. Li, “Solving rotated multi-objective optimization problems using differential evolution,” in Proc. Australian Conf. Artif. Intell., Cairns, Dec. 2004, pp. 861–872
[35] W. J. Zhang and X. F. Xie, “DEPSO: Hybrid particle swarm with differ-ential evolution operator,” in Proc. IEEE Int. Conf. Syst. Man Cybern.,Washington, DC, 2003, pp. 3816–3821
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?
我在Ruby中遇到了一个关于Dir[]和File.join()的简单程序,blobs_dir='/path/to/dir'Dir[File.join(blobs_dir,"**","*")].eachdo|file|FileUtils.rm_rf(file)ifFile.symlink?(file)我有两个困惑:首先,File.join(@blobs_dir,"**","*")中的第二个和第三个参数是什么意思?其次,Dir[]在Ruby中有什么用?我只知道它等价于Dir.glob(),但是,我对Dir.glob()确实不是很清楚。 最佳答案
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>
目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'
我一直在尝试用Ruby实现Luhn算法。我一直在执行以下步骤:该公式根据其包含的校验位验证数字,该校验位通常附加到部分帐号以生成完整帐号。此帐号必须通过以下测试:从最右边的校验位开始向左移动,每第二个数字的值加倍。将乘积的数字(例如,10=1+0=1、14=1+4=5)与原始数字的未加倍数字相加。如果总模10等于0(如果总和以零结尾),则根据Luhn公式该数字有效;否则无效。http://en.wikipedia.org/wiki/Luhn_algorithm这是我想出的:defvalidCreditCard(cardNumber)sum=0nums=cardNumber.to_s.s
下面是我写的一个计算斐波那契数列中的值的方法:deffib(n)ifn==0return0endifn==1return1endifn>=2returnfib(n-1)+(fib(n-2))endend它工作到n=14,但在那之后我收到一条消息说程序响应时间太长(我正在使用repl.it)。有人知道为什么会这样吗? 最佳答案 Naivefibonacci进行了大量的重复计算-在fib(14)fib(4)中计算了很多次。您可以将内存添加到您的算法中以使其更快:deffib(n,memo={})ifn==0||n==1returnnen