minisat 随机变量选择不适用于 gcloud

minisat randomize variable selection is not working on gcloud

我希望每次 运行 对同一个问题进行 minisat 时得到不同的解决方案。我可以使用 minisat 的 "rnd-seed" 参数来做到这一点。它只是随机化变量选择,所以每次我都能得到不同的解决方案。尽管此参数在我的机器上运行良好 (Ubuntu16),但它在 gcloud (Google Cloud) 运行ning Ubuntu 机器上不起作用。

我想我遗漏了一小部分,但我不知道那是什么。

注意:我不想将解决方案的谈判提供给 minisat 以获得不同的解决方案。我实际上需要随机化变量选择。

编辑:让我解释一下为什么我需要随机解决方案。我解决了很多 SAT 问题,通常这些 SAT 问题看起来很像。所以,如果我不能随机选择变量,大多数时候我会得到非常相似的解决方案,而这是我不想要的。因此,我实际上没有 运行 minisat 解决同样的问题。

Edit-2:@sascha 希望我解释 "works" 和 "not works" 的意思。当我在我的电脑上 运行 一个 cnf 文件时,每次我得到不同的解决方案。但是,当我 运行 gcloud 机器上的相同 cnf 文件时,我总是得到相同的解决方案。

选项 -rnd-seed 不会随机选择分支变量。相反,它允许您为 Minisat 使用的伪随机数生成器设置种子。

分支的变量选择不涉及随机性,除非使用 -rnd-freq 选项。传入一个介于 0 和 1 之间的浮点值。0 表示没有随机性,1 表示尝试在每个分支中使用一个随机变量。该代码仅尝试随机选择一个变量,大概是因为在任意大的优先级队列中搜索未设置的变量会变得非常昂贵。如果一次尝试失败,Minisat 将使用正常的优先级队列进行分支。