基准场景下的模拟参数和奖励计算"Merge"
Simulation parameters and reward calculation in benchmark scenario "Merge"
我目前正在尝试从您之前的论文中重现我安装 flow 的一些结果。我运行以下问题,我不清楚实验中使用的确切参数以及论文中给出的结果。
对于 [1],我希望能够通过 运行ning stabilizing_highway.py 从您的存储库中重现结果。 (提交 "bc44b21",虽然我尝试 运行 当前版本,但找不到与我的问题相关的差异)。
我希望 [2] 中使用的合并方案相同。
我已经在 papers/code 中发现的差异是:
1) [2] (2) 中的奖励函数与 [1] (6) 中的不同:第一个在总和的第一部分使用最大值和归一化。为什么会有这种差异?
查看代码,我将其解释如下:
根据评估标志,您可以计算 (a) 奖励作为模拟中所有车辆的平均速度,或 (b) 作为 [2] 中给出的函数(没有速度的归一化项),但值为alpha(代码中的 eta2)= 0.1(参见 merge.py,第 167 行,compute_reward)。我找不到论文中给出的 alpha 参数,所以我假设使用了代码版本?
2) 我进一步阅读了代码,就好像您是通过迭代模拟中的所有车辆来计算它,而不仅仅是观察到的车辆?这对我来说似乎违反直觉,在部分观察到的环境中使用奖励函数通过使用来自完全观察到的状态信息的信息来训练代理......!?
3)这就引出了下一个问题:你最终想评估reward作为设置evaluate flag时给出的,即模拟中所有车辆的平均速度,如Table 1 [1]。这些值是通过 emissions.csv 文件中 "speed" 列的平均值计算出来的吗?您可以 运行 使用可视化工具生成?
4) 下一个问题是关于 [1] 和 [2] 图中的累积 return。在 [1] 中,图 3,在合并场景中,暨。 returns 最多 500 左右,而最大。 [2] 的值,图 5 约为 200000。为什么会出现这种差异?使用了不同的奖励功能?请提供两者的 alpha 值并验证哪个版本是正确的(论文或代码)?
5) 我还观察到 [1] Table 1,Merge1&2:ES 显然具有最高的平均速度值,但 TRPO 和 PPO 具有更好的累积 return。这是否表明用于评估的 40 次展示不足以获得具有代表性的平均值?或者最大化训练奖励函数并不一定能给出好的评估结果?
6) 其他一些参数我不清楚:
在 [1] 图 3 中,提到了 50 个 rollout,而 N_ROLLOUTS=20。你推荐使用什么?
在[1] A.2 Merge 中,T=400,而HORIZON=600,而[2] C.Simulations 中谈到了3600s。查看 运行ning visualizer_rllib.py 时产生的 Sumo 重播,模拟在时间 120.40 终止,这将与 600 的 HORIZON 相匹配,时间步长为 0.2s(此信息在 [ 2].)
所以我假设,对于这种情况,horizon 应该设置得比 1 和代码中的都高得多,而是设置为 18.000?
感谢任何提示!
韩国
M
[1] Vinitsky, E., Kreidieh, A., Le Flem, L., Kheterpal, N., Jang, K., Wu, F., ... & Bayen, A. M.(2018 年 10 月) ). mixed-autonomy 流量中强化学习的基准。在机器人学习会议中(第 399-409 页)
[2] Kreidieh、Abdul Rahman、Cathy Wu 和 Alexandre M. Bayen。 "Dissipating stop-and-go waves in closed and open networks via deep reinforcement learning." 2018 年第 21 届智能 T运行 运动系统国际会议 (ITSC),第 1475-1480 页。 IEEE, 2018.
抱歉回答延迟。
代码中描述的版本就是使用的版本。论文 [1] 是在论文 [2] 之后写的(尽管之前发表过一篇),我们添加了一个规范化项来帮助标准化跨问题的学习率。奖励函数是代码库中使用的函数;评估标志为真对应于实际计算流量统计(即速度),而它为假对应于我们在训练时使用的奖励函数。
正如您所指出的,在奖励函数中使用所有车辆是一个错误的假设,我们显然无法访问所有这些数据(尽管您可以想象我们能够读取它通过感应回路输出)。未来的工作将集中于消除这一假设。
你可以这样做。然而,我们只是通过运行用训练好的策略进行实验,存储每一步的所有车速,然后在实验结束时计算结果来计算它。
不幸的是,正如您所指出的,两个版本都是 "correct",不同之处在于 [2] 中添加了 "eta" 项,并且规范化了 [2] [1].
正如您所说,训练奖励函数与测试奖励函数不同,因此在评估标志关闭时表现良好的算法可能在评估标志开启时表现不佳.这是我们做出的选择,有单独的训练和测试功能。欢迎您使用列车时刻测试功能!
两者都应该有效;我怀疑代码库中的 N=20 是随着时间的推移逐渐出现的,因为人们发现 50 对于这种情况并不是必需的。然而,每个 RL 算法在更多的 rollouts 上做得更好,所以设置 N=50 不会有什么坏处。至于 horizon,据我在代码库中所知,答案是 sim_step 是 0.5,horizon 是 750,所以实验应该 运行 375 秒。
如有更多问题,请给通讯作者(我)发邮件!我很乐意帮助您更详细地解决这个问题。
我目前正在尝试从您之前的论文中重现我安装 flow 的一些结果。我运行以下问题,我不清楚实验中使用的确切参数以及论文中给出的结果。
对于 [1],我希望能够通过 运行ning stabilizing_highway.py 从您的存储库中重现结果。 (提交 "bc44b21",虽然我尝试 运行 当前版本,但找不到与我的问题相关的差异)。 我希望 [2] 中使用的合并方案相同。
我已经在 papers/code 中发现的差异是:
1) [2] (2) 中的奖励函数与 [1] (6) 中的不同:第一个在总和的第一部分使用最大值和归一化。为什么会有这种差异? 查看代码,我将其解释如下: 根据评估标志,您可以计算 (a) 奖励作为模拟中所有车辆的平均速度,或 (b) 作为 [2] 中给出的函数(没有速度的归一化项),但值为alpha(代码中的 eta2)= 0.1(参见 merge.py,第 167 行,compute_reward)。我找不到论文中给出的 alpha 参数,所以我假设使用了代码版本?
2) 我进一步阅读了代码,就好像您是通过迭代模拟中的所有车辆来计算它,而不仅仅是观察到的车辆?这对我来说似乎违反直觉,在部分观察到的环境中使用奖励函数通过使用来自完全观察到的状态信息的信息来训练代理......!?
3)这就引出了下一个问题:你最终想评估reward作为设置evaluate flag时给出的,即模拟中所有车辆的平均速度,如Table 1 [1]。这些值是通过 emissions.csv 文件中 "speed" 列的平均值计算出来的吗?您可以 运行 使用可视化工具生成?
4) 下一个问题是关于 [1] 和 [2] 图中的累积 return。在 [1] 中,图 3,在合并场景中,暨。 returns 最多 500 左右,而最大。 [2] 的值,图 5 约为 200000。为什么会出现这种差异?使用了不同的奖励功能?请提供两者的 alpha 值并验证哪个版本是正确的(论文或代码)?
5) 我还观察到 [1] Table 1,Merge1&2:ES 显然具有最高的平均速度值,但 TRPO 和 PPO 具有更好的累积 return。这是否表明用于评估的 40 次展示不足以获得具有代表性的平均值?或者最大化训练奖励函数并不一定能给出好的评估结果?
6) 其他一些参数我不清楚: 在 [1] 图 3 中,提到了 50 个 rollout,而 N_ROLLOUTS=20。你推荐使用什么? 在[1] A.2 Merge 中,T=400,而HORIZON=600,而[2] C.Simulations 中谈到了3600s。查看 运行ning visualizer_rllib.py 时产生的 Sumo 重播,模拟在时间 120.40 终止,这将与 600 的 HORIZON 相匹配,时间步长为 0.2s(此信息在 [ 2].) 所以我假设,对于这种情况,horizon 应该设置得比 1 和代码中的都高得多,而是设置为 18.000?
感谢任何提示! 韩国 M
[1] Vinitsky, E., Kreidieh, A., Le Flem, L., Kheterpal, N., Jang, K., Wu, F., ... & Bayen, A. M.(2018 年 10 月) ). mixed-autonomy 流量中强化学习的基准。在机器人学习会议中(第 399-409 页)
[2] Kreidieh、Abdul Rahman、Cathy Wu 和 Alexandre M. Bayen。 "Dissipating stop-and-go waves in closed and open networks via deep reinforcement learning." 2018 年第 21 届智能 T运行 运动系统国际会议 (ITSC),第 1475-1480 页。 IEEE, 2018.
抱歉回答延迟。
代码中描述的版本就是使用的版本。论文 [1] 是在论文 [2] 之后写的(尽管之前发表过一篇),我们添加了一个规范化项来帮助标准化跨问题的学习率。奖励函数是代码库中使用的函数;评估标志为真对应于实际计算流量统计(即速度),而它为假对应于我们在训练时使用的奖励函数。
正如您所指出的,在奖励函数中使用所有车辆是一个错误的假设,我们显然无法访问所有这些数据(尽管您可以想象我们能够读取它通过感应回路输出)。未来的工作将集中于消除这一假设。
你可以这样做。然而,我们只是通过运行用训练好的策略进行实验,存储每一步的所有车速,然后在实验结束时计算结果来计算它。
不幸的是,正如您所指出的,两个版本都是 "correct",不同之处在于 [2] 中添加了 "eta" 项,并且规范化了 [2] [1].
正如您所说,训练奖励函数与测试奖励函数不同,因此在评估标志关闭时表现良好的算法可能在评估标志开启时表现不佳.这是我们做出的选择,有单独的训练和测试功能。欢迎您使用列车时刻测试功能!
两者都应该有效;我怀疑代码库中的 N=20 是随着时间的推移逐渐出现的,因为人们发现 50 对于这种情况并不是必需的。然而,每个 RL 算法在更多的 rollouts 上做得更好,所以设置 N=50 不会有什么坏处。至于 horizon,据我在代码库中所知,答案是 sim_step 是 0.5,horizon 是 750,所以实验应该 运行 375 秒。
如有更多问题,请给通讯作者(我)发邮件!我很乐意帮助您更详细地解决这个问题。