在学习编程的过程中,有一件东西是一定不能忘记的,那就是算法,而且你如果学的是Python,我们也都知道Python的优势所在,机器学习,深度学习等。。那势必需要和数学和算法有关,小编今天面试被算法题吊打,虽然以前也深知算法的重要,但是出于惰性,一直没有去学习这个东西,所以今天推介大家关注一个算法和数学的公众号:数学算法实验室,来提升自己的能力,以下是转载的该公众号文章,感兴趣的可以关注一下,最近公众号也没有更新,以后也会积极的更新。 十三
初始粒子群算法
现代算法分为硬计算和软计算,这个概念是由美国加州大学的一名教授提出的。硬计算需要建立数学模型,软计算是一种动态的自适应求解方式,不需要建立深入的数学模型。智能算法都属于软计算。
自然界中的一些生物行为特征呈现群体特征,可以用简单的几条规格将这些群体的行为在计算机中建模,实际上就是在计算机中用简单的几条规则建立个体的运动模型。例如使用下面三条简单的规则来约束一个群体:
在这个群体中,每个个体都遵循这三条原则,通过这个模型来模拟整个群体的运动。粒子群算法就是依托群鸟觅食的模型来寻找最优值。
粒子群算法的基本理论
首先我们介绍群鸟觅食模型的理论与作用。
群鸟觅食实际上是一个最佳决策的过程,与人类决策的过程相似。通常人类在决策的时候会综合两个重要信息:第一种是自己以往的经验;第二种是其他人的经验,即从周围人的行为中获取知识。
群鸟在觅食的时候,每只鸟的初始状态处于随机位置,且飞行方向也是随机的。每只鸟都不知道食物在哪里,但是随着时间的推移,这些鸟类群体通过不断的探索和信息共享会朝着目标(食物)前进。每只鸟能通过一定的经验和信息估计目前所处的位置对于能寻找到食物有多大的价值,即多大的适应度。每只鸟能记住所找到的最好位置,称之为局部最优;群鸟中所有个体所能找到的最好位置,称之为全局最优。整个鸟群的觅食都是在不断地趋向于全局最优,在生物学中称为“同步效应”。通过觅食位置的不断移动,可以使鸟群向食物步步逼近。
粒子群模型
在群鸟觅食的模型中,每个个体可以被看做一个粒子,则鸟群可以被看成一个粒子群。假设一个n维的目标搜索空间里,有m个粒子组成一个群体,其中第i个粒子(i=1,2,…,m)位置表示为
,即第i个粒子在n维搜索空间中的位置是Xi。换言之,每个粒子的位置就是一个潜在解,将Xi带入目标函数就可以计算出其适应值,根据适应值的大小来衡量优劣。设粒子经历过的最好的位置记作
,整个种群所有粒子经历过的最好位置记为
,粒子i的速度记为
粒子群算法采用下面的公式对粒子的位置进行不断更新
其中,i=1,2,…,m;d=1,2,…,n;ω是非负数,称为惯性因子;加速常数C1和C2是非负常数;r1和r2是[0,1]f范围内的随机数;α称为约束因子,控制速度的权重。同时我们应该设置最大速度对其个体速度进行约束,可以具体问题具体分析。
迭代的终止条件应该根据具体问题进行设定,一般达到预订的最大迭代次数或粒子 群目前搜索到的最优位置满足目标函数最小容许差误差。
粒子群算法优点
以上就是今天的全部内容了,如果你喜欢的话,点个在看吧,你的支持是我最大的动力