在整数线性规划中对Conway的生命游戏进行建模?

时间:2015-07-20 07:57:49

标签: modeling linear-programming conways-game-of-life

我正在尝试使用整数线性编程来建模Conway's game of life规则,但是我坚持使用其中一条规则。

我认为有限 n x n网格。网格中的每个单元格都与变量X(i,j)相关联,如果单元格已死,则其值为0,如果单元格处于活动状态,则为1

我对静物特别感兴趣,即根据规则不会瞬间改变为下一个的配置。

为了找到它们,我对每个细胞的邻居数施加了限制。因此,要使活着的单元格保持静止,它必须具有23个邻居,这很容易表达:

2(1-X(i,j)) + Σ(i,j) >= 2

-5(1 - X(i,j)) + Σ(i,j) <= 3

Σ(i, j)(i, j)的邻居的总和(假设在网格之外,值都是0 s。)

如果X(i,j) == 0,那么第一个加数可以保证满足约束条件。当X(i, j) == 1约束条件保证我们有静物时。

问题是另一条规则:对于死细胞保持死亡,它必须具有与3不同的任意数量的邻居。 但是,AFAIK不能在约束中使用!=

我最接近的是:

X(i, j) + |Σ(i, j) - 3| > 0

哪个表达我想要的,但问题是我不认为绝对值可以这样使用(只能表达单个变量的绝对值。或者有没有办法表达这种特殊情况?)。

我想知道,是否有一种表达!=的标准方式? 我在想,也许我应该使用多个不等式而不是单个不等式(例如,对于每个可能的三个/四个邻居......),但我想不出任何合理的方法来实现它。

或许有一些方法可以滥用优化功能来惩罚这种情况,因此,获得最佳结果会产生正确的解决方案(或根据价值确定不可能的状态)。

是否有人能够使用线性不等式和变量X(i, j)(加上最终的一些新变量)表达该约束?

1 个答案:

答案 0 :(得分:2)

表达的标准方式

enter image description here

表示为

enter image description here

引入一个新的二元变量,指示哪个不等式成立。

第7.4节解释了here

简而言之,如果我们将y定义为

enter image description here

然后我们需要添加约束

enter image description here

哪里

enter image description here

这是建立此模型的标准方式,但在特定应用程序中可能有更好的方法。通常,总和上的边界越紧密,求解器性能越好。