Traffic-Alpha / TSC-DelayLight

Scalable Reinforcement Learning Framework for Traffic Signal Control under Communication Delays
2 stars 0 forks source link

关于aiolos第三方库 #1

Open WilliamBoomho opened 5 months ago

WilliamBoomho commented 5 months ago

您好,我最近想学习复现一下你们“TSC-DaelayLight”的代码,但是aiolos这个库我并没有找到,可能这个是你们私有库的原因。请问如果允许的话能否给我的邮箱发一份呢?仅仅作为学习使用,万分感激!(邮箱:xss13956229268@163.com)

pangay commented 5 months ago

Aiolos is not open source, but we have a more powerful TransSimHub https://github.com/Traffic-Alpha/TransSimHub with detailed documentation, which supports training for reinforcement learning and can be migrated over directly. You can contact me directly if you have any questions, thank you for your attention!

WilliamBoomho commented 4 months ago

您好,首先非常感谢您对我问题的解答,我也注意到您更新了“TSC-DaelayLight”中train.py代码,我尝试模仿着把其它带有aiolos库的修改了一下,但是对于makeENV.py中第23行的from aiolos.AssembleEnvs.ChosePhaseEnv import ChoosePhaseSUMOEnvironment,我不确定和TransSimHub中哪一个能对应上,我尝试使用from tshub.tshub_env.tshub_env import TshubEnvironmen去替代,但是出现了"AttributeError: 'TshubEnvironment' object has no attribute 'sumo'"的问题,请问您能解答一下吗,万分感激!

pangay commented 4 months ago

https://github.com/wmn7/Universal-Light 您好,您可以现参考这个库,这个库已经用[TransSimHub]实现了训练。 后续我会把这个框架,也使用 TransSimHub实现。 from aiolos.AssembleEnvs.ChosePhaseEnv import ChoosePhaseSUMOEnvironment, 是说 在aiolos 使用 ChoosePhase 这个动作类型。 在 TshubEnvironment 是直接把动作输入的。https://github.com/Traffic-Alpha/TSC-HARLA/blob/main/utils/make_tsc_env.py 可以参考这个 第 21 行,tls_action_type 是对 动作类型进行输入

WilliamBoomho commented 4 months ago

您好,https://github.com/Traffic-Alpha/TSC-DelayLight/blob/main/train_predict.py 我在运行这个训练代码时,出现了以下错误:AssertionError: The algorithm only supports (<class 'gymnasium.spaces.box.Box'>, <class 'gymnasium.spaces.discrete.Discrete'>, <class 'gymnasium.spaces.multi_discrete.MultiDiscrete'>, <class 'gymnasium.spaces.multi_binary.MultiBinary'>) as action spaces but 0 was provided,在网上搜索了其它类似的问题之后,我猜想问题应该出现在gymnasium和stable_baselines3的版本上,目前我所用的环境版本为:gym==0.26.2;gymnasium==0.28.1;stable-baselines3==2.0.0a1。请问能提供一下您运行代码时的环境版本吗?或者您对这个问题有更加好的见解也感谢提出,期待您的回复

pangay commented 4 months ago

您好我使用的包的版本如下 gym==0.21.0 ;gymnasium==0.27.1 ;stable-baselines3==1.7.0 。 其中 https://github.com/Traffic-Alpha/TSC-DelayLight/blob/main/train_predict.py 是用于收集预测模型数据的,如果您是想训练强化学习模型,可以直接运行 https://github.com/Traffic-Alpha/TSC-DelayLight/blob/main/train.py。 后续我会对代码更新,以便使用

WilliamBoomho commented 4 months ago

非常感谢您及时的回复,https://github.com/Traffic-Alpha/TSC-DelayLight/blob/main/train.py 我也尝试过运行,但是在第60行“action_space=eval_env.action_space.n”出现了问题如下:
“action_space=eval_env.action_space.n AttributeError: 'int' object has no attribute 'n' ” 我debug了一下,eval_env应该是VecNormalize类型的对象,我也十分困惑,因为看您github中其它项目并没有这样类似的使用可以参考了。目前我已经把环境版本和您保持一致,请问您之前遇到过类似的问题吗

pangay commented 4 months ago

我有遇到过类似问题,您可以看一下变量 eval_env.action_space,有可能把 n 去掉就可以,这个原因可能是stable-baselines版本更新了。 “action_space=eval_env.action_space.n” 的作用是定义动作空间的大小,因为这个项目里的环境是多个,所以是从环境中读取的action_space大小。