Closed GJHall closed 4 years ago
Do you get the smac_run_data.json yourself? I don't get the smac_run_data.json from the code. What kind of structure is it?
Thank you for the reply Gezx.
No, I did not run any experiments to generate the graphs. I could not find any code in the repository to generate the graphs so I wrote my own code to extract the data from the provided json file.
I download the data from: [(https://github.com/oxwhirl/smac/releases/download/v1/smac_run_data.json)]
Default .json structure I am using: x_map IQL: test_battle_won_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,win_ratio]},test_return_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,mean_return]} VDN: test_battle_won_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,win_ratio]},test_return_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,mean_return]} QMIX: test_battle_won_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,win_ratio]},test_return_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,mean_return]} COMA: test_battle_won_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,win_ratio]},test_return_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,mean_return]} QTRAN: test_battle_won_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,win_ratio]},test_return_mean{Run_1,Run_2,Run_3,Run_4,Run_5:[time_step,mean_return]}
I obtain my graph from using the code I provide in the original comment on the json data I download from the smac repository. Hopefully this answers your question more fully.
In the SMAC paper I graphed the median and the 25-75% interval. Each run logs at slightly different timesteps, so you might need to do a small amount of linear interpolation between points in order to get the median (or mean) for the same timestep across runs (scipy has a function for this).
The data you're graphing is from the SMAC paper (https://arxiv.org/abs/1902.04043) which has a slightly different starcraft setup compared to the original QMIX paper (which that figure is from), and we also use a slightly different architecture for the mixing network that leads to much better results.
Yes, this makes sense.
I have been using Mendeley to archive papers I am reading so I missed the jump from February to December when y'all updated SMAC to version 1.0.
February 2019:
December 2019:
That is quite a jump in performance. Nice work.
I concur the December results match the .json file provided.
Thank you for your help and your time.
I have not been able to reproduce the graphs based on the .json file available. This is my first time working with json file types so I may be missing something obvious.
In the code, I read in smac_run_data.json and pull out the 5 runs based on a specific map and method. In this case, I use "QMIX" and "3s5z". To get the mean, I use np.mean on the 5 runs for their respective time steps. I then calculate the standard deviation using np.std and multiply by 2 to find my bounds for shading. I am using the 2*std as a ~95% confidence interval.
How did you graph smac_run_data.json?
Here is the code I wrote to graph it.
edit: adding graphs for 3s5z using QMIX this is the one I generated:![3s5z](https://user-images.githubusercontent.com/22969068/71930145-b1554b80-3160-11ea-802e-22e7b6451605.png)
this is the one listed in the QMIX publication (Figure 6):![qmix_fig_6](https://user-images.githubusercontent.com/22969068/71930410-304a8400-3161-11ea-870c-32ef1f162e67.PNG)