利索能及
我要发布
收藏
专利号: 2025101444900
申请人: 南京信息工程大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-06-16
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于蚁群系统的多旅客旅行路径规划方法,其特征在于,包括以下步骤:步骤1,获取旅游景点数据和旅客数据;

步骤2,构建融合旅客预算经费、旅游景点间旅费、旅游景点门票费和旅游景点旅游体验值的多旅客旅行路径规划模型,建立最大化多位旅客中最小旅游体验值的优化目标函数,评价多旅客旅行路径规划方案的质量;

步骤3,根据旅游景点地理位置,计算出旅游景点之间的旅费矩阵,使用贪心算法构建一个贪心的多旅客旅行路径规划方案,并初始化信息素矩阵;

步骤4,维持蚂蚁团队,构建多旅客旅行路径规划方案,蚂蚁团队中的每只蚂蚁基于旅游景点预选策略进行旅行路径构建;

步骤5,采用2‑opt局部搜索策略对每个蚂蚁团队中的每只蚂蚁所构建旅行路径进行访问序列优化,降低旅行成本;然后采用景点插入局部优化策略对每个蚂蚁团队中的每只蚂蚁所构建旅行路径插入新旅游景点,以最大化各旅行路径的旅游体验值;

步骤6,评估每个蚂蚁团队所构建的多旅客旅行路径规划方案,更新全局最优多旅客旅行路径规划方案;调用全局信息素更新,更新全局最优多旅客旅行路径规划方案所属边的信息素浓度;

步骤7,重复步骤4~步骤6,直到满足迭代终止条件;

步骤8,输出最终的全局最优多旅客旅行路径规划方案;

步骤3包括:初始化蚁群系统参数,包括蚂蚁团队数量NP、信息素控制参数α、启发式信息控制参数β、局部信息素蒸发率ξ、全局信息素蒸发率ρ、开发概率q0和适应值评估次数Max_FV;

所述旅费矩阵是一个n×n的二维矩阵DF=[dfij]n×n,两个旅游景点i,j之间的旅费计算公式为:其中,(xj,yj)表示旅游景点j的空间坐标;unit_fee表示单位距离旅费;

然后执行如下步骤:

步骤3‑1,初始化一个蚂蚁团队,包含m只蚂蚁;

步骤3‑2,蚂蚁团队的所有蚂蚁从指定旅客起点出发,根据各旅游景点之间的启发式信息选择满足预算约束的可访问旅游景点,开始构建贪心旅行路径规划方案;蚂蚁团队初始化一个空的旅游景点禁忌表,初始化每只蚂蚁的旅游体验值为0;

步骤3‑3,蚂蚁团队中的每只蚂蚁根据预算约束和旅游景点禁忌表获取各自可访问旅游景点集candidatesk,随后每只蚂蚁从各自的可访问旅游景点集candidatesk中预选择与各自的当前旅游景点ik具有最大启发式信息的旅游景点jk;然后,设定将每只蚂蚁预选旅游景点加入到各自所构建旅行路径中,计算每只蚂蚁的未来旅游体验值;

步骤3‑4,选择未来旅游体验值最小的蚂蚁K进行路径构建;如果存在两只以上具有相同最小未来旅游体验值的蚂蚁,则从中选择当前旅游景点与预选旅游景点具有最大启发式信息的蚂蚁K进行路径构建;将蚂蚁K所预选择的旅游景点加入所构建旅行路径中,同时加入禁忌表,并更新对应的旅行成本及旅游体验值;

步骤3‑5,重复步骤3‑3~步骤3‑4,直到蚂蚁团队中的每只蚂蚁都无法再选择旅游景点,从而得到一个贪心的多旅客旅行路径规划方案;

步骤3‑6,使用贪心多旅客旅行路径规划方案中的最小旅客旅游体验值与旅游景点总旅游体验值信息来赋值信息素初始值τ0,然后将信息素矩阵中的信息素初始化为τ0;

步骤3‑2中,所述启发式信息是基于景点旅游体验值、景点间旅费和景点门票费所生成的,两个旅游景点i,j之间的启发式信息ηij的计算公式为:其中,ticket_feei表示旅游景点i的门票费;

步骤3‑3中,采用如下公式计算蚂蚁k的未来旅游体验值future_scorek:其中, 表示蚂蚁k预选旅游景点jk的旅游体验值;

