matlab/simlulink强化学习环境搭建与智能体训练方法

matlab/simlulink强化学习环境搭建与智能体训练方法

强化学习分为两个部分,智能体代理和与智能体交互的环境,即便代理可以用现成的模型调调参,但应用场景的数学模型依然是非常难搭建的部分,matlab和simulink的联合仿真无疑给Reinforcement Learning提供了一个非常强大的仿真平台,本篇以DDPG算法为例,详细讲讲matlab/simlulink强化学习环境搭建与智能体训练的具体步骤,及一些参数的设置和调整。

首先得有一个已经搭建好的simulink环境,至于simulink怎么用以及数学模型怎么建得要根据自己的应用场景和需要来解决,这部分不是这篇文章要解决的内容,我也没能力去给各位建模,第一步就自动默认各位的环境都已经搭好了。

simulink里需要进行的操作

接着在simulink里加入RL agent 模块,根据环境需要对一个输出action和三个输入reward、observation、stop signal进行连接,这里输入输出最好都用simulink里的块进行连接,有助于提高训练速度。observation数值太大的话最好在simulink里的相关模块里归一化,不然你会发现不管奖励函数怎么写,算法参数怎么调,无论代理训练多少次依然是人工智障。stop signal在设置的时候没什么好说的,尽量别太让训练过程结束的太早或者太晚,过早可能导致代理没来得及对失败经验进行尝试就结束了,过晚的话浪费时间。有关于reward函数怎么写的问题一般会成为整个强化学习过程最核心也是最难的部分,可以说奖励函数的写法是根本没有一个系统的方法或者评判标准的,如果说真的有一个评判标准的话我觉得能快速训练出来智能体的就是好函数,训练不出来必然就有问题。很多人们自以为很好的奖励函数依然会被智能体抓到漏洞,要么在局部最优里疯狂迭代,要么就会导致学习梯度过大,代理只输出边界值。总结一下奖励函数的建立方法就是要根据具体情况无中生有,随机应变,条条大路通罗马。

simulink里的RL代理连接好了大概就跟下面差不多:
在这里插入图片描述

主程序部分
首先打开环境

open_system('XXXXXXXXXX')

然后对观测值和代理输出值的边界和维度进行定义

numObs = 12;
obsInfo = rlNumericSpec([numObs 1],...
    'LowerLimit',[-inf -inf -inf -inf -inf -inf -inf -inf -inf -inf -inf -inf ]',...
    'UpperLimit',[ inf inf inf inf inf inf inf inf inf inf inf inf]');
obsInfo.Name = 'observations';
obsInfo.Description = 'anchor,anchor error, w,w error';
numObservations = obsInfo.Dimension(1);

numAct =3;
actInfo = rlNumericSpec([numAct 1]);
actInfo.Name = 'Torque';
numActions = actInfo.Dimension(1);

定义强化学习环境和智能体

env = rlSimulinkEnv('XXXXXXXXXX','XXXXXXXXXX/RL Agent',...
	obsInfo,actInfo);

自定义环境初始化函数,函数在最后

env.ResetFcn = @localResetFcn;

定义仿真时间和智能体行动时间步长

Ts = 5.0;
Tf = 3000;

确定随机种子,保证可复现性

rng(0)

创建DDPG智能代理
创建critic网络

criticLayerSizes = [400 300];
statePath = [
	imageInputLayer([numObs 1 1],'Normalization','none','Name', 'observation')
	fullyConnectedLayer(criticLayerSizes(1), 'Name', 'CriticStateFC1', ... 
		'Weights',2/sqrt(numObs)*(rand(criticLayerSizes(1),numObs)-0.5), ...
		'Bias',2/sqrt(numObs)*(rand(criticLayerSizes(1),1)-0.5))
	reluLayer('Name','CriticStateRelu1')
	fullyConnectedLayer(criticLayerSizes(2), 'Name', 
  • 33
    点赞
  • 237
    收藏
    觉得还不错? 一键收藏
  • 44
    评论
MATLAB中搭建强化学习环境可以通过使用MATLAB强化学习工具箱来实现。强化学习工具箱提供了一套完整的RL工作流程,使代理算法的更改变得非常无缝。在MATLAB生态系统中,强化学习工具箱的功能非常丰富,可以满足大多数用户的需求。使用强化学习工具箱,您可以抽象掉所有的实现细节,从而提供一个无缝的验。如果您已经熟悉MATLAB,并且想要尝试强化学习,我建议您尝试一下MATLAB强化学习工具箱。您可以从MATLAB的官方网站上找到强化学习工具箱的文档,以了解更多详细信息和使用示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [在 MATLAB 中简化强化学习工作流程 在 MATLAB 中解决 OpenAI 环境](https://blog.csdn.net/code2day/article/details/129171276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [matlab/simlulink强化学习环境搭建智能训练方法](https://blog.csdn.net/weixin_43942325/article/details/107907923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值