在上一篇中,我们介绍了蚁群算法(ACO)以及用蚁群算法解决旅行商(TSP)问题。(工程优化设计与Matlab实现——蚁群算法(一)求解旅行商问题)
在本篇中,我们来详细介绍使用蚁群算法解决函数优化问题。
蚁群算法(ACO)
Part 3 蚁群算法求解函数优化问题
Point 1 蚁群算法求解函数优化问题的基本原理
将m只蚂蚁随机放置在求解区域的空间点上
蚂蚁i在初始位置上的吸引强度(信息量)设为:
![278b78cb0863e0532b0b1e4a12bc3664.png](https://i-blog.csdnimg.cn/blog_migrate/3a0f07532cc55f78ffe83ae3757f447c.png)
蚂蚁i先后移动两次吸引强度增量(信息量增量)为:
![86adc261f9eae0b5bb22b2d891dffe78.png](https://i-blog.csdnimg.cn/blog_migrate/dcf8e8dc8590442a3577b2dcf5eb4388.jpeg)
蚂蚁i根据吸引强度的增量更新自身的吸引强度(信息量):
![52396b30dcc01c140321624990aa9532.png](https://i-blog.csdnimg.cn/blog_migrate/c0c6f30e55bfcc8fdc44fbac8c20cbf0.png)
蚂蚁i与蚂蚁j所在空间点适应度期望值(启发量)为:
![005e4372ebc4c2a1954d6fa1d9e67f21.png](https://i-blog.csdnimg.cn/blog_migrate/47712a1a82bd7ce8b180c9812d1557de.jpeg)
蚂蚁i依据概率
![5b426f6f6f495cca145c25fb9156f43f.png](https://i-blog.csdnimg.cn/blog_migrate/e025ffcffe966c6e2e73d48fd76d26f0.png)
蚂蚁i在新的空间点处的坐标计算方法为:
- 先选择下一个点
:(为了产生一个吸引强度增量)
![5d74b1648aeccc3ae4e75d7286f00deb.png](https://i-blog.csdnimg.cn/blog_migrate/d3655269852cca4d250268dc9f3d74af.png)
- 新的空间点为
邻域内的一个点:(为了探索新点)
![c1b31ec4f7388835dacb32fa0b4941b9.png](https://i-blog.csdnimg.cn/blog_migrate/266202d17055cad40956c411fff17904.png)
其中下标i,j为蚂蚁标号,上标1,2分别表示蚂蚁移动前和移动后;rand为随机数;r为区间缩小因子(0<r<1);上标k为区间缩小计数,取为计算循环次数,即随着迭代次数增多
Point 2 函数优化问题与TSP问题的比较
与旅行商问题(TSP)比较,函数极值问题中的“信息量”与“启发量”表现形式略有区别。
“信息量”的区别
将TSP问题的“信息量”是“路径上的信息量”,而函数极值问题中的“信息量”是“蚂蚁自身的吸引强度”。其实两者本身就是一个概念,通往某一个城市“路径上的信息量”越多,该城市的吸引程度就越强;某个蚂蚁“自身的吸引程度”越强,相当于通往该蚂蚁当前位置的路径上的信息量越多。这就表现出了信息量是一个由总体范围(从迭代开始到当前的累积)决定的对选择概率的调整值。
“启发量”的区别
在TSP问题中的“启发量”是“两城市之间距离的倒数”,即两城市间的距离越小则启发量越小;而函数极值问题中的“启发量”是“两点之间函数值下降量”,即两点之间的函数值下降越大则启发量越大。这就表现出了启发量是一个由当前小范围(从一点到另一点)情况决定的对选择概率的调整值。
其他区别
在TSP问题中,城市的个数是有限个的;而在函数极值问题中,取值点的函数是无限个的。
在TSP问题中,我们要求总距离最小,也就是在讨论点到点的顺序,可以理解为点与点之间的关系;而在函数极值问题中,我们求的是某点的函数值最小,只与一个点有关。
由这两点区别,导致了我们在函数极值问题中不能像TSP那样在点与点之间轮换,我们还需要探索新点,即,在点的某一邻域内随机性的寻找新点。也正是因为点在不断变化,所以我们要将“信息量”从点与点之间的路径中转移到蚂蚁身上。
Point 3 蚁群算法求解函数优化问题的实现步骤
有了上一篇中TSP问题的基础,求解函数优化问题实现起来就十分容易。
同样,还是请我们的蚂蚁代表,小
![683f8949694b638b027b36324fcf3f0f.png](https://i-blog.csdnimg.cn/blog_migrate/a277cd6a6a379a7af649a5bf57c62b2e.jpeg)
所有蚂蚁都按此过程走到新位置即完成一轮迭代。
Point 4 蚁群算法求解函数优化问题举例子
用蚂蚁算法求以下函数
目标函数定义:
function
蚁群算法求解函数优化问题主程序:
clc
计算结果为:
![0ca1bcc2ced424020c183513ef0cacc9.png](https://i-blog.csdnimg.cn/blog_migrate/7ca7148770932b3d8481668084a24983.png)
极小值随次数收敛图像:
![79242aca88b391a5c5ddf5b5d98232b4.png](https://i-blog.csdnimg.cn/blog_migrate/7df94438471462b85ab492e6c3307f92.jpeg)
![f2568c668e85df13ba4b1a2129014d3c.png](https://i-blog.csdnimg.cn/blog_migrate/40c5f2cdab19234708c6659a566fb51d.jpeg)
![27ec46d846ff789edff652a6dfa04fac.png](https://i-blog.csdnimg.cn/blog_migrate/5c78a894caa4c8187f11428751f234cc.jpeg)