span8
span4
我想连接点没有考虑他们的顺序,而是他们的亲密。
基本上,我试着用所有的三点建立一条线,然后寻找最短路径查找器。
这个算法似乎是正确的。然而,当它有几百个点要处理时,它花费的时间太多了。
在这种情况下,如何提高最短探路者的效率?
@arthy此外,请确保您使用FME 2019。有很大的性能改进ShortestPathFinder。它并不能消除所描述的NP问题@ mark2a亚搏在线tsafe,但会有点帮助
据我所知…它是非常艰难的。这就是所谓的NP问题,这意味着它是一个非常复杂的情况,可以在多项式时间内解决。每增加一个点数,所花费的时间就会显著增加这张图我想你们看到的是中间那条茶色的曲线)
在实践中,它所做的是猜测最短路线,然后查看不同的路线,看看是否有更短的路线(比如这GIF)。根据你的设置,它会这样做10,000次。即使这样,你也不能保证这是绝对最短的路线,只是10000次尝试中最短的一次。
我要做的是检查日志文件。每当它找到一条新的最短路径时,就会记录一条消息,说明该路径有多短。如果经过10,000次迭代之后,距离仍然在急剧下降,那么您甚至可能希望增加数量以获得良好的结果。如果距离在100次迭代之后相当稳定,那么您可能希望减少迭代的次数,因为额外的迭代并没有获得太多的好处。
正如Dan所说,您还可以减少正在进行的验证的数量。这是一个很大的数目,尽管——老实说——我不知道它在做什么来判断它是否有价值。
简而言之:这是一个复杂的问题,我认为除了减少计算和检查的数量,以更少的时间获得可能更少的结果之外,没有什么方法可以显著提高性能。或者减少考虑的点数。
顺便说一句,你没说要花多少时间。是秒,分,小时?天! ?
嗨@arthy如果你想要一个快速的解决方案,在完成条件下,将验证次数设置为0,并设置一个超时(分钟),表示你愿意等待多长时间。
嗨@arthy较高的迭代次数也较好。我跑在同一个167个随机点和超时5分钟多次测试。总成本更低的去为迭代次数就越高 - 我的最后一次测试有10,000,000。
©2019安全亚搏在线软件公司法律