【发布时间】:2018-06-08 19:56:21
【问题描述】:
每次我在同一个问题上运行 minisat 时,我都想得到不同的解决方案。我可以通过使用 minisat 的“rnd-seed”参数来做到这一点。它只是随机化变量选择,所以每次我都能得到不同的解决方案。即使此参数在我的机器(Ubuntu16)上完美运行,它也不适用于在 Ubuntu 机器上运行的 gcloud(谷歌云)。
我想我遗漏了一小部分,但我不知道那是什么。
注意:我不想将解决方案的谈判提供给 minisat 以获得不同的解决方案。我实际上需要随机化变量选择。
编辑:让我解释一下为什么我需要随机解决方案。我解决了很多 SAT 问题,通常这些 SAT 问题看起来很像。所以,如果我不能随机变量选择,我大部分时间都会得到非常相似的解决方案,这是我不想要的。因此,我实际上并没有在同样的问题上运行 minisat。
Edit-2:@sascha 想让我解释一下“有效”和“无效”的含义。当我在我的电脑上运行一个 cnf 文件时,每次我得到不同的解决方案。但是,当我在 gcloud 机器上运行相同的 cnf 文件时,我总是得到相同的解决方案。
【问题讨论】:
-
这种方法可能根本无法保证。你真的确定这也是要走的路吗?
-
我也愿意接受其他建议。我需要做的就是得到一个不同的解决方案。但是不同的解决方案必须是完全随机的。我总是在我的机器和其他几台服务器上使用这种方法。它总是有效的。
-
如果完全随机化意味着:均匀采样,你就走错了路(它不会那样工作!)。你会发现一些(可能是可怕的)信息here。
-
是的,我能理解。完全随机化是可怕的 :) 我用错了词。让我纠正一下自己。我只需要使用基本随机化技术随机化变量选择,而不是加密随机化。
-
你似乎不明白我在说什么。您对 SAT 求解器、算法、NP 硬度等了解多少?你的工作有多科学?你所做的,好吧,它会在很多问题上失败。但直到现在,甚至还没有一个真正的规范:统一采样,这是人们有时试图实现的一件事,与 PRNG 与 cryptoPRNG 无关。 (CDCL) SAT-solvers 是启发式的并且有很大的偏差。变量选择并没有改变这一切(但有时它看起来像那样;当然很大程度上取决于问题)。阅读我的链接中提到的论文并准确!
标签: gcloud constraint-programming sat sat-solvers