starry-sky6688 / MARL-Algorithms

Implementations of IQL, QMIX, VDN, COMA, QTRAN, MAVEN, CommNet, DyMA-CL, and G2ANet on SMAC, the decentralised micromanagement scenario of StarCraft II
1.47k stars 283 forks source link

关于dyma网络 #7

Closed ynnnn closed 4 years ago

ynnnn commented 4 years ago

您好,您的代码写的非常清晰,我作为强化学习的初学者,能够根据您的注释轻松的理解代码。但是有一个地方我不太明白,想请教您一下。我现在在学习dyma-cl,我看您的代码在dyma里使用的是VDN-Net,请问这里可以换成QMIX-Net吗? 我尝试换了一下,但是将8m用于3m时,QMIX-Net的参数不匹配。这里的迁移是只能用VDN吗?不知道我的问题有没有阐述清楚,期待您的回复,谢谢

starry-sky6688 commented 4 years ago

可以换,dyan是单个agent的Q网络,和训练策略无关。你需要将./network里面的vdn_net.py换成qmix_net.py,还要把./policy里面的dyma.py换成qmix.py,qmix里面的eval_rnn要记着换成dyan。然后就是参数设置,我的参数按照VDN设置的,你得按照我最外层./common文件夹下的设置调整一下。VDN和QMIX的网络结构不同,所以你需要重新开始训练,不能直接加载模型了。

ynnnn commented 4 years ago

我按照您的说法做了修改,然后首先在8m上进行训练保存了model,再把8m的model复制到3m里,试图迁移训练,但是报错了。请问这是我哪里没有修改吗?还是网络结构还需要进一步修改呢? image

starry-sky6688 commented 4 years ago

Sorry,我忘了一点,qmix_net里有一个hypernet要输入状态,两个地图的状态维度是不同的,同时hypernet生成的参数维度与agent数量有关,这里不能直接迁移了,十分抱歉。

ynnnn commented 4 years ago

好的,谢谢您的讲解,我明白了