细胞自动机 - 在边界细胞上做什么?

时间:2015-12-13 14:24:28

标签: java cellular-automata

我试图实现细胞自动机模拟波浪行为。我正在使用Von Neumann社区r=2 like here

我的问题是:我应该如何计算边界上单元格的状态?

例如:我有一个数组a,我想计算a[0][0]的值。

细胞的状态是(-1,1)范围内的浮子,其中0是平地。 On&#34; regular&#34;我可以采取邻居的状态,但是当邻居较少(<12)时,结果是错误的,并且&#34;生成&#34;新浪潮。

1 个答案:

答案 0 :(得分:3)

您的问题有不同的解决方案。

  1. 周期性边界条件:将晶格视为圆环并使用模数来循环细胞。
  2. 示例:a [-1] [0] = a [n-2] [0]

    好的一面:这可以通过平移使晶格不变来避免任何“边界效应”,这应该导致更自然的进化。 不好的一面:在较小的尺度上,这会产生不良影响,例如共振。

    如果您想对模型进行定量研究,例如相变,平均场等,这种方法尤其适用。

    1. 惰性边界条件:认为你的格子的边界有一个吸收规则,即它们模拟总是具有相同惰性状态的“外部”单元格。
    2. 示例:a [-1] [0] = 10e-6左右,因为0表示着陆。

      好的一面:你避免共振效应。 不好的一面:潜在的边界效应,以及没有外部波浪源。

      这种方法更适合定性用途:检查实施的有效性,寻找模型假象(例如类似maëlstrom的模式?)或简单地呈现一个看起来像观察者有机的系统。

      1. 有创意......
      2. 示例:所有边界单元格都为land(0)。