最小tile订购(Minimum Tile Ordering)

2019-08-01 00:48发布

最大限度地减少瓷砖重新排序问题:

假设我具有下列对称9x9的矩阵,N颗粒之间N ^ 2个相互作用:

(1,2) (2,9) (4,5) (4,6) (5,8) (7,8), 

这些都是对称的相互作用,因此它含蓄地意味着存在:

(2,1) (9,2) (5,4) (6,4) (8,5) (8,7),

在我的问题,假设它们被布置成矩阵形式,其中仅示出了上三角:

t       0     1     2     (tiles)
  #   1 2 3 4 5 6 7 8 9   
  1 [ 0 1 0 0 0 0 0 0 0 ]
0 2 [ x 0 0 0 0 0 0 0 1 ]
  3 [ x x 0 0 0 0 0 0 0 ]
  4 [ x x x 0 1 1 0 0 0 ] 
1 5 [ x x x x 0 0 0 1 0 ]
  6 [ x x x x x 0 0 0 0 ]
  7 [ x x x x x x 0 1 0 ]
2 8 [ x x x x x x x 0 0 ]
  9 [ x x x x x x x x 0 ] (x's denote symmetric pair)

我有一些操作是在3×3瓦计算,并包含至少一个1必须完全计算的任何3x3的。 上面的例子中,需要至少5瓦:(0,0),(0,2),(1,1),(1,2),(2,2)

但是,如果我换第3和第9列(并连同自其对称矩阵的行)的重排列我输入:

t       0     1     2
  #   1 2 9 4 5 6 7 8 3 
  1 [ 0 1 0 0 0 0 0 0 0 ]
0 2 [ x 0 1 0 0 0 0 0 0 ]
  9 [ x x 0 0 0 0 0 0 0 ]
  4 [ x x x 0 1 1 0 0 0 ] 
1 5 [ x x x x 0 0 0 1 0 ]
  6 [ x x x x x 0 0 0 0 ]
  7 [ x x x x x x 0 1 0 ]
2 8 [ x x x x x x x 0 0 ]
  3 [ x x x x x x x x 0 ] (x's denote symmetric pair)

现在我只需要计算4个砖:(0,0),(1,1),(1,2),(2,2)。

一般问题:

鉴于经NxN稀疏矩阵,找到一个重新排序,以尽量减少TXT瓷砖要计算的数量。 假设N是T.最佳的,但不可行的倍数,解决方案可以通过尝试N个发现! 输入排序置换。

对于启发,我已经试过带宽最小化程序(如反向CutHill麦基),蒂姆·戴维斯的AMD套路,至今无果。 我不认为对角化这里是正确的做法。

下面是一个示例出发矩阵:

http://proteneer.com/misc/out2.dat

希尔伯特曲线:

RCM:

莫顿曲线:

Answer 1:

有几个知名的选项,你可以尝试(他们中的一些你有,但仍然):

  • (倒档)Cuthill-麦基减小矩阵带宽,保持靠近对角线的条目。
  • Approximage最小度 -重量轻填充减少重新排序。
  • 填充减少重新排序为稀疏LU / LL”分解( METIS , SCOTCH ) -相当计算繁重。
  • 空间填充曲线重新排序(东西在这些行 )
  • 用于2D或辛树木四树三维问题 - 分配的颗粒四边形/八分圆和后来根据四边形/八分圆ID,类似于在某种意义上空间填充曲线数点。
  • 自回避行走被用在结构化网格在这样的顺序,所有的点只去过一次遍历网格点
  • 在稀疏矩阵条目的阻塞了大量的研究已经稀疏矩阵向量乘法的背景下完成的。 许多研究人员试图找到好的重新排序为目的(我没有在这个问题上完美的概述,但是看看如本文 )

所有这些往往会发现结构在你的矩阵在某种意义上组的非零项。 既然你说你处理的颗粒,这意味着你的连接图在某种意义上是“本地”,因为粒子相互作用的空间局部性的。 在这种情况下,这些方法应该是很好地利用。

当然,他们不提供解决问题的精确解:)但他们究竟在这种情况下,常用的,因为他们在实践中得到很好的重新排序。 我不知道你说你尝试过失败的方法呢? 你期望找到最佳的解决方案? 当然,他们提高相比随机矩阵排序的情况。

编辑让我简要经历了几张照片。 我已创建20节点砖元件构成的三维结构化笛卡尔网格。 我匹配网格的大小,以便它是与你相似(〜1000个节点)。 另外,每行的非零项的数量并不太远(51-81在我的情况,59至81你的情况,但都具有非常不同的分布)的非周期网下图显示RCM中的图片和METIS重新排序(左),并与完整的XYZ周期(右)目:

下图为使用METIS和填充还原重新排序重新排序相同的基质

区别是巨大的 - 周期性的不利影响是显而易见的。 现在,你的矩阵重新排序与RCM和METIS

哇。 你:)首先一个问题,我觉得有什么不对您的RCM,因为我的是不同的;)另外,我敢肯定,你不能断定任何普通的和有意义的关于基于这种特殊的基质的任何重新排序。 这是因为你的系统体积非常小(小于约10x10x10分),你似乎有你的粒子之间的相对远距离的相互作用。 因此,引入周期性成这样的小系统上重新排序比我的结构的情况下被认为是一个更强大的不良影响。

我会通过关闭周期开始有一个良好的重新排序的搜索。 一旦你满足你重新排序,定期推出的互动。 在您显示系统中存在的几乎没有,但周期性的:因为它是非常SMaL公司因为你的相互作用是相当长的距离,至少比我的网格。 在更大的系统的周期性将会对模型的中心影响较小。

较小,但仍为负值。 也许你可以改变你的方法,以周期性? 而是明确包括在基体中周期性连通性的,构建体和重排的矩阵没有那些,引入显式方程的周期性颗粒粘合在一起,例如:

V_particle1 = V_particle100

或者换句话说

V_particle1 - V_particle100 = 0

在你的矩阵的末尾添加这些方程。 这种方法被称为拉格朗日乘子。 这里是如何查找我的系统

你保持非周期系统的重新排序和周期性连通性是在一个块在矩阵的末尾本地化。 当然,你可以将其用于任何其他重新排序。

接下来的想法是你开始重新排序的非周期系统和明确地将它们添加到它们映射到行消除对周期性节点矩阵行。 你当然应该也消除列。

您是否可以使用这些取决于你与你的矩阵做什么。 拉格朗日乘子例如在对角线上推出0 - 样,并非所有的求解器..

无论如何,这是非常有趣的研究。 我想是因为你遇到的具体问题的是(我的理解是 - 不规则地放置粒子3D,具有相当长程相互作用)作出群很难矩阵元素。 但是我很好奇你最终做。 请告诉我!



Answer 2:

你可以看看像KD树,R树,四叉树或空间填充曲线的数据结构。 尤其是空间填充曲线可以帮助,因为它降低了尺寸,并重新排列的瓷砖,因此可以添加一些新的信息网格。 随着9x9的网格,它可能很好的寻找到皮亚诺曲线。 Z次序莫顿曲线是2个电网电力更好。



文章来源: Minimum Tile Ordering