RL代理培训SimulationInput错误

121(30天)
马奈尔·Vilella织女星
马奈尔·Vilella织女星 2020年12月16日
评论道: Akimzhan2022年4月11日
我有困难的mofification TrainDDPGAgentForACCExample。mlx例子。我已经适应了我的情况,主要的最大区别是行动和观察的大小。
我得到以下错误消息:
警告:评估函数的@ (in_) localInnerSimFcn (simData in_,[])”的失败
错误。使用空的SimulationOutput对象作为返回值。
警告:有一个错误评估重置功能。看到ResetFcn的帮助
财产在创建一个有效的复位指令功能。
警告:未定义的函数“localResetFcn”输入参数类型的
“金宝appSimulink.SimulationInput”
警告:错误发生同时为事件EpisodeFinished执行侦听器回调
定义类rl.env.SimulinkE金宝appnvWithAgent:
索引不支持这种类型的变量。金宝app
错误在rl.train。培训Manager/update (line 129)
这一点。TotalEpisodeStepCount =。TotalEpisodeStepCount + epinfo.StepsTaken;
错误
ed rl.train.TrainingManager > @ (src)更新(ed.Data.EpisodeInfo, ed.Data.EpisodeCount ed.Data.WorkerID)
(第277行)
@ (src, ed)
更新(ed.Data.EpisodeInfo, ed.Data.EpisodeCount ed.Data.WorkerID));
错误在rl.env。AbstractEnv / notifyEpisodeFinished(第320行)
通知(这“EpisodeFinished”(ed);
错误在rl.env。金宝appSimulinkEnvWithAgent / executeSimsWrapper nestedSimFinishedBC(第333行)
notifyEpisodeFinished(这
错误在rl.env.Si金宝appmulinkEnvWithAgent > @ (src, ed) nestedSimFinishedBC (ed)(第341行)
simlist (1) = event.listener (this.SimMgr“SimulationFinished”@ (src, ed)
nestedSimFinishedBC (ed));
错误在Si金宝appmulink.SimulationManager / handleSimulationOutputAvailable
错误
金宝appSimulink.SimulationManager > @(变长度输入宗量)obj.handleSimulationOutputAvailable(变长度输入宗量{:})
错误在MultiSim.internal.SimulationRunnerSerial / executeImplSingle
错误在MultiSim.internal.SimulationRunnerSerial / executeImpl
错误在Si金宝appmulink.SimulationManager / executeSims
错误在仿真金宝app软件。SimulationManagerEngine / executeSims(50行)
= obj.SimulationManager.executeSims(跳频);
错误在rl.env。金宝appSimulinkEnvWithAgent / executeSimsWrapper(第358行)
executeSims (this.SimEngine, simfh);
错误在rl.env。金宝appSimulinkEnvWithAgent / simWrapper(第408行)
simouts = executeSimsWrapper(政策,这在,simfh simouts,选择);
错误在rl.env。金宝appSimulinkEnvWithAgent / simWithPolicy(第593行)
simouts = simWrapper (simData env,政策,选择);
错误在rl.train。seriesTrain(16行)
[~,simInfo] = simWithPolicy (env、代理、rlSimulationOptions (
错误在rl.train。培训Manager/train (line 251)
rl.train.seriesTrain(这个);
错误在rl.train。培训Manager/run (line 155)
火车(这个);
错误在rl.agent。AbstractAgent /火车(54行)
TrainingStatistics =运行(trainMgr);
错误在Dades_manel(第114行)
trainingStats =火车(代理,env, trainingOpts);
在rl >。env / AbstractEnv notifyEpisodeFinished(第320行)
rl.env.金宝appSimulinkEnvWithAgent。executeSimsWrapper / nestedSimFinishedBC(第333行)
ed rl.e金宝appnv.SimulinkEnvWithAgent > @ (src) nestedSimFinishedBC (ed)(第341行)
金宝app模型/ SimulationManager / handleSimulationOutputAvailable
金宝appSimulink.SimulationManager > @(变长度输入宗量)obj.handleSimulationOutputAvailable(变长度输入宗量{:})
MultiSim.internal / SimulationRunnerSerial / executeImplSingle
MultiSim.internal / SimulationRunnerSerial / executeImpl
金宝app模型/ SimulationManager / executeSims
金宝app模型/ SimulationManagerEngine executeSims(50行)
rl。env 金宝app/ SimulinkEnvWithAgent executeSimsWrapper(第358行)
rl。env 金宝app/ SimulinkEnvWithAgent simWrapper(第408行)
rl。env 金宝app/ SimulinkEnvWithAgent simWithPolicy(第593行)
rl.train。seriesTrain(16行)
rl。火车/ TrainingManager /火车(第251行)
rl。火车/ TrainingManager /运行(第155行)
rl.agent。AbstractAgent /火车(54行)
Dades_manel(第114行)
错误使用rl.train。seriesTrain(16行)
一个模拟与代理“Mod_SVPWM_SiC”时发生错误
“rl.util.PolicyInstance.get ()”
错误在rl.train。培训Manager/train (line 251)
rl.train.seriesTrain(这个);
错误在rl.train。培训Manager/run (line 155)
火车(这个);
错误在rl.agent。AbstractAgent /火车(54行)
TrainingStatistics =运行(trainMgr);
错误在Dades_manel(第114行)
trainingStats =火车(代理,env, trainingOpts);
引起的由:
错误使用rl.env。金宝appSimulinkEnvWithAgent > localHandleSimoutErrors(第817行)
在那里是一个错误评估重置功能。看到ResetFcn的帮助
财产在创建一个有效的复位指令功能。
错误使用rl.env。金宝appSimulinkEnvWithAgent > localHandleSimoutErrors(第817行)
未定义的“localResetFcn”函数输入参数的类型
“金宝appSimulink.SimulationInput”
我的代码是:
Ts = 1 e-8;
Tf = 0.02;
mdl =“Model_test1”;
open_system (mdl)
agentblk = [mdl' / RL代理'];
% %环境界面
%建立观测信息
observationInfo = rlNumericSpec (1 [9]);
observationInfo。Name =“观察”;
%的动作信息
actionInfo = rlNumericSpec (1 [3],“LowerLimit”0,“UpperLimit”1);
actionInfo。Name =“加速”;
%定义环境
env = rl金宝appSimulinkEnv (mdl agentblk、observationInfo actionInfo);
%随机初始位置的铅的车
env。ResetFcn = @(在)localResetFcn(的);
rng (“默认”)
% % DDPG代理
L = 48;%的神经元数量
statePath = [
imageInputLayer ([9 1 1),“归一化”,“没有”,“名字”,“观察”)
fullyConnectedLayer (L,“名字”,“fc1”)
reluLayer (“名字”,“relu1”)
fullyConnectedLayer (L,“名字”,“取得”)
additionLayer (2“名字”,“添加”)
reluLayer (“名字”,“relu2”)
fullyConnectedLayer (L,“名字”,“一个fc3”文件)
reluLayer (“名字”,“relu3”)
fullyConnectedLayer (1,“名字”,“fc4”));
actionPath = [
imageInputLayer ([3 1 1),“归一化”,“没有”,“名字”,“行动”)
fullyConnectedLayer (L,“名字”,“fc5”));
criticNetwork = layerGraph (statePath);
criticNetwork = addLayers (criticNetwork actionPath);
criticNetwork = connectLayers (criticNetwork,“fc5”,“添加/ in2”);
% %评论家表示
%的阴谋(criticNetwork)
criticOptions = rlRepresentationOptions (“LearnRate”1 e - 3,“GradientThreshold”,1“L2RegularizationFactor”1的军医);
评论家= rlRepresentation (criticNetwork observationInfo actionInfo,
“观察”,{“观察”},“行动”,{“行动”},criticOptions);
% %创造演员
actorNetwork = [
imageInputLayer ([9 1 1),“归一化”,“没有”,“名字”,“观察”)
fullyConnectedLayer (L,“名字”,“fc1”)
reluLayer (“名字”,“relu1”)
fullyConnectedLayer (L,“名字”,“取得”)
reluLayer (“名字”,“relu2”)
fullyConnectedLayer (L,“名字”,“一个fc3”文件)
reluLayer (“名字”,“relu3”)
fullyConnectedLayer (3“名字”,“fc4”)
tanhLayer (“名字”,“tanh1”)
scalingLayer (“名字”,“ActorScaling1”,“规模”,2.5,“偏见”-0.5)];
actorOptions = rlRepresentationOptions (“LearnRate”1的军医,“GradientThreshold”,1“L2RegularizationFactor”1的军医);
演员= rlRepresentation (actorNetwork observationInfo actionInfo,
“观察”,{“观察”},“行动”,{“ActorScaling1”},actorOptions);
% %创建代理
agentOptions = rlDDPGAgentOptions (
“SampleTime”Ts,
“TargetSmoothFactor”1 e - 3,
“ExperienceBufferLength”1 e6,
“DiscountFactor”,0.99,
“MiniBatchSize”,64);
agentOptions.NoiseOptions。方差= 0.6;
agentOptions.NoiseOptions。VarianceDecayRate = 1 e-5;
代理= rlDDPGAgent(演员、评论家、agentOptions);
% %火车代理
maxepisodes = 5000;
maxsteps =装天花板(Tf / Ts);
trainingOpts = rlTrainingOptions (
“MaxEpisodes”maxepisodes,
“MaxStepsPerEpisode”maxsteps,
“详细”假的,
“阴谋”,“训练进步”,
“StopTrainingCriteria”,“EpisodeReward”,
“StopTrainingValue”,221);
doTraining = true;
如果doTraining
%培训代理。
trainingStats =火车(代理,env, trainingOpts);
%保存(“agent_new.mat”、“代理”)
其他的
%负载pretrained代理的例子。
负载(“agent_old.mat”,“代理”)
结束
我不能上传模型文件,因为它是敏感数据。金宝app
知道什么errror可以吗?
1评论
black_cat
black_cat 2021年4月6日
嘿,你是怎么解决错误味精说“错误发生 在执行侦听器回调事件EpisodeFinished定义 类rl.env。金宝appSimulinkEnvWithAgent…”?

登录置评。

答案(1)

Emmanouil Tzorakoleftherakis
Emmanouil Tzorakoleftherakis 2020年12月16日
你好,
在我看来你没有实现localReset函数分配环境。的 ACC的例子 在最底部显示了如何实现复位功能。我将开始。
2的评论
Akimzhan
Akimzhan 2022年4月11日
@Emmanouil Tzorakoleftherakis 为什么还没有回应吗?

登录置评。

下载188bet金宝搏


释放

R2019b

社区寻宝

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

开始狩猎!