1 | :- module(dpllt_settings, [restart_policy/1, | |
2 | static_syntax_analysis/1, | |
3 | static_smt_symmetry_breaking/1, | |
4 | luby_restart_unit_length/1, | |
5 | glucose_restart_recent_lbds_threshold/1, | |
6 | glucose_restart_margin_ratio/1, | |
7 | glucose_restart_trail_threshold/1, | |
8 | glucose_restart_stack_avg_factor/1, | |
9 | discard_clause_greater_lbd/1, | |
10 | discard_learned_clauses_frequency_constant/1, | |
11 | discard_learned_clauses_constant_factor/1, | |
12 | decision_heuristic/1, | |
13 | bump_scores_for_bj_clause_only/1, | |
14 | vsids_decay_value/1, | |
15 | vsids_decay_frequency/1, | |
16 | evsids_f_value/1]). | |
17 | ||
18 | :- use_module(probsrc(preferences), [get_preference/2]). | |
19 | :- use_module(probsrc(module_information), [module_info/2]). | |
20 | ||
21 | :- module_info(group, dpllt). | |
22 | :- module_info(description,'This module provides settings for the DPLL(T) solver.'). | |
23 | ||
24 | %:- dynamic static_smt_symmetry_breaking/1, static_syntax_analysis/1. | |
25 | ||
26 | static_syntax_analysis(X) :- get_preference(dpllt_perform_static_analysis,X). | |
27 | static_smt_symmetry_breaking(X) :- get_preference(dpllt_perform_symmetry_breaking,X). | |
28 | %% Random Restarts | |
29 | % Available restart policies: luby, glucose. | |
30 | restart_policy(glucose). | |
31 | % The length of a unit in the Luby sequence. | |
32 | luby_restart_unit_length(32). | |
33 | % The amount of conflict clauses to be considered "recent" in Glucose restarts. Small value leads to more restarts. | |
34 | glucose_restart_recent_lbds_threshold(50). | |
35 | % Do restart if defined proportion of recent LBDs average is greater than total average. Large value leads to less restarts. | |
36 | glucose_restart_margin_ratio(0.8). | |
37 | % The amount of conflicts to enable possible emptying of the recent LBD queue to favor SAT instances too. | |
38 | glucose_restart_trail_threshold(5000). | |
39 | % For factor f, the last stack size needs to be larger than f * recentSizes.avg() to empty the recent LBD queue. | |
40 | glucose_restart_stack_avg_factor(1.4). | |
41 | %% | |
42 | ||
43 | %% Reducing Learned Clauses | |
44 | % Maximum LBD score for learned clauses. | |
45 | % Each learned clause is propagated at least once independent of its actual LBD score. | |
46 | discard_clause_greater_lbd(5). | |
47 | % Remove half of the learned clauses every "frequency_constant + constant_factor * x" conflicts. | |
48 | discard_learned_clauses_frequency_constant(20000). | |
49 | discard_learned_clauses_constant_factor(500). | |
50 | %% | |
51 | ||
52 | %% Decision Heuristic | |
53 | % Available decision heuristics: vsids, evsids. | |
54 | decision_heuristic(evsids). | |
55 | bump_scores_for_bj_clause_only(true). | |
56 | % Decision score s is updated by s/v. | |
57 | vsids_decay_value(2). | |
58 | % Amount of found conflicts when to decay scores. | |
59 | vsids_decay_frequency(128). | |
60 | % A value between 0 and 1. Decision score is updated by s + f^(-k). | |
61 | evsids_f_value(0.9). | |
62 | %% |