按照mathworks教程和哔哩哔哩一些视频教程,完成强化学习编码。
计划在训练数据后,保存agent,并让程序在每次sim()后,都保存和展示最后10次的动作结果。
但我在testdata数据中增加一行新的数据,并进行下一次sim()后,保存的最后10次动作结果,与上一次
sim()保存的结果却完全不一样,我希望程序能保留前9次的动作结果,只有最后1次的动作结果根据新的数据而给出,该怎样做呢?谢谢,请求帮助解决!
查阅了很多资料,包括帮助文档,只提到了恢复train过程的参数设置,而对于sim并没有地方提及。
另外,我如下保存agent的方式,有问题吗?代码如下:
if doTraining
% 训练智能体
trainingStates = train(agent,env,trainOpts);
agent_pathname = strcat(agent_dir,'ag',daima,'.mat');
save(agent_pathname,'agent') ; %这样保存可以吗?agent_pathname为事先设定好的保存路径
else
% 调用已训练好的智能体
load(ag_filename,'agent');
end
%% 仿真测试
simOpts = rlSimulationOptions('maxSteps',4000); %最大测试次数4000次
ResetHandleT = @() myResetFunction(testData);
StepHandleT = @(Action,StockSaved) myStepFunction(Action,StockSaved,testData,action_Vectors,total_SN,SN);
envT = rlFunctionEnv(observationInfo,actionInfo,StepHandleT,ResetHandleT);
experience = sim(envT,agent,simOpts);
tuijian_action_temp=squeeze(experience.Action.StockAction.Data);
tuijian_action = zeros(10,1);
% 保存最后10次的动作结果,不够10次则全部保存
if length(tuijian_action_temp)>=10
tuijian_action = tuijian_action_temp(end-9:end);
else
tuijian_action(10-length(tuijian_action_temp)+1:end) = tuijian_action_temp;
end