主要内容

为部署生成政策阻止

这个例子展示了如何生成一个政策阻止准备部署一个代理对象。你生成代理的政策火车TD3代理永磁同步电动机的控制,然后模拟来验证其性能。政策模拟验证性能。如果嵌入式安装编码器®,software-in-the-loop (SIL)仿真验证生成的代码运行的政策。

一般来说,工作流部署的强化学习策略通过仿真软件®模型是:金宝app

  1. 代理(参见培训火车TD3代理永磁同步电动机的控制)。

  2. 生成一个政策阻止从训练有素的代理。

  3. RL代理块替换策略。

  4. 为代码生成配置模型。

  5. 模拟策略和验证策略的性能。

  6. 生成代码的政策,模拟生成的代码,并验证策略的性能。

  7. 部署到硬件测试。

在本例中,您做的步骤2到步骤6。

负载电机参数随着训练TD3代理。

sim_data;
# # # Lq观察到是低于Ld。# # # # # #使用低这两个的Ld(内部变量)# # # # # #这两个的和更高的Lq(内部变量)来计算。# # # # # #的Lq观察是低于Ld。# # # # # #使用低这两个的Ld(内部变量)# # # # # #这两个的和更高的Lq(内部变量)来计算。# # #模型:‘maxon - 645106 sn:“2295588”p: 7 Rs: 0.2930 Ld: 8.7678 e-05 Lq: 7.7724 e-05客:5.7835 J: 8.3500 e-05 B: 7.0095 e-05 I_rated: 7.2600 QEPSlits: 4096 N_base: 3476 N_max: 4300 FluxPM: 0.0046 T_rated: 0.3471 PositionOffset: 0.1650模型:‘BoostXL-DRV8305 sn:“INV_XXXX”V_dc: 24 I_trip: 10 Rds_on: 0.0020 Rshunt: 0.0070 CtSensAOffset: 2295 CtSensBOffset: 2286 CtSensCOffset: 2295 ADCGain: 1 EnableLogic: 1 invertingAmp: 1 ISenseVref: 3.3000 ISenseVoltPerAmp: 0.0700 ISenseMax: 21.4286 R_board: 0.0043 CtSensOffsetMax: 2500 CtSensOffsetMin: 1500模型:‘LAUNCHXL-F28379D sn:“123456”CPU_frequency: 200000000 PWM_frequency: 5000 PWM_Counter_Period: 20000 ADC_Vref: 3 ADC_MaxCount: 4095 SCI_baud_rate: 12000000 V_base: 13.8564 I_base: 21.4286 N_base: 3476 T_base: 1.0249 P_base: 445.3845
负载(“rlPMSMAgent.mat”,“代理”);

生成政策阻止

打开模型模型用于培金宝app训TD3代理。

mdl_rl =“mcb_pmsm_foc_sim_RL”;open_system (mdl_rl);

打开包含的子系统RL代理块。

agentblk = mdl_rl +“/电流控制/ Control_System”+“/闭环控制/强化学习/ RL代理”;open_system (get_param (agentblk,“父”));

创建一个可部署模型,你取代RL代理块和一个政策块。

设置代理的UseExplorationPolicy属性为false,所以生成的政策需要贪婪的行动在每个时间步。生成政策块使用generatePolicyBlock并指定的名称包含政策MAT-file数据块。

%,以确保生成的政策是贪婪,% UseExplorationPolicy设置为false代理。使用ExplorationPolicy = false;%指定MAT-file名称策略数据帧=“PMSMPolicyBlockData.mat”;%删除的文件是否已经存在如果isfile(帧)删除(帧);结束%生成和政策数据块generatePolicyBlock(代理,MATFileName =帧)

或者,您可以生成策略块可以通过点击生成生成贪婪策略块从一块面具。使用open_system (agentblk)打开RL代理块面具,或者简单地双击。

模拟政策

