主要内容

火车定制等方面代理

这个例子展示了如何培养一个定制的线性二次调节等)代理控制离散时间线性系统建模在MATLAB®。的例子如何使用DDPG代理作为一个离散时间系统的最优控制器,明白了火车DDPG剂来控制双积分器系统

建立线性系统环境

这个例子的强化学习环境是一个离散时间线性系统。动态的系统

x t + 1 = 一个 x t + B u t

反馈控制律

u t = - - - - - - K x t

成本控制的目标是减少二次: J = t = 0 ( x t Qx、 t + u t 俄文 t )

在这个例子中,系统矩阵

一个 = ( 1 05年 0 05年 0 05年 0 05年 1 05年 0 05年 0 0 05年 1 05年 ] B = ( 0 1 0 0 2 0 1 0 5 0 0 0 0 5 ]

= (1.05,0.05,0.05,0.05,1.05,0.05,0,0.05,1.05);B = [0.1, 0, 0.2, 0.1, 0.5, 0, 0, 0, 0.5);

二次成本矩阵:

= ( 10 3 1 3 5 4 1 4 9 ] R = ( 0 5 0 0 0 0 5 0 0 0 0 5 ]

Q = [10 3 1; 3、5、4、1、4、9];R = 0.5 *眼(3);

这种环境下,奖励时间 t 是由 r t = - - - - - - x t x t - - - - - - u t R u t ,这是负的二次成本。因此,回报最大化最小化成本。初始条件设置随机的复位功能。

创建这个线性系统的MATLAB环境接口和奖励。的myDiscreteEnv通过定义定制函数创建一个环境一步重置功能。创建这样一个自定义环境的更多信息,见创建MATLAB环境中使用自定义函数

env = myDiscreteEnv (A, B, Q, R);

解决随机发生器再现性的种子。

rng (0)

创建自定义等代理

等方面的问题,给定的核反应能量函数控制增益 K 是二次,可以被定义为 K ( x , u ) = ( x u ] H K ( x u ] ,在那里 H K = ( H xx H H 用户体验 H uu ] 是一个对称正定矩阵。

最大化的控制律 K u = - - - - - - ( H uu ) - - - - - - 1 H 用户体验 x ,所以反馈增益 K = - - - - - - ( H uu ) - - - - - - 1 H 用户体验

矩阵 H K 包含 = 1 2 n ( n + 1 ) 不同的元素值, n 是州的数量的总和和输入的数量。表示 θ 向量包含这些 元素,非对角元素 H K 乘以2。的元素 θ 的参数自定义代理需要学习。

你可以表达核反应能量函数作为向量的内积 θ ϕ ( x , u ) : K ( x , u ) = θ ϕ ( x , u ) ,在那里 ϕ ( x , u ) 是一个向量的二次单项式由所有元素的组合 x u 。例如,看到 ( x , u ) 矩阵火车DDPG剂来控制双积分器系统

等代理始于一个稳定控制器 K 0 。得到一个初始稳定控制器,闭环系统的极点 一个 - - - - - - 汉堡王 0 在单位圆。

K0 =地方(A, B, [0.4, 0.8, 0.5]);

创建一个自定义代理,您必须创建一个子类rl.agent.CustomAgent抽象类。定制等代理的定义自定义子类LQRCustomAgent。有关更多信息,请参见创建自定义强化学习代理。创建自定义等代理使用 , R , K 0 。代理不需要信息系统矩阵 一个 B

代理= LQRCustomAgent (Q, R, K0);

对于这个示例,设置代理贴现因子。使用贴现未来的奖励,将折现系数设置为小于1的值。

代理。γ= 1;

由于线性系统有三种状态和三个输入,可学的参数的数量 = 21 。以确保代理的令人满意的性能,参数估计的数量 N p (数据点的数量是之前收集更新评论家)大于可学的参数数量的两倍。在本例中,值 N p = 45

代理。EstimateNum = 45;

得到良好的估计结果 θ ,你必须持续兴奋的探索模式应用于系统。在这个例子中,鼓励探索通过添加白噪声模型控制器输出: u t = - - - - - - Kx t + e t 。一般来说,探索模型依赖于系统模型。

火车代理

培训代理商,首先指定培训选项。对于这个示例,使用以下选项。

  • 运行每个训练集最多10集,每集持续最多50个时间步。

  • 在事件管理器对话框显示培训进展(设置情节命令行选项)和禁用显示(设置详细的选项)。

有关更多信息,请参见rlTrainingOptions

trainingOpts = rlTrainingOptions (MaxEpisodes = 10,MaxStepsPerEpisode = 50,Verbose = false,情节=“训练进步”);

火车代理使用火车函数。

trainingStats =火车(代理,env, trainingOpts);

模拟剂,与最优解进行比较

验证的性能训练有素的特工,在MATLAB环境中模拟它。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

simOptions = rlSimulationOptions (MaxSteps = 20);经验= sim (env,代理,simOptions);totalReward =总和(experience.Reward)
totalReward = -30.6482

你可以计算出最优解的使用等方面的问题dlqr函数。

[Koptimal P] = dlqr (A, B, Q, R);

给出了最优奖励 J 最优 = - - - - - - x 0 Px 0

x0 = experience.Observation.obs1.getdatasamples (1);Joptimal = x0 ' * P * x0;

计算误差之间的奖励训练等方面代理和优化等方面的解决方案。

rewardError = totalReward - Joptimal
rewardError = 5.0439 e-07

视图的历史标准训练之间的收益之间的差异等方面代理和优化等方面的解决方案。

%的数量获得更新len = agent.KUpdate;%初始化误差向量呃= 0 (len, 1);%填补元素i = 1: len犯错(i) =规范(agent.KBuffer{我}-Koptimal);结束%的对数误差向量的阴谋情节(log10(错),“b * - - - - - -”)标题(“获得不同的日志”)包含(“更新”)

图包含一个坐标轴对象。日志标题的坐标轴对象增益不同,包含数量的更新包含一个类型的对象。”width=

计算最终的标准误差反馈增益。

gainError =规范(代理。K - Koptimal)
gainError = 2.0203 e-11

总的来说,训练有素的特工找到一个解决方案,非常接近真正的优化等方面的解决方案。

另请参阅

功能

对象

相关的例子

更多关于