步骤3‑4中,进行旅行路径构建的蚂蚁K是根据如下公式所选择的,即选择未来旅游体验值最小的蚂蚁进行旅行路径构建:如果K取值不唯一,即存在两只以上具有相同最小未来旅游体验值的蚂蚁,则将具有相同最小未来旅游体验值的蚂蚁编号存放在待处理集set中,并将K置为空集,根据如下公式重新进行选择,即从具有相同最小未来旅游体验值的蚂蚁中选择当前旅游景点与预选旅游景点具有最大启发式信息的蚂蚁进行路径构建:其中, 表示蚂蚁k当前所在旅游景点ik和其预选旅游景点jk之间的启发式信息;

采用如下公式更新对应的旅行成本及旅游体验值:

其中,tour_expenseK表示蚂蚁K所构建旅行路径的旅行成本; 表示蚂蚁K当前所在旅游景点iK和蚂蚁K预选旅游景点jK之间的旅费; 表示旅游景点jK的门票费;

tour_scoreK表示蚂蚁K所构建旅行路径的旅游体验值; 表示旅游景点jK的旅游体验值;

步骤3‑6中,使用贪心多旅客旅行路径规划方案来赋值信息素初始值τ0,计算公式为:其中,greedy_scoremin表示贪心多旅客旅行路径规划方案中的最小旅游体验值;Q1表示控制系数;所述信息素矩阵是一个n×n的二维矩阵PM=[τij]n×n,τij表示旅游景点i,j之间的信息素浓度,在算法初始时,τij=τ0。

2.根据权利要求1所述的方法,其特征在于,步骤1中,所述旅游景点数据包括:旅游景点数量n,旅游景点编号i、旅游景点的坐标(xi,yi),旅游景点i的旅游体验值scene_scorei和旅游景点i的门票费ticket_feei;其中1≤i≤n,xi、yi分别表示旅游景点i的横纵坐标;

所述旅客数据包括旅客数量m、旅客编号k和旅客起点的坐标(x0,y0),旅客的预算经费budget;其中x0、y0分别表示旅客起点的横纵坐标,1≤k≤m。

3.根据权利要求2所述的方法,其特征在于,步骤2包括:给定n个旅游景点、m位旅客和一个旅客起点坐标(x0,y0),将旅游景点地图描述为一个完全无向图G=(V,E),其中V={i,|

0≤i≤n}表示景点集合,包括旅游景点和旅客起点,每个旅游景点包括旅游景点门票费和旅游景点旅游体验值两个属性,E={eij,|i,j∈V}是所有景点之间的边集,设定每个旅游景点只能被一个旅客访问;m位旅客从起点出发,构建回到起点的满足预算约束的旅行路径,优化目标为寻找使得m位旅客中最小旅客旅游体验值最大化的m条旅行路径,每条旅行路径tour_routek是景点的序列,且序列以旅客起点为开始,旅客起点为结束;具体数学定义为:maxtour_scoremin,

tour_scoremin=min{tour_scorek|1≤k≤m},其中,max表示取最大值;min表示取最小值;tour_scoremin表示m位旅客中的最小旅游体验值;tour_scorek表示旅客k的旅游体验值;tour_routek表示旅客k的旅行路径;scene_scorei表示旅游景点i的旅游体验值;tour_expensek表示旅客k的旅行成本;dfij表示旅游景点i,j之间的旅费;ticket_feej表示旅游景点j的门票费;budget表示旅客的预算。

4.根据权利要求3所述的方法,其特征在于,步骤4包括:

步骤4‑1,维持NP个蚂蚁团队,每个团队包含m只蚂蚁;

步骤4‑2,蚂蚁团队h的所有蚂蚁从指定旅客起点出发,根据各旅游景点之间的信息素浓度和启发式信息选择满足预算约束的可访问旅游景点,开始构建旅行路径规划方案;蚂蚁团队h初始化一个空的旅游景点禁忌表,初始化每只蚂蚁的旅游体验值为0;

步骤4‑3,蚂蚁团队h中每只蚂蚁先根据预算约束和旅游景点禁忌表获取各自可访问旅游景点集,再根据状态转移方程从其可访问旅游景点集中预选择下一个旅游景点;

