writer := "aim"
ewp_steps := "10000"
num_steps := "10001"
bpd := "5"
num_atoms := "100"
dim := "2"

# flags := ""
flags := "--nosave"

bayes_mdp agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "bayes-mdp" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_wasserstein \
        --trainer set:num_steps=30000 \
        --trainer set:eval_interval_steps=10000 \
        {{flags}}
        
bayes_mdp_all: (bayes_mdp "cat_td") (bayes_mdp "ewp_td") (bayes_mdp "cat_td_hybrid")

bayes_mdp_l1 agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "bayes-mdp-l1" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.l1_kernel \
        {{flags}}
        
bayes_mdp_l1_all: (bayes_mdp_l1 "cat_td") (bayes_mdp_l1 "ewp_td")

bayes_hybrid n:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "bayes-mdp-hybrid" \
        --trainer config:tabular_mvdrl.configs.cat_td_hybrid.base \
        --trainer set:ewp_steps={{n}} \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_wasserstein \
        --trainer set:num_steps=30000 \
        --trainer set:eval_interval_steps=40000 \
        {{flags}}

bayes_hybrid_all: (bayes_hybrid "1") (bayes_hybrid "100") (bayes_hybrid "500") (bayes_hybrid "1000") (bayes_hybrid "1500") (bayes_hybrid "2000") (bayes_hybrid "2500") (bayes_hybrid "3000") (bayes_hybrid "5000")

finite_horizon agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "finite-horizon" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.finite_horizon \
        {{flags}}
        
finite_horizon_all: (finite_horizon "cat_td") (finite_horizon "ewp_td")

finite_horizon_l1 agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "finite-horizon-l1" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.l1_kernel \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.finite_horizon \
        {{flags}}
        
finite_horizon_l1_all: (finite_horizon_l1 "cat_td") (finite_horizon_l1 "ewp_td")

rowland agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "rowland" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.extrapolated_rowland \
        {{flags}}
        
rowland_all: (rowland "cat_td") (rowland "ewp_td")

rowland_l1 agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "rowland-l1" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.l1_kernel \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.extrapolated_rowland \
        {{flags}}
        
rowland_l1_all: (rowland_l1 "cat_td") (rowland_l1 "ewp_td")

termrew agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "termrew" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.terminal_reward \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_cramer \
        --trainer set:num_steps={{num_steps}} \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.bins_per_dim\(bins_per_dim={{bpd}}\) \
        --trainer set:eval_interval_steps=5000 \
        {{flags}}

termrew_all: (termrew "ewp_td") (termrew "cat_projected_td")

termrew_l1 agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment "termrew-l1" \
        --trainer config:tabular_mvdrl.configs.{{agent}}.terminal_reward \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_cramer \
        --trainer fiddler:tabular_mvdrl.configs.{{agent}}.l1_kernel \
        --trainer set:num_steps={{num_steps}} \
        --trainer set:eval_interval_steps=5000 \
        {{flags}}

termrew_l1_all: (termrew_l1 "ewp_td") (termrew_l1 "cat_projected_td") 

bayes_beta agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment bayes-beta \
        --trainer config:tabular_mvdrl.configs.{{agent}} \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.beta_rewards \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_cramer \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.bins_per_dim\(bins_per_dim={{bpd}}\) \
        --trainer set:eval_interval_steps=100000 \
        {{flags}}
        
bayes_beta_all: (bayes_beta "ewp_td") (bayes_beta "cat_projected_td")

bayes_beta_multi agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment bayes-beta-{{dim}}d \
        --trainer config:tabular_mvdrl.configs.{{agent}}.base\(reward_dim={{dim}}\) \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.beta_rewards \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_cramer \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.num_atoms\(num_atoms={{num_atoms}}\) \
        --trainer set:eval_interval_steps=100000 \
        {{flags}}
        
termrew_multi agent:
    python -m tabular_mvdrl \
        --metric-writer {{writer}} \
        --experiment termrew-{{dim}}d \
        --trainer config:tabular_mvdrl.configs.{{agent}}.terminal_reward\(reward_dim={{dim}}\) \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.eval_by_cramer \
        --trainer set:num_steps={{num_steps}} \
        --trainer fiddler:tabular_mvdrl.configs.fiddlers.num_atoms\(num_atoms={{num_atoms}}\) \
        --trainer set:eval_interval_steps=5000 \
        {{flags}}