Errror:未定义的函数“getActionInfo”“结构”类型的输入参数。

13个视图(30天)
这将工作之前。现在我得到一个错误当我试着测试RL代理。这是数据类型的预期的问题吗?
我提供的错误消息以及属性代理操作和观察对象。
错误消息 - > 未定义的函数“getActionInfo”“结构”类型的输入参数。
代理和观察对象:
> > DDPG_agent.agent.getActionInfo
rlNumericSpec属性:
LowerLimit: 0
UpperLimit: 100
名称:(0×0的字符串)
描述:(0×0的字符串)
维度:[1]
数据类型:“双”
> > DDPG_agent.agent.getObservationInfo
rlNumericSpec属性:
LowerLimit(3×1双):
UpperLimit(3×1双):
名称:“观察”
描述:“流控制,误差,误差积分”
维度(3 - 1):
数据类型:“双”
2的评论
Emmanouil Tzorakoleftherakis
Emmanouil Tzorakoleftherakis 2021年9月13日
在上面的代码中错误在哪里?我没有看到一个错误当你叫getActionInfo。你能附上垫文件所需的变量复制呢?你用的也释放?

登录置评。

答案(2)

Rajesh Siraskar
Rajesh Siraskar 2021年9月22日
你好Emmanouil
谢谢你的帮助。错误不是在代码中 运行的很好。这是 模拟运行产生错误 。我试图添加下面的框图和原始的模拟输出。
仿真(时间:2秒)= = = = = =
错误:错误“sm_DDPG_PPO_Experimental_Setup / DDPG_Sub_System / DDPG_Agent”:未能评估面具初始化命令。
引起的由:
MATLAB系统块sm_DDPG_PPO_Experimental_Setup / DDPG_Sub_System / DDPG_Agent / AgentWrapper的错误发生在调用“getSampleTime”“rl.simulink.blocks.AgentWrapper”的方法。万博1manbetx抛出的错误
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ AgentWrapper.m + rl \ +仿真软件\ +块”第152行
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ AgentWrapper.m + rl \ +仿真软件\ +块”第202行
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ AgentWrapper.m + rl \ +仿真软件\ +块”第257行
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ agentmaskinit.m + rl \ +仿真软件\ +块”11”。
未定义的“getActionInfo”函数输入参数类型的“结构”。
错误:错误“sm_DDPG_PPO_Experimental_Setup / PPO_Sub_System / PPO_Agent”:未能评估面具初始化命令。
引起的由:
MATLAB系统块sm_DDPG_PPO_Experimental_Setup / PPO_Sub_System / PPO_Agent / AgentWrapper的错误发生在调用“getSampleTime”“rl.simulink.blocks.AgentWrapper”的方法。万博1manbetx抛出的错误
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ AgentWrapper.m + rl \ +仿真软件\ +块”第152行
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ AgentWrapper.m + rl \ +仿真软件\ +块”第202行
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ AgentWrapper.m + rl \ +仿真软件\ +块”第257行
“C: \ Program Files \ MATLAB工具箱\ R2020b \ \ rl万博1manbetx \ rl \仿真软件\ \ agentmaskinit.m + rl \ +仿真软件\ +块”11”。
未定义的“getActionInfo”函数输入参数类型的“结构”。
1评论
Emmanouil Tzorakoleftherakis
Emmanouil Tzorakoleftherakis 2021年9月22日
谢谢。很难查明错误没有再生产模型,但似乎你使用结构体你不应该的地方。你能doublecheck吗?

登录置评。


