差分算法是什么?

差分算法是什么?,第1张

在数值计算中,常用差分近似微分.

最简单的差分格式有向前、向后和中心3种.

向前差分:f'(n)=f(n+1)-f(n)

向后差分:f'(n)=f(n)-f(n-1)

中心差分:f'(n)=[f(n+1)-f(n-1)]/2

diff差分数组,diff[i]就是nums[i]和nums[i-1]之差:

通过这个diff差分数组是可以反推出原始数组nums的:

这样构造差分数组diff,就可以快速进行区间增减的 *** 作,如果你想对区间nums[i..j]的元素全部加 3,那么只需要让diff[i] += 3,然后再让diff[j+1] -= 3即可.

原理:

原理很简单,回想diff数组反推nums数组的过程,diff[i] += 3意味着给nums[i..]所有的元素都加了 3,然后diff[j+1] -= 3又意味着对于nums[j+1..]所有元素再减 3,综合起来,就是对nums[i..j]中的所有元素都加 3 了。

差分算法工具化

差分进化算法(Differential Evolution, DE)是一种新兴的进化计算技术,或称为差分演化算法、微分进化算法、微分演化算法、差异演化算法。它是由Storn等人于1995年提出的,最初的设想是用于解决切比雪夫多项式问题,后来发现DE也是解决复杂优化问题的有效技术。DE与人工生命,特别是进化算法有着极为特殊的联系。

差分进化算法是基于群体智能理论的优化算法,通过群体内个体间的合作与竞争产生的群体智能指导优化搜索。但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码基于差分的简单变异 *** 作和一对一的竞争生存策略,降低了遗传 *** 作的复杂性。同时,DE特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所无法求解的复杂环境中的优化问题。

差分进化算法是一种基于群体进化的算法,具有记忆个体最优解和种群内信息共享的特点,即通过种群内个体间的合作与竞争来实现对优化问题的求解,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法。

DE是一种用于优化问题的启发式算法。本质上说,它是一种基于实数编码的具有保优思想的贪婪遗传算法 。同遗传算法一样,DE包含变异和交叉 *** 作,但同时相较于遗传算法的选择 *** 作,DE采用一对一的淘汰机制来更新种群。由于DE在连续域优化问题的优势已获得广泛应用,并引发进化算法研究领域的热潮。

DE由Storn 以及Price提出,算法的原理采用对个体进行方向扰动,以达到对个体的函数值进行下降的目的,同其他进化算法一样,DE不利用目标函数的梯度信息,因此对目标的可导性甚至连续性没有要求,适用性很强。同时,算法与粒子群优化有相通之处 ,但因为DE在一定程度上考虑了多变量间的相关性,因此相较于粒子群优化在变量耦合问题上有很大的优势。算法的实现参考实现代码部分。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5795931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-01-31
下一篇 2023-01-31

发表评论

登录后才能评论

评论列表(0条)

保存