# clasp-3.1.x option parameter file with optimization options
# F: flag (yes = flag set; no = flag removed)
# S: skip (only to model constraints for the parameters; won't be given to
# clasp)
# :[String]: will not be parsed for clasp (only syntatic sugar for the parameter file)
# :[int]: alignment of complex parameters
# i : integer range
# l : logarithmic transformation (n > 0)
# ---
# --- PREPROCESSING - global options
@0:solver {clasp-3}[clasp-3] # REPLACE with your binary
@0:configuration {auto,frumpy,jumpy,tweety,handy,crafty,trendy}[auto] # default config for options not explicitly given
@0:F:learn-explicit{yes,no}[no]
@0:S:sat-prepro {yes,no}[yes]
@0:sat-prepro {0}[0]
@0:1:sat-prepro {1,2,3}[2]     # algo type
@0:2:sat-prepro [1,50][10]il   # iterations  
@0:3:sat-prepro [1,50][25]il   # cutoff    
@0:4:sat-prepro {0}[0]         # timelimit -> non deterministic 
@0:5:sat-prepro [0,100][0]i    # max percent frozen
@0:S:eqCond {yes,no}[no]       # Conditional,  ASP
@0:no:eq {0}[0]                # Conditional,  ASP
@0:eq [1,127][5]il             # Conditional,  ASP  
@0:F:backprop{yes,no}[yes]     # ASP
@0:F:eq-dfs{yes,no}[no]        # Conditional,  ASP
@0:F:no-gamma{yes,no}[no]      # only for disjunctive ASP
@0:trans-ext{all,choice,card,weight,integ,dynamic,no}[dynamic] # ASP
# --- OPTIMIZATION
#@1:enum-mode {bt, record, auto}[auto] # ASP
@1:0:opt-strategy {bb,usc} [bb]
@1:1:BB:opt-strategy {0,1,2,3}[0]
@1:1:USC:opt-strategy [0,7][1]i
@1:opt-heuristic {0,1,2,3}[0]  #
@1:F:restart-on-model {yes,no}[no]
@1:reset-restarts {0,1,2}[0]    
# --- HEURISTICS
@1:0:heuristic {Berkmin,Vmtf,Vsids,Unit,Domain,None}[Vsids]
@1:1:vsids:heuristic {75,85,92,93,94,95,96,97,98,99}[95] # Conditional - heuristic=vsids
@1:1:vmtf:heuristic [1,128][8]il                         # Conditional - heuristic=vmtf
@1:1:berk:heuristic {0,128,256,512,1024,2048}[0]         # Conditional - heuristic=berkmin
@1:F:init-moms {yes,no}[no]
@1:sign-def {0,1,2,4}[1]       # 3 random excluded (4 only for disjunctive ASP)
@1:F:sign-fix {yes,no}[no]
@1:score-other {0,1,2}[1]      # only for ASP
@1:score-res {1,2,3}[2]        # Conditional - only for lookback heuristics
@1:F:berk-huang {yes,no}[no]   # Conditional - heuristic=berkmin
@1:0:dom-mod {1,3,5}[1]       # Conditional - heuristic=Domain
@1:1:dom-mod {0,1,24}[0]      # Conditional - heuristic=Domain  
@1:save-progress[0,180][180]i   
@1:init-watches {0,2}[2]       # 1: random excluded
@1:1:lookahead {atom,body,hybrid,no}[no]  
@1:2:lookahead [1,2147483647][1]il   # Conditional - 1:lookahead != no
@1:rand-freq {0.0,0.01,0.02,0.05,0.1}[0.0]
@1:partial-check {0,10,20,30,40,50}[0] # only for disjunctive ASP
# --- RESTARTS
@1:0:restarts {F,L,D,x,+,no}[x]
@1:1:Simp:restarts [1,65535][128]il   # first parameter for all "normal" restarts
@1:1:Dyn:restarts [50,1000][100]il    # first parameter for "dynamic" restarts
@1:S:Luby:aryrestarts {1,2}[1]        # Conditional - restarts=L
@1:2:Luby:restarts [1,65535][1000]il  # Conditional - restarts=L
@1:S:Geo:aryrestarts {2,3}[2]         # Conditional - restarts=x
@1:2:Geo:restarts [1.0,2.0][1.5]      # Conditional - restarts=x
@1:3:Geo:restarts [1,65535][1]il      # Conditional - restarts=x
@1:S:Ari:aryrestarts {2,3}[2]         # Conditional - restarts=+
@1:2:Ari:restarts [1,65535][100]il    # Conditional - restarts=+
@1:3:Ari:restarts [1,65535][1]il      # Conditional - restarts=+
@1:S:Dyn:aryrestarts {2,3}[2]         # Conditional - restarts=D
@1:2:Dyn:restarts [0.5,1.0][0.7]      # Conditional - restarts=D
@1:3:Dyn:restarts [20,127][30]il      # Conditional - restarts=D
@1:F:local-restarts {yes,no}[no]
@1:S:counterCond {yes,no} [yes]    
@1:counter-restarts [1,127][3]il      # Conditional
@1:counter-bump [10,4096][10]il       # Conditional
# --- DELETION
@1:S:deletion {yes,no}[yes]
@1:deletion {no}[no]
@1:1:deletion {basic,sort,ipSort,ipHeap}[basic] # Algorithm
@1:2:deletion [10,100][75]i                     # Fraction to remove
@1:3:deletion {0,1,2}[0]                        # Score function
@1:1:del-init [1.0,50.0][3.0]
@1:2:del-init [10,1023][1000]il
@1:3:del-init [500,32767][9000]i
@1:del-max [32767,2147483647][250000]i
@1:del-estimate {0,1,2,3}[0]                    # only for ASP + PB
@1:del-on-restart [0,50][0]i
@1:1:del-glue [0,8][2]i
@1:2:del-glue {0,1}[0]
@1:0:del-cfl {F,L,x,+,no}[no]
@1:1:del-cfl [1,65535][128]il         # first schedule arg
@1:2:G:del-cfl [1.0,2.0][1.5]         # second arg if x
@1:2:A:del-cfl [1,65535][100]il       # second arg if +
@1:3:del-cfl [10,65535][10]il         # third arg if x or +
@1:S:del-grow {yes,no}[yes]           # Conditional: enable/disable grow strategy
@1:del-grow {0}[0]
@1:1:del-grow [1.0,5.0][1.1]      
@1:2:del-grow [0.0,100.0][20.0]   
@1:S:growSched {yes,no}[no]
@1:3:del-grow {F,L,x,+}[+]
@1:4:del-grow [1,65535][128]il         # first schedule arg
@1:5:G:del-grow [1.0,2.0][1.5]         # second arg if x
@1:5:A:del-grow [1,65535][100]il       # second arg if +
@1:6:del-grow [10,65535][10]il         # third arg if x or +
# --- MISC    
@1:0:strengthen {local,recursive,no}[local] # Conditional
@1:1:strengthen {0,1,2}[0]
@1:otfs {0,1,2}[2]
@1:update-lbd {0,1,2,3}[0]        
@1:F:update-act {yes,no}[no]      
@1:reverse-arcs {0,1,2,3}[1]
@1:S:contraction {yes,no}[no]
@1:No:contraction {no}[no]
@1:contraction [1,1023][250]il           # Conditional
@1:loops {common,distinct,shared,no}[no] # ASP
# --- CONDITIONS/CONSTRAINTS
# sat-prepro
@0:sat-prepro   | @0:S:sat-prepro in {no}
@0:1:sat-prepro | @0:S:sat-prepro in {yes}
@0:2:sat-prepro | @0:S:sat-prepro in {yes}
@0:3:sat-prepro | @0:S:sat-prepro in {yes}
@0:4:sat-prepro | @0:S:sat-prepro in {yes}
@0:5:sat-prepro | @0:S:sat-prepro in {yes}
@0:no:eq | @0:S:eqCond in {no}
@0:eq | @0:S:eqCond in {yes}
@0:F:eq-dfs | @0:S:eqCond in {yes}
# heuristic conds
@1:F:berk-huang|@1:0:heuristic in {Berkmin}
@1:score-res |@1:0:heuristic in {Berkmin,Vmtf,Vsids,Domain}
@1:0:dom-mod |@1:0:heuristic in {Domain}
@1:1:dom-mod |@1:0:heuristic in {Domain}
@1:1:vsids:heuristic | @1:0:heuristic in {Vsids,Domain}
@1:1:vmtf:heuristic  | @1:0:heuristic in {Vmtf}
@1:1:berk:heuristic  | @1:0:heuristic in {Berkmin}
@1:2:lookahead | @1:1:lookahead in {atom,body,hybrid}
# opt conds
@1:1:BB:opt-strategy | @1:0:opt-strategy in {bb}
@1:1:USC:opt-strategy| @1:0:opt-strategy in {usc}
# lookback conds
#... |@1:F:no-lookback in {no}
# restarts conds
@1:1:Simp:restarts | @1:0:restarts in {F,L,x,+} 
@1:S:Luby:aryrestarts | @1:0:restarts in {L}
@1:2:Luby:restarts | @1:0:restarts in {L}
@1:2:Luby:restarts | @1:S:Luby:aryrestarts in {2}
@1:S:Geo:aryrestarts | @1:0:restarts in {x}
@1:2:Geo:restarts | @1:0:restarts in {x}
@1:3:Geo:restarts | @1:0:restarts in {x}
@1:3:Geo:restarts | @1:S:Geo:aryrestarts in {3}
@1:S:Ari:aryrestarts | @1:0:restarts in {+}
@1:2:Ari:restarts | @1:0:restarts in {+}
@1:3:Ari:restarts | @1:0:restarts in {+}
@1:3:Ari:restarts | @1:S:Ari:aryrestarts in {3}
# dynamic restarts
@1:1:Dyn:restarts    | @1:0:restarts in {D}
@1:S:Dyn:aryrestarts | @1:0:restarts in {D}
@1:2:Dyn:restarts    | @1:0:restarts in {D}
@1:3:Dyn:restarts    | @1:0:restarts in {D}
@1:counter-restarts | @1:S:counterCond in {yes}
@1:counter-bump | @1:S:counterCond in {yes}
@1:counter-restarts | @1:0:restarts in {F,D,L,x,+}
@1:counter-bump | @1:0:restarts in {F,D,L,x,+}
# deletion
@1:deletion       | @1:S:deletion in {no}
@1:1:deletion     | @1:S:deletion in {yes}
@1:2:deletion     | @1:S:deletion in {yes}
@1:3:deletion     | @1:S:deletion in {yes}
@1:1:del-init     | @1:S:deletion in {yes}
@1:2:del-init     | @1:S:deletion in {yes}
@1:3:del-init     | @1:S:deletion in {yes}
@1:del-max        | @1:S:deletion in {yes}
@1:del-estimate   | @1:S:deletion in {yes}
@1:del-on-restart | @1:S:deletion in {yes}
@1:1:del-glue     | @1:S:deletion in {yes}
@1:2:del-glue     | @1:S:deletion in {yes}
@1:0:del-cfl      | @1:S:deletion in {yes}
@1:1:del-cfl      | @1:0:del-cfl in {F,L,x,+}
@1:2:G:del-cfl    | @1:0:del-cfl in {x}
@1:2:A:del-cfl    | @1:0:del-cfl in {+}
@1:3:del-cfl      | @1:0:del-cfl in {x,+}
@1:del-grow       | @1:S:del-grow in {no}
@1:1:del-grow     | @1:S:del-grow in {yes}
@1:2:del-grow     | @1:S:del-grow in {yes}
@1:S:growSched    | @1:S:del-grow in {yes}
@1:3:del-grow     | @1:S:growSched in {yes}
@1:4:del-grow     | @1:S:growSched in {yes}
@1:5:G:del-grow   | @1:3:del-grow in {x}
@1:5:A:del-grow   | @1:3:del-grow in {+}
@1:6:del-grow     | @1:3:del-grow in {x,+}
{@1:S:deletion=yes, @1:0:del-cfl=no, @1:S:del-grow=no}
{@1:S:deletion=no, @1:S:del-grow=yes}
# misc
@1:1:strengthen | @1:0:strengthen in {local,recursive}
@1:contraction | @1:S:contraction in {yes}
@1:No:contraction | @1:S:contraction in {no}
#Forbidden:
#{@1:F:restart-on-model=yes, @1:enum-mode=bt}