步骤4‑4,设定将每只蚂蚁预选旅游景点加入到各自所构建旅行路径中,计算每只蚂蚁的未来旅游体验值;

步骤4‑5,选择蚂蚁团队h中具有最小未来旅游体验值的蚂蚁K构建旅行路径;如果存在两只以上具有相同最小未来旅游体验值的蚂蚁,则从中选择当前旅游景点与预选旅游景点具有最大启发式信息的蚂蚁K构建旅行路径;将蚂蚁K所预选的旅游景点加入所构建旅行路径中,同时加入蚂蚁团队h的旅游景点禁忌表,并更新对应的旅行成本及旅游体验值;调用局部信息素更新,即时更新蚂蚁当前所经过边上的信息素;

步骤4‑6,重复步骤4‑3~步骤4‑5,直到蚂蚁团队h中的每只蚂蚁都无法再选择旅游景点,从而得到一个多旅客旅行路径规划方案;

步骤4‑7,重复步骤4‑2~步骤4‑6,直到所有的蚂蚁团队都构建了多旅客旅行路径规划方案。

5.根据权利要求4所述的方法,其特征在于,步骤4‑3中,一个蚂蚁团队维护一个旅游景点禁忌表,记录已访问过的旅游景点并由m只蚂蚁共享,在每只蚂蚁k选择下一个旅游景点之前,先根据预算约束和旅游景点禁忌表获取各自可访问旅游景点集candidatesk,再根据如下状态转移方程从可访问旅游景点集candidatesk中预选下一个旅游景点jk:其中,τikl、ηikl分别表示蚂蚁k当前所在旅游景点ik与下一个旅游景点l之间的信息素浓度和启发式信息;α表示信息素控制参数;β表示启发式信息控制参数;q表示均匀分布在区间[0,1]之间的一个随机数;q0是开发概率,表示蚂蚁将以q0的概率访问到信息素浓度和启发式信息最强的旅游景点,以(1‑q0)的概率有偏向性地探索各条边;J是根据如下公式给出的概率分布,按照轮盘赌选择算法所选择的一个随机旅游景点:其中, 表示蚂蚁k从当前所在旅游景点ik访问可访问旅游景点集candidatesk中的旅游景点j的概率;r表示均匀分布在区间[0,1]之间的一个随机数;|candidatesk|表示candidatesk中的旅游景点总数; 表示依次从蚂蚁k可访问旅游景点集candidatesk中第一个旅游景点至第j个旅游景点的概率和。

6.根据权利要求5所述的方法,其特征在于,步骤5中,所述2‑opt局部搜索策略包括如下步骤:步骤5‑1,设定对调蚂蚁团队h中蚂蚁k所构建旅行路径中的任意两个旅游景点及两个旅游景点之间的景点序列,计算产生的旅游成本减少量;

步骤5‑2,遍历蚂蚁k所构建旅行路径中的所有旅游景点,找到最大旅游成本减少量所对应的两个旅游景点,对调旅行路径中所述两个旅游景点及两个旅游景点之间的景点序列;更新蚂蚁k所构建旅行路径的旅行成本;

步骤5‑3,重复步骤5‑1~步骤5‑2,直到对调蚂蚁k所构建旅行路径中的任意两个旅游景点及两个旅游景点之间的景点序列都不会使旅行成本减少;

步骤5‑4,重复步骤5‑1~步骤5‑3,直到对每个蚂蚁团队中的每只蚂蚁都执行完2‑opt局部搜索策略;

步骤5‑1中,设定旅行路径中旅游景点i的前一个景点为t,旅游景点j的后一个景点为l,旅游成本减少量计算公式为:Δreduce_expenseij=dfti+dfjl‑dftj‑dfil,其中,Δreduce_expenseij表示对调旅游路径中旅游景点i,j及旅游景点i,j之间的景点序列所产生的旅游成本减少量;dfti表示旅游景点t,i之间的旅费;dfjl表示旅游景点j,l之间的旅费;dftj表示旅游景点t,j之间的旅费;dfil表示旅游景点i,l之间的旅费;

步骤5‑2中,遍历蚂蚁k所构建旅行路径中的所有旅游景点,找到最大旅游成本减少量所对应的两个旅游景点i,j,并对调旅行路径中两个旅游景点及两个旅游景点之间的景点;

