1.一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,包括步骤如下:
S1,获取旅游景点信息和用户信息,其中,旅游景点信息包括旅游景点个数、旅游景点位置坐标、旅游景点体验值、旅游景点门票及各旅游景点间的旅费;用户信息包括用户出发地点和用户预算经费;
S2,将旅游路线规划问题建模为约束优化问题,在同时考虑景点间的旅费及景区的门票费的基础上,引入用户预算经费作为成本约束,在最小化用户实际旅游成本与预算经费的同时最大化用户的总旅游体验值,依次访问满足用户预算且使路径总体验值最高的旅游景点,最终返回原出发地点;
S3,采用贪心算法构建旅游路径,并使用该旅游路径的总体验值初始化信息素矩阵;随后,初始化蚁群算法参数,其中,最大最小蚂蚁系统的参数包括:蚁群大小、信息素浓度权重、启发式信息权重、信息素蒸发速率、进化停滞判定代数和最大适应值评估次数;
S4,对于最大最小蚂蚁系统中的每只蚂蚁,从用户出发地点出发,在预算经费的约束条件下,根据各旅游景点之间的信息素浓度和启发式信息选择使用户总体验值最大的旅游景点,构建旅游路线;
S5,使用设计的融合2‑opt和点插入的新型局部搜索方法优化所构建的旅游路线,在满足用户旅游成本约束的前提下最大化用户的旅游体验值;
S6,重复步骤S4~S5,直至所有的蚂蚁构建完符合预算经费约束的旅游路线;评估整个蚁群中所有蚂蚁构建的旅游路线方案,更新用户旅游总体验值最高的全局最优旅游路线;
S7,基于所设计的融合旅游路径总体验值与所有景点总体验值的新型信息素更新方式,更新最大最小蚂蚁系统中的信息素矩阵并检查信息素大小;
S8,判断是否满足迭代终止条件,如果不满足迭代终止条件,则转到步骤S4;如满足迭代终止条件,输出全局最优的旅游路线规划方案。
2.根据权利要求1所述的一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S1具体为:获取旅游景点信息和用户信息,其中,旅游景点信息包括旅游景点个数、旅游景点位置坐标、旅游景点体验值、旅游景点门票及各旅游景点间的旅费;用户信息包括用户出发地点和用户预算经费;同时构建蚂蚁的结构体对象ant{candidates,tour,tour_cost,tour_score},该结构体中的变量分别存储符合预算约束的候选旅游景点编号、已构建的旅游路径、当前所构建的旅游路径的成本以及当前路径的用户旅游总体验值;构建旅游景点的结构体对象spot{coordinates,ticket,score},该结构体中的变量分别存储旅游景点的坐标信息、门票价格以及旅游体验值。
3.根据权利要求1所述基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S2中,将旅游路线规划问题建模为约束优化问题,在同时考虑景点间的旅费及景区的门票费的基础上,引入用户预算经费作为成本约束,在最小化用户实际旅游成本与预算经费的同时最大化用户的总旅游体验值;具体包括以下步骤:S201,建立旅游路线的约束条件,具体表达式如下:
其中,cost(i,j)为景点i和景点j之间的旅费,tourk表示蚂蚁k构建的旅游路线,Nk表示旅游路线tourk中的旅游景点总数,spot[i].ticket为景点i的门票价格,Cmax为用户给定的旅游预算经费;
S202,建立旅游路线的旅游体验值函数,具体表达式如下:
其中,tourk表示蚂蚁k构建的旅游路线,Nk表示旅游路线tourk中的旅游景点总数,spot[i].score为景点i的旅游体验值;
S203,将约束条件和目标函数组合为一个约束优化问题,优化模型如下:
其中,tourk表示蚂蚁k构建的旅游路线,Nk表示旅游路线tourk中的旅游景点总数,spot[i].score为景点i的旅游体验值,cost(i,j)为景点i和景点j之间的旅费,spot[i].ticket为景点i的门票价格,Cmax为用户给定的旅游预算经费;用户依次访问满足预算且使路径总体验值最高的旅游景点,最终返回原出发地点。
4.根据权利要求1所述的一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S3具体为:初始化蚁群算法参数,包括蚁群大小、信息素浓度权重、启发式信息权重、信息素蒸发速率、进化停滞判定代数和最大适应值评估次数;通过贪心算法求得一条完整的符合用户预算成本约束的旅游路线,用该旅游路径上用户的旅游总体验值除以所有旅游景点的总体验值来初始化信息素矩阵,具体实施步骤如下:S301,从用户出发地点出发,依次遍历尚未访问过的旅游景点,将满足成本约束的景点编号添加进候选景点集greedy_candidates,以构建满足成本约束且尚未访问过的旅游景点集合;
S302,如果候选节点集greedy_candidates中的旅游景点数大于0,则转入步骤S303,否则,已无符合预算约束要求的旅游节点,贪心路径构建完成;
S303,以景点的旅游体验值与两景点间旅费和下一景点的门票费之商为评价准则,贪心地选择比率最大的候选旅游景点作为将要访问的下一个旅游景点,贪心比率的计算公式如下:其中,spot[j].score为景点j的旅游体验值,cost(i,j)为两旅游景点i,j之间的旅费,spot[j].ticket为旅游景点j的门票价格;贪心算法在当前旅游景点i通过计算与各候选旅游景点之间的比率来确定将访问的下一个旅游景点j;
S304,将所选择的下一旅游景点j添加到贪心路径greedytour中并更新贪心路径的总成本和总体验值,公式如下:greedytour_cost←greedytour_cost+cost(i,j)+spot[j].ticketgreedytour_score←greedytour_score+spot[j].score其中,greedytour_cost为所构建的贪心路径的总成本,cost(i,j)为景点i和j之间的旅费,spot[j].ticket为景点j的门票价格;greedytour_score为所构建的贪心路径的总体验值,spot[j].score为景点j的旅游体验值;
S305,贪心路径构建完成后,使用该路径的总体验值除以所有旅游景点的总体验值计算信息素最大值τmax来初始化信息素矩阵,信息素初始值τmax和信息素最小值τmin具体计算公式如下:其中,greedytour_score为所构建的贪心路径的总体验值,Sumscore为所有旅游景点的总体验值,N为旅游景点的总个数。
5.根据权利要求1所述的一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S4具体为:蚂蚁根据各旅游景点之间的信息素浓度和启发式信息选择使用户总体验值最大的旅游景点,构建旅游路线的详细步骤如下:S401,蚂蚁k遍历尚未访问过的旅游景点,将满足成本约束的景点添加进候选景点集candidates[k]以构建满足成本约束且尚未访问过的旅游景点集合;
S402,如果候选景点集candidates[k]中的景点数大于0,则转入步骤S403,否则,已无满足成本约束的旅游景点,旅游路径构建完成;
S403,蚂蚁k在当前位置通过状态转移方程来确定将要访问的下一个旅游景点j,当前景点i与候选景点j之间的状态转移概率表达式如下:其中,pij为由当前景点i到下一景点j的状态转移概率,τij为当前所在景点i与下一个景点j之间的信息素浓度,ηij为当前所在旅游景点i与下一旅游景点j之间的启发式信息,α、β分别是控制信息素浓度和启发式信息的权重,l为满足成本约束的候选景点集中的候选旅游景点总数;
所设计的融合景点旅游体验值、景点间旅费和景点门票费的启发式信息的具体表达式如下:
其中,spot[i].score、spot[j].score分别为景点i,j的旅游体验值,cost(i,j)为景点i和j之间的旅费,spot[i].ticket、spot[j].ticket分别为景点i,j的门票价格;
S404,按照轮盘赌选择的方式选择出即将访问的下一旅游景点J,具体操作为,首先根据状态转移概率计算累积概率,计算公式如下:其中,pij为当前景点i到候选景点j的状态转移概率,pselect[j]表示第1个候选景点至第j个候选景点的状态转移概率之和,l为满足成本约束的候选景点集中的候选旅游景点总数;
基于上述累积概率,按以下方式选择出即将访问的下一旅游景点J,并将此景点添加到旅游路线tourk中:J=j,if rand(0,1)≤pselect[j]
S405,更新所构建旅游路径的成本,公式如下:
tourk_cost←tourk_cost+cost(i,j)+spot[j].ticket其中,tourk_cost为所构建旅游路径的成本开销,cost(i,j)为旅游景点i与旅游景点j之间的旅费,spot[j].ticket为景点j的门票费。
6.根据权利要求1所述的一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S5具体为:使用所设计的融合2‑opt和点插入的新型局部搜索方法进一步优化所构建的旅游路线的具体步骤实施如下:S501,执行2‑opt操作,遍历蚂蚁k已构建好的旅游路径中的所有旅游景点,找到使旅游成本减少量Δcost变化最大的两个旅游景点i和j,旅游成本减少量Δcost计算公式如下:Δcost(i,j)=[cost(i‑1,j)+cost(i,j+1)]‑[cost(i‑1,i)+cost(j,j+1)]交换旅游景点i和j在旅游路径上的顺序,同时,依次翻转两点之间的景点序列,连续执行直至路径中无降低成本的可交换点,2‑opt操作执行结束,更新所构建的旅游路径的成本,公式如下:tourk_cost←tourk_cost‑∑Δcost
S502,执行点插入操作;经过步骤S501,用户的旅游成本可能降低,此时,在满足用户预算的条件下插入新的旅游景点来提高用户旅游总体验值,具体实现为:遍历符合成本约束的候选景点集中的所有景点,找到其中旅游体验值最大的候选旅游景点p;遍历蚂蚁k已构建好的旅游路径中的所有旅游景点,找到使旅游成本增加量Δcost变化最小的两个旅游景点m和n,旅游成本增加量Δcost计算公式如下:Δcost(i,j)=spot[p].ticket+[cost(m,p)+cost(p,n)]‑cost(m,n)将旅游体验值最大的候选景点p插入到旅游景点m和旅游景点n之间;继续实施该操作直至再也无法插入新的旅游景点,点插入操作执行结束;更新所构建的旅游路径的成本,公式如下:tourk_cost←tourk_cost+∑Δcost 。
7.根据权利要求1所述的一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S6具体为:所述评估整个蚁群中所有蚂蚁构建的旅游路线方案,更新用户旅游总体验值最高的全局最优旅游路线的实现步骤如下:S601,通过目标函数计算每只蚂蚁构建的旅游路线规划方案的用户旅游总体验值,目标函数的表达式如下:其中,tourk表示蚂蚁k构建的旅游路线,Nk表示旅游路线tourk中的旅游景点总数,spot[tourk[i]].score表示旅游景点tourk[i]的体验值;
S602,将当前旅游总体验值最大的路径标记为当前最优解best,表达式如下:
best=argmax{f(tourk)|1≤k≤NP}
当f(gbest)
当f(gbest)≥f(best),全局最优解gbest保持不变。
8.根据权利要求1所述的一种基于最大最小蚂蚁系统的单旅客旅游路线规划方法,其特征在于,步骤S7具体为:所设计的融合旅游路径总体验值与所有景点总体验值的信息素更新公式如下:其中,τij是连接景点i和景点j的边(i,j)上的信息素,ρ为信息素蒸发速率,V为景点集合; 是在全局最优路径的边(i,j)上释放的信息素;
更新信息素最大值τmax和信息素最小值τmin,具体公式如下:
其中,gbest_score为全局最优路径的总体验值,Sumscore为所有旅游景点的体验值之和,N为旅游景点的总个数;检查信息素是否在指定的[τmin,τmax]范围内,对不符合约束条件的信息素浓度做越界处理,具体操作方式如下:当算法进入停滞状态,即全局最优解gbest连续rs代保持不变时,使用τmax重新初始化信息素矩阵,具体如下:其中,gbest_score为全局最优路径的总体验值,Sumscore为所有旅游景点的总体验值,N为旅游景点的总个数,τij是边(i,j)上的信息素,V为所有旅游景点集合。
9.一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1所述方法的步骤。