为部署生成政策阻止
这个例子展示了如何生成一个政策阻止准备部署一个代理对象。你生成代理的政策火车TD3代理永磁同步电动机的控制,然后模拟来验证其性能。政策模拟验证性能。如果嵌入式安装编码器®,software-in-the-loop (SIL)仿真验证生成的代码运行的政策。
一般来说,工作流部署的强化学习策略通过仿真软件®模型是:金宝app
代理(参见培训火车TD3代理永磁同步电动机的控制)。
生成一个政策阻止从训练有素的代理。
RL代理块替换策略。
为代码生成配置模型。
模拟策略和验证策略的性能。
生成代码的政策,模拟生成的代码,并验证策略的性能。
部署到硬件测试。
在本例中,您做的步骤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