我是 Minizinc 的新手,我想解决以下问题。
我有一个给定的 6x6 单元格矩阵。行编号从 1..6,列编号从 A..B。所有单元格都应按照某些规则用从 1..9 的数字填充:
- 矩阵中所有 9 位数字都恰好出现了 4 次。
- 行或列中的直接邻居不能具有相同的值。
- 同一行中的所有单元格和同一列中的所有单元格都应具有不同的值。
- (3) 有一些例外:a) 第 2 行有两个“6”。b) 第 3 行有两个“3”。c) 第 4 行有两个“5”。d) 第 5 行有三个“7”。e) 第 6 行有两个“8”。f) B 列有两个“3”。g) D 列有两个“8”。h) F 列有两个“9”。
- 第 1 行所有数字的总和 >= 38。
- E列所有数字的总和为= 21。
- 第 2 行不包含“1”。
- 第 4 行不包含“4”。
- 第 5 行不包含“2”。
- 第 6 行不包含“3”。
- C 列不包含“2”。
- B列除两个“3”外,只有偶数数字。
- A 列具有升序或降序序列,例如“234567”或“987654”。
我在Minzinc中构建模型时最头疼的就是那些“矛盾的”约束:
- 同一行或同一列中的所有数字必须不同。
- 但有时这条规则也有例外。
这如何实现呢?
提前致以最诚挚的谢意。Guenther