对于这个示例,政策块已经取代了RL代理块内部pmsm_current_control模型。这个模型已经配置为代码生成,政策阻止加载培训政策PMSMPolicyBlockData.mat

mdl_current_ctrl =“pmsm_current_control”;open_system (mdl_current_ctrl);

获得政策的路径在仿真软件模型。金宝app

policyblk = mdl_current_ctrl +“/电流控制/ Control_System”+“/闭环控制/强化学习/政策”;

使用open_system (policyblk)打开政策块面具,或者简单地双击。

该模型mcb_pmsm_foc_sim_policy引用pmsm_current_control使用一个模型参考块。模拟顶层模型和情节的响应内部和外部控制回路。

设置的仿真数据检查(SDI)。

金宝appSimulink.sdi.clear;金宝appSimulink.sdi.setSubPlotLayout (3,1);

打开模型和得到的路径电流控制块。

mdl_policy =“mcb_pmsm_foc_sim_policy”;open_system (mdl_policy);current_ctrl_blk = mdl_policy +“/电流控制”;

临时更改模型和轻松地运行多个模拟这样的变化,金宝appSimulink.SimulationInput(金宝app模型)对象。

在= Si金宝appmulink.SimulationInput (mdl_policy);

模拟模型与当前控制器,仿真在正常模式下运行

在= setBlockParameter (current_ctrl_blk,“SimulationMode”,“正常”);out_sim = sim(的);

从最新的SDI运行得到结果。

runSim = 金宝appSimulink.sdi.Run.getLatest;

提取外部控制回路的信号。

speedSim = getSignalsByName (runSim,“Speed_fb”);speedRefSim = getSignalsByName (runSim,“Speed_Ref”);

同时绘制信号。

plotOnSubPlot (speedSim 1 1,真实);plotOnSubPlot (speedRefSim 1 1,真实);

提取内部控制回路的信号。

idSim = getSignalsByName (runSim,“id”);iqSim = getSignalsByName (runSim,“智商”);idRefSim = getSignalsByName (runSim,“id_ref”);iqRefSim = getSignalsByName (runSim,“iq_ref”);

情节提取的信号。

plotOnSubPlot (idSim 2 1,真实);plotOnSubPlot (idRefSim 2 1,真实);plotOnSubPlot (iqSim 3 1,真实);plotOnSubPlot (iqRefSim 3 1,真实);

打开仿真数据检查

金宝appSimulink.sdi.view;

验证为政策所生成的代码

如果嵌入式安装编码器,电流控制器模型参考可以在银模式下运行。银的电流控制器模式运行电流控制器模型生成代码,包括政策。

仿真软件金宝app模型配置只在Windows上,所以显示一条消息并停止执行时试图在不同的操作系统上运行。

如果~ ispc disp (“模型”“pmsm_current_control”“配置”+“SIL模拟只能在Windows系统。”)返回结束

模拟模型与当前控制器。

使银模式。

在= setBlockParameter (current_ctrl_blk,“SimulationMode”,“Software-in-the-loop”);

模拟模型。使用evalc捕捉从代码生成文本输出,可能以后检查。

txt_out = evalc (“out_sil = sim(中)”);

从最新的SDI运行得到结果。

runSIL = 金宝appSimulink.sdi.Run.getLatest;

提取在银模式下运行时的速度响应。

speedSIL = getSignalsByName (runSIL,“Speed_fb”);

比较硅反应模拟响应。硅的反应应该是接近正常模式的响应模拟。

speedSim。AbsTol = 1 e - 3;cr = 金宝appSimulink.sdi.compareSignals (speedSim.ID speedSIL.ID);

最大显示信号的差别。

cr.MaxDifference
ans = 5.0485 e-05

打开仿真数据检查

金宝appSimulink.sdi.view;

一旦你感到满意的政策模拟的性能,您可以使用一个适当的目标/硬件支持包部署硬件的政策。金宝app

另请参阅

功能

对象

相关的例子

更多关于