Naive
refers to BBNN in the paper.
ControlAffine
refers to SMM-C in the paper.
- Install GNU Parallel.
On Ubuntu it should be as easy as:
sudo apt install parallel
- Setup julia project
julia --project --color=yes -e 'using Pkg; Pkg.instantiate(); Pkg.build(); Pkg.precompile()'
- Dump validation data
parallel -j4 ./dumpvaliddata.jl ::: furuta cartpole acrobot doublecartpole ::: "runs/"
parallel -j5 ./train.jl \
::: "ControlAffine" "Naive" \
::: furuta \
::: 8192 4096 2048 1024 512 256 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "Naive" \
::: furuta \
::: 16384 32768 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "ControlAffine" "Naive" \
::: cartpole \
::: 8192 4096 2048 1024 512 256 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "Naive" \
::: cartpole \
::: 16384 32768 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "ControlAffine" "Naive" \
::: acrobot \
::: 8192 4096 2048 1024 512 256 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "Naive" \
::: acrobot \
::: 16384 32768 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "ControlAffine" \
::: doublecartpole \
::: 65536 16384 8192 4096 2048 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
parallel -j5 ./train.jl \
::: "Naive" \
::: doublecartpole \
::: 262144 131072 65536 32768 16384 8192 4096 2048 \
::: 42 1234 1339 178969 1234321 \
::: 2000 \
::: 256 \
::: "runs/"
./scripts/get_best_validation_error.py <path to logs> > val_error.json
./evaluate.jl <Naive or ControlAffine> <taskname> cost <path to `best.th` generated from training>
./scripts/collect_val_error.py <path containing dumped val_error.json>
./scripts/collect_control_costs.py <path containing dumped cost.json>