ACS解决TSP问题的简单实现(C++)

一、背景1.1、TSP问题旅行商问题,是数学领域中著名问题之一,假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。令V={a,…,z}V=\{a, \ldots ,z\}V={a,…,z}表示城市集合,A={(r,s):r,s∈V}A=\{ (r,s):r,s\in ...
摘要由CSDN通过智能技术生成

一、背景

1.1、TSP问题

  • 旅行商问题,是数学领域中著名问题之一,假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。
  • V = { a , … , z } V=\{a, \ldots ,z\} V={ a,,z}表示城市集合, A = { ( r , s ) : r , s ∈ V } A=\{ (r,s):r,s\in V \} A={ (r,s):r,sV}表示边的集合,同时 δ ( r , s ) = δ ( s , r ) \delta (r,s)=\delta(s,r) δ(r,s)=δ(s,r)表示边 ( r , s ) (r,s) (r,s)上的距离成本。例如,城市 r ∈ V r \in V rV的坐标为 ( x r , y r ) (x_r,y_r) (xr,yr) δ ( r , s ) \delta (r,s) δ(r,s)表示城市 r r r s s s之间的欧几里得距离。
  • TSP问题的一些数据:http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp/

1.2、蚁群算法

  • Ant System模仿自然界中的蚂蚁觅食的行为。在两个城市 r r r s s s间不仅有距离成本 δ ( r , s ) \delta(r,s) δ(r,s),而且有信息素的记录 τ ( r , s ) \tau (r,s) τ(r,s)。每只蚂蚁通过probabilistic state transition rule来选择城市以完成自己的旅程;当所有蚂蚁完成了自己的旅程后,global pheromone updating rule开始应用,然后不断地迭代以上过程。
  • Ant Colony System是在Ant System上做的改进,主要表现在以下三个方面:the state transition rule为蚂蚁提供了探索新边和基于原先经验(信息素)进行选择的平衡;the global updating rule只针对最优路径进行更新;当蚂蚁完成一次旅程后,用local pheromone updating rule进行更新。

二、算法的主要内容

2.1、ACS State Transition Rule(状态转换,伪随机比例规则)

在城市 r r r上的蚂蚁通过该规则选择下一个城市 s s s s = { arg ⁡ max ⁡ u ∈ J k ( r ) { [ τ ( r , u ) ] ⋅ [ η ( r , u ) ] β } , if  q ≤ q 0 (exploitation) S , otherwise(biased exploration) s= \begin{cases}\arg \max_{u\in J_k(r)}\{[\tau(r,u)]\cdot[\eta(r,u)]^{\beta}\}, & \text {if $q\leq q_0$(exploitation)} \\ S, & \text{otherwise(biased exploration)} \end{cases} s={ argmaxuJk(r){ [τ(r,u)][η(r,u)]β},S,if qq0(exploitation)otherwise(biased exploration) q q q是均匀分布, q 0 q_0 q0是一个参数, S S

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值