如何为 SAT 问题生成切割平面?
How to generate cutting planes for a SAT problem?
我正在研究需要我为 SAT 问题生成切割平面的想法。我正在使用来自 https://www.cs.ubc.ca/~hoos/SATLIB/benchm.html 的问题,来自 SAT 编码的准群(或拉丁方)实例的 qg5-10.cnf。
我使用的是最新版本的 SCIP,SCIP8.0.0。我想知道是否有任何方法可以为 SAT 问题生成切割平面并打印出生成的切割平面。我只需要在预求解后的第一次迭代中执行此操作。
我试过以下方法:
set separating gomory freq 65534, set separating (other cutting plane methods) freq -1
然而,当我使用 optimize
命令时,这并没有告诉我是否正在生成 gomory 剪切。
- 通过在 sepa_gomory.c 的第 270 行和第 309 行添加
SCIPprintRow(scip, cut, NULL)
来打印剪辑。
但是什么也没有打印出来,这让我认为切割平面根本没有用于 SCIP 的默认分支规则。
关于如何着手执行此操作的一些建议将帮助我检验我的切割平面假设。谢谢!
切割平面generation/separation不受分支规则约束。你只需要运行display statistics
查看是否生成和分离了以及哪些切割。
我正在研究需要我为 SAT 问题生成切割平面的想法。我正在使用来自 https://www.cs.ubc.ca/~hoos/SATLIB/benchm.html 的问题,来自 SAT 编码的准群(或拉丁方)实例的 qg5-10.cnf。
我使用的是最新版本的 SCIP,SCIP8.0.0。我想知道是否有任何方法可以为 SAT 问题生成切割平面并打印出生成的切割平面。我只需要在预求解后的第一次迭代中执行此操作。
我试过以下方法:
set separating gomory freq 65534, set separating (other cutting plane methods) freq -1
然而,当我使用 optimize
命令时,这并没有告诉我是否正在生成 gomory 剪切。
- 通过在 sepa_gomory.c 的第 270 行和第 309 行添加
SCIPprintRow(scip, cut, NULL)
来打印剪辑。
但是什么也没有打印出来,这让我认为切割平面根本没有用于 SCIP 的默认分支规则。
关于如何着手执行此操作的一些建议将帮助我检验我的切割平面假设。谢谢!
切割平面generation/separation不受分支规则约束。你只需要运行display statistics
查看是否生成和分离了以及哪些切割。