Rajesh Siraskar
Rajesh Siraskar 2021年9月23日
Emmanouil ——这是低于我的完整的“仿真”代码。
基本上我已经训练了两个模型使用PPO和DDPG,我试图运行并行比较他们的“轨迹”。
(以防别人感兴趣的我 和Git c ode位置 )
非常感谢 Emmanouil——你总是很有帮助
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%阀控制的强化学习。V.5.4: 11-Mar。11点
%作者:Rajesh Siraskar
%的电子邮件:rajeshsiraskar@gmail.com;siraskar@coventry.ac.uk
%大学:英国考文垂大学MTech汽车工程
%
%代码:实验和验证一个训练有素的RL控制器。比较
%对PID控制。
%这段代码伴随篇题为“控制阀门的强化学习”
% https://arxiv.org/abs/2012.14668
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%
%尝试训练RL控制器/代理,启动sm_Experimental_Setup仿真软件模型”。万博1manbetx基金”,然后确保
%变量代码文件中设置正确的code_Experimental_Setup。m和excute代码。
%变量设置:
% 1。“MODELS_PATH”:指向你的基地路径存储模型。默认的模型/
% 2。“VALVE_SIMULATION_MODEL = sm_Experimental_Setup”:指向仿真软件对PID模万博1manbetx型用于验证和试验不同的噪声源等。
% 3。Grade_V PRE_TRAINED_MODEL_FILE =。垫”:Pre-trained模型(RL控制器)进行测试或验证。名为“Grade_V.mat”的例子展示了一个模型
% 4。“TIME_DELAY”、“fS”(粘滞作用)和“fD”(动态摩擦):代表物理参数的变量。设置这些值,你想要的
%测试RL控制器。
%建议分级学习阶段:
% - GRADE_I: TIME_DELAY = 0.1;fS = 8.4/10;fD = 3.5243/10
% - GRADE_II: TIME_DELAY = 0.5;fS = 8.4/5;fD = 3.5243/5
% - GRADE_III: TIME_DELAY = 1.5;fS = 8.4 / 2;fD = 3.5243 / 2
% - GRADE_IV: TIME_DELAY = 1.5;fS = 8.4/1.5;fD = 3.5243/1.5
% - GRADE_V: TIME_DELAY = 2.0, fS = 8.4/1.5;fD = 3.5243/1.5
% - GRADE_VI: TIME_DELAY = 2.5, fS = 8.4/1.0;fD = 3.5243/1.0
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%清除所有;
警告(“关闭”,“所有”);
% %设置路径
MODELS_PATH =“模型\”;
VALVE_SIMULATION_MODEL =“sm_DDPG_PPO_Experimental_Setup”;%模万博1manbetx型实验电路
DDPG_AGENT =“/ DDPG_Sub_System / DDPG_Agent”;
PPO_AGENT =“/ PPO_Sub_System / PPO_Agent”;
% %分级学习模型
PRE_TRAINED_DDPG_MODEL_FILE =“DDPG_TEST.mat”;
PRE_TRAINED_PPO_MODEL_FILE =“PPO_TEST.mat”;
%物理系统参数。使用迭代。Suceessively增加
%的难度训练任务和应用分级学习培训代理
TIME_DELAY = 2.5;%的时间延迟过程由阀门控制
fS = 8.4000;%阀动态摩擦
fD = 3.5243;%阀静态摩擦
%代理阶段进行测试
DDPG_MODEL_FILE = strcat (MODELS_PATH PRE_TRAINED_DDPG_MODEL_FILE);
PPO_MODEL_FILE = strcat (MODELS_PATH PRE_TRAINED_PPO_MODEL_FILE);
%时间步。Tf / Ts给出了仿真万博1manbetx软件的仿真时间
t = 1.0;% Ts:样品时间(秒)
Tf = 200;% Tf:仿真长度(秒)
ACCEPTABLE_DELTA = 0.05;
%负载从pre-trained代理经验
sprintf (”——负载DDPG模型:% s的DDPG_MODEL_FILE)
sprintf (”——负载PPO模型:% s的PPO_MODEL_FILE)
DDPG_agent =负载(DDPG_MODEL_FILE,“代理”);
PPO_agent =负载(PPO_MODEL_FILE,“代理”);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%对模型的仿真验证了代理
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%定义观察和操作空间
NUMBER_OBSERVATIONS = 3;
%的观察向量
% (1)U (k)
%(2)误差信号
%(3)误差积分
obsInfo = rlNumericSpec (1 [3],
“LowerLimit”,(负负0]”,
“UpperLimit”,正正正]);
obsInfo。Name =“观察”;
obsInfo。描述=“流控制,误差,误差积分”;
numObservations = obsInfo.Dimension (1);
actionInfo_DDPG = rlNumericSpec ([1],“LowerLimit”0,“UpperLimit”,100);
2 actionInfo_PPO = rlNumericSpec ([1],“LowerLimit”0,“UpperLimit”,100);
actionInfo_DDPG。Name =“流”;
actionInfo_PPO。Name =“流”;
% Intialise环境连载代理和运行测试
sprintf (' \ n \ n = = = =控制阀门V.5.1 RL = = = = = = = = = = = = = = = = = = = = ')
sprintf (“- - - - -测试模型:% s, % s的、DDPG_MODEL_FILE PPO_MODEL_FILE)
sprintf (”- - - - -参数:时滞:% 3.2 f, f: % 3.2 f, fD: % 3.2 f 'TIME_DELAY fS, fD)
ObservationInfo = [obsInfo, obsInfo];
ActionInfo = [actionInfo_DDPG, actionInfo_PPO];
arObservationInfo = num2cell (ObservationInfo, 1);
arActionInfo = num2cell (ActionInfo, 1);
% open_system (VALVE_SIMULATION_MODEL);
AgentBlocks = VALVE_SIMULATION_MODEL + [DDPG_AGENT PPO_AGENT];
env = rl万博1manbetxSimulinkEnv (VALVE_SIMULATION_MODEL AgentBlocks、arObservationInfo arActionInfo);
simOpts = rlSimulationOptions (“MaxSteps”,2000);
expr = sim (env, [DDPG_agent。代理,PPO_agent.agent]);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%环境重置功能
%随机Reference_Signal 0到100之间
%复位如果控制速度低于零个或超过100个
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
函数在= localResetFcn RL_System)
block_Reference_Signal = strcat (RL_System,' / Reference_Signal ');
Reference_Signal = 20 +兰迪(80)+兰德;
在= setBlockParameter (block_Reference_Signal,
“价值”num2str (Reference_Signal));
%流的随机初始条件(0 - 100)
block_Actual_Flow = strcat (RL_System,/工厂/过程/流的);
Actual_Flow = 20 +兰迪(80)+兰德;
在= setBlockParameter (block_Actual_Flow,“偏见”num2str (Actual_Flow));
结束
1评论
Emmanouil Tzorakoleftherakis
Emmanouil Tzorakoleftherakis 2021年9月23日
几个建议:
1)确保DDPG_agent。代理和PPO_agent。代理是实际的代理对象和结构
2) 在仿真软件模型万博1manbetx中,确保改变RL代理代理对象的字段PPO_agent块。代理或DDPG_agent。代理根据需要(我怀疑你可能已经忘了这样做)

登录置评。

类别

找到更多的在万博1manbetx仿真软件环境帮助中心文件交换

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!