LSTECH_MAPLE

介绍

LSTECH_MAPLE 是一款高性能的 SAT 开源求解器,获得了2021年 SAT Competition 中 Main Track SAT 的亚军,能够求解 SAT 和 UNSAT 问题。LSTECH_MAPLE 改进了冲突驱动子句学习(Conflict Driven Clause Learning,CDCL)算法,在松弛了 CDCL 过程的同时加入了 Local Search。LSTECH_MAPLE 由 C++ 开发,支持读写 CNF格式 (opens new window)(Conjunctive Normal Form)的文件。

参数

CORE OPTIONS

参数 含义 默认
step-size 初始步长 0.40
step-size-dec 步长衰减 0.000001
min-step-size 最小步长 0.06
var-decay 变量活动衰减因子 0.80
cla-decay 子句活动衰减因子 0.999
rnd-freq 启发式随机选择变量的频率 0
rnd-seed 随机选择变量的随机数种子 91648253
ccmin-mode 控制冲突子句的最小化 (0=none, 1=basic, 2=deep) 2
phase-saving phase saving的等级 (0=none, 1=limited, 2=full) 2
rnd-init 随机化初始活动 false
rfirst 基础重启的间隔 100
rinc 重启间隔增加因子 2
gc-frac 触发垃圾内存收集之前允许浪费的内存比例 0.20
chrono 控制是否执行时间回溯 100
confl-to-chrono 控制执行时间回溯的冲突数量 4000

DUP-LEARNTS OPTIONS

参数 含义 默认
lbd-limit 指定duplicates learnts检测的最大lbd(Literals Blocks Distance). 14
min-dup-app 指定加入DB的最小的learnts的数量. 2
dupdb-init 指定初始的最大duplicates DB的大小. 1000000

MAIN OPTIONS

参数 含义 默认
verb 详细的级别(0=silent, 1=some, 2=more) 1
pre 完全打开/关闭预处理. true
dimacs 如果指定了文件,预处理后就停止并将结果写入该文件.
cpu-lim 最大CPU时间,以秒计. INT32_MAX = 2147483647
mem-lim 最大内存,以MB计. INT32_MAX
drup 生成DRUP UNSAT证明. false
drup-file DRUP UNSAT证明的输出文件. ""

SIMP OPTIONS

参数 含义 默认
asymm 通过不对成分支缩小子句. false
elim 执行变量消除. true
rcheck 检查子句是否已被暗含.(运行成本高) false
simp-gc-frac 在简化过程中触发垃圾内存收集之前允许浪费的内存比例. 0.5
grow 允许一次变量消除所产生的子句数. 0
cl-lim 如果产生的分解长度超过该值,则不进行变量消除. -1指无限制 20
sub-lim 不检查长度大于该值的子句是否与其他子句有包含关系. -1指无限制 1000

HELP OPTIONS

参数 含义
help 输出帮助信息.
help-verb 输出详细的帮助信息.

使用示例

./lstech_maple [options] <input-file> <result-output-file>
1
./lstech_maple --help
1

注意:HELP OPTIONS前都要使用--,其余OPTIONS前加-,设定参数时的=前后都不能有空格。

求解CNF文件

./lstech_maple ./input.cnf
1
./lstech_maple -cpu-lim=1000 ./input.cnf ./output.cnf
1
最近更新: 05/16/2022