各算法理解
1、梯度下降算法
此公式的意义是:J是关于Θ的一个函数,我们当前所处的位置为Θ0点,要从这个点走到J的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是α,走完这个段步长,就到达了Θ1这个点!
α是什么含义?
α在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过α来控制每一步走的距离,以保证不走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以α的选择在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点。如下图所示:![](https://img2018.cnblogs.com/blog/1478496/201811/1478496-20181117101430830-1864700198.png)
为什么要梯度要乘以一个负号?
梯度前加一个负号,就意味着朝着梯度相反的方向前进!梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号(有爬山和下山之分)实例以及具体实例python算法见:https://www.jianshu.com/p/c7e642877b0e
2、退火算法
在实际日常中,人们会经常遇到如下问题:在某个给定的定义域X内,求函数f
对应的最优值。此处以最小值问题举例(最大值问题可以等价转化成最小值问题),形式化为:
模拟退火算法基本思想:
模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。在迭代更新可行解时,以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以下图为例,假定初始解为左边蓝色点A,模拟退火算法会快速搜索到局部最优解B,但在搜索到局部最优解后,不是就此结束,而是会以一定的概率接受到左边的移动。也许经过几次这样的不是局部最优的移动后会到达全局最优点D,于是就跳出了局部最小值。
模拟退火算法描述:
模拟退火算法的优缺点:
具体实例python实现参考:https://blog.csdn.net/AI_BigData_wh/article/details/77943787?locationNum=2&fps=1
设想这样一个场景:一群鸟在随机的搜索食物。在这个区域里只有一块食物,所有的鸟都不知道食物在哪。但是它们知道自己当前的位置距离食物还有多远。
那么找到食物的最优策略是什么?
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
(2)算法介绍
❃每个寻优的问题解都被想像成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。
❃所有的粒子都由一个fitness-function确定适应值以判断目前的位置好坏。
❃每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。
❃每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。
(3)基本PSO公式
![](https://img2018.cnblogs.com/blog/1478496/201811/1478496-20181119102746699-1668801342.png)
![](https://img2018.cnblogs.com/blog/1478496/201811/1478496-20181119102834669-198809826.png)
就像生物进化一样,一群生物,不适应环境的被淘汰了,剩下来的生物适应环境,所以他们会产生后代继承他们的优秀基因(这里也包含了基因的变异),他们的后代也是这样一直被自然选择下去,直到最后必然会产生最适应环境的个体。
![](https://img2018.cnblogs.com/blog/1478496/201811/1478496-20181119124724667-983306929.png)
适应度
所谓的适应度,本质上可以理解为一个代价函数,或者一个规则,通过对初始种群中的个体计算适应度,能够得到对初始种群中的个体是否优劣的一个度量
选择
选择操作是根据种群中的个体的适应度函数值所度量的优、劣程度决定它在下一代是被淘汰还是被遗传。
![](https://img2018.cnblogs.com/blog/1478496/201811/1478496-20181119125957377-788596455.png)
蚂蚁感知范围是一个3*3的格子,也就是说,他这个格子中有食物就直接过去。
2、移动规则
蚂蚁会朝着信息素浓的地方移动,如果没有感知到信息素,就会按着惯性一直走下去,别忘了,蚂蚁会创新呦!
3、避障规则
蚂蚁在遇到障碍物的时候会选择随机方向移动,同时遵循上面两个规则。
4、信息素规则
蚂蚁在刚发现食物的时候挥洒的信息素会多,距离越远,信息素越少。
原文以及实现:https://blog.csdn.net/zlk961543260/article/details/70172647