一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于操作运输工具的装置和方法与流程

2022-02-24 20:27:00 来源:中国专利 TAG:


1.本发明涉及一种用于操作运输工具的装置和方法。


背景技术:

2.运输工具可以用于移动人员或货物。运输工具可以包括用于移动主体或货物的实体。
3.当人员或货物的运输受到约束的影响时,根据该约束来移动用于运输人员或货物的实体是合期望的。


技术实现要素:

4.根据独立权利要求所述的装置和方法有效地并根据约束来移动实体。
5.一种操作运输工具的方法包括:为移动运输工具的实体提供路线集合;提供对运输工具的实体的包括至少一个取货地点和至少一个卸货地点的至少两个停靠点的请求;针对请求中所包括的一个或多个停靠点到路线的距离的度量满足条件,从路线集合中选择路线;将至少一个取货地点和至少一个卸货地点作为停靠点插入到路线中,并且指示以根据路线操作实体。运输工具可以用于将主体或对象从取货地点移动到卸货地点。运输工具可以具有同时移动多个主体和/或多个对象的能力。多个主体和/或多个对象的运输可能需要停在不同的取货地点和/或卸货地点。多个运输工具可以可用于运输多个主体和/或多个对象。多个运输工具的操作可能受到时间约束的影响,该时间约束为主体或对象定义了从需要运输到取货时间的最大等待时间。该方法提供了一种操作运输工具的改进模式。在优选的方面,指示以根据路线操作实体意味着取决于路线来控制该实体。特别地,该实体以其遵循路线这样的方式受到控制。
6.距离的度量在一方面是到路线的区段的几何距离。一方面,距离的度量可以是行驶时间。一方面,距离的度量可以是行驶距离。
7.优选地,当至少一个停靠点的距离的度量小于阈值时,条件被满足。阈值可以由路线的特性定义。
8.在一方面,当停靠点位于距离度量的至少一个维度上定义的空间内时,距离的度量满足条件,其中,空间受距离度量的阈值限制。该空间定义了位于路线周围特定区域内的停靠点集合。距离度量的至少一个维度是定义了空间的范数。
9.该方法可以包括:确定将至少两个停靠点插入到路线中的第一成本,将第一成本与将至少两个停靠点插入到另一条路线中的第二成本进行比较,并且如果第一成本小于第二成本,则将至少两个停靠点插入到路线中,或否则将至少两个停靠点插入到另一条路线中。当多于一条路线可用于插入至少两个停靠点时,可以基于将至少两个停靠点插入到可用路线中的成本来做出判定。
10.该方法可以包括:提供加权或未加权的图表来表示运输工具在其上运行的网络。
11.权重可以由行驶特性确定,特别是行驶时间、行驶距离或行驶速度。
12.该方法可以进一步包括:利用收缩层次结构在图表中表示网络。
13.该方法可以进一步包括:利用可定制的收缩层次结构在图表中表示网络,其中,以在处理请求之前或在处理请求期间接收到的行驶数据为基础、或者在有规律的时间段的基础上、或者在权重的变化的基础上更新图表或图表的权重。
14.优选地,该方法包括:提供具有在收缩层次结构中表示路线的停靠点的顶点的图表;选择表示路线的第一停靠点的第一顶点和表示路线的第二停靠点的第二顶点;确定在收缩层次结构中表示取货地点或卸货地点的第三顶点;确定从图表的第一顶点到第四顶点的第一最短距离路径的第一长度;确定从第四顶点到第三顶点的第二最短距离路径的第二长度;确定从图表的第三顶点到第五顶点的第三最短距离路径的第三长度;确定从第五顶点到第二顶点的第四最短距离路径的第四长度;取决于第一长度、第二长度、第三长度和第四长度的总和来确定距离的度量。
15.该方法可以包括:为图表的第四顶点的第一存储桶提供第一条目,该第一条目包括第一顶点的标识和第一最短距离路径的长度,并且为图表的第五顶点的第二存储桶提供第二条目,该第二条目包括第二顶点的标识和第四最短距离路径的长度。
16.该方法可以进一步包括:针对第一顶点的第一条目扫描第一存储桶;取决于第一条目来确定第一长度;针对第二顶点的第二条目扫描第二存储桶;取决于第二条目来确定第四长度。
17.该方法可以包括:为在路线上移动的实体提供容量约束,并且如果实体的容量在路线中受插入取货地点影响的至少一部分内满足容量约束,则将取货地点插入到路线中,或者否则不插入取货地点。
18.一种用于操作运输工具的装置被适配成实行该方法的步骤。
附图说明
19.另外的有利实施例可从以下描述和附图中得出。在附图中,图1描绘了用于操作运输工具的装置的各方面,图2描绘了运输工具的基础设施的各方面,图3描绘了一种操作运输工具的方法,图4描绘了表示路线的图表。
具体实施方式
20.图1描绘了用于操作运输工具的装置100的各方面。装置100包括:至少一个处理器102和至少一个存储器104。该示例中的至少一个存储器104包括:当由至少一个处理器102执行时使装置100执行下述方法的步骤的指令。至少一个处理器102被适配成与至少一个存储器104通信以执行该方法。装置100可以包括第一通信设备106。第一通信设备106被适配成与运输工具的实体110的第二通信设备108通信。实体110可以包括:用于实体110的操作员的用户界面,和/或用于控制实体110的控制器。在示例中,描绘了多个实体110。至少一个处理器102和至少一个存储器104可以是分布式的,例如,在分布式计算环境中。
21.在示例中,第一数据链路112至少临时将处理器102与存储器104和第一通信设备106连接。在示例中,第二数据链路114至少临时连接至少一个实体110的第一通信设备106
和第二通信设备108。
22.实体110被适配成在装置100提供的路线上移动。实体110可以具有容量约束。
23.运输工具的用户116可以例如经由第三通信设备118请求由至少一个实体110进行的运输。第三通信设备118可以是移动电话或其他移动通信器。示例中的第一通信设备106和第三通信设备118被适配成经由第三数据链路120进行通信。用户116可以发送运输的请求r。请求r可以包括至少一个取货地点p和至少一个卸货地点d。
24.图2描绘了用于运输工具的基础设施200的各方面。在示例中,实体110是车辆,并且运输工具包括可操作以在道路基础设施202中的单独路线上移动的车队。在道路基础设施202中,实体110的路线204被描绘为实线。示例中的路线204从被标为的初始停靠点开始,并且在标为的最后一个停靠点结束。在行驶方向上,路线204经过多个已经规划好的停靠点。图2中并未描绘所有停靠点。示例中的路线204按该次序包括第一停靠点、第二停靠点、第三停靠点和第四停靠点。第二停靠点与第三停靠点之间可能会有停靠点。第一停靠点可以是最初停靠点。第四停靠点可以是最后一个停靠点。在示例中,第二停靠点与第一停靠点是连续的。在示例中,第四停靠点与第三停靠点是连续的。在优选实施例中,实体110是飞行器,特别地是飞机、直升机、多旋翼飞行器、飞艇或无人机。在另一个优选实施例中,实体110是船只,特别地是轮船、舰或无人机。飞行器和/或船只可以有人驾驶也可以无人驾驶。特别地,它可以是用于运输货物的飞行器和/或船只。
25.道路基础设施202可以包括不被用于路线204的多条其他道路。这些道路在图2中用虚线描绘。图2中描绘的停靠点对应于道路的交叉点。交叉点之间的区段对应于实体110可以在那里移动的路段。
26.图2中示意性地描绘了用于交叉点到路线204的距离的度量的阈值206。阈值206可以由路线204的特性定义。该特性可以是行驶时间或行驶距离。行驶时间或行驶距离可以从路线204的各个停靠点测量。可以测量到从各个停靠点开始并在该交叉点结束的道路的交叉点的行驶时间或行驶距离。
27.在图2中描绘的示例中,第一请求r包括:位于阈值206内的取货地点p和卸货地点d。这意味着将取货地点p和卸货地点d插入到路线204中所需的第一绕行(detour)足够短,以至于满足将取货地点p和卸货地点d插入到路线204中的条件。在图2中描绘的另一个示例中,第二请求r'包括都位于阈值之外的另一个取货地点p'和另一个卸货地点d'。这意味着将另一个取货地点p'和另一个卸货地点d'插入到路线204中所需的第二绕行过长以至于不满足条件。因此,路线204不适合将另一个取货地点p'和另一个卸货地点d'插入到路线204中。
28.在示例中,多个不同的实体108被分配给多条不同的路线。在这种情况下,选择满足条件的路径。下面参照图3描述从关于停靠点和道路基础设施的交叉点之间的行驶时间或行驶距离的信息中获得的对应方法。
29.该方法包括:为移动运输工具的实体108提供路线集合的步骤302。可以从至少一个存储器104提供路线。
30.之后,执行步骤304。
31.在步骤304中,该方法包括:提供对包括至少一个取货地点p和至少一个卸货地点d
的运输工具的实体110的至少两个停靠点的请求。可以在来自第三通信设备118的对应通知中接收该请求。
32.之后,执行步骤306。
33.在步骤306中,该方法包括:针对请求中所包括的一个或多个停靠点到路线204的距离的度量满足条件,从路线集合中选择路线204。
34.该距离可以是到路线204的区段的几何距离。距离的度量可以是行驶时间或行驶距离。
35.在一个示例中,当至少一个停靠点的距离的度量小于阈值时,条件被满足。
36.在一个示例中,当停靠点位于距离度量的至少一个维度上定义的空间内时,距离的度量满足条件。该空间受距离度量的阈值限制。
37.之后,执行步骤308。
38.步骤308包括:将至少一个取货地点p和至少一个卸货地点d作为停靠点插入到路线204中。
39.之后,执行步骤310。
40.在步骤310中,指示实体110的操作者或实体110根据路线204来操作实体110。
41.之后,该方法可以包括:更新数据的步骤312。该步骤可以包括:为车辆提供经更新的路线。之后,执行步骤304。
42.该方法可以包括在无法选择路线的情况下忽略请求r。这可能导致向第三通信设备118发送对应的通知。
43.该方法可以包括选择满足条件的路线子集。
44.在选择若干条路线的情况下,该方法可以包括:确定将至少两个停靠点插入到子集的第一路线中的第一成本,将第一成本与将至少两个停靠点插入到子集的第二路线中的第二成本进行比较,并且如果第一成本小于第二成本,则将至少两个停靠点插入到第一条路线中,或否则将至少两个停靠点插入到第二路线中。在一方面,插入至少两个停靠点的成本是指在插入至少两个停靠点之后的路线的成本。另一方面,插入至少两个停靠点的成本是指插入至少两个停靠点所导致的绕行成本。
45.该方法可以包括:为实体110提供容量约束。在这种情况下,该方法可以包括:如果实体110的容量在路线中受插入取货地点p影响的至少一部分内满足容量约束,则将取货地点p插入到路线中,或者否则不插入取货地点p。在一个示例中,实体110是能够容纳5人的车辆。在此示例中,容量约束为5人。当车辆在路线204上载有4人移动时,可供1人接载。如果请求r包括接载1人的需求,并且卸货地点d或来自另一个请求的另一个卸货地点在下一个已计划的取货地点之前,则该请求r可以被插入到路线中。在此示例中,如果此外路线204的成本小于其他路线的成本,并且在整个路线204中都满足容量约束,则请求r可以被插入。
46.在图4中描绘的另一个方面,路线204由顶点h和图表400的边表示。在图4中,描绘了表示路线204的至少一部分的图表400的一部分。在该示例中,图表400的路线204被分配给运输工具的实体110。
47.在图表400中,描绘了第一顶点、第二顶点、第三顶点和第四顶点。在示例中,第一顶点对应于第一停靠点,第二顶点对应于第二停靠点第三顶点
对应于第三停靠点,并且第四顶点对应于第四停靠点。
48.第五顶点v表示取货地点p,并且第六顶点w表示卸货地点d。
49.在该方面,该方法包括:确定请求中所包括的一个或多个停靠点到路线204的距离的度量是满足条件,还是并不根据以下考虑。
50.图表400可以表示道路网络。图表400可以将道路网络表示为收缩层次结构。也可以使用可定制的收缩层次结构来最有效地并且在第一初始化阶段之后与整个过程并行地更新图表的权重,例如,行驶时间。
51.为了搜索路线204,可以为图表的每个顶点h定义第一存储桶(bucket)和第二存储桶。
52.在图4中,第一存储桶是源存储桶,并且其条目被描绘为带有方头的箭头。第二存储桶是目标存储桶,并且其条目在图4中用菱形尾部描绘。两个连续停靠点之间的余地(leeway)被示为椭圆。对于第一顶点是且第二顶点是的情况,第一余地被描绘为第一椭圆402。对于第一顶点是且第二顶点是的情况,第二余地被描绘为第二椭圆404。为顶点和之间的区段描绘了用于第三余地的第三椭圆406。存储桶的条目被分配给不同的椭圆。在图4中用相同的图案描绘了被分配给相同椭圆的存储桶的条目。在示例中,对于请求,取货地点p要插入和之间,并且卸货地点d要插入和之间。对应的绕行在图4中有所描绘,并且包括被描绘为虚线箭头的部分。绕行包含被分配给存储桶的顶点。因此,利用包含顶点的条目的源存储桶、或利用包含顶点的条目的目标存储桶的从取货地点p到顶点的搜索足以找到有关这部分绕行的距离的信息。因此,利用包含顶点的条目的源存储桶、或利用包含顶点的条目的目标存储桶的从卸货地点d到顶点的搜索足以找到有关这部分绕行的距离的信息。
53.在图表400中,可以从表示取货地点p的顶点v到表示停靠点的顶点进行向后收缩层次结构搜索。对于在搜索中经过的图表400中的顶点h,针对包括停靠点的条目扫描其源存储桶条目。当源存储桶包括停靠点的条目时,顶点h和停靠点之间的距离可以从条目中确定。该距离形成了绕行的第一部分,可以采取该第一部分在取货地点p处接载请求。
54.在向后收缩层次结构搜索中,计算了表示取货地点p的顶点v和顶点h之间的距离。该距离形成了绕行的第二部分,可以采取该第二部分在取货地点p处接载请求。
55.可以从表示取货地点p的顶点v到表示停靠点的顶点类似地进行前向收缩层次结构搜索。对于在搜索中经过的图表的顶点,针对包括停靠点的条目扫描其目标存储桶条目。在前向收缩层次结构搜索中,计算了取货地点p和顶点之间的距离。该距离形成了绕行的第三部分,可以采取该第三部分在取货地点p处接载请求。当目标存储桶包括停靠点的条目时,顶点和停靠点之间的距离可以从条目中确定。此距离形成了绕行的第四部分,可以采取该第四部分在表示取货地点p的顶点v处接载请求。在取货地点p处接载请求可以采取的绕行距离可以被确定为这四个部分的总和。
56.使用从表示停靠点的顶点和从表示停靠点的顶点的搜索类似地处理
在卸货地点d处卸货请求可以采取的绕行距离。
57.第一椭圆402可以用来修剪搜索。这意味着收缩层次结构搜索被限制到处于第一椭圆402内的顶点。为此,取决于顶点处的最早出发时间和到达顶点的最迟时间,为第一椭圆402定义了余量:。
58.因此,为了计算绕行的成本,考虑从顶点到表示取货地点p的顶点v的最短路径就足够了。为了限制搜索空间,顶点v满足以下条件时才被考虑,否则就不考虑:。
59.反向存储桶收缩层次结构搜索从v到找到所需距离所必需且充分的存储桶条目满足以下条件:对于图表400中的顶点h,在源存储桶中存在条目((a) 如果h是和h之间所有最短路径上排名最高的顶点;以及(b) 如果。
60.为了有效地检查条件(a)和(b),通过运行前向收缩层次结构搜索来创建源存储桶条目。在示例中,源存储桶条目(是通过从运行前向收缩层次结构搜索、并且对于第i个确定(settle)的每个顶点h而言将条目(插入到中来创建的。对目标存储桶条目的情况进行类似的处理。
61.为了检查条件(b),在示例中,在前向搜索的搜索空间中为每个顶点h确定距离。
62.在一方面,首先,从hi执行拓扑前向收缩层次结构搜索,其按拓扑次序而不是按距离递增的次序来处理顶点。
63.在这方面,搜索在距离标签大于阈值的任何顶点处被修剪。在上面的示例中,阈值是余地。在此示例中,不应用按需停止。
64.在此示例中,当搜索的优先级队列变空时,搜索停止。
65.之后,在示例中,从执行反向收缩层次结构搜索。在此示例中,应用按需停止,并且一旦搜索的优先级队列中的最小键超过阈值(例如,余地),就停止搜索。
66.最后,在此方面,反向搜索的距离标签向下传播到前向搜索的搜索空间。
67.为此,可以将在前向搜索期间确定的每个顶点推到堆栈上。在反复的反向搜索之后,顶点u可能会从堆栈中弹出。对于自顶点u离开的每个向上的边(,可以确定距离。距离是指从顶点处开始的向后搜索的距离标签。对于其中的前向搜索的搜索空间中的每个顶点h,当堆栈变空时,确定了这条路。并且因此可以检查条件(b)。
68.为了检查条件(a),考虑在前向搜索的搜索空间中的顶点h。让p是从hi到h的最短路径,其仅包含向上的边。
69.当且仅当存在具有至少一个向下的边和长度的从到h的上下路径p'时,条件(a)被违反。
70.为了检查这一点,当顶点h从堆栈中弹出,附加地,到h中的所有向下的边被查看以计算值。
71.如果,则条件(a)被违反,并且因此我们不将条目插入到中。
72.无论哪种方式,可以被设置为。
73.每当实体完成一停靠点时,可以移除指代此停靠点的存储桶条目。在下面,解释了从源存储桶中移除指代由顶点表示的停靠点的条目。为此,所到达的顶点的集合r和具有的位置i()的队列q被初始化。尽管q不为空,从队列中提取顶点h,并且扫描其源存储桶。当找到了指代的条目(,)时,将(,)从中移除,扫描停止,并且对于自离开的每个向上的边,如果,则被插入到r和q两者中。
74.上面的算法找到了条目(,,当且仅当和之间存在路径p,使得p仅包含向上的边,并且对于p上的每个顶点h,(,。
75.在一方面,每当将条目插入到源存储桶中,也将对应的条目插入到图表400中从到的路径上的父顶点的源存储桶中,其中是通过前向搜索计算的的父指针。
76.相同的处理和条件可以用于其他停靠点、用于第二椭圆404或第三椭圆406,以及用于表示卸货地点d的顶点w。目标存储桶条目的情况同样是可处理的。
77.存储桶条目必须标识它们指代的停靠点。因此,可以维持最初为空的空闲停靠点id列表。每当将停靠点插入到实体的路线中时,都可以从列表中取出停靠点id,并且将其分配给新的停靠点。如果列表为空,则新的停靠点的停靠点id可以被设置成迄今为止所分配的最大停靠点id加一。每当从路径中移除停靠点时,其停靠点id可以被插入到空闲停靠点id列表中。存储桶条目的存储和维持方式类似于我们处理停止属性值的方式。
78.在此方面,该方法包括:在步骤306中-确定从向后收缩层次结构搜索中的第三顶点v到第一顶点的最短距离路径的长度,-确定从前向收缩层次结构搜索中的第三顶点v到第二顶点的最短距离路径的长度,以及-取决于这些长度和长度的总和来确定距离的度量。
79.为了进一步加速搜索,该方法可以包括:在步骤312中-为顶点h的源存储桶提供第一条目,以及-为顶点h'的目标存储桶提供第二条目。
80.在此方面,第一条目包括:表示第一停靠点的第一顶点的标识和第一最短距离路径长度。第二条目包括:表示第二停靠点的第二顶点的标识和第二最短距离路径长度。
81.另外,该方法可以包括:在步骤306中-针对第一停靠点的条目扫描源存储桶,-取决于第一停靠点的条目来确定第一最短距离路径长度,-针对第二停靠点的条目扫描目标存储桶,-取决于第二停靠点的条目来确定第四最短距离路径长度。
82.下面结合伪代码来描述用于解析接收到的请求的例程。
83.在示例中,请求包括最早出发时间。该最早出发时间是定义了在取货地点p接载上请求r的最早时间的时间。在下面,实体e的路线被称为。
84.使用以下附加的模型参数:-最大等待时间,-第一行程时间参数和-第二行程时间参数。
85.该方法考虑实体e的集合c中的多个实体。的容量被表示为。停靠站处的容量被表示为。特定实体的当前方位被表示为。特定停靠点的位置被表示为。
86.在此示例中,最大等待时间定义了最迟出发时间,此时,实体必须离开取货地点p。此外,最早出发时间定义了最迟时间。
87.该例程确定了请求r的插入。索引i标识了停靠点和之间的路线204的区段。索引j标识了停靠点和之间的路线204的区段。
88.1 运行从取货地点p到卸货地点d的收缩层次结构搜索2 3 4 运行从取货地点p到卸货地点d的前向和反向存储桶收缩层次结构搜索5 让是迄今为止发现的最佳插入6 对于每个实体,进行7让是实体e的路线2048对于至,进行9如果,则继续10尝试用插入改进11对于至,进行12如果,则13如果,则
14尝试用插入改进15跳出循环16尝试用插入改进17对于每个实体,进行18尝试用任何插入改进,其中19在路线的尽头,在取货内部搜索优于的插入20在路线的尽头,在卸货内部搜索优于的插入21如果没有找到可行的插入,则返回22让是实体的路线20423实行插入24如果实体在从到行驶时被转向,则25移除用于停靠点的源存储桶条目2627(当前时间点)28生成用于停靠点的源存储桶条目29如果取货地点p没有在现有停靠点插入,则30生成用于停靠点的源存储桶和目标存储桶条目31如果卸货地点d没有在现有停靠点插入,则32生成用于停靠点的目标存储桶条目33如果卸货地点d在最后一个停靠点之间被插入,则34生成用于停靠点的源存储桶条目35否则36为最后一个停靠点生成源存储桶条目37如果,则38从终止于的车辆列表中去除39将插入到终止于的车辆列表中40返回。
89.在第1到4行中,例程计算最短路径距离。更具体地,从取货地点p到卸货地点d的最短路径距离是用收缩层次结构搜索计算的。根据此距离,计算了应该卸货请求r的最迟时间。计算了应该接载请求r的最迟时间。
90.另外,计算普通插入的成本所需的最短路径距离被计算。普通插入是插入,其中。为此,执行两个前向存储桶收缩层次结构搜索,其会扫描目标存储桶。从取货地点p执行一个前向存储桶收缩层次结构搜索,并且从卸货地点d执行一个。另
外,执行两个反向存储桶收缩层次结构搜索,其会扫描源存储桶。从取货地点p执行一个反向存储桶收缩层次结构搜索,并且从卸货地点d执行一个。存储桶的条目可以包含条目所属的实体的标识符。
91.关于第4行,参照图4,并且在上面解释了从取货地点p和卸货地点d的前向和反向存储桶收缩层次结构搜索的解释。
92.在示例中,第一前向搜索是从顶点v到顶点进行的,并且第一反向搜索是从顶点v到进行的。在示例中,第二前向搜索是从顶点w到顶点进行的,并且第二反向搜索是从顶点w到进行的。
93.在第5到16行,例程尝试普通插入。实体的集合c包含:在对源和/或目标存储桶进行扫描的同时已经看到的实体e。
94.注意,不包含在集合c中的实体e不允许进行可行的普通插入,因此在算法的这个阶段中不必考虑。
95.对于每个实体,使用占用值枚举所有满足容量约束的普通插入。
96.为此,在示例中,对于每条车辆路线r上的每个停靠点,当实体e从停靠点s出发时,维持了其占用,例如,被占用的座位数。
97.每当请求r插入到现有或已经规划好的路线中时,这就会产生修改后的路线。如果在插入前并不存在,则计算包括:设置。如果在插入前并不存在,则计算包括:设置。计算进一步包括:循环遍历所有,并且递增。
98.多乘客或良好的请求可能会被类似处理。
99.另外,例程以递增的次序循环遍历所有取货插入点i(),并且检查与容量约束有关的插入是否不可行。如果插入不可行,则例程继续下一个取货插入点。否则,例程按递增的次序循环遍历所有卸货插入点j(),并且检查插入是否满足容量约束。如果插入不满足容量约束,则在情况下的插入是不可行的,并且例程继续下一个取货插入点。注意,在情况下的插入仅在卸货点d与一致时才满足约束。
100.对于满足容量约束的插入i,例程会检查是否也满足剩余的硬约束,并且根据以下目标函数计算插入成本:其中是已处理的请求r在取货地点处的出发时间,其中是已处理的请求r在卸货地点处的到达时间,其中是实体由于请求r所致的绕行,其中和是模型参数。
101.目标是将请求插入到任何实体路线中,使得实体绕行被最小化。绕行可以通过操作时间的增加来定义。每当接收到请求r,目标是要找到进入使最小化的任何实体路线的插入。对于该目标的解决方案满足约束的检查可在恒定时间内计算,例如,使用以下
例程来计算:对于停靠点,当没有另外的停靠点插入到路线r中时,维持停靠点s处的出发时间。另外,维持停靠点s处的最迟到达时间,使得所有后续取货和卸货都是准时的。
102.对于修改后的路线,例程按前向次序循环遍历所有(),并且设置并且设置并且设置。
103.这些约束通过按反向次序循环遍历所有()传播到在前的停靠点,并且设置。
104.绕行可计算为绕行,其中是由于卸货所致的绕行,并且是由于取货所致的绕行。
105.。
106.在示例中,插入然后满足所有服务、等待和行程时间约束,当且仅当以及以及其中,是实体e的最大服务结束时间。
107.在第17到20行,例程尝试特殊情况插入。这些插入的成本取决于最短路径距离,其不是由存储桶收缩层次结构搜索计算的。
108.首先,插入在实体路线上的下一个预定停靠点之前插入取货地点p,其在的情况下得到考虑,其中。如果违反了容量约束,则实体不能在下一个预定停靠点之前接载另一个请求。
109.其次,搜索了优于当前最佳插入的插入,其在实体路线上的最后一个停靠点之后插入取货地点p和卸货地点d两者。这是通过从取货地点p实行反向dijkstra搜索来进行的。
110.第三,搜索了优于当前最佳插入的插入,其在实体路线上的最后一个停靠点之后插入卸货地点d。这是通过从卸货地点d实行反向dijkstra搜索来进行的。
111.该例程使用存储桶收缩层次结构搜索来获得计算插入成本所需的大部分最短路径距离。
112.可以分别处理以下三种情况。
113.第一种情况考虑插入,其中,即,在实体e在路线上的下一个已经预定的停靠点之前插入取货地点p。
114.在这种情况下,例程取决于从实体e的当前位置到取货点的最短路径距离来计算插入成本。
115.经由取货地点从到的行驶时间是。三角不等式 dist(然后产生dist(在经由取货地点从到的行驶时间的下限。由于用于的源存储桶条目和用于的目标存储桶条目是可用的,此下限可以从存储桶收缩层次结构搜索中获得。
116.然后该例程计算取货绕行的下限,并且最后计算插入成本下限。只有在后一个下限优于目前看到的最佳插入的罕见情况下,例程才通过运行收缩层次结构搜索计算确切的最短路径距离。
117.第二种情况考虑插入,其中,即,在实体e的最后一个已经预定的停靠点之后在路线上插入取货地点p。在示例中,代替于计算此插入的成本,从最后一个停靠点到取货地点的最短路径距离dist(,该例程可能会推迟这样的插入。在处理了可能的候选插入之后,例程可以从取货地点实行反向dijkstra搜索。每当反向dijkstra搜索确定任何实体e的路线中的最后一个停靠点,例程可以检查在最后一个停靠点之后插入取货地点和卸货取货地点d是否改进了当前最佳插入。在这种情况下,插入成本也会增加操作时间。这种插入的成本至少是。
118.在一方面,例程可以维护优先级队列。优先级队列可以包括最小键。该例程可以在求和后立即停止针对最佳插入的反向dijkstra搜索,至少与目前发现的最佳插入的成本一样大。在另一个方面,迄今为止找到的最佳插入的成本可以与总和进行比较在这方面,如果总和至少与当前最佳插入的成本一样大,则停止反向dijkstra搜索。
119.提早停止dijkstra搜索使得其实用,并且对于实时应用程序而言速度足够快。
120.第三种情况考虑插入,其中,即在最后一个停靠点之前插入取货地点,并且在最后一个停靠点之后插入卸货地点。
121.从运行反向dijkstra搜索之后,路由也可以从卸货地点运行反向dijkstra搜索。每当确定了实体e的最后一个停靠点,例程就检查是否有任何情况下的插入改进了迄今为止的最佳插入。考虑到每次这样的插入的成本至少是,例程可能会在求和时停止dijkstra搜索,至少与目前发现的最佳插入的成本一样大。指代优先级队列中的最小键。可以通过关于行程时间约束的违反检查下限来改进例程。这意味着一旦总和至少与
迄今为止发现的最佳插入的成本一样大,就停止搜索。
122.在第22到39行,例程更新预处理数据。
123.在示例中,如果找到可行的插入,就更新数据。
124.为此,实行到当前路线中的最佳插入。
125.在插入之后,更新参数、和。
126.如果实体在从到行驶时转向,例程就更新开始,并且重新计算用于的源存储桶条目。
127.在这种情况下,没有用于的目标存储桶条目,因为它是路线上的第一停靠点。首先,例程移除第一存储桶中的的当前条目。然后,例程将的位置设置成实体的当前位置,并且将处的出发时间设置成当前时间点。最后,该例程生成用于的新的源存储桶条目。
128.此外,该例程为进行取货的停靠点生成源存储桶和目标存储桶条目,除非在现有停靠点插入取货。
129.同样地,该例程为进行卸货的停靠点生成目标存储桶条目,除非在现有停靠点插入卸货。如果在最后一个停靠点之前插入卸货,该例程还为进行卸货的停靠点生成源存储桶条目,除非在现有停靠点插入卸货。否则,该例程为最后一个停靠点生成源存储桶条目,该最后一个停靠点处于在实行插入之前的路线的最末端。
130.每当实体e到达其路线上的下一个预定停靠点时,例程都可以移除停靠点的目标存储桶条目。该例程也可以移除用于此停靠点之前的停靠点的源存储桶条目。
131.该例程可以为每个顶点v维持一个在顶点w处终止的实体e的列表,即,其当前最后一个停靠点对应于顶点w。该例程可以从在最后一个停靠点终止的实体的列表中去除实体e,并且将实体e插入到在新的最后一个停靠点的位置终止的实体的列表中。
132.为了满足实际生产系统的附加要求,可以通过各种扩展来扩展例程。在下面,分别对扩展进行解释。这些扩展可以在实际实现方式中进行组合。
133.在一方面,假设在对应于道路网络中的交叉点的图表的顶点处做出停靠点。然而,在实际应用中,可以在沿着路段的任何地方做出停靠点。在图表中,路段对应于边。为了与基于边的停靠点一起工作,可以认为沿着长度的边的停靠点s有实值偏移。要从s运行前向dijkstra搜索、前向收缩层次结构搜索或前向存储桶收缩层次结构搜索,例程从顶点开始,并且初始化第一距离标签至,而不是零。同样地,要从s运行反向dijkstra搜索、反向收缩层次结构搜索或反向存储桶收缩层次结构搜索,例程从顶点开始,并且初始化第二距离标签至。例程明确处理源和目标沿着同一边定位的情况。
134.在实际应用中,人们往往不仅对最佳插入感兴趣,而且也对从停靠点到取货地点、从取货地点到停靠点、从停靠点到卸货地点d、以及从卸货地点d到停靠点的路径的描述感兴趣。通过为每个顶点维持父指针,dijkstra搜索可以检
索完整的路径描述,并且收缩层次结构搜索可以检索有可能包含捷径的路径描述。后者可以解压成完整的路径描述。
135.考虑通过前向存储桶收缩层次结构搜索找到的路径,并且考虑到h是这条路径上排名最高的顶点,在前向存储桶收缩层次结构搜索中找到路径的第一部分的描述。路径的第二部分隐藏在存储桶中。对于反向存储桶收缩层次结构搜索,第二部分的描述对应于目标存储桶条目。
136.在一方面,该例程可以在生成用于的存储桶条目时存储搜索空间。搜索空间可以被存储为有根树。该例程可以从遍历该有根树,以检索路径的第二部分的描述。
137.然而,注意到,要找到最佳插入,不需要父信息,因此不需要有根树。也就是说,当我们紧接在之前插入新的停靠点时,可选地需要有根树。
138.在另一个方面,在需要的时候,可以通过从到h运行反向收缩层次结构搜索来检索对应于存储桶条目的路径描述。
139.为了处理交通,每当有新的交通信息可用,就可以更新图表。然而,在大规模道路网络上,收缩层次结构预处理可能不够快,以至于无法合并连续的交通信息流。因此,上述例程可以与可定制的收缩层次结构进行组合。
140.更具体地,每个可定制的收缩层次结构都是收缩层次结构。为了进一步改进搜索,基于dijkstra的收缩层次结构搜索可以被消除树搜索替换。消除树搜索是一种为在可定制的收缩层次结构中进行搜索而定制的查询算法。对于点对点查询,消除树搜索往往比基于dijkstra的搜索更快。消除树搜索不按距离递增的次序处理顶点。为了提早停止消除树搜索,可以将基于dijkstra的收缩层次结构搜索的停止标准转变为消除树搜索的修剪标准。
141.为此,在存储桶条目生成期间,基于dijkstra的收缩层次结构搜索一旦确定距离标签超过阈值的顶点,就会停止。虽然消除树搜索也可能不会在这样的顶点处停止,但是消除树搜索可能会在该顶点处被修剪。这意味着,自该顶点离开的边不会松弛。
142.另外,消除树搜索可以简化存储桶条目生成。由于消除树搜索按升序对顶点进行处理,并且排序是拓扑次序,所以标准的消除树搜索已经是拓扑搜索。
143.目标函数是运输模拟的示例。目标函数可以采用多种方式参数化。该例程不限于此目标函数,而是还能够与其他函数一起工作。特别地,椭圆修剪,以及因此存储桶条目生成不依赖于目标函数,仅依赖于已经与实体e匹配的请求r的约束。因此,对于任何目标函数,例程都将类似地实行。在示例中,取决于实际目标函数的标准是分别从接收到的取货点和卸货点进行反向dijkstra搜索的停止标准。在此示例中,其他标准与实际目标函数无关。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献