CN116822759A - 旅行商问题求解方法、装置、设备及存储介质 - Google Patents
旅行商问题求解方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116822759A CN116822759A CN202211188754.5A CN202211188754A CN116822759A CN 116822759 A CN116822759 A CN 116822759A CN 202211188754 A CN202211188754 A CN 202211188754A CN 116822759 A CN116822759 A CN 116822759A
- Authority
- CN
- China
- Prior art keywords
- pheromone
- matrix
- solution set
- solution
- heuristic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 103
- 239000003016 pheromone Substances 0.000 claims abstract description 314
- 239000011159 matrix material Substances 0.000 claims abstract description 168
- 230000007704 transition Effects 0.000 claims abstract description 44
- 238000010276 construction Methods 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 71
- 241000257303 Hymenoptera Species 0.000 claims description 48
- 230000008569 process Effects 0.000 claims description 43
- 238000001556 precipitation Methods 0.000 claims description 37
- 238000001704 evaporation Methods 0.000 claims description 15
- 230000008020 evaporation Effects 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 description 55
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 13
- 238000005457 optimization Methods 0.000 description 11
- 239000000047 product Substances 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000000354 decomposition reaction Methods 0.000 description 6
- 238000012216 screening Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 239000013589 supplement Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001376 precipitating effect Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 230000008021 deposition Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000002244 precipitate Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 235000019801 trisodium phosphate Nutrition 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
- G06Q10/047—Optimisation of routes or paths, e.g. travelling salesman problem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Biomedical Technology (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Operations Research (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种旅行商问题求解方法、装置、设备及存储介质,其中,所述方法包括:基于流数据源构建问题模型;基于问题模型,初始化启发式矩阵和信息素矩阵;基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;基于所述最优解集和所述次优解集更新所述信息素矩阵;在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
Description
技术领域
本申请实施例涉及电子信息领域,涉及但不限于一种旅行商问题求解方法、装置、设备及存储介质。
背景技术
基于分解的多目标蚁群算法是解决多维旅行商问题(Multiple TravelingSalesman Problem,MTSP)的常用方法,代表算法为MOEA/D-ACO算法。
MOEA/D-ACO算法在解决多目标问题时表现较好,但在面对超多目标问题时会存在一些不足。随着目标数量增加,子问题的规模增加,蚂蚁数量也增加,在应用最大最小蚂蚁系统时,对每条边上的信息素设置统一的上下限比较困难,容易陷入局部最优。
发明内容
有鉴于此,本申请实施例提供一种旅行商问题求解方法、装置、设备及存储介质。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种旅行商问题求解方法,所述方法包括:基于流数据源构建问题模型;基于问题模型,初始化启发式矩阵和信息素矩阵;基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;基于所述最优解集和所述次优解集更新所述信息素矩阵;在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
第二方面,本申请实施例提供一种旅行商问题求解装置,所述装置包括:构建模块,用于基于流数据源构建问题模型;初始化模块,用于基于问题模型,初始化启发式矩阵和信息素矩阵;构造模块,用于基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;第一更新模块,用于基于所述最优解集和所述次优解集更新所述信息素矩阵;第二更新模块,用于在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
第四方面,本申请实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现上述方法。
本申请实施例中,首先基于流数据源构建问题模型;基于问题模型,初始化启发式矩阵和信息素矩阵;然后基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;基于所述最优解集和所述次优解集更新所述信息素矩阵;最后在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。这样,为了让更多的质量较好的解路径对后续的蚁群探索产生影响,算法不仅会维护种群最优解集,还会同时维护一个非支配排序第二级的次优解集。通过基于最优解集和次有解集的信息素更新机制,扩展种群的丰富度,提高蚁群探索新路径的多样性,有效避免陷入局部最优。
附图说明
图1为本申请实施例提供的一种旅行商问题求解方法的实现流程示意图;
图2为本申请实施例提供的一种一种信息素更新机制的示意图;
图3为本申请实施例提供的一种并行构造解的示意图;
图4为本申请实施例提供的一种旅行商问题求解方法的实现流程示意图;
图5为本申请实施例提供的一种旅行商问题求解装置的组成结构示意图;
图6为本申请实施例提供的电子设备的一种硬件实体示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对申请实施例的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
Spark是一种开源集群计算环境,启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。
Twitter是一家美国社交网络及微博客服务的公司,致力于服务公众对话。
Kafka是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。
jMetal是Java实现的一套多目标优化框架。
MOEA/D-ACO算法是一种将蚁群算法和基于分解的多目标进化算法相结合的多目标进化算法,遵循其他MOEA/D类算法,将多目标优化问题分解为多个单目标优化问题。
本申请实施例提供一种旅行商问题求解方法,如图1所示,该方法包括:
步骤S110、基于流数据源构建问题模型;
在实施过程中,可以使用三个由Spark管理的流数据源:交通数据库、Twitter和Kafka。
每当获取新数据时,可以由外部应用程序定期读取,从中解析出各个结点之间的访问成本,包括实际距离和所需时间等。这里,结点可以指道路结点,由交通道路连接。
在一些实施例中,为了对几个流式数据源进行处理和分析,可以使用jMetalSP框架,该框架结合了jMetal框架的多目标优化特性和Apache Spark集群计算系统,可以很好地处理流式数据源。
在获取新数据的情况下,可以进行简单的处理:如果检测到链接中的更改(时间或距离),则更新相应的问题矩阵。这里,问题矩阵包括信息素矩阵和启发式矩阵。
在实施过程中,可以通过数据源获取交通信息,包含交通道路信息和道路结点信息。通过对交通信息建模,得到问题模型。
步骤S120、基于问题模型,初始化启发式矩阵和信息素矩阵;
这里,在解决问题的过程中,每个蚂蚁(即代理)负责解决一个子问题。所有的蚂蚁都分成几组,每只蚂蚁都有几只相邻的邻居蚂蚁。一个蚂蚁群维护一个信息素矩阵,一个个体蚂蚁有一个启发式矩阵。一只蚂蚁会结合来自它的所在群组的信息素矩阵、它自己的启发式矩阵和它当前的解来构造一个新的解路径。
在实施过程中,可以对算法的各项参数、每条边上的信息素信息和启发式信息进行初始化。
步骤S130、基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;
在一些实施例中,构建路径时,根据可选择节点的转移概率进行选择,转移概率的计算如公式(1)如下所示:
其中,τ是信息素浓度(信息素矩阵)。η是启发函数(启发矩阵),为两个城市之间代价的倒数。ηij是边(i,j)的启发式信息值,城市i与j的距离越近,则该值越大。参数α和β分别决定路径上的信息素强度和启发式信息对选择概率的相对影响。Jk(i)为节点i下个未访问的节点的集合。公式(1)的分母计算了当前节点i到所有可能的下个节点的信息素浓度和启发函数乘积之和。公式(1)计算节点i到节点j的信息素浓度和启发函数乘积除以节点i到下个所有可能访问节点的信息素浓度和启发函数乘积之和,得到了节点i访问节点j的概率。
在实施过程中,基于以上状态转移概率函数,可以构造最优解集和次优解集。
步骤S140、基于所述最优解集和所述次优解集更新所述信息素矩阵;
在实施过程中,可以对最优解集和次优解集中符合一定条件的解路径进行信息素更新。
在一些实施例中,在基于最优解集和次优解集确定当前边的被访问次数超过阈值L,则调整信息素最大值和最小值。根据新的信息素边界值,约束信息素的值。
在群组j中,边上的信息素值的计算如下公式(2)所示:
其中,ρ是原有信息素的蒸发比例,Π是产生新解的解集。
图2为本申请实施例提供的一种信息素更新机制的示意图,如图2所示,该示意图包括Rt、Pt、Qt、F1、F2、EP和EP-sub,其中:
Rt为包含所有解路径的集合,Pt为新增的解路径,Qt为原有的解路径,F1为排在非支配排序第一层级F1中的解的集合(EP),F2为排在非支配排序第二层级F2中的解的集合(EP-sub)。
在一些实施例中,可以在非支配解进行信息素的全局更新的基础上,加入非支配排序第二层级的解进行符合条件的路径更新。
在更新信息素的情况下,对于在本次迭代中新加入种群EP中的解路径(图2中三角形表示的解),可以基于信息素更新方式进行信息素更新,使用基于信息素边界自适应调整策略。首先,根据种群EP中的新加入的个体的路径访问情况,统计城市节点之间每条边的被访问次数矩阵count。再计算每个蚂蚁的访问路径长度,根据公式(2)计算该蚂蚁对应的信息素增量,然后在蚂蚁经过的边(i,j)上进行相应的信息素沉淀。信息素沉淀过程中,还要根据该条边的被访问次数count[i][j],进行信息素边界的自适应调整。
完成对种群EP中的新加入的个体的信息素更新后,需要对次优解集EP-sub中的新加入个体(即图2中圆形表示的解)进行信息素更新。对次优解集EP-sub中的新加入个体进行的信息素更新与对种群EP中的新加入个体的信息素更新不同,由于次优解集EP-sub是作为对非支配解集EP的补充,所以次优解集EP-sub中的新加入个体需要对非支配解集EP中的新加入个体所没有的部分进行扩充。因此,根据种群EP中的每条边的被访问次数矩阵count,次优解集EP-sub中的新加入个体在访问边(i,j)进行信息素沉淀时,只对count[i][j]超过被访问次数阈值L的边沉淀相应量的信息素,信息素增量根据公式(2)进行计算。沉淀信息素后,对应边上的被访问次数也要增加,最后还要根据被访问次数,进行信息素边界的自适应调整。
经过种群EP和次优解集EP-sub中的新加入的个体的信息素沉淀操作后,整个信息素矩阵更新完成,以便给下一次迭代的蚂蚁探索新的解路径使用。
步骤S150、在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
本申请实施例中,首先基于流数据源构建问题模型;基于问题模型,初始化启发式矩阵和信息素矩阵;然后基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;基于所述最优解集和所述次优解集更新所述信息素矩阵;最后在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。这样,为了让更多的质量较好的解路径对后续的蚁群探索产生影响,算法不仅会维护种群最优解集,还会同时维护一个非支配排序第二级的次优解集。通过基于最优解集和次有解集的信息素更新机制,扩展种群的丰富度,提高蚁群探索新路径的多样性,有效避免陷入局部最优。
在一些实施例中,以上步骤S130“基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集”可以通过以下步骤实现:
步骤131、初始化第一外部种群和第二外部种群,其中,所述第一外部种群用于保存所述最优解集,所述第二外部种群用于保存所述次优解集;
在实施过程中,可以在初始化启发式矩阵和信息素矩阵的同时,初始化两个外部种群(第一外部种群和第二外部种群),第一外部种群,用于保存当前最优非支配解的EP,第二外部种群,用于保存当前非支配排序第二层级的次优解集EP-sub。
步骤132、基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数;
步骤133、在基于所述状态转移概率函数完成非支配排序的情况下,将排在非支配排序第一层级中的解作为本次迭代产生的当前最优解存放于所述第一外部种群中,将排在非支配排序第二层级中的解作为本次迭代产生的当前次优解存放于所述第二外部种群中。
本申请实施例中,首先初始化第一外部种群和第二外部种群,然后基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数;最后,可以实现在基于所述状态转移概率函数完成非支配排序的情况下,将排在非支配排序第一层级中的解作为本次迭代产生的当前最优解存放于所述第一外部种群中,将排在非支配排序第二层级中的解作为本次迭代产生的当前次优解存放于所述第二外部种群中。
在一些实施例中,以上步骤S130“基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集”可以通过以下步骤实现:
步骤134、获取信息素上限和信息素下限;
在每一次迭代中,所有边上的信息素上限τmax可以统一按照如下公式(3)进行设置:
其中,B是当前迭代中发现的非支配解的数量。gmin是所有N个子问题的解在目标函数中的最小值。
所有边上的信息素下限τmin统一按照如下公式(4)设置:
τmin=ετmax (4);
其中,ε是一个控制参数(0<ε<1)。即,在每次迭代中,所有边上的信息素上下限可以被设置为统一的数值。
步骤135、基于所述启发式矩阵和所述信息素矩阵组成状态转移概率函数;
步骤136、基于所述信息素上限和所述信息素下限调整所述转移概率函数;
这里,由于转移概率函数是基于启发式矩阵和信息素矩阵组成的,可以通过信息素上限和信息素下限调整转移概率函数。
步骤137、基于完成调整的所述转移概率函数,构造所述最优解集和所述次优解集。
本申请实施例中,首先获取信息素上限和信息素下限;然后基于所述启发式矩阵和所述信息素矩阵组成状态转移概率函数;基于所述信息素上限和所述信息素下限调整所述转移概率函数;最后基于完成调整的所述转移概率函数,构造所述最优解集和所述次优解集。这样,可以通过使用信息素边界自适应调整策略策略,对每条边进行信息素边界的自适应调整。提高了产生解集的多样性,防止陷入局部最优。
在一些实施例中,以上步骤134“获取信息素上限和信息素下限”可以通过以下步骤实现:
步骤1341、基于解集的规模确定信息素的访问次数阈值;
在实施过程中,可以根据新解集的规模B来定义需要进行信息素上限调节的访问次数阈值L,L的取值如下公式(5):
L=σB (5);
其中,σ是一个控制参数(0<σ<1)。
步骤1342、基于所述访问次数阈值调整所述信息素上限;
在确定当前边(i,j)的被访问次数tvisited超过了阈值L的情况下,可以对该条边上的信息素上限加以限制,自适应更新信息素上限τmax如下公式(6):
其中,τ'max是原信息素上限值,参数ω用来控制信息素上限值下降的比例(0<ω<1),由此降低该边上的信息素值,从而降低对后续蚂蚁的吸引力,减少访问这条边的次数,防止陷入局部最优,这样也避免了对其他边上的信息素沉积产生影响。
步骤1343、基于完成调整的所述信息素上限调整所述信息素下限。
所有边上的信息素下限τmin统一按照如下公式(4)设置:
τmin=ετmax (4);
其中,ε是一个控制参数(0<ε<1)。即,在每次迭代中,所有边上的信息素上下限可以被设置为统一的数值。
本申请实施例中,首先基于解集的规模确定信息素的访问次数阈值;然后基于所述访问次数阈值调整所述信息素上限;最后基于完成调整的所述信息素上限调整所述信息素下限。这样,通过设置访问次数阈值可以提高产生解集的多样性,防止陷入局部最优。即,如果某条边弧被多个个体重复访问,则认为该条边对蚂蚁的吸引力较大,此时降低该条边上的信息素上限,对其吸引力进行控制,从而使下一轮迭代的蚂蚁增加探索其他边弧的可能性,扩大蚂蚁的探索空间。
在一些实施例中,以上步骤S150“在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集”可以通过以下步骤实现:
步骤151、基于所述启发式矩阵和所述信息素矩阵完成解路径构造;
步骤152、基于所述解路径更新所述邻居解;
步骤153、在确定到达时间阈值的情况下,重新获取流数据源;
这里,可以根据实际需求设置时间间隔t(时间阈值),在确定到达时间阈值的情况下,重新获取一次流数据源,以确定该流数据源是否发生变化。
步骤154、在确定重新获取的所述流数据源的节点发生变化的情况下,基于所述更新的邻居解,输出所述帕累托前沿解集;
在实施过程中,可以查看当前结点个数是否发生改变。如果结点个数改变基于所述更新的邻居解,输出所述帕累托前沿解集。
如果结点个数没有变化,可以判断结点访问信息是否发生改变;
在实施过程中,可以根据当前获取的流数据源,看结点之间的访问成本是否发生变化,如果发生变化,那么更新当前的启发式信息矩阵,重新构建当前问题模型,进行初始化操作;如果访问成本没有发生变化,直接重新构建当前问题模型,进行初始化操作。
步骤155、确定所述帕累托前沿解集满足终止条件的情况下,结束旅行商问题求解。
在实施过程中,如果满足当前设置的终止条件,那么结束算法;否则重新构建当前问题模型,进行初始化操作。
本申请实施例中,首先基于所述启发式矩阵和所述信息素矩阵完成解路径构造;然后基于所述解路径更新所述邻居解;在确定到达时间阈值的情况下,重新获取流数据源;最后,在确定所述流数据源的节点发生变化的情况下,基于所述更新的邻居解,输出所述帕累托前沿解集;确定所述帕累托前沿解集满足终止条件的情况下,结束旅行商问题求解。这样,重新定义了终止条件,算法要返回已找到新的帕累托前近似,然后重新启动算法并开始另一次执行;在每次迭代结束之后,算法必须检查动态问题是否已经改变,如果改变,则必须重新启动算法。
在一些实施例中,以上步骤S130“基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集”可以通过以下过程实现:
基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,并行构造处理,构造最优解集和次优解集,其中,所述并行构建处理包括将每一只蚂蚁映射到一个线程块上。
在一些实施例中,构造新解部分可以在图形处理器(Graphics Processing Unit,GPU)中并行执行。
图3为本申请实施例提供的一种并行构造解的示意图,如图3所示,该示意图包括一个现场块(block)一个子问题一组蚂蚁31和工蚁线程(threads)32。
在构造新解的过程,利用GPU并行设计。在实施过程中,一个现场块(block)一个子问题一组蚂蚁31,即可以设计一个线程块对应一只蚁后(即一个子问题),一个线程对应一个工蚁,用于计算选择当前城市的概率。每个工蚁线程(threads)32可以获得当前thread_id对应的城市的启发式信息值和信息素信息值来计算状态转移概率,再根据禁忌列表判断当前城市的被访问情况,最后还需要获得一个随机数,将前项相乘,即为当前城市会被选为下一跳城市节点的概率。将计算的概率存在对应线程块的共享内存中,交给蚁后进行选择。
本申请实施例中,基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,并行构造处理,构造最优解集和次优解集。这样,在构造最优解集和次优解集进行了GPU并行化处理,在目标个数较多的情况下,显著提高了算法的计算效率。
在一些实施例中,所述信息素矩阵包括信息素蒸发核函数和信息素沉淀核函数,以上步骤S140“基于所述最优解集和所述次优解集更新所述信息素矩阵”可以通过以下过程实现:
基于所述最优解集和所述次优解集,并行更新处理更新所述信息素蒸发核函数和信息素沉淀核函数,其中,在执行所述并行更新处理中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,所述线程块中的一个线程对应所述信息素矩阵中的一条边上的信息素值。
这里,将信息素更新分成信息素蒸发和信息素沉淀两个核函数。在信息素蒸发的GPU并行过程中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,一个线程对应该信息素矩阵中的某一条边(i,j)上的信息素值。将线程对应的边上的信息素按照比例r进行蒸发,再进行信息素边界的判断,若超过边界则进行约束。信息素沉淀核函数中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,一个线程对应该信息素矩阵中的某一条边(i,j)上的信息素值。调用核函数时,将需要进行信息素沉淀的个体ants作为参数传入GPU中,存储在全局内存中可以让所有线程访问。线程进行信息素沉淀操作时,遍历传入的个体集合蚁群,对于属于当前群组j中的个体a进行后续的信息素沉淀操作。计算个体a的信息素增量。再进行自适应调整信息素边界的信息素沉淀,如果当前线程表示的边(i,j)在个体a产生的解路径中,那么将该线程对应边的被访问次数加1,并沉淀相应的信息素增量。如果当前边的被访问次数超过阈值L,则调整信息素最大值和最小值。根据新的信息素边界值,约束信息素的值。
本申请实施例中,基于所述最优解集和所述次优解集,并行更新处理更新所述信息素蒸发核函数和信息素沉淀核函数。这样,更新信息素进行了GPU并行化处理,在目标个数较多的情况下,显著提高了算法的计算效率。
基于分解的多目标蚁群算法是解决多维旅行商问题的常用方法,代表算法为MOEA/D-ACO算法。
MOEA/D-ACO算法是一种将蚁群算法和基于分解的多目标进化算法相结合的多目标进化算法,遵循其他MOEA/D类算法,将多目标优化问题分解为多个单目标优化问题。每个蚂蚁(即代理)负责解决一个子问题。所有的蚂蚁都分成几组,每只蚂蚁都有几只相邻的邻居蚂蚁。一个蚂蚁群维护一个信息素矩阵,一个个体蚂蚁有一个启发式信息矩阵。在搜索过程中,每只蚂蚁还会记录到目前为止为其子问题找到的最佳解。一只蚂蚁会结合来自它的所在群组的信息素矩阵、它自己的启发式信息矩阵和它当前的解来构造一个新的解路径。蚂蚁检查自己和邻居构建的新解决方案,如果找到了更好的解决方案,就会更新当前的解决方案。
MOEA/D-ACO算法提出采用切比雪夫方法将一个多目标问题分解成多个单目标子问题,从而实现将一个多目标的矢量优化问题转化为对多个单目标的标量子问题的优化问题。切比雪夫方法的计算如下公式(7)所示:
算法生成N个权重向量,使用权重向量,通过切比雪夫方式分解多目标旅行商问题(MTSP)后得到N个标量子问题,这些子问题都是单目标旅行商问题(TSP)。为分解后得到的N个子问题初始化N个解,并计算每个子问题对应的解路径在各个目标上的函数值及分解后的目标值。
根据所有蚂蚁初始化的解路径,通过公式来得到初始时的切比雪夫方法参考点并根据蚂蚁构造出的路径的各个目标间的支配关系来求得初始时的非支配解集EP。计算切比雪夫方法参考点的公式(8)如下所示:
MOEA/D-ACO算法中,每个蚂蚁对应一个单目标子问题,每个子问题都有各自的启发式矩阵。蚂蚁被分成若干个不同的群组,同属于一个群组内的蚂蚁共享一个信息素矩阵。在算法的每次迭代过程中,每个蚂蚁根据当前子问题i的解路径、启发式信息和信息素信息来构造当前子问题的新的解路径。当所有蚂蚁都完成一次各自的解路径的构造后,比较自己和邻居蚂蚁产生的解来进行邻居解的更新,邻居蚂蚁们通过这种方式拟合帕累托前沿的一个子区域。
MOEA/D-ACO算法在解决多目标问题时表现较好,但在面对超多目标问题时会存在一些不足。首先,随着目标数量增加,子问题的规模增加,蚂蚁数量也增加,在应用最大最小蚂蚁系统时,对每条边上的信息素设置统一的上下限比较困难,容易陷入局部最优。其次,在超多目标优化问题中,算法的计算量大大增加,算法的性能指标的计算负担也增大,这些都在一定程度上局限了算法的性能。
在大数据优化的背景下,给定问题的结构变化的根源是来自不同来源的流中的数据,这意味着不仅要应用动态多目标元启发式算法来解决这些问题,而且必须使用不同的处理方法来管理所有的流式数据源。在处理大数据环境时,这个问题更加困难,因为在大数据环境中,必须准确快速地管理大量异构数据,因此需要并行处理的能力。
本申请实施例中,通过提出新的信息素更新策略和基于非支配排序的种群筛选下的信息素更新机制提高求解多样性,通过设计GPU并行方法提高算法的计算效率,并且结合jMetalSP框架动态地处理流式数据源。
图4为本申请实施例提供的一种旅行商问题求解方法的流程示意图,如图4所示,包括以下步骤:
步骤1、获取流数据源并进行简单的处理;
在实施过程中,可以使用三个由Spark管理的流数据源:交通数据库、Twitter和Kafka。
每当获取新数据时,可以由外部应用程序定期读取,从中解析出各个结点之间的访问成本,包括实际距离和所需时间等。这里,结点可以指道路结点,由交通道路连接。
在实施过程中,可以基于流数据源构建当前超多目标问题模型,并初始化启发式矩阵和信息素矩阵。这里,可以通过数据源获取交通信息,包含交通道路信息和道路结点信息。通过对交通信息建模,得到问题模型。
在一些实施例中,为了对几个流式数据源进行处理和分析,可以使用jMetalSP框架,该框架结合了jMetal框架的多目标优化特性和Apache Spark集群计算系统,可以很好地处理流式数据源。使用三个由Spark管理的流数据源:交通数据库、Twitter和Kafka。每当获取新数据时,可以进行简单的处理:如果检测到链接中的更改(时间或距离),则更新相应的问题矩阵。这里,问题矩阵包括信息素矩阵和启发式矩阵。
步骤2、并行蚁群算法的初始化;
在实施过程中,可以对算法的各项参数、每条边上的信息素信息和启发式信息进行初始化。算法初始化两个外部种群(第一外部种群和第二外部种群),第一外部种群,用于保存当前最优非支配解的EP,第二外部种群,用于保存当前非支配排序第二层级的次优解集EP-sub。
步骤3、并行蚁群算法构造解路径;
在实施过程中,蚁群中的所有蚂蚁根据信息素矩阵和启发式矩阵组成的状态转移概率函数,构造完成的路径。
在一些实施例中,构建路径时,根据可选择节点的转移概率进行选择,转移概率的计算如公式(1)如下所示:
其中,τ是信息素浓度。η是启发函数,为两个城市之间代价的倒数。ηij是边(i,j)的启发式信息值,城市i与j的距离越近,则该值越大。参数α和β分别决定路径上的信息素强度和启发式信息对选择概率的相对影响。Jk(i)为节点i下个未访问的节点的集合。公式(1)的分母计算了当前节点i到所有可能的下个节点的信息素浓度和启发函数乘积之和。公式(1)计算节点i到节点j的信息素浓度和启发函数乘积除以节点i到下个所有可能访问节点的信息素浓度和启发函数乘积之和,得到了节点i访问节点j的概率。
在群组j中,边上的信息素值的计算如下公式(2)所示:
其中,ρ是原有信息素的蒸发比例,Π是产生新解的解集。在每一次迭代中,所有边上的信息素上限τmax可以统一按照如下公式(3)设置:
其中,B是当前迭代中发现的非支配解的数量。gmin是所有N个子问题的解在目标函数中的最小值。
所有边上的信息素下限τmin统一按照如下公式(4)设置:
τmin=ετmax (4);
其中,ε是一个控制参数(0<ε<1)。即,在每次迭代中,所有边上的信息素上下限可以被设置为统一的数值。
在实施过程中,可以根据新解集的规模B来定义需要进行信息素上限调节的访问次数阈值L,L的取值如下公式(5):
L=σB (5);
其中,σ是一个控制参数(0<σ<1)。在确定当前边(i,j)的被访问次数tvisited超过了阈值L的情况下,可以对该条边上的信息素上限加以限制,自适应更新信息素上限τmax如下公式(6):
其中,τ'max是原信息素上限值,参数ω用来控制信息素上限值下降的比例(0<ω<1),由此降低该边上的信息素值,从而降低对后续蚂蚁的吸引力,减少访问这条边的次数,防止陷入局部最优,这样也避免了对其他边上的信息素沉积产生影响。
在一些实施例中,构造新解部分可以在图形处理器(Graphics Processing Unit,GPU)中并行执行。
图3为本申请实施例提供的一种并行构造解的示意图,如图3所示,该示意图包括一个现场块(block)一个子问题一组蚂蚁31和工蚁线程(threads)32。
在构造新解的过程,利用GPU并行设计。在实施过程中,一个现场块(block)一个子问题一组蚂蚁31,即可以设计一个线程块对应一只蚁后(即一个子问题),一个线程对应一个工蚁,用于计算选择当前城市的概率。每个工蚁线程(threads)32可以获得当前thread_id对应的城市的启发式信息值和信息素信息值来计算状态转移概率,再根据禁忌列表判断当前城市的被访问情况,最后还需要获得一个随机数,将前项相乘,即为当前城市会被选为下一跳城市节点的概率。将计算的概率存在对应线程块的共享内存中,交给蚁后进行选择。
步骤4、根据快速非支配排序,进行种群筛选;
在实施过程中,可以将当前迭代产生的新种群和父代种群进行合并,再进行快速非支配排序。排序后,将排在非支配排序第一层级F1中的解作为本次迭代产生的当前最优解存放于外部种群EP中,将排在非支配排序第二层级F2中的解作为本次迭代产生的当前次优解存放于种群EP-sub中,完成了一次种群的筛选。
步骤5、基于非支配排序的种群筛选和信息素边界,自适应调整策略的信息素更新;
在实施过程中,可以对种群EP和次优解集EP-sub中符合一定条件的解路径进行信息素更新。在更新时,采用信息素边界自适应调整策略进行更新。
这里,将信息素更新分成信息素蒸发和信息素沉淀两个核函数。在信息素蒸发的GPU并行过程中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,一个线程对应该信息素矩阵中的某一条边(i,j)上的信息素值。将线程对应的边上的信息素按照比例r进行蒸发,再进行信息素边界的判断,若超过边界则进行约束。信息素沉淀核函数中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,一个线程对应该信息素矩阵中的某一条边(i,j)上的信息素值。调用核函数时,将需要进行信息素沉淀的个体ants作为参数传入GPU中,存储在全局内存中可以让所有线程访问。线程进行信息素沉淀操作时,遍历传入的个体集合蚁群,对于属于当前群组j中的个体a进行后续的信息素沉淀操作。计算个体a的信息素增量。再进行自适应调整信息素边界的信息素沉淀,如果当前线程表示的边(i,j)在个体a产生的解路径中,那么将该线程对应边的被访问次数加1,并沉淀相应的信息素增量。如果当前边的被访问次数超过阈值L,则调整信息素最大值和最小值。根据新的信息素边界值,约束信息素的值。
图2为本申请实施例提供的一种信息素更新机制的示意图,如图2所示,该示意图包括Rt、Pt、Qt、F1、F2、EP和EP-sub,其中:
Rt为包含所有解路径的集合,Pt为新增的解路径,Qt为原有的解路径,F1为排在非支配排序第一层级F1中的解的集合(EP),F2为排在非支配排序第二层级F2中的解的集合(EP-sub)。
在一些实施例中,可以在非支配解进行信息素的全局更新的基础上,加入非支配排序第二层级的解进行符合条件的路径更新。
在更新信息素的情况下,对于在本次迭代中新加入种群EP中的解路径(图2中三角形表示的解),可以基于信息素更新方式进行信息素更新,使用基于信息素边界自适应调整策略。首先,根据种群EP中的新加入的个体的路径访问情况,统计城市节点之间每条边的被访问次数矩阵count。再计算每个蚂蚁的访问路径长度,根据公式(2)计算该蚂蚁对应的信息素增量,然后在蚂蚁经过的边(i,j)上进行相应的信息素沉淀。信息素沉淀过程中,还要根据该条边的被访问次数count[i][j],进行信息素边界的自适应调整。
完成对种群EP中的新加入的个体的信息素更新后,需要对次优解集EP-sub中的新加入个体(即图2中圆形表示的解)进行信息素更新。对次优解集EP-sub中的新加入个体进行的信息素更新与对种群EP中的新加入个体的信息素更新不同,由于次优解集EP-sub是作为对非支配解集EP的补充,所以次优解集EP-sub中的新加入个体需要对非支配解集EP中的新加入个体所没有的部分进行扩充。因此,根据种群EP中的每条边的被访问次数矩阵count,次优解集EP-sub中的新加入个体在访问边(i,j)进行信息素沉淀时,只对count[i][j]超过被访问次数阈值L的边沉淀相应量的信息素,信息素增量根据公式(2)进行计算。沉淀信息素后,对应边上的被访问次数也要增加,最后还要根据被访问次数,进行信息素边界的自适应调整。
经过种群EP和次优解集EP-sub中的新加入的个体的信息素沉淀操作后,整个信息素矩阵更新完成,以便给下一次迭代的蚂蚁探索新的解路径使用。算法使得非支配解和非支配排序第二层级的次优解都对后续蚂蚁产生影响,弥补了非支配解可能存在的缺漏,进一步避免陷入局部最优解,提高了解路径的多样性。
通过基于非支配排序的种群筛选下的信息素更新机制,扩展种群EP的丰富度,提高蚁群探索新路径的多样性。为了让更多的质量较好的解路径对后续的蚁群探索产生影响,算法不仅会维护种群EP,还会同时维护一个非支配排序第二级的次优解集EP-sub。在更新信息素时,算法会综合使用种群EP和次优解集EP-sub中的非支配解和非支配排序第二级的解路径进行信息素的沉淀。在进行信息素沉淀时,非支配排序第二级的解路径只会在符合一定规则的访问边上沉淀一定量的信息素,而不是和非支配解一样在整个解路径上沉淀信息素。在次优解集EP-sub的补充下,算法能够很好地提升生成的解的多样性。
步骤6、更新邻居解;
在实施过程中,如果邻居蚂蚁的解优于所有邻居构造解的目标值,并且邻居蚂蚁的解还未用来替换任何解,则用邻居蚂蚁的解来替换邻居解。
步骤7、判断是否满足时间间隔;
在实施过程中,如果到了设置的时间间隔t,那么转到步骤8;否则转到步骤3继续当前迭代。
步骤8、判断当前结点个数是否发生改变;
在实施过程中,可以重新获取流数据源,查看当前结点个数是否发生改变。如果结点个数改变,那么输出当前帕累托解集EP,再转到步骤10;否则转到步骤9。
步骤9、判断结点访问信息是否发生改变;
在实施过程中,可以根据当前获取的流数据源,看结点之间的访问成本是否发生变化,如果发生变化,那么更新当前的启发式信息矩阵,再转到步骤3;否则直接转到步骤3继续当前迭代。
步骤10、判断是否终止算法;
在实施过程中,如果满足当前设置的终止条件,那么结束算法;否则转到步骤1,重新构建当前问题模型,进行初始化操作。
这里,本申请实施例中,重新定义终止条件,在标准算法中,当达到最大迭代次数时,该算法结束。而在申请实施例中,算法要返回已找到新的Pareto前近似,然后重新启动算法并开始另一次执行;在每次迭代结束之后,算法必须检查动态问题是否已经改变,如果改变,则必须重新启动算法。
本申请实施例中,提出了一种解决交通大数据背景下的动态超多目标旅行商问题的方法,基于多目标蚁群算法MOEA/D-ACO,对其进行算法改进和GPU并行处理,能够有效提高求解的多样性和求解效率。
提出了一种新的信息素边界自适应调整策略。对于每次迭代产生的新的非支配个体,在新加入种群EP中的个体进行信息素沉淀时,对每条边进行信息素边界的自适应调整,如果某条边弧被多个个体重复访问,则认为该条边对蚂蚁的吸引力较大,通过降低该条边上的信息素上限,降低对后续蚂蚁的吸引力,减少访问这条边的次数,防止陷入局部最优,从而使下一轮迭代的蚂蚁增加探索其他边弧的可能性,扩大蚂蚁的探索空间,提高算法产生解集的多样性,这样也避免了对其他边上的信息素沉积产生影响。
提出了一种基于非支配排序的种群筛选下的信息素更新机制。除了维护外部种群EP,还考虑了非支配层级第二级的次优解集EP-sub中的解对后续迭代的影响,在其中的部分符合条件的路径上沉淀信息素,作为对外部种群EP的补充,提高部分不常被访问路径对蚂蚁的吸引力,防止蚂蚁陷入局部最优。
对构造解的步骤进行GPU并行处理,设计构造解的基于数据的并行方案。蚂蚁构造解时,将每一只蚂蚁映射到一个线程块上,从而更好地利用GPU架构,线程块中的所有线程协作执行一个共同的任务,即构造解路径。在该方案中,可以将蚂蚁进一步分成两种不同的角色——蚁后和工蚁。蚁后代表在原来的模型中决定下一跳节点的构建路径的蚂蚁,工蚁负责转移概率的计算,为蚁后的选择提供服务。
对更新信息素的步骤进行GPU并行处理,设计更新信息素的基于数据的并行方案。信息素的更新在GPU上并行执行。其中信息素的蒸发,一个线程块对应一个蚂蚁群组,块中的一个线程对应当前群组中的一条边,单个线程可以根据公式独立计算信息素矩阵中对应的数值,从而使所有边的信息素值按照同一比例降低。对种群EP中的解路径进行信息素的沉淀,每个线程代表信息素矩阵中的一个元素,也就是所有城市节点之间的边上的信息素值。每个线程负责检查它所代表的边是否被蚂蚁访问过,并根据信息素增量计算公式计算所有需要在该条边上沉积的信息素的总和,同时需要统计被访问的次数,用于自适应地调整自己对应边上地信息素的上下限,最后更新信息素值。对次优解集EP-sub中的解路径进行信息素的沉淀,需要在沉淀前判断当前路径是否已经在种群EP中被访问多次,如果当前边弧在种群EP中被访问次数较多,则不再进行信息素沉淀,否则进行信息素沉淀操作。
基于前述的实施例,本申请实施例提供一种旅行商问题求解装置,该装置包括所包括的各模块,各模块包括各子模块,各子模块包括单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Process,DSP)或现场可编程门阵列(Field Programmable GateArray,FPGA)等。
图5为本申请实施例提供的旅行商问题求解装置的组成结构示意图,如图5所示,所述装置500包括:
构建模块510,用于基于流数据源构建问题模型;
初始化模块520,用于基于问题模型,初始化启发式矩阵和信息素矩阵;
构造模块530,用于基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;
第一更新模块540,用于基于所述最优解集和所述次优解集更新所述信息素矩阵;
第二更新模块550,用于在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
在一些实施例中,所述构造模块530包括初始化子模块、组成子模块和存放子模块,其中,所述初始化子模块,用于初始化第一外部种群和第二外部种群,其中,所述第一外部种群用于保存所述最优解集,所述第二外部种群用于保存所述次优解集;所述组成子模块,用于基于所述启发式矩阵和所述信息素矩阵组成状态转移概率函数;所述存放子模块,用于在基于所述状态转移概率函数完成非支配排序的情况下,将排在非支配排序第一层级中的解作为本次迭代产生的当前最优解存放于所述第一外部种群中,将排在非支配排序第二层级中的解作为本次迭代产生的当前次优解存放于所述第二外部种群中。
在一些实施例中,所述构造模块530包括获取子模块、组成子模块、调整子模块和第一构造子模块,其中,所述获取子模块,用于获取信息素上限和信息素下限;所述组成子模块,用于基于所述启发式矩阵和所述信息素矩阵组成状态转移概率函数;所述调整子模块,用于基于所述信息素上限和所述信息素下限调整所述转移概率函数;所述第一构造子模块,用于基于完成调整的所述转移概率函数,构造所述最优解集和所述次优解集。
在一些实施例中,所述获取子模块包括确定单元、第一调整单元和第二调整单元,其中,所述确定单元,用于基于解集的规模确定信息素的访问次数阈值;所述第一调整单元,用于基于所述访问次数阈值调整所述信息素上限;所述第二调整单元,用于基于完成调整的所述信息素上限调整所述信息素下限。
在一些实施例中,所述第二更新模块550包括第二构造子模块、更新子模块、重新获取子模块、输出子模块和结束子模块,其中,所述第二构造子模块,用于基于所述启发式矩阵和所述信息素矩阵构造解路径;所述更新子模块,用于基于所述解路径更新所述邻居解;所述重新获取子模块,用于在确定到达时间阈值的情况下,重新获取流数据源;所述输出子模块,用于在确定重新获取的所述流数据源的节点发生变化的情况下,基于所述更新的邻居解,输出所述帕累托前沿解集;所述结束子模块,用于确定所述帕累托前沿解集满足终止条件的情况下,结束旅行商问题求解。
在一些实施例中,所述构造模块530还用于基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,并行构造处理,构造最优解集和次优解集,其中,所述并行构建处理包括将每一只蚂蚁映射到一个线程块上。
在一些实施例中,所述信息素矩阵包括信息素蒸发核函数和信息素沉淀核函数,所述第一更新模块540还用于基于所述最优解集和所述次优解集,并行更新处理更新所述信息素蒸发核函数和信息素沉淀核函数,其中,在执行所述并行更新处理中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,所述线程块中的一个线程对应所述信息素矩阵中的一条边上的信息素值。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的旅行商问题求解方法中的步骤。
对应地,本申请实施例提供一种电子设备,图6为本申请实施例提供的电子设备的一种硬件实体示意图,如图6所示,该设备600的硬件实体包括:包括存储器601和处理器602,所述存储器601存储有可在处理器602上运行的计算机程序,所述处理器602执行所述程序时实现上述实施例中提供的旅行商问题求解方法中的步骤。
存储器601配置为存储由处理器602可执行的指令和应用,还可以缓存待处理器602以及电子设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种旅行商问题求解方法,其特征在于,所述方法包括:
基于流数据源构建问题模型;
基于问题模型,初始化启发式矩阵和信息素矩阵;
基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;
基于所述最优解集和所述次优解集更新所述信息素矩阵;
在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
2.如权利要求1所述的方法,其特征在于,所述基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集,包括:
初始化第一外部种群和第二外部种群,其中,所述第一外部种群用于保存所述最优解集,所述第二外部种群用于保存所述次优解集;
基于所述启发式矩阵和所述信息素矩阵组成状态转移概率函数;
在基于所述状态转移概率函数完成非支配排序的情况下,将排在非支配排序第一层级中的解作为本次迭代产生的当前最优解存放于所述第一外部种群中,将排在非支配排序第二层级中的解作为本次迭代产生的当前次优解存放于所述第二外部种群中。
3.如权利要求1所述的方法,其特征在于,所述基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集,包括:
获取信息素上限和信息素下限;
基于所述启发式矩阵和所述信息素矩阵组成状态转移概率函数;
基于所述信息素上限和所述信息素下限调整所述转移概率函数;
基于完成调整的所述转移概率函数,构造所述最优解集和所述次优解集。
4.如权利要求3所述的方法,其特征在于,所述获取信息素上限和信息素下限,包括:
基于解集的规模确定信息素的访问次数阈值;
基于所述访问次数阈值调整所述信息素上限;
基于完成调整的所述信息素上限调整所述信息素下限。
5.如权利要求1所述的方法,其特征在于,所述在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集,包括:
基于所述启发式矩阵和所述信息素矩阵构造解路径;
基于所述解路径更新所述邻居解;
在确定到达时间阈值的情况下,重新获取流数据源;
在确定重新获取的所述流数据源的节点发生变化的情况下,基于所述更新的邻居解,输出所述帕累托前沿解集;
确定所述帕累托前沿解集满足终止条件的情况下,结束旅行商问题求解。
6.如权利要求1所述的方法,其特征在于,所述基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集,包括:
基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,并行构造处理,构造最优解集和次优解集,其中,所述并行构建处理包括将每一只蚂蚁映射到一个线程块上。
7.如权利要求1所述的方法,其特征在于,所述信息素矩阵包括信息素蒸发核函数和信息素沉淀核函数,所述基于所述最优解集和所述次优解集更新所述信息素矩阵,包括:
基于所述最优解集和所述次优解集,并行更新处理更新所述信息素蒸发核函数和信息素沉淀核函数,其中,在执行所述并行更新处理中,一个线程块对应一个群组的蚂蚁所用的信息素矩阵,所述线程块中的一个线程对应所述信息素矩阵中的一条边上的信息素值。
8.一种旅行商问题求解装置,其特征在于,所述装置包括:
构建模块,用于基于流数据源构建问题模型;
初始化模块,用于基于问题模型,初始化启发式矩阵和信息素矩阵;
构造模块,用于基于所述启发式矩阵和所述信息素矩阵组成的状态转移概率函数,构造最优解集和次优解集;
第一更新模块,用于基于所述最优解集和所述次优解集更新所述信息素矩阵;
第二更新模块,用于在基于所述启发式矩阵和所述信息素矩阵完成解路径构造的情况下,更新邻居解,以输出帕累托前沿解集。
9.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述方法中的步骤。
10.一种存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至7任一项所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211188754.5A CN116822759A (zh) | 2022-09-28 | 2022-09-28 | 旅行商问题求解方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211188754.5A CN116822759A (zh) | 2022-09-28 | 2022-09-28 | 旅行商问题求解方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116822759A true CN116822759A (zh) | 2023-09-29 |
Family
ID=88120889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211188754.5A Pending CN116822759A (zh) | 2022-09-28 | 2022-09-28 | 旅行商问题求解方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116822759A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408496A (zh) * | 2023-12-12 | 2024-01-16 | 深圳市道格恒通科技有限公司 | 巡检方法及智能无线巡检仪 |
-
2022
- 2022-09-28 CN CN202211188754.5A patent/CN116822759A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408496A (zh) * | 2023-12-12 | 2024-01-16 | 深圳市道格恒通科技有限公司 | 巡检方法及智能无线巡检仪 |
CN117408496B (zh) * | 2023-12-12 | 2024-03-26 | 深圳市道格恒通科技有限公司 | 巡检方法及智能无线巡检仪 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bitam et al. | Fog computing job scheduling optimization based on bees swarm | |
CN112398899B (zh) | 一种面向边缘云系统的软件微服务组合优化方法 | |
CN107172166B (zh) | 面向工业智能化服务的云雾计算系统 | |
Pearce et al. | Faster parallel traversal of scale free graphs at extreme scale with vertex delegates | |
Pedryez et al. | Linguistic models and linguistic modeling | |
Nanjappan et al. | An adaptive neuro-fuzzy inference system and black widow optimization approach for optimal resource utilization and task scheduling in a cloud environment | |
Ayoubi et al. | An autonomous IoT service placement methodology in fog computing | |
CN112087329B (zh) | 一种网络服务功能链部署方法 | |
GB2567147A (en) | Machine learning query handling system | |
Wang et al. | Immune scheduling network based method for task scheduling in decentralized fog computing | |
CN116822759A (zh) | 旅行商问题求解方法、装置、设备及存储介质 | |
CN111597230A (zh) | 基于MapReduce的并行密度聚类挖掘方法 | |
CN110119408A (zh) | 地理空间实时流数据下移动对象连续查询方法 | |
Sun et al. | Application research based on improved genetic algorithm in cloud task scheduling | |
Gao et al. | A deep learning framework with spatial-temporal attention mechanism for cellular traffic prediction | |
Soula et al. | Intelligent tasks allocation at the edge based on machine learning and bio-inspired algorithms | |
CN113722112B (zh) | 一种服务资源负载均衡处理方法及系统 | |
Alqarni et al. | ODM-BCSA: An offloading decision-making framework based on binary cuckoo search algorithm for mobile edge computing | |
CN113342504A (zh) | 基于缓存的智能制造边缘计算任务调度方法及系统 | |
Ren et al. | Smig-rl: An evolutionary migration framework for cloud services based on deep reinforcement learning | |
CN116956081A (zh) | 面向异构社交网络分布外泛化的社交标签预测方法及系统 | |
Wang et al. | Multi-Granularity Decomposition for Componentized Multimedia Applications based on Graph Clustering | |
Tang et al. | Optimization search strategy for task offloading from collaborative edge computing | |
CN111245906B (zh) | 一种业务请求分配方法 | |
Li et al. | Parallel k-dominant skyline queries over uncertain data streams with capability index |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |