免费主题网站,杭州模板建站软件,手机开发者选项是干嘛用的,seo关键词优化是什么意思【学习之路】Multi Agent Reiforcement Learning框架与代码
Introduction
国庆期间#xff0c;有个客户找我写个代码#xff0c;是强化学习相关的#xff0c;但我没学过#xff0c;心里那是一个慌#xff0c;不过好在经过详细的调研以及自身的实力#xff0c;最后还是解…【学习之路】Multi Agent Reiforcement Learning框架与代码
Introduction
国庆期间有个客户找我写个代码是强化学习相关的但我没学过心里那是一个慌不过好在经过详细的调研以及自身的实力最后还是解决了这个问题。
强化学习的代码也是第一次接触在这个过程中也大概了解了多agent强化学习的大致流程因此记录这次代码和文章学习的过程还是十分有必要的。
要完成的文章是Flexible Formation Control Using Hausdorff Distance: A Multi-agent Reinforcement Learning Approach该文章没有开源。
以下均为个人简介如有不当还请见谅。
Timeline
从目标文章中查找类似文章最好是开源的 Decentralized Multi-agent Formation Control via Deep Reinforcement Learning这篇文章有算法的基本流程Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments这篇文章是目标文章所使用仿真环境的出处 查找多agent强化学习的开源代码 Multi-Agent-Deep-Deterministic-Policy-Gradients这是Multi-Agent Actor-Critic这篇文章里面所提方法代码的pytorch版本官方是tensorflow写的Reinforcement_Learning_Swarm这篇没有利用框架但通过它可以较好地理解整个流程multiagent-particle-envs这是算法的仿真环境同时也相当于一个框架 学习这些代码推荐先学习没有利用框架的也就是第二篇然后看用框架写的
Code Note
主要针对框架代码进行学习即multiagent-particle-envs 和Multi-Agent-Deep-Deterministic-Policy-Gradients后者使用了前者的环境。
整体流程
首先介绍一下训练的整体流程方便更好的理解
创建多agent的环境实现强化学习的模型Mactor-critic模型确定相关参数迭代次数学习率等循环 重置环境获得当前的observation根据observation输入到M中的actor网络这部分不作讲解得到action根据action更新当前的state获得reward更新的observation将这些state存入memory每隔一定迭代次数从memory里面采样一些state输入到模型M里面从而对M进行训练
环境代码
该项目下代码以及文件夹的功能如下 下面主要介绍enviroment文件下一些函数的作用。
首先是为每个agent分配action空间代码如下 然后是在进行下一步(step函数)的时候对每个agent的action进行更新代码如下 红框部分就是对每个agent的action进行设置action里面的u我个人认为是受力因为在后面的代码中存在利用u来计算受力的情况。
得到action后利用action对state进行更新该部分的代码在core.py里面的World类当中代码如下 其中利用u计算受力的代码为 为什么说p_force是受力呢可以看看integrate_state这个函数如下 得到agent的state之后就是计算rewardobservation等变量代码的调用在environment.py下 从make_env.py文件里面可以看出这些函数的相关实现在scenarios文件下的py文件里面
接下来看这些函数是怎么实现的以simle_spread.py文件为例
首先是reset_world函数它是对环境里面的物体进行初始化代码如下 其中p_pos是位置信息p_vel是速度信息c是交流信息。
然后is_collision函数判断是否发生碰撞代码如下 接着是reward函数如果你设计了自己的reward需要在这里实现
最后是observation函数如果你有自己的设计也要在这里实现
了解了以上这些对于一个简单的多agent强化学习的情况你也能够实现了。