y.layout.router.多段线
类路径搜索
java.lang.Object(java.lang.对象)
y.layout.router.polyline。路径搜索
公众阶级路径搜索
- 扩展java.lang.Object
这是一种路径查找算法,用于计算通过图形分区
.
它基于A*-算法和使用分区单元格
s作为源节点和目标节点之间的步骤。
在每个步骤中,算法都需要一个单元格入口
,它主要由分区单元格
和从输入的位置,从所有人都看到的队列单元格入口
s、 确定所有可能的邻居单元格及其输入间隔并将结果排队单元格入口
.为了影响单元格入口
将处理,路径搜索分配实数排队者的成本(如Dijkstra)以及启发式成本(A*算法的启发式)单元格入口
s.进入相邻单元产生的实际成本,例如必须创建弯板,虽然启发式成本是对到达目标节点继续与该相邻小区的路径。因此,路径搜索首选目标节点的搜索方向谎言。这个单元格入口
以最低的综合成本进行处理,直到到达目标单元格。
路径搜索扩展
s修改路径搜索,因为他们可以添加start入场券,并将其与成本进行权衡。它们还增加了实际和启发式成本单元格入口
是的为当前输入的分区单元格
并计算较短的进入间隔传递代价高昂。
该算法得到一个路径搜索上下文
它提供有关图形和当前路由的信息边缘。它存储路径搜索的结果,然后可以调用路径搜索上下文.getPathSearchResult()
.
- 另请参阅:
addPathSearchExtension(路径搜索扩展)
,addAdditionalEnterIntervalCalculator(输入间隔计算器)
-
-
从类java.lang.Object继承的方法 |
clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait |
路径搜索
公众的路径搜索()
- 创建的新实例
路径搜索
.
添加路径搜索扩展
公共布尔值添加路径搜索扩展(路径搜索扩展扩展)
- 将给定的扩展名添加到
路径搜索扩展
第条。扩展可以通过增加进入特定路径的成本来影响寻路过程单元格入口
第条。
- 参数:
延伸
-要添加到此路径搜索的扩展- 退货:
真的
如果已添加扩展,假
否则
删除路径搜索扩展
公共布尔值删除路径搜索扩展(路径搜索扩展扩展)
- 从的列表中删除给定的扩展名
路径搜索扩展
第条。
- 参数:
延伸
-要从路径搜索中删除的扩展- 退货:
真的
如果此调用导致分机被删除,假
如果给定列表中未包含扩展名
addAdditionalEnterIntervalCalculator(添加额外输入间隔计算器)
公共布尔值addAdditionalEnterIntervalCalculator(添加额外输入间隔计算器)(进入IntervalCalculatorenterIntervalCalculator)
- 将新的间隔计算器添加到已注册的列表中
进入IntervalCalculator
第条。
进入IntervalCalculator
s可以添加单元格入口
与队列的间隔缩短。间隔更具体,将以更低的成本进行判断。
- 参数:
enterIntervalCalculator(输入间隔计算器)
-要添加的计算器- 退货:
真的
如果成功添加计算器,假
否则
删除AdditionalEnterIntervalCalculator
公共布尔值删除AdditionalEnterIntervalCalculator(进入IntervalCalculatorenterIntervalCalculator)
- 从已注册的列表中删除给定的间隔计算器
进入IntervalCalculator
第条。
- 参数:
enterIntervalCalculator(输入间隔计算器)
-要删除的计算器- 退货:
真的
如果作为该调用的结果删除了间隔计算器,假
如果给定的计算器不在列表中
初始化
公共空虚初始化(路径搜索配置配置)
- 初始化此的字段
路径搜索
.此方法还调用PathSearchExtension.initialize(路径搜索配置)
对于所有注册的路径搜索扩展。
- 参数:
配置
-路径搜索应使用的配置
清楚的
公共空虚清楚的()
- 重置所有注册的
路径搜索扩展
s和数据提供程序
已添加到此路径搜索
所以,路径搜索
已准备好计算新布局的路径。
- 另请参阅:
路径搜索扩展.cleanup()
获取最终路径
公众的路径 获取最终路径(边缘边缘)
- 如果给定边已完成,则返回其路径。
如果路径搜索
选择它作为边缘的最佳结果。
- 参数:
边缘
-返回路径的边- 退货:
- 给定边的最终路径或
无效的
如果没有找到并最终确定路径
查找当前边缘的路径
保护空隙查找当前边缘的路径(路径搜索上下文上下文)
- 在给定上下文中查找当前边的路径。此方法:
它由调用查找路径(路径搜索上下文)
并可能被覆盖以跳过某些边或实现自定义路径搜索。
- 参数:
上下文
-查找路径所需的上下文信息
减少惩罚设置
保护空隙减少惩罚设置(惩罚设置惩罚设置,双递减因子,路径搜索上下文上下文)
- 减少当前边的给定惩罚设置。
如果根据最大持续时间
的边缘布线算法
,对当前边缘的路径搜索被取消并且使用减少的惩罚重新开始。这个递减因子
表示应减少多少罚款。
此方法由调用查找当前边缘的路径(路径搜索上下文)
.如果覆盖此方法,请注意,创建折弯的惩罚不应因此而减少在边缘路径的更多可能转弯处,因此路径搜索的运行时间更长。此外,并非所有惩罚应该同等减少,因为这些减少会相互抵消。
这个递减因子
从中获取值[0,1]
,其中0
表示不减少虽然1
表示最强的减少。
- 参数:
惩罚设置
-惩罚应减少的惩罚设置递减因子
-值介于之间的因子0
和1
表明强度有多大减少处罚上下文
-当前路径搜索的上下文信息
查找路径
公共空虚查找路径(路径搜索上下文上下文)
- 在给定上下文中查找边的路径并将其存储在
路径搜索结果
.这是主要的方法路径搜索
.它使用以下命令初始化其扩展PathSearchExtension.initializeEdges(路径搜索上下文)
和将每条边的路径搜索委派给查找当前边缘的路径(路径搜索上下文)
.
所有边的路径计算都通过调用扩展完成PathSearchExtension.finalizeEdges(路径搜索上下文)
方法,然后是路径搜索结果用每条边的路径填充。
最后,要求扩展使用它们的PathSearchExtension.finalizePathSeaarchResult(路径搜索结果)
回调。
- 参数:
上下文
-路径搜索期间使用的上下文- 另请参阅:
路径搜索上下文.getEdges()
,路径搜索上下文.getPathSearchResult()
finalizePath(最终路径)
保护空隙finalizePath(最终路径)(路径路径)
- 通过调用已注册的路径搜索扩展的
finalizePath(路径)
方法。这样,扩展可以收集数据有关此路径的信息,以便稍后在路径搜索期间使用。此方法由调用查找当前边缘的路径(路径搜索上下文)
并且可以重写以使用自定义终结步骤。
- 参数:
路径
-要完成的路径
处理邻居
保护空隙处理邻居(单元格入口当前入口,分区单元格neighborCell,相邻小区,路径搜索上下文上下文)
- 添加
单元格入口
s表示可以从电流输入相邻单元格的每个间隔进入队列。该算法在每个步骤中为当前单元格的每个邻居调用此方法,以收集当前路径下所有可能的入口。这条路由几个入口组成,每个入口都知道它进入的入口。在计算到给定的相邻小区的所有可能的输入间隔之后,每个间隔都被评定为具有成本。如果相邻小区已有一个入口,其间隔与这些间隔之一相同,则此入口将被使用并重新排队,以便路径搜索仍然可以到达它。当前入口被设置为其当前路径中的前置任务及其输入间隔和成本将被更新。
如果相邻单元格的间隔与当前间隔相交,则会有新的入口将使用新的输入间隔创建并排队。如果没有匹配的入口,也会发生同样的情况但是,使用当前间隔之一。将添加成本。如果之后有一些条目与当前间隔相交并且成本较高,则它们将从队列中删除。
此方法在成本计算期间调用。它可以被重写以更改单元格入口
第条。
- 参数:
当前入口
-当前单元格入口邻居单元格
-处理的相邻单元格。上下文
-上下文信息- 另请参阅:
calculateCosts(CellEntry、PartitionCell、OrthogonalInterval[]、EdgeCellInfo[]、PathSearchContext、double[]、double[])
,计算启发式成本(CellEntry、PathSearchContext)
计算成本
保护空隙计算成本(单元格入口当前入口,分区单元格输入单元格,正交间隔[]输入间隔,边缘细胞信息[]lastEdgeCellInfos,路径搜索上下文上下文,成本加倍,双倍[]最大允许成本)
- 计算从当前
单元格入口
到相邻的分区单元格
使用不同的输入间隔。它由调用handleNeighbor(CellEntry、PartitionCell、PathSearchContext)
确定所有成本单元格入口
它将创建并在之后排队。给定输入间隔的成本从所有注册的路径搜索扩展
s当计算达到给定的最大成本值时停止。
- 参数:
当前入口
-当前单元格入口输入单元格
-要进入的分区单元enterIntervals(输入间隔)
-输入单元格的不同输入间隔lastEdgeCellInfos公司
-关于最后一个单元格是如何交叉的信息上下文
-上下文信息成本
-通过相应的enter进入相邻小区的计算成本所在的数组应书写间隔最大允许成本
-进入间隔可能导致的最大成本。如果超过此成本,则不再计算此间隔的额外成本。请注意在成本计算期间修改数组- 另请参阅:
PathSearchExtension.calculateCosts(CellEntry、PartitionCell、OrthogonalInterval、EdgeCellInfo、double)
计算启发式成本
双重保护计算启发式成本(单元格入口入口,路径搜索上下文上下文)
- 使用给定的
单元格入口
中的下一步路径搜索。它由调用handleNeighbor(CellEntry、PartitionCell、PathSearchContext)
确定入场排队费用的启发式部分。给定入口的启发式成本从所有注册的路径搜索扩展
第条。
- 参数:
入口
-当前入口上下文
-上下文信息- 退货:
- 如果使用给定入口,则路径其余部分的启发式代价
- 另请参阅:
PathSearchExtension.calculate启发式成本(CellEntry)