2014-04-15 74 views
0

我有6000个原点 - 目标位置对的英格兰。对于每一对我需要找到从起点到目的地的最短路径。最短路径算法将基础路网和一个OD对的每个链路的细节(节点纬度和经度,道路链路长度和唯一id)作为输入。在Matlab中存储非常大的数据结构的方法

底层道路网络上的链接数为4091065.我​​读道路网络并将其存储在一个结构数组中,每个元素代表一个链接并将其保存在.mat文件中。正如你所看到的,数据的大小变得太大了,Matlab耗尽内存。

我会成为方法来解决这个问题的方法。增加内存似乎没有多大帮助。

感谢

回答

1

我认为最好的方法是不要做在Matlab在所有 - 使用一个数据库。

如果它必须是Matlab,也许你可以以某种方式划分你的数据 - 也许在县左右。很确定您可以找到一种方法来排除每个特定请求的大量节点。

1

的最短路径算法作为输入的 底层道路网络和一个OD对每个链路的细节(节点的纬度 和经度,道路链路的长度和唯一身份ID)。

当然,您可以限制您需要加载的道路网络数量。所有4091065链接都不需要 - 如果你从特鲁罗前往伦敦,最短路径不可能绕过约克。因此,您可以编写一个预处理程序,用于决定给定OD对需要的道路网络的哪个子集,并将其加载到您需要的格式中(可选择存储,然后将该子集存储在'* .mat'文件或其他格式,如果您认为您想在相同的数据上尝试一些算法的变体)。

+0

谢谢nkjt。是的,我确实想到了这个选择,但不确定如何划分网络,它必须是每个OD对的预处理步骤。 –

+0

你可以预处理成粗糙的地图网格,然后加载一些看起来合适的子集,具体取决于配对。取决于您的算法如何工作以及数据的结构。我也会试图修剪数据库(它是否包含任何死链接,如果它们是原点或目的地,它们只会成为答案的一部分)? – nkjt