c++ 使用蚁群算法解决TSP问题。

TSP问题,旅行商问题:假如一个旅行商人要拜访n个城市,他必须选择所有要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。选择全部路径中的最小值。TSP具有NP计算复杂度(NP是指在非确定性图灵机上有多项式时间算法的问题)。TSP问题是数图论中重要的一个问题,即“已给一个n个点的完全图,每条边都有一个长度,求总长度最短的经过每个顶点正好一次的封闭回路”。


蚁群算法:蚁群算法是一种基于种群,通过模拟蚁群采集食物的过程的启发式搜索算法。蚂蚁通过释放信息素来记录路径,并趋向于走信息素量较多的路径来寻找最佳路径。其中一些限制的参数。

1.信息素的总量:蚂蚁拥有的信息素是有一定总量的,则在出发出信息素量较多,在一定距离后信息素会用尽,以防止其越走越远。

2.观测范围:蚂蚁有一定的观测范围,会选择信息素较多的路径。

3.出错概率:蚂蚁有一定的出错概率,会不往信息素最多的区域走。这使算法不过早的收敛。

4.信息素的消减速度:信息素以一定的速度消减,使一些不合适的路径上的信息素能消失,以减少对蚂蚁的干扰。

5.记忆能力:蚂蚁应该记住之前总过的路径,以防止回头,但是这个值较大时,会较低效率。


结合TSP问题,应做的一些改进:

蚂蚁数量为m,城市数量为n,城市间的距离为D[ i ] [ j ]。蚂蚁行走的过程不应该是以一定速度行走,而是以 一个时间段进行行走,在这个时间段内,每个蚂蚁都能完整的从一个城市走到另一个城市。则在n个时间段后,蚂蚁完成了一次回路,则n

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值