C++用基本的蚁群算法求解旅行商问题

    1. 概述

旅行商问题(Travel Salesman Problem,TSP)是运筹学领域典型的组合优化问题,其目的是在一个完全图G=(N,A)中找到费用最小的哈密顿回路。其中N={1,…,n}表示城市构成的集合,A={(ij)|iN,jN,ij}表示边构成的集合。TSP在实际中具有非常广泛的应用,例如,机组调度、热轧调度、日程安排、自主移动机器人任务规划、印刷机调度等。由于TSP是一类具有二元决策变量的NP-hard问题,启发式算法常被用于解决这类问题,包括蚁群算法、遗传算法、局部搜索、神经网络、模拟退火、禁忌搜索等。TSP的数学模型可以表述如下:

其中,xij为0-1变量,表示路段(i,j)是否在最优的旅行路径中,即推销员是否通过该路段。cij表示从城市i到城市j所需要的花费。 

    1. 蚁群算法

蚁群算法是受到对真实蚂蚁群觅食行为研究的启发而提出。生物学研究表明:一群相互协作的蚂蚁能够找到食物和巢穴之间的最短路径,而单只蚂蚁则不能。生物学家经过大量细致观察研究发现,蚂蚁个体之间的行为是相互作用相互影响的。蚂蚁在运动过程中,能够在它所经过的路径上留下一种称之为信息素的物质,而此物质恰恰是蚂蚁个体之间信息传递交流的载体。蚂蚁在运动时能够感知这种物质,并且习惯于追踪此物质爬行,当然爬行过程中还会释放信息素。一条路上的信息素踪迹越浓,其它蚂蚁将以越高的概率跟随爬行此路径,从而该路径上的信息素踪迹会被加强,因此,由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反馈现象。某一路径上走过的蚂蚁越多,则后来者选择该路径的可能性就越大。蚂蚁的运动过程可以简单归纳如下:

(1)当周围没有信息素指引时,蚂蚁的运动具有一定的惯性,并有一定的概率选择其他方向;

(2)当周围有信息素的指引时,按照信息素的浓度强度概率性的选择运动方向;

(3)找食物时,蚂蚁留下与家相关的A信息素,找家时,蚂蚁留下与食物相关的B信息素,并随着移动距离的增加,洒播的信息素越来越少;

(4)随着时间推移,信息素会自行挥发。

应用蚁群算法求解TSP问题时,需要建立一个虚拟的始终点,可以直观地理解为蚂蚁巢穴和食物所在地,一个所经过城市的路径的排列就构成了TSP的一个解。算法的核心是信息素的记忆和更新。以下做重点说明。在算法开始时,由于从来没有蚂蚁去寻

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值