主要内容

创建Simul万博1manbetxink环境和培训代理

此示例显示如何在中转换PI控制器watertank万博1manbetxSimulink®模型的一个强化学习深度确定性策略梯度(DDPG) agent。在MATLAB®中训练DDPG代理的示例,请参见培训DDPG Agent控制双积分系统

水箱模型

本例的原始模型是水箱模型。目标是控制水箱中的水的水平。有关水箱型号的更多信息,请参见watertank仿万博1manbetx真软件模型(万博1manbetx仿真软件控制设计)

修改原型号,修改如下:

  1. 删除PID控制器。

  2. 插入RL Agent块。

  3. 连接观测向量 e dt e h T 哪里 h 是油箱的高度, e r - h , r 为参考高度。

  4. 设置奖励 奖励 10 | e | < 0 1 - 1 | e | 0 1 - 100 h 0 | | h 20

  5. 配置终止信号,以便在以下情况下停止模拟: h 0 h 20

得到的模型是rlwatertank.slx。有关此模型及其更改的详细信息,请参阅创建Simul万博1manbetxink强化学习环境

开放式系统(“rlwatertank”

创建环境接口

创建环境模型包括定义以下内容:

定义观察规范obsInfo和行为规范肌动蛋白

obsInfo=rlNumericSpec([3 1],...“LowerLimit”,[-inf-inf 0]',...“UpperLimit”,[inf]';obsInfo.Name=“观察”;obsInfo.说明=“综合误差、误差和测量高度”; numObservations=obsInfo.Dimension(1);actInfo=rlNumericSpec([1]);actInfo.Name=“流”;数值=活动尺寸(1);

构建环境接口对象。

env=rlSi万博1manbetxmulinkEnv(“rlwatertank”“RL水箱/RL代理”...obsInfo actInfo);

设置一个自定义重置函数,随机化模型的参考值。

env。ResetFcn = @(在)localResetFcn(的);

指定模拟时间Tf以及样本时间Ts在几秒钟内。

t = 1.0;Tf = 200;

修复随机生成器种子以获得再现性。

rng(0)

创建DDPG代理

给定观察和行动,DDPG代理使用批评家值函数表示法近似长期奖励。要创建批评家,首先创建一个包含两个输入、观察和行动以及一个输出的深度神经网络。有关创建深度神经网络值函数表示法的更多信息,请参阅创建策略和值函数表示

statePath = [featureInputLayer(numObservations,“正常化”“没有”“名字”“状态”) fullyConnectedLayer (50,“名字”“CriticStateFC1”) reluLayer (“名字”“CriticRelu1”)完全连接层(25,“名字”“CriticStateFC2”));actionPath = [featureInputLayer(numActions,“正常化”“没有”“名字”“行动”)完全连接层(25,“名字”“CriticActionFC1”));commonPath =[附加路径]“名字”“添加”) reluLayer (“名字”“CriticCommonRelu”)完全连接层(1,“名字”“临界输出”));criticNetwork = layerGraph ();criticNetwork = addLayers (criticNetwork statePath);criticNetwork = addLayers (criticNetwork actionPath);criticNetwork = addLayers (criticNetwork commonPath);criticNetwork = connectLayers (criticNetwork,“CriticStateFC2”“添加/三机一体”);criticNetwork = connectLayers (criticNetwork,“CriticActionFC1”“添加/in2”);

查看critical网络配置。

图绘制(criticNetwork)

Figure包含axes对象。axes对象包含graphplot类型的对象。

为使用的批评家表示指定选项rlRepresentationOptions

criticOpts = rlRepresentationOptions (“LearnRate”,1e-03,“GradientThreshold”1);

使用指定的深度神经网络和选项创建批评家表示。还必须指定批评家的操作和观察规范,这些规范可从环境界面获得。有关更多信息,请参阅rlQValueRepresentation

评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,“观察”, {“状态”},“行动”, {“行动”}, criticOpts);

根据观察结果,DDPG代理使用参与者表示来决定采取什么行动。要创建参与者,首先创建一个深度神经网络,有一个输入,一个观察,和一个输出,一个动作。

以与评论家相似的方式构造行动者。有关更多信息,请参见决定论呈现

actorNetwork=[featureInputLayer(numObservations,“正常化”“没有”“名字”“状态”)完全连接层(3,“名字”“actorFC”) tanhLayer (“名字”“actorTanh”)完全连接层(numActions,“名字”“行动”)];actorOptions=rlRepresentationOptions(“LearnRate”,1e-04,“GradientThreshold”1);演员= rlDeterministicActorRepresentation (actorNetwork obsInfo actInfo,“观察”, {“状态”},“行动”, {“行动”},动植物);

要创建DDPG代理,首先使用rlDDPGAgentOptions

agentOpts=rlDDPGAgentOptions(...“采样时间”Ts,...“TargetSmoothFactor”,1e-3,...“DiscountFactor”, 1.0,...“MiniBatchSize”, 64,...“ExperienceBufferLength”1 e6);agentOpts.NoiseOptions.Variance = 0.3;agentOpts.NoiseOptions.VarianceDecayRate = 1 e-5;

然后,使用指定的参与者表示、评论家表示和代理选项创建DDPG代理。有关更多信息,请参见RLDDPG试剂

代理= rlDDPGAgent(演员、评论家、agentOpts);

火车代理

要培训代理,请首先指定培训选项。对于本例,请使用以下选项:

  • 每次训练最多进行一次5000剧集。指定每个剧集最多持续一段时间装天花板(Tf / Ts)(即200)时间步长。

  • 在“事件管理器”对话框中显示培训进度(设置阴谋选项),并禁用命令行显示(设置详细的选项).

  • 停止训练时,代理收到的平均累积奖励大于80020连续集。此时,药剂可以控制水箱内的水位。

有关更多信息,请参见rlTrainingOptions

最大事件数=5000;最大步骤数=ceil(Tf/Ts);训练选项数=RL训练选项(...“最大集”,每集,...“MaxStepsPerEpisode”maxsteps,...“ScoreAveragingWindowLength”,20,...“冗长”假的,...“阴谋”“培训进度”...“StopTrainingCriteria”“平均向上”...“StopTrainingValue”, 800);

使用火车培训是一个计算密集型的过程,需要几分钟才能完成。为了在运行此示例时节省时间,请通过设置doTraining.自己训练代理人,设置doTraining真正的

doTraining = false;如果doTraining%培训代理人。trainingStats=列车(代理人、环境、列车员);其他的%加载示例的预训练代理。装载(“水箱DDPG.mat”“代理人”结束

验证训练有素的代理

通过仿真验证学习到的agent与模型的一致性。

simOpts = rlSimulationOptions (“MaxSteps”maxsteps,“StopOnError”“上”);经验= sim (env,代理,simOpts);

局部函数

函数in=localResetFcn(in)%随机化参考信号blk=sprintf(“RL水箱/所需水位\n”); h=3*randn+10;h<=0 | | h>=20H=3*randn+10;结束在= setBlockParameter(黑色,“价值”num2str (h));%随机化初始高度h=3*randn+10;h<=0 | | h>=20H=3*randn+10;结束黑色=“RL水箱/水箱系统/H”;在= setBlockParameter(黑色,“初始条件”num2str (h));结束

另请参阅

相关话题