然后,更新蚂蚁k所构建旅行路径的旅游成本,计算公式如下所示:

tour_expensek=tour_expensek‑Δreduce_expensemax,其中,Δreduce_expensemax表示此次遍历操作所寻找到的最大旅游成本减少量;

所述景点插入局部优化策略,具体包括如下步骤:

步骤5‑5,蚂蚁团队h中的每只蚂蚁根据预算约束和旅游景点禁忌表获取各自可访问旅游景点集,计算蚂蚁团队h中每只蚂蚁的旅游体验值,并对各自可访问旅游景点集中的旅游景点按照旅游体验值进行排序;

步骤5‑6,选择蚂蚁团队h中具有最小旅游体验值的蚂蚁k进行旅行路径的点插入操作;

按照旅游体验值由高到低从可访问旅游景点集中取出待插入的旅游景点s,设定将s插入到蚂蚁k所构建旅行路径的任意两个相邻旅游景点i,j中,计算由此产生的旅游成本增加量;

步骤5‑7,遍历蚂蚁k所构建旅行路径中的所有旅游景点,找到满足预算约束的最小旅游成本增加量所对应的两个相邻旅游景点,将待插入的旅游景点插入到所述两个旅游景点之间;更新蚂蚁k所构建旅行路径的旅行成本和旅游体验值;

步骤5‑8,重复步骤5‑5到步骤5‑7,直到蚂蚁团队h中的所有蚂蚁都无法再往所构建旅行路径中插入未访问过的旅游景点;

步骤5‑9,重复步骤5‑5到步骤5‑8,直到对每个蚂蚁团队中的每只蚂蚁都执行完景点插入局部优化策略;

对每个蚂蚁团队中每位旅客的旅行路径都执行完2‑opt局部搜索策略之后,执行所述景点插入局部优化策略,具体实现步骤如下:步骤5‑6中,采用如下公式计算产生的旅游成本增加量:

Δincrease_expenseij=dfis+dfsj+ticket_fees‑dfij其中,dfis表示旅游景点i,s之间的旅费;dfsj表示旅游景点s,j之间的旅费;ticket_fees表示旅游景点s的门票费;Δincrease_expenseij表示将旅游景点s插入到旅行路径中相邻的旅游景点i,j之间所产生旅游成本增加量;

步骤5‑7中,采用如下公式更新蚂蚁k所构建旅行路径的旅行成本和旅游体验值,计算公式如下所示:tour_expensek=tour_expensek+Δincrease_expensemin,tour_scorek=tour_scorek+scene_scores,其中,Δincrease_expensemin表示此次遍历操作所寻找到的最小旅游成本增加量;

scene_scores表示旅游景点s的旅游体验值。

7.根据权利要求6所述的方法,其特征在于,步骤6中,所述全局最优多旅客旅行路径规划方案采用如下适应度值函数:tour_scoremin=min{tour_scorek|1≤k≤m},其中,f(solutionh)表示蚂蚁团队h所构建的多旅客旅行路径规划方案的适应度值;所述更新全局最优多旅客旅行路径规划方案gbest的实现步骤包括:首先通过适应度值函数计算NP个蚂蚁团队的适应度值,然后,将当前适应度值最大的多旅客旅行路径规划方案标记为current_best,计算公式为:f(gbest)表示全局最优多旅客旅行路径规划方案的适应度值,f(current_best)表示当前适应度值最大的多旅客旅行路径规划方案的适应度值,当f(gbest)

8.根据权利要求7所述的方法,其特征在于,步骤4‑5中,所述局部信息素更新发生在旅行路径构建过程中,蚂蚁每经过一条边eij,都将立刻更新边eij上的信息素,信息素更新公式如下所示:τij=(1‑ξ)τij+ξτ0,

其中,ξ表示局部信息素蒸发率;

步骤6中,所述全局信息素更新是指只有构建出最优多旅客旅行路径规划方案的蚂蚁团队被允许在每一次迭代之后释放和更新信息素,信息素更新公式为:gbest

其中,ρ表示全局信息素蒸发率;Δτij 表示在全局最优多旅客旅行路径规划方案中旅行路径的边eij上释放的信息素;Q2表示适应度值控制系数。