1.本技术涉及人工智能技术领域,具体而言,涉及一种路径规划方法、装置、电子设备及可读存储介质。
背景技术:2.传统路径规划方法中,一般采用蚁群算法,但是由于蚁群算法在进行路径规划时,每次需要将全局的任务点均纳入计算中,所以采用传统的蚁群算法来规划路径导致计算量大、效率低的问题。
技术实现要素:3.本技术实施例的目的在于提供一种路径规划方法、装置、电子设备及可读存储介质,用以改善现有技术中采用传统的蚁群算法进行路径规划导致计算量大、效率低的问题。
4.第一方面,本技术实施例提供了一种路径规划方法,所述方法包括:获取作业主体执行任务的过程中需要到达的任务点,所述任务点被划分为多个集群;规划所述多个集群之间的群间路径,所述群间路径表示在执行任务的过程中到达各集群的先后顺序;规划每个集群内部的群内路径,所述群内路径表示在集群内执行任务的过程中到达各任务点的先后顺序。
5.在上述实现过程中,通过将执行任务过程中需要到达的任务点划分为多个集群,然后规划多个集群之间的群间路径以及每个集群内部的群内路径,这样在规划路径时,是针对每个集群进行路径规划,而不是针对全局路径进行规划,即每个集群涉及到的任务点只有当前集群内的任务点,而不是全部的任务点,相比于现有方式中采用蚁群算法针对全局路径进行规划,本技术的路径规划方式的计算量更小,计算效率更高。
6.可选地,所述规划所述多个集群之间的群间路径,包括:
7.获取当前规划集群与未规划集群之间的群间距离,所述当前规划集群表示在执行任务过程中当前到达的集群;
8.选择所述群间距离最短的集群作为下一规划集群,并将下一规划集群作为新的当前规划集群,重复执行通过集群之间的群间距离确定下一规划集群的步骤,直至最后一个集群,获得所述多个集群之间的群间路径。
9.在上述实现过程中,通过群间距离来规划群间路径,这样可规划出距离较短的群间路径,从而可减少任务执行过程中的路径距离,提高任务执行效率。
10.可选地,所述群间距离为所述当前规划集群的中心点与所述未规划集群的中心点之间的距离。这样可以更准确衡量两个集群之间的距离。
11.可选地,集群的中心点为对所述任务点进行聚类后形成的集群的簇中心。
12.可选地,所述群间距离为所述当前规划集群中的各任务点与所述未规划集群中的各任务点之间的最短距离。这样可在规划群间路径时,选择距离较近的任务点作为连接两个集群的任务点,从而可使得执行任务过程中,跨集群的距离更小,有利于提高任务执行效
率。
13.可选地,所述规划每个集群内部的群内路径,包括:
14.获取每个集群中的当前规划任务点与未规划任务点之间的距离,所述当前规划任务点表示在执行任务过程中当前到达的任务点;
15.选择距离最短的任务点作为所述当前规划任务点的下一规划任务点,并将下一规划任务点作为新的当前规划任务点,重复执行通过任务点之间的距离确定下一规划任务点的步骤,直至最后一个任务点,获得每个集群内部的群内路径。
16.在上述实现过程中,通过任务点之间的距离来规划群内路径,可使得每次要到达的任务点都是距离最近的任务点,这样可减少整体任务执行过程的路径距离,提高任务执行效率。
17.可选地,所述规划每个集群内部的群内路径,包括:
18.利用蚁群算法规划每个集群内部的群内路径。
19.在上述实现过程中,将任务点进行分集群后,通过蚁群算法规划每个集群内的群内路径相比于规划全局路径,其计算量更小,计算效率更高。
20.可选地,在确定每个集群中的起始任务点时,还包括:
21.从当前规划集群内筛选出第一类候选任务点,并从所述第一类候选任务点中选择与所述当前规划集群的中心点距离最远的任务点作为所述当前规划集群的起始任务点;其中,所述第一类候选任务点的筛选条件为:位于所述当前规划集群和下一规划集群的中心点连线附近且远离所述下一规划集群;
22.或者,从当前规划集群内筛选出第二类候选任务点,并从所述第二类候选任务点中选择与上一规划集群的中心点距离最近的任务点作为所述当前规划集群的起始任务点;其中,所述第二类候选任务点的筛选条件为:位于所述当前规划集群和所述上一规划集群的中心点连线附近且靠近所述上一规划集群。
23.在上述实现过程中,采用上述方式规划集群内的起始任务点,从而可实现更优的路径规划。
24.可选地,所述任务为快递分发任务,所述任务点为快递放置位置点;或者,所述任务为机器人作业任务,所述任务点为机器人执行任务的位置点。这样在快递分发以及机器人作业任务中,能通过规划更优的任务路径,实现任务的高效执行。
25.第二方面,本技术实施例提供了一种路径规划装置,所述装置包括:
26.任务点获取模块,用于获取作业主体执行任务的过程中需要到达的任务点,所述任务点被划分为多个集群;
27.群间路径规划模块,用于规划所述多个集群之间的群间路径,所述群间路径表示在执行任务的过程中到达各集群的先后顺序;
28.群内路径规划模块,用于规划每个集群内部的群内路径,所述群内路径表示在集群内执行任务的过程中到达各任务点的先后顺序。
29.第三方面,本技术实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
30.第四方面,本技术实施例提供一种可读存储介质,其上存储有计算机程序,所述计
算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
31.本技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术实施例了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
32.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
33.图1为本技术实施例提供的一种用于执行路径规划方法的电子设备的结构示意图;
34.图2为本技术实施例中提供的一种路径规划方法的流程图;
35.图3为本技术实施例中提供的一种采用传统蚁群算法寻找下一个任务点的示意图;
36.图4为本技术实施例中提供的一种本技术中采用蚁群算法寻找下一个任务点的示意图;
37.图5为本技术实施例中提供的一种本技术中采用蚁群算法进行路径规划的流程图;
38.图6为本技术实施例中提供的一种群内路径规划的示意图;
39.图7为本技术实施例中提供的另一种群内路径规划的示意图;
40.图8为本技术实施例中提供的一种路径规划装置的结构框图。
具体实施方式
41.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述。
42.本技术实施例提供了一种路径规划方法,通过将执行任务过程中需要到达的任务点划分为多个集群,然后规划多个集群之间的群间路径以及每个集群内部的群内路径,这样在规划路径时,是针对每个集群进行路径规划,而不是针对全局路径进行规划,即每个集群涉及到的任务点只有当前集群内的任务点,而不是全部的任务点,相比于现有方式中采用蚁群算法针对全局路径进行规划,本技术的路径规划方式的计算量更小,计算效率更高。
43.请参照图1,图1为本技术实施例提供的一种用于执行路径规划方法的电子设备的结构示意图,所述电子设备可以包括:至少一个处理器110,例如cpu,至少一个通信接口120,至少一个存储器130和至少一个通信总线140。其中,通信总线140用于实现这些组件直接的连接通信。其中,本技术实施例中设备的通信接口120用于与其他节点设备进行信令或数据的通信。存储器130可以是高速ram存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器130可选的还可以是至少一个位于远离前述处理器的存储装置。存储器130中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器110执行时,电子设备执行下述图2所示方法过程,例如,存储器130可以用于存储执
行任务的过程中需要到达的各个任务点的相关信息,如各个任务点的坐标信息,以及用于存储规划好的群间路径和群内路径,处理器110可将任务点进行集群划分,以及规划群间路径和群内路径。
44.可以理解,图1所示的结构仅为示意,所述电子设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
45.请参照图2,图2为本技术实施例中提供的一种路径规划方法的流程图,该方法包括如下步骤:
46.步骤s110:获取作业主体执行任务的过程中需要到达的任务点,所述任务点被划分为多个集群。
47.在一些应用场景下,所需执行的任务可以是指快递分发任务,任务点为快递放置位置点,这种场景下,则作业主体是指快递员或快递机器人或快递车等。在另一些应用场景下,所需执行的任务可以是指机器人作业任务,任务点为机器人执行任务的位置点,这种场景下,则作业主体是指机器人,此时机器人所执行的任务跟具体的应用场景相关,如在工业作业场景下,机器人所执行的任务可以是去各个位置点执行对应的工业任务,如搬运货物、运输货物、放置货物等,可以理解的是,不同的场景下,其任务也不同,如本技术的应用场景还可以为无人机拍照场景,则这种场景下,作业主体即为无人机,任务为在各个任务点进行图像采集任务。可以理解地,下述的各种实施例均适用于这些应用场景下的路径规划。
48.在执行任务之前,为了高效执行任务,需要对任务的执行路径进行规划,用户可以在电子设备中输入执行任务所需到达的各个任务点的相关信息,如各个任务点的位置坐标、在各个任务点所需执行的任务等,如在任务点1执行货物装载任务,在任务点2执行获取卸载任务。
49.为了便于快速进行路径规划,用户还可以将任务点划分为多个集群,即用户将划分为多个集群的任务点输入到电子设备中,其划分的依据可以是用户根据各个任务点之间的距离来划分的,如用户将距离较近的一些任务点划分为一个集群,在划分好之后,用户在电子设备中输入任务点时,还可以为各个任务点设置集群标签,集群标签用于表示该任务点所属的集群,这样即可知晓集群包含哪些任务点,从而电子设备在进行路径规划时,可针对每个集群内的任务点规划群内路径。
50.或者,也可以通过电子设备对任务点进行集群划分,如电子设备在获得各个任务点后,可以利用一些聚类算法将这些任务点进行集群划分,如k-means聚类算法、基于密度的聚类算法、凝聚层次聚类算法等。
51.步骤s120:规划所述多个集群之间的群间路径,所述群间路径表示在执行任务的过程中到达各集群的先后顺序。
52.在将任务点划分为多个集群之后,可以规划各个集群之间的群间路径,规划群间路径时,其任务起始集群可以是人为指定的,如包括三个集群:集群1、集群2和集群3,用户指定集群1为任务起始集群,在规划群间路径时,则可以先选择距离集群1最近的集群作为下一集群,如集群2比集群3距离集群1更近,则群间路径可规划为:集群1-》集群2-》集群3。
53.在一些实施方式中,也可以随机选择一个集群作为任务起始集群,然后通过距离来规划群间路径。
54.在一些实施方式中,任务起始集群也可以是根据作业主体当前所在的位置来确定的,如用户可将作业主体(如机器人或快递车或无人机等)当前所在的位置输入电子设备中,电子设备可计算作业主体与各个集群之间的距离(此时作业主体与各个集群之间的距离可以是指作业主体与各个集群的中心点之间的距离,也可以是指作业主体与各个集群中的起始任务点之间的距离),然后可选择距离作业主体最近的集群作为任务起始集群,任务起始集群为作业主体在执行任务的过程中最先到达的集群。
55.在另一些实施方式中,对于群间路径也可以是人为规划的,如用户将群间路径输入至电子设备中,用户将群间路径以集群标签的顺序来表示,电子设备在接收到以集群标签的顺序表示的群间路径后,即可确定各个集群的群间路径。
56.在一些实施方式中,若是先规划好每个集群内部的群内路径后,即可确定每个集群内的起始任务点和终止任务点(起始任务点是指在执行任务过程中到达该集群内的一个任务点,终止任务点是指到达该集群内的最后一个任务点),然后在规划群间路径时,则可以将两个集群的起始任务点和终止任务点进行距离计算,如计算集群1的终止任务点和集群2的起始任务点之间的距离,以及集群1的终止任务点和集群3的起始任务点之间的距离,集群2的终止任务点与集群3的起始任务点之间的距离,也就是说计算每两个集群的起始任务点和终止任务点之间的距离,假如有3个集群,则一共可获得六个距离,此时可选择距离最短的起始任务点和终止任务点的组合对应的两个集群,将起始任务点对应的集群作为任务起始集群,将终止任务点对应的集群作为第二个集群,其余的集群顺序也按照该方式来确定。所以,按照这样的方式也可确定出执行任务过程中到达各集群的顺序,从而生成群间路径。
57.步骤s130:规划每个集群内部的群内路径,所述群内路径表示在集群内执行任务的过程中到达各任务点的先后顺序。
58.本技术中是针对每个集群内部的路径进行规划,由于每次规划时所参与的任务点相比于全局任务点的数量更少,所以,相比于蚁群算法进行全局路径规划,本技术的实现方式计算量相对更少,计算效率更高。
59.而在规划每个集群的群内路径时,也可以采用蚁群算法来规划每个集群的群内路径,这样在采用蚁群算法进行路径规划时,每个集群内的任务点相比于全局任务点更少,在选择下一任务点时,只需要计算当前任务点与该集群内的剩余未规划任务点之间的距离,而不需要计算当前任务点与全局任务点中剩余未规划任务点之间的距离,如此可减少一些计算量,提高了计算效率。针对蚁群算法的具体实现过程在后续实施例中详细介绍,为了描述的简洁,在此先不过多赘述。
60.可以理解地,在获得群间路径和群内路径后,即可按照群间路径和群内路径执行任务了,如在执行任务时,先查找群间路径找到最先执行任务的集群,即任务起始集群,然后查找该集群的群内路径,按照群内路径执行完该集群内的任务后,再查找群间路径找到下一执行任务的集群,再查找下一执行任务的集群的群内路径,如此可按照群间路径和群内路径执行完所有任务点的任务。也就是说,可以根据群间路径和群内路径实现对机器人的调度,以控制机器人按照该路径去执行任务。
61.另外,需要说明的是,上述步骤s120和步骤s130的执行顺序并不限定,如可以同时执行,也可以串行执行,如先执行步骤s120后执行步骤s130,也可以先执行步骤s130后执行
步骤s120,本技术实施例中对此并不做特别限定。
62.在上述实现过程中,通过将执行任务过程中需要到达的任务点划分为多个集群,然后规划多个集群之间的群间路径以及每个集群内部的群内路径,这样在规划路径时,是针对每个集群进行路径规划,而不是针对全局路径进行规划,即每个集群涉及到的任务点只有当前集群内的任务点,而不是全部的任务点,相比于现有方式中采用蚁群算法针对全局路径进行规划,本技术的路径规划方式的计算量更小,计算效率更高。
63.下面针对群间路径和群内路径的规划的其他实现方式进行说明。
64.在规划群间路径的方式中,还可以依据群间距离进行规划,实现过程为:获取当前规划集群与未规划集群之间的群间距离,当前规划集群表示在执行任务过程中当前到达的集群,然后选择群间距离最短的集群作为下一规划集群,并将下一规划集群作为新的当前规划集群,重复执行通过集群之间的群间距离确定下一规划集群的步骤,直至最后一个集群,即可获得多个集群之间的群间路径。
65.例如,依然以集群1、集群2和集群3这三个集群为例,若先按照上述实施例所介绍的方式确定出任务起始集群后,则计算任务起始集群与其他集群之间的群间距离。如若确定集群1为任务起始集群,此时确定下一集群时,将集群1作为当前规划集群,集群2和集群3作为未规划集群,计算集群1分别与集群2和集群3之间的群间距离,然后选择群间距离最短的集群作为下一规划集群,如集群2与集群1之间的群间距离最短,则确定集群2作为下一规划集群,即表示任务执行过程中先到达集群1再到达集群2,然后再把集群2继续作为当前规划集群,集群3作为未规划集群,当然,此时集群2与集群3之间的群间距离最短,则集群3作为集群2的下一规划集群,表示任务执行过程中先到达集群2再到达集群3,如此可获得群间路径为:集群1-》集群2-》集群3。
66.在上述实现过程中,通过群间距离来规划群间路径,这样可规划出距离较短的群间路径,从而可减少任务执行过程中的路径距离,提高任务执行效率。
67.在一些实施方式中,上述的群间距离可以是指当前规划集群的中心点与未规划集群的中心点之间的距离。这样可以更准确衡量两个集群之间的距离。
68.集群的中心点可以是根据该集群内各个任务点的坐标计算出来的中心点坐标。或者,集群的中心点也可以是指对任务点进行聚类后形成的集群的簇中心,如采用k-means聚类算法进行聚类后所形成的集群的簇中心。在计算群间距离时可以计算集群的中心点之间的距离,将集群的中心点之间的距离作为群间距离,这样可以有效评估两个集群之间的距离。
69.在另一些实施方式中,群间距离可以为当前规划集群中的各任务点与未规划集群中的各任务点之间的最短距离。这样可在规划群间路径时,选择距离较近的任务点作为连接两个集群的任务点,从而可使得执行任务过程中,跨集群的距离更小,有利于提高任务执行效率。
70.例如,对于计算集群1和集群2之间的群间距离时,可以将集群1内的各任务点分别与集群2内的各任务点进行距离计算,然后通过比较确定出两个任务点之间的最短距离,如集群1内的某个任务点与集群2内的某个任务点的距离最短,则可将这两个任务点之间的距离作为集群1与集群2之间的群间距离。
71.另外,在规划每个集群内部的群内路径的方式中,可以通过任务点之间的距离来
规划,具体实现过程为:获取每个集群中的当前规划任务点与未规划任务点之间的距离,该当前规划任务点表示在执行任务过程中当前到达的任务点,然后选择距离最短的任务点作为当前规划任务点的下一规划任务点,并将下一规划任务点作为新的当前规划任务点,重复执行通过任务点之间的距离来确定下一规划任务点的步骤,直至最后一个任务点,以此可获得每个集群内部的群内路径。
72.例如,在对集群1的群内路径进行规划时,先确定出起始任务点后,将起始任务点作为当前规划任务点,在确定下一规划任务点时,集群1内除起始任务点之外的其他任务点作为未规划任务点,然后计算起始任务点与未规划任务点之间的距离,如集群1内包含51个任务点,则计算获得50个距离,然后选择距离最短的任务点作为下一规划任务点,如若某个任务点与起始任务点之间的距离最短,则将该任务点作为起始任务点的下一规划任务点,然后将该任务点又作为当前规划任务点,即表示在执行任务过程中当前到达的任务点后,又继续寻找下一个需要到达的任务点,又按照计算距离的方式来选择距离该任务点最近的任务点作为下一规划任务点,直至最后一个任务点,从而可获得群内路径。而在采用传统的蚁群算法进行规划时,需要计算当前规划任务点与其他集群中的所有任务点之间的距离,这样每次在计算距离时,均需要进行大量的运算,使得计算量太大,所以对于一些计算能力有限的电子设备来说,传统的蚁群算法并不适用。
73.在上述实现过程中,通过任务点之间的距离来规划群内路径,可使得每次要到达的任务点都是距离最近的任务点,这样可减少整体任务执行过程的路径距离,提高任务执行效率。
74.在一些其他实施方式中,也可以采用蚁群算法来规划群内路径。蚁群算法可寻找到集群内执行任务的最短路径。下面详细介绍蚁群算法的具体原理。
75.首先可以设定算法的目标函数,该目标函数表示为路径的路程和,目标函数可表示如下:
[0076][0077]
其中,li表示在执行任务过程中到达任务点i时所走的路程和,l
i-1
表示在执行任务过程中到达任务点i-1时所走的路程和,(xi,yi)表示任务点i的坐标,(x
i-1
,y
i-1
)表示任务点i-1的坐标。
[0078]
蚁群算法为研究人员观测蚂蚁所研究出来的,由于蚂蚁没有嗅觉和视觉,当一块障碍物阻挡在蚂蚁途径中间时,而最初蚂蚁行走时又没有关于新路径的相关信息,因此一些蚂蚁会从障碍物上边走,有的蚂蚁会从障碍物下边走,当这些蚂蚁移动时,会沉积信息素。走短路径的蚂蚁会比走长路径的蚂蚁花更少的时间,信息素的蒸发速率是时间的函数,因此短路径上的信息素浓度比长路径上的信息浓度更高。随着时间的流逝,在每个时间周期内,蚂蚁会选择信息素更多的路径行走,而选择放弃信息弱的道路。
[0079]
例如,针对某个集群进行群内路径规划时,假如有m只蚂蚁,该集群内有n个任务点,则在t=0时刻,m只蚂蚁被随机地放在了n个任务点上,此时各路径上的信息素是相等的,设为τ
ij
(0)=c。蚂蚁k(k=1,2,3,...,m)的运动要符合:在移动过程中感知各条路径上残留量的信息素,每一条路径都要经过而且只能经过一次,蚂蚁k已经经过的任务点用禁忌表(tabuk)来表示。tabuk随着时间点变化也在不停的变化,根据蚂蚁在各条路径上留下的信
息素和启发因子得到蚂蚁k在t时刻由任务点i转移到任务点j的概率为:
[0080][0081]
其中,allowedk(t)表示蚂蚁k在t时刻所需要访问的任务点,τ
ij
(t)表示t时刻路径ij(即任务点i到任务点j之间的路径)上的信息素量,σ
ij
(t)表示t时刻任务点ij间的期望启发函数,α表示信息素启发因子,β表示期望启发因子。
[0082]
期望启发函数σ
ij
(t)表示为:
[0083][0084]
其中,d
ij
表示任务点i与任务点j之间的距离,距离增大时,上述的转移概率则减小,说明这两个任务点之间的距离越大,则该路程被选中的可能性就越小。
[0085]
蚂蚁在到达一个任务点或到达所有任务点后对所走过的路径上遗留的信息素浓度进行更新,路径上的信息素浓度更新公式如下:
[0086]
τ
ij
(t+1)=(1-ρ)τ
ij
(t)+δτ
ij
(t)
ꢀꢀꢀ
(4);
[0087][0088]
其中,ρ表示信息挥发因子,表示第k只蚂蚁留在路径ij上的信息素增量,其初始值为0,对于信息素增量的更新规则给出了三种模型,分别为蚁周模型、蚁量模型和蚁密模型,三者的区别在于信息素增量的表达式不同。
[0089]
在蚁密模型中,表示为:
[0090][0091]
其中,q代表任务点i和任务点j间的信息素总量。
[0092]
在蚁量模型中,表示为:
[0093][0094]
在蚁周模型中,表示为:
[0095][0096]
其中,lk表示蚂蚁k完成一次全局游历后回到起始任务点所经过的总路程。
[0097]
本技术实施例中可选择蚁周模型来实现信息素的更新,因为蚁周模型中的信息素是在完成一次游历周期之后才把信息素释放出来,其信息是完整信息,而其他两种模型是
边搜索边释放信息,信息是不完整的,所以,蚁周模型相比于其他两种模型更具有优势。
[0098]
最后,算法会从所有的路径中,根据公式(1)得出最短的路径,即每个集群中执行任务的最短路径,该路径即可作为集群的群内路径。
[0099]
蚁群算法中,每只蚂蚁分配到每个任务点是通过信息素和启发信息来确定的,启发信息是通过上述的公式(3)得到的,其值为当前任务点与可能任务点之间的值,当任务点比较多的时候,处理器的计算时间可能比较长。若采用传统的蚁群算法来规划路径,假如总共有n个任务点,m只蚂蚁,迭代p次,如图3中每只蚂蚁必须在一次迭代中进行n-1次的距离计算,其中,xi表示任务点,i表示第i任务点,则需要调用公式(3)p*m*n次。而本技术实施例中为了减少公式(3)的调用次数,减少计算时间,将n个任务点分为多个集群,这样每个集群内的任务点就相对较少,针对每个集群进行路径规划时,无需计算与其他集群内的任务点之间的启发信息,如在计算公式(3)中与下一个可能的任务点时,只需要计算该集群内的任务点,然后选择一个距离最近的任务点作为下一个要走的任务点,总的来说可减少公式(3)的调用次数,提升计算效率。如图4所示的一个集群内除当前任务点外有8个任务点,这种方式可以每次只需计算当前任务点与其他8个任务点之间的距离即可,这样采用蚁群算法会调用公式(3)大约8*n次,处理器可利用公式计算与每个其他任务点之间的距离,并记录在启发式信息表格里,通过查找启发信息表,得知n1是距离最近的点,则下一个任务点选择n1。
[0100]
本技术实施例中采用蚁群算法的实现过程,如图5所示,主要包括如下步骤:
[0101]
步骤s210:给定起始任务点、终止任务点、多个任务点,然后将多个任务点划分多个集群,蚁群参数初始化,包括初始化启发信息矩阵、初始化信息素矩阵、设定系统参数;
[0102]
步骤s220:每只蚂蚁按照转移概率达到下一个任务点;每次循环中,蚂蚁利用公式(2)和只计算集群内的任务点的距离来实现启发信息的更新;
[0103]
步骤s230:判断所有蚂蚁是否达到了终止任务点,若是,执行步骤s240,若否,执行步骤s220;
[0104]
步骤s240:选择集群内距离最短的路径,当所有蚂蚁路径确定后,利用公式(1)的损失函数计算每个蚂蚁的路径长度,更新最短的路径,记录当前最优解;
[0105]
步骤s250:利用启发函数计算公式更新本地启发信息;
[0106]
步骤s260:更新全局最优解;
[0107]
步骤s270:达到迭代次数,停止迭代,输出最优路径。
[0108]
另外,在上述规划群内路径的实现方式中,一般需要设置起始任务点,如在上述通过任务点之间的距离或利用蚁群算法规划群内路径的实施方式中,其起始任务点可以是随机选择的,也可以是人为设定的,当然,为了便于规划更优的路径,对于任务起始集群中的起始任务点可以是人为指定或随机选择的,然后按照上述方式规划好该集群的群内路径后,可确定该集群的终止任务点,对于下一集群的起始任务点,则可以选择与任务起始集群的终止任务点距离最近的任务点作为下一集群的起始任务点,然后再按照上述方式规划下一集群的群内路径,同理对于其他集群的起始任务点也可以按照该方式来确定。
[0109]
在另一些实施方式中,为了规划更优的路径,还可以采用如下方式确定起始任务点:
[0110]
方式1、从当前规划集群内筛选出第一类候选任务点,并从第一类候选任务点中选
择与当前规划集群的中心点距离最远的任务点作为当前规划集群的起始任务点;其中,第一类候选任务点的筛选条件为:位于当前规划集群和下一规划集群的中心点的连线附近且远离下一规划集群。
[0111]
如图6所示,假如群间路径为:集群1-》集群2-》集群3,在确定集群1中的起始任务点时,集群1作为当前规划集群,其黑色点表示任务点,白色点表示集群的中心点,集群2作为下一规划集群。
[0112]
为了避免在规划路径时,在走完集群1后,还需要走较远的路程到达集群2,在一些实施方式中,可以获取集群1的中心点到集群2的中心点之间的中心点向量,以及集群1的中心点到集群1中各个任务点之间的向量,此时计算中心点向量与各向量之间的夹角,在确定夹角时,以逆时针方向来确定角度,然后在选择夹角小于第一预设值(如夹角小于60
°
的任务点是靠近集群1的中心点的右侧上方的一些任务点,如图6中的任务点1)以及夹角大于第二预设值且小于第三预设值(如夹角大于135,且小于225
°
的任务点是靠近集群1的中心点的左侧的一些任务点,如任务点2、任务点3和任务点4)以及夹角大于第四预设值(如夹角大于300度的任务点是靠近集群1的中心点的右侧下方的一些任务点,如任务点5)的向量对应的任务点,也就是说筛选出夹角靠近0
°
、360
°
以及靠近180
°
的任务点,这些任务点即可是位于集群1和集群2的中心点连线附近的任务点。
[0113]
在通过夹角筛选出这5个任务点后,还可以从这些任务点中筛选出远离下一规划集群(即集群2)的任务点,此时可以计算这5个任务点分别与集群2的中心点之间的距离,然后将距离小于预设距离的任务点作为第一类候选任务点,如根据距离筛选出来的任务点包括任务点2、任务点3和任务点4,此时将这三个任务点作为第一类候选任务点,然后再从中筛选出与集群1的中心点距离最远的任务点作为集群1的起始任务点,如任务点2距离集群1的中心点最远,则将任务点2作为集群1的起始任务点。
[0114]
在一些其他实施方式中,筛选出中心点连线附近的任务点的方式还可以通过各任务点距离中心点连线的垂直距离来筛选,如获取各任务点到达中心点连线的垂直距离,然后筛选出垂直距离小于预设值的任务点作为位于中心点连线附近的任务点,然后再通过上述与下一规划集群的中心点的距离来进一步筛选出远离下一规划集群的任务点,这样即可筛选出位于当前规划集群左侧的任务点作为起始任务点,从而可避免在将右侧的任务点作为起始任务点时,执行任务过程中需要先走到左侧再走到右侧而出现绕路的情况。
[0115]
在一些实施方式中,为了减少一些计算量,还可以先筛选出集群1的中心点左侧的任务点,如先确定与集群1和集群2的中心点连线的垂直线(如图6中的垂直线),然后根据任务点的坐标确定出在垂直线左侧的任务点,这些任务点即为远离集群2的任务点,然后可根据夹角筛选出这些任务点中靠近中心点连线附近的任务点,将筛选出来的任务点作为第一类候选任务点,然后再从第一类候选任务点中确定出起始任务点。
[0116]
或者,也可以先根据夹角筛选出靠近中心点连线附近的任务点,然后再利用上述的垂直线筛选出垂直线左侧的任务点,这些任务点即作为第一类候选任务点。
[0117]
上述方式是确定任务起始集群中的起始任务点,对于其他集群的起始任务点,可以是选择与上一集群的终止任务点距离最近的任务点作为起始任务点,如对于集群2,其起始任务点可以是指距离集群1中的终止任务点最近的任务点。
[0118]
在一些情况中,由于通过上述群内路径的规划方式确定出的终止任务点可能并不
合适,如终止任务点距离下一规划集群距离较远,所以,对于终止任务点的确定方式也可以按照上述确定起始任务点的方式来确定,如选择垂直线右侧的任务点,距离集群2的中心点最近的任务点,且靠近中心点连线附近的任务点,按照类似的筛选方式即可确定出终止任务点,为了描述的简洁,在此不详细赘述。
[0119]
在一些实施方式中,在对不是任务起始集群外的其他集群中的起始任务点进行确定的方式中,也可以按照上述类似的方式来确定,即:
[0120]
方式2、从当前规划集群内筛选出第二类候选任务点,并从第二类候选任务点中选择与上一规划集群的中心点距离最近的任务点作为当前规划集群的起始任务点,第二类候选任务点的筛选条件为:位于当前规划集群和上一规划集群的中心点连线附近且靠近上一规划集群。
[0121]
例如,如图7所示,针对集群2来说,此时集群2为当前规划集群,集群1为上一规划集群,在筛选获得第二类候选任务点时,可以先获取集群2的中心点到集群1的中心点的中心点向量,然后再获取集群2的中心点到集群2内各个任务点的向量,按照同样的方式获取中心点向量与各向量的夹角,然后再根据夹角筛选出靠近中心点连线附近的任务点,如筛选出的任务点包括:任务点6、任务点7、任务点8和任务点9,然后再获取这四个任务点与集群1的中心点的距离,选择距离小于预设距离的任务点作为第二类候选任务点,如第二类候选任务点包括任务点7和任务点8,然后再筛选出与集群1的中心点的距离最近的任务点作为集群2的起始任务点。
[0122]
或者,为了减少计算量,也可以按照方式1中类似的方式,先获取中心点连线的垂直线,然后根据任务点的坐标筛选出垂直线左侧(其左侧和右侧是针对图7中的位置关系来说的,即靠近上一规划集群的任务点)的任务点,然后再根据夹角和距离来确定起始任务点,具体可以参照上述方式1的相关描述,在此不作过多赘述。
[0123]
当然,若将集群2作为当前规划集群,将集群3作为下一规划集群,也可以按照上述方式1的方式来确定集群2的起始任务点。
[0124]
而对于集群2的终止任务点的确定方式也跟上述方式1中确定集群1的终止任务点的方式类似,再此不过多赘述。
[0125]
对于集群3的起始任务点的确定方式与集群2的起始任务点的确定方式类似,在此不再继续详细阐述。可以理解地,针对每个集群均可以按照上述的方式1或方式2确定出对应的起始任务点,然后再进行群内路径规划,这样可以有利于规划出更优化的路径,以提高任务的执行效率。
[0126]
请参照图8,图8为本技术实施例提供的一种路径规划装置200的结构框图,该装置200可以是电子设备上的模块、程序段或代码。应理解,该装置200与上述图2方法实施例对应,能够执行图2方法实施例涉及的各个步骤,该装置200具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
[0127]
可选地,所述装置200包括:
[0128]
任务点获取模块210,用于获取作业主体执行任务的过程中需要到达的任务点,所述任务点被划分为多个集群;
[0129]
群间路径规划模块220,用于规划所述多个集群之间的群间路径,所述群间路径表示在执行任务的过程中到达各集群的先后顺序;
[0130]
群内路径规划模块230,用于规划每个集群内部的群内路径,所述群内路径表示在集群内执行任务的过程中到达各任务点的先后顺序。
[0131]
可选地,所述群间路径规划模块220,用于获取当前规划集群与未规划集群之间的群间距离,所述当前规划集群表示在执行任务过程中当前到达的集群;选择所述群间距离最短的集群作为下一规划集群,并将下一规划集群作为新的当前规划集群,重复执行通过集群之间的群间距离确定下一规划集群的步骤,直至最后一个集群,获得所述多个集群之间的群间路径。
[0132]
可选地,所述群间距离为所述当前规划集群的中心点与所述未规划集群的中心点之间的距离。
[0133]
可选地,集群的中心点为对所述任务点进行聚类后形成的集群的簇中心。
[0134]
可选地,所述群间距离为所述当前规划集群中的各任务点与所述未规划集群中的各任务点之间的最短距离。
[0135]
可选地,所述群内路径规划模块230,用于获取每个集群中的当前规划任务点与未规划任务点之间的距离,所述当前规划任务点表示在执行任务过程中当前到达的任务点;选择距离最短的任务点作为所述当前规划任务点的下一规划任务点,并将下一规划任务点作为新的当前规划任务点,重复执行通过任务点之间的距离确定下一规划任务点的步骤,直至最后一个任务点,获得每个集群内部的群内路径。
[0136]
可选地,所述群内路径规划模块230,用于利用蚁群算法规划每个集群内部的群内路径。
[0137]
可选地,在确定每个集群中的起始任务点时,所述群内路径规划模块230,还用于:
[0138]
从当前规划集群内筛选出第一类候选任务点,并从所述第一类候选任务点中选择与所述当前规划集群的中心点距离最远的任务点作为所述当前规划集群的起始任务点;其中,所述第一类候选任务点的筛选条件为:位于所述当前规划集群和下一规划集群的中心点连线附近且远离所述下一规划集群;
[0139]
或者,从当前规划集群内筛选出第二类候选任务点,并从所述第二类候选任务点中选择与上一规划集群的中心点距离最近的任务点作为所述当前规划集群的起始任务点;其中,所述第二类候选任务点的筛选条件为:位于所述当前规划集群和所述上一规划集群的中心点连线附近且靠近所述上一规划集群。
[0140]
需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。
[0141]
本技术实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,执行如图2所示方法实施例中电子设备所执行的方法过程。
[0142]
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取作业主体执行任务的过程中需要到达的任务点,所述任务点被划分为多个集群;规划所述多个集群之间的群间路径,所述群间路径表示在执行任务的过程中到达各集群的先后顺序;规划每个集群内部的群内路径,所述群内路径表示在集群内执行任务的过程中到达各任务点的先后顺序。
[0143]
综上所述,本技术实施例提供一种路径规划方法、装置、电子设备及可读存储介质,通过将执行任务过程中需要到达的任务点划分为多个集群,然后规划多个集群之间的群间路径以及每个集群内部的群内路径,这样在规划路径时,是针对每个集群进行路径规划,而不是针对全局路径进行规划,即每个集群涉及到的任务点只有当前集群内的任务点,而不是全部的任务点,相比于现有方式中采用蚁群算法针对全局路径进行规划,本技术的路径规划方式的计算量更小,计算效率更高。
[0144]
在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0145]
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0146]
再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0147]
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0148]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。