# 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 {path-to-clasp-binary}[path-to-clasp-binary] # 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,10,20,25,50}[10]   # iterations  
@0:3:sat-prepro {1,10,20,25,50}[25]   # cutoff    
@0:4:sat-prepro {0}[0]                # timelimit -> non deterministic 
@0:5:sat-prepro {0,50,100}[100]       # max percent frozen
@0:eq {0,1,2,3,5,10,-1}[3]            # ASP  
@0:F:backprop{yes,no}[yes]            # ASP
@0:F:eq-dfs{yes,no}[no]               # ASP
@0:F:no-gamma{yes,no}[no]             # 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,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}[1]
@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:heuristic {Berkmin,Vmtf,Vsids,Unit,None}[Vsids]
# --- 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 {0,4,8,16,32,64,128}[8]              # Conditional - heuristic=vmtf
@1:1:berk:heuristic {0,128,256,512,1024,2048}[0]         # Conditional - heuristic=berkmin
@1:S:vsids-progress {yes,no}[no]
@1:No:vsids-progress {no}[no]
@1:1:vsids-progress {80,82,84,85,86,87,88,90,91,92,93,94,95}[80]  # Conditional - heuristic=vsids
@1:2:vsids-progress {1,2,3,4,5,6,7,8,9,10}[1]
@1:3:vsids-progress {100,500,1000,2000,5000,10000,15000,30000}[5000]
@1:F:init-moms {yes,no}[no]
@1:F:nant {yes,no}[no]
@1:sign-def {0,1,2}[1]         # 3 random excluded
@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:F:vsids-acids {yes,no}[no]  # Conditional - heuristic=vsids|doman
@1:0:dom-mod [0,7][1]i        # Conditional - heuristic=Domain
@1:1:dom-mod {0,1,8,24}[0]    # Conditional - heuristic=Domain  
@1:save-progress{0,1,10,50,100,180,250}[180]
@1:init-watches {0,1,2}[2]
@1:1:lookahead {atom,body,hybrid,no}[no]  
@1:2:lookahead {1,10,50,100,2147483647}[1]   # Conditional - 1:lookahead != no
@1:rand-freq {0.0,0.01,0.02,0.05,0.1,0.2}[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,10,100,128,200,256,300,500,1000,1600,2000,5000,10000,16000,65535}[128]   # first parameter for all "normal" restarts
@1:1:Dyn:restarts {50,60,80,100,150,250,500,1000}[100]    # first parameter for "dynamic" restarts
@1:S:Luby:aryrestarts {1,2}[1]        # Conditional - restarts=L
@1:2:Luby:restarts {1,10,50,100,1000,16000,65535}[1000]  # Conditional - restarts=L
@1:S:Geo:aryrestarts {2,3}[2]         # Conditional - restarts=x
@1:2:Geo:restarts {1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0}[1.5]      # Conditional - restarts=x
@1:3:Geo:restarts {1,10,15,20,50,100,1000,16000,65535}[15]      # Conditional - restarts=x
@1:S:Ari:aryrestarts {2,3}[2]         # Conditional - restarts=+
@1:2:Ari:restarts {1,10,50,100,200,500,1000,1500,5000,10000,16000,65535}[100]    # Conditional - restarts=+
@1:3:Ari:restarts {1,10,15,20,50,100,1000,16000,65535}[50]      # Conditional - restarts=+
@1:S:Dyn:aryrestarts {2,3}[2]         # Conditional - restarts=D
@1:2:Dyn:restarts {0.5,0.6,0.66,0.7,0.75,0.8,0.9,1.0}[0.7]      # Conditional - restarts=D
@1:3:Dyn:restarts {20,25,32,40,50,60,100,127}[32]      # Conditional - restarts=D
@1:F:local-restarts {yes,no}[no]
@1:S:counterCond {yes,no} [yes]
@1:counter-restarts {1,3,5,7,9,11,13,19,27,31,39,43,57,67,93,127}[3]      # Conditional
@1:counter-bump {10,16,32,64,128,512,2013,4032,9973,13193}[9973]       # Conditional
@1:0:block-restarts {0,1000,2000,5000,7500,10000}[0]
@1:1:block-restarts {1.2,1.4,1.6,1.8,2.0}[1.4]
@1:2:block-restarts {0,5000,10000}[0]
# --- DELETION
@1:S:deletion {yes,no}[yes]
@1:deletion {no}[no]
@1:1:deletion {basic,sort,ipSort,ipHeap}[basic] # Algorithm
@1:2:deletion {10,20,30,40,50,60,66,70,75,80,90}[75]                     # Fraction to remove
@1:3:deletion {0,1,2}[0]                        # Score function
@1:1:del-init {1.0,2.0,3.0,5.0,10.0,20.0,30.0,50.0}[3.0]
@1:2:del-init {10,50,100,500,1023,2000}[1023]
@1:3:del-init {500,1000,2500,4600,5800,9000,15000,20000,32767}[9000]
@1:del-max {32767,50000,100000,250000,500000,1000000,2147483647}[250000]
@1:del-estimate {0,1,2,3}[0]                    # only for ASP + PB
@1:del-on-restart {0,10,20,33,50,66}[0]
@1:1:del-glue {0,2,3,4,5,6,7,8}[2]
@1:2:del-glue {0,1}[0]
@1:del-protect {0,8,16,24,30}[0]
@1:0:del-cfl {F,L,x,+,no}[no]
@1:1:del-cfl {1,10,100,128,200,256,300,500,1000,1600,2000,5000,10000,16000,65535}[2000]         # first schedule arg
@1:2:G:del-cfl {1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0}[1.5]         # second arg if x
@1:2:A:del-cfl {1,10,50,100,200,500,1000,1500,5000,10000,16000,65535}[100]       # second arg if +
@1:3:del-cfl {1,10,15,20,50,100,1000,16000,65535}[15]         # 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,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,3.0,4.0,5.0}[1.1]      
@1:2:del-grow {0.0,3.0,10.0,20.0,25.0,33.0,50.0,66.0,75.0,100.0}[20.0]
@1:S:growSched {yes,no}[no]
@1:3:del-grow {F,L,x,+}[+]
@1:4:del-grow {1,10,100,128,200,256,300,500,1000,1600,2000,5000,10000,16000,65535}[100]         # first schedule arg
@1:5:G:del-grow {1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0}[1.5]         # second arg if x
@1:5:A:del-grow {1,10,50,100,200,500,1000,1500,5000,10000,16000,65535}[100]       # second arg if +
@1:6:del-grow {1,10,15,20,50,100,1000,16000,65535}[50]         # third arg if x or +
# --- MISC    
@1:0:strengthen {local,recursive,no}[local] # Conditional
@1:1:strengthen {0,1,2}[0]
@1:2:strengthen {0,1}[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 {0,80,100,150,166,200,250,500,1000,2000,5000}[250]           # 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:F:eq-dfs | @0:eq in {1,2,3,5,10,-1}
# heuristic conds
@1:F:berk-huang  | @1:0:heuristic in {Berkmin}
@1:F:vsids-acids | @1:0:heuristic in {Vsids,Domain}
@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:S:vsids-progress  | @1:0:heuristic in {Vsids,Domain}
@1:No:vsids-progress | @1:S:vsids-progress in {no}
@1:1:vsids-progress  | @1:S:vsids-progress in {yes}
@1:2:vsids-progress  | @1:S:vsids-progress in {yes}
@1:3:vsids-progress  | @1:S:vsids-progress in {yes}
@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,+}
@1:1:block-restarts | @1:0:block-restarts in {1000,2000,5000,7500,10000}
@1:2:block-restarts | @1:0:block-restarts in {1000,2000,5000,7500,10000}
# 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-protect    | @1:update-lbd in {1,2,3}
@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:2: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}
