0阶贝塞尔函数_工程优化设计与Matlab实现——蚁群算法(二)求解函数优化问题...

在上一篇中,我们介绍了蚁群算法(ACO)以及用蚁群算法解决旅行商(TSP)问题。(工程优化设计与Matlab实现——蚁群算法(一)求解旅行商问题)

在本篇中,我们来详细介绍使用蚁群算法解决函数优化问题。

蚁群算法(ACO)

Part 3 蚁群算法求解函数优化问题

Point 1 蚁群算法求解函数优化问题的基本原理

将m只蚂蚁随机放置在求解区域的空间点上

蚂蚁i在初始位置上的吸引强度(信息量)设为:

278b78cb0863e0532b0b1e4a12bc3664.png

蚂蚁i先后移动两次吸引强度增量(信息量增量)为:

86adc261f9eae0b5bb22b2d891dffe78.png

蚂蚁i根据吸引强度的增量更新自身的吸引强度(信息量):

52396b30dcc01c140321624990aa9532.png

蚂蚁i与蚂蚁j所在空间点适应度期望值(启发量)为:

005e4372ebc4c2a1954d6fa1d9e67f21.png

蚂蚁i依据概率

移动到蚂蚁j所在的位置,移动概率
为:

5b426f6f6f495cca145c25fb9156f43f.png

蚂蚁i在新的空间点处的坐标计算方法为:

  • 先选择下一个点
    :(为了产生一个吸引强度增量)

5d74b1648aeccc3ae4e75d7286f00deb.png
  • 新的空间点为
    邻域内的一个点:(为了探索新点)

c1b31ec4f7388835dacb32fa0b4941b9.png

其中下标i,j为蚂蚁标号,上标1,2分别表示蚂蚁移动前和移动后;rand为随机数;r为区间缩小因子(0<r<1);上标k为区间缩小计数,取为计算循环次数,即随着迭代次数增多

越来越小;
保证蚂蚁i在
的邻域内移动,随着循环次数增加,蚂蚁向最优点靠近。

Point 2 函数优化问题与TSP问题的比较

与旅行商问题(TSP)比较,函数极值问题中的“信息量”与“启发量”表现形式略有区别。

“信息量”的区别

将TSP问题的“信息量”是“路径上的信息量”,而函数极值问题中的“信息量”是“蚂蚁自身的吸引强度”。其实两者本身就是一个概念,通往某一个城市“路径上的信息量”越多,该城市的吸引程度就越强;某个蚂蚁“自身的吸引程度”越强,相当于通往该蚂蚁当前位置的路径上的信息量越多。这就表现出了信息量是一个由总体范围(从迭代开始到当前的累积)决定的对选择概率的调整值。

“启发量”的区别

在TSP问题中的“启发量”是“两城市之间距离的倒数”,即两城市间的距离越小则启发量越小;而函数极值问题中的“启发量”是“两点之间函数值下降量”,即两点之间的函数值下降越大则启发量越大。这就表现出了启发量是一个由当前小范围(从一点到另一点)情况决定的对选择概率的调整值。

其他区别

在TSP问题中,城市的个数是有限个的;而在函数极值问题中,取值点的函数是无限个的。

在TSP问题中,我们要求总距离最小,也就是在讨论点到点的顺序,可以理解为点与点之间的关系;而在函数极值问题中,我们求的是某点的函数值最小,只与一个点有关。

由这两点区别,导致了我们在函数极值问题中不能像TSP那样在点与点之间轮换,我们还需要探索新点,即,在点的某一邻域内随机性的寻找新点。也正是因为点在不断变化,所以我们要将“信息量”从点与点之间的路径中转移到蚂蚁身上。

Point 3 蚁群算法求解函数优化问题的实现步骤

有了上一篇中TSP问题的基础,求解函数优化问题实现起来就十分容易。

同样,还是请我们的蚂蚁代表,小

同学登场,蚂蚁i一个循环中需要经过的步骤如下:

683f8949694b638b027b36324fcf3f0f.png

所有蚂蚁都按此过程走到新位置即完成一轮迭代。

Point 4 蚁群算法求解函数优化问题举例子

用蚂蚁算法求以下函数

的极小值。

目标函数定义:

function

蚁群算法求解函数优化问题主程序:

clc

计算结果为:

0ca1bcc2ced424020c183513ef0cacc9.png

极小值随次数收敛图像:

79242aca88b391a5c5ddf5b5d98232b4.png
0-100次收敛图像

f2568c668e85df13ba4b1a2129014d3c.png
局部放大,50-100次收敛图像

27ec46d846ff789edff652a6dfa04fac.png
局部放大,80-100次收敛图像
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值