问题
I am trying to find out how SCIP treats SAT problems.
In the SCIP website, it is recommended to type 'set emphasis cpsolver' in the command line for SAT problems after reading the cnf file. The SCIP solver would then do its own thing after typing 'optimize'. I am not particularly skilled in code tracing and would like to know the pathway the SCIP solver takes after typing the 'set emphasis cpsolver' command.
Does this command take the SAT problem and simply call a SAT solver from elsewhere? Or does it treat the SAT problem as a discrete optimisation problem and use the classical methods such as cutting planes, branch and bound to solve it?
So far, I have ran SCIP on 50 instances of SAT problems on 8h time limit each, with no result. Using SAT solvers with backdoors under the same 8h time limit leads to successful solving of about half the instances.
回答1:
when you run set emphasis cpsolver
SCIP displays the settings that are changed. Mainly, lp-solving is disabled and the working limits for conflict analysis are increased.
So SCIP runs branch-and-bound with more conflict analysis and without using an lp-relaxation, instead, it uses the pseudo-solution for bounding. It does not call a SAT solver from somewhere else.
It is not surprising to me that SCIP might be outperformed by dedicated SAT solvers. Please also note that it is not necessary to set the emphasis setting to cpsolver in order to solve a SAT problem with SCIP, you can also try running with default parameters (or merely disabling lp-solving if you do not think the lp-relaxation is useful for your problem).
I hope this information is helpful.
来源:https://stackoverflow.com/questions/59557794/how-does-the-scip-code-treat-sat-problems