To run the parity experiment:
$ bash parity.sh

This saves a .pkl file for each choice of hyperparameters (K, T) = (chunk_size, n_chunks). The .pkl file contains a Python dictionary of the following form.

>>> results = {
        'epoch_list': epoch_list,
        'js_work_list': js_work_list,
        'tw_work_list': tw_work_list,
        'train_progress_x': train_progress_x,
        'train_progress_y': train_progress_y,
        'chunk_size': chunk_size,
        'n_chunks': n_chunks,
        'epochs': epochs,
        'first_eval_epoch': first_eval_epoch
    }

Here, js_work_list is a list of pairs: for each epoch in epoch_list, it stores a pair (time, # steps) --- the average time and # of steps used by VGB with the value function trained for that epoch. Similarly, tw_work_list contains the data for ActionLevelRS.


The results for a particular chunk size K can be visualized with the following Python code:
>>> import vis_parity
>>> df = vis_parity.load_work_results(K)
>>> vis_parity.visualize(df, K)
>>> train_x, train_y = vis_parity.load_training_results(K)
>>> vis_parity.visualize_training(train_x, train_y) 
