jesonwz 2022-04-10 20:10 采纳率: 0%
浏览 408
已结题

Reinforcement Learning强化学习 如何在保存并调用agent后,让sim的动作数据一致?

按照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

  • 写回答

2条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 创建了问题 4月10日

悬赏问题

  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