#!/usr/bin/bash

# Every test has same number of actions/state and max_successors/action
number_of_actions=(10)
max_number_successors=(10)

output_folder="./layered"
generator=`realpath ./generate_layered`

function main {
  # Compile the generator
  make clean > /dev/null
  make > /dev/null

  # Generate the requested domains (var_states, var_layers)
  generate_domains "$1"
}

function generate_domains {
  mkdir -p $output_folder/$1
  rm -f $output_folder/$1/*.mdp # in case the folder already existed and was not empty

  if [[ $1 == "var_states" ]]; then
    echo "generate_domains: variable states and fixed layers was chosen"
    template_name='${n100000}.mdp'
    number_of_states=(100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000)
    number_of_layers=(10)
  elif [[ $1 == "var_layers" ]]; then
    echo "generate_domains: fixed states and variable layers was chosen"
    template_name='${n_l}.mdp'
    number_of_states=(1000000)
    number_of_layers=(1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384)
  else
    echo "generate_domains: no valid argument, using default values"
    template_name='${n}-${n_l}-${n_a}-${n_s}.mdp'
    number_of_states=(100)
    number_of_layers=(1 10 50)
  fi

  cd "$output_folder/$1"
  for n in ${number_of_states[*]}; do
    n100000=$((n / 100000))
    for n_l in ${number_of_layers[*]}; do
      if [[ $n_l -gt $n ]]; then
        continue
      fi
      for n_a in ${number_of_actions[*]}; do
        for n_s in ${max_number_successors[*]}; do
          echo "Generating MDP for n=$n, n_l=$n_l, n_a=$n_a, n_s=$n_s"
          output_name=`eval "echo ${template_name}"`
          $generator $n $n_l $n_a $n_s > "$output_name"
        done
      done
    done
  done
  cd > /dev/null
}

main "$@"
