强化学习——多个离散的动作

27日视图(30天)
我想使用DQN代理有多个连续状态(或观察)和两个动作信号,每个都有三种可能的值的组合。例如,参见下一行,明白我的意思:
一个= (2 0 2);
b = (3 0 3);
[A, B] = meshgrid (A, B);
行动=重塑(猫(2,' B '), [], 2);
如果我想创建离散的动作,我需要把矩阵转换成一个细胞并运行命令:
actionInfo = rlFiniteSetSpec (num2cell(行动,2));
actionInfo。Name =“行动”;
此外,在DQN,评论家,包括深层神经网络。我已经创建了评论家如下:
%为评论家:创建一个款
hiddenLayerSize = 48;
observationPath = [
imageInputLayer ([numObs 1 1],“归一化”,“没有”,
“名字”,“观察”)
fullyConnectedLayer (hiddenLayerSize“名字”,“CriticStateFC1”)
reluLayer (“名字”,“CriticReLu1”)
fullyConnectedLayer (hiddenLayerSize“名字”,“CriticStateFC2”)
additionLayer (2“名字”,“添加”)
reluLayer (“名字”,“CriticCommonReLu1”)
fullyConnectedLayer (hiddenLayerSize“名字”,“CriticCommonFC1”)
reluLayer (“名字”,“CriticCommonReLu2”)
fullyConnectedLayer (1,“名字”,“CriticOutput”));
actionPath = [
imageInputLayer([1]价值,“归一化”,“没有”,“名字”,“行动”)
fullyConnectedLayer (hiddenLayerSize“名字”,“CriticActionFC1”));
%创建layerGraph:
criticNetwork = layerGraph (observationPath);
criticNetwork = addLayers (criticNetwork actionPath);
%连接actionPath obervationPath:
criticNetwork = connectLayers (criticNetwork,“CriticActionFC1”,“添加/ in2”);
%为评论家表示指定选项:
criticOpts = rlRepresentationOptions (“LearnRate”1 e 03
“GradientThreshold”,1“UseDevice”,“图形”);
%创建评论家表示使用指定款和选项:
评论家= rlRepresentation (criticNetwork observationInfo actionInfo,
“观察”,{“观察”},“行动”,{“行动”},criticOpts);
%为代理设置所需的选项:
agentOptions = rlDQNAgentOptions (
“SampleTime”,dt,
“UseDoubleDQN”,真的,
“TargetSmoothFactor”1 e - 3,
“DiscountFactor”,0.99,
“ExperienceBufferLength”1 e7,
“MiniBatchSize”,128);
我的问题是第一个图像输入层到行动路径 imageInputLayer([值1 1],“正常化”,“没有”,“名字”,“行动” )。我曾经尝试过的值1、2、9和18 价值 ,但所有的结果在一个错误当我运行
代理= rlDQNAgent(评论家,agentOptions);
这是因为actionInfo 9元素的一个细胞,每一个都有双向量的维度[1,2],而 imageInputLayer 预计尺寸 (价值,1,1)
所以,我怎么能在MATLAB建立DQN代理有两个主要的离散动作信号,每个都有三个可能的值?
提前感谢你的帮助!
2的评论
恩里科密欧
恩里科密欧 2019年8月30日
对不起,我刚刚见过。
你有62个国家和2的行为?或2,62行动?或124的行为?
我不建议大量的行动,因为它会导致学习的问题。

登录置评。

接受的答案

Emmanouil Tzorakoleftherakis
Emmanouil Tzorakoleftherakis 2019年5月30日
嗨,恩里科,
试一试
actionPath = [
imageInputLayer ((1 2)“归一化”,“没有”,“名字”,“行动”)
fullyConnectedLayer (hiddenLayerSize“名字”,“CriticActionFC1”));
在代码中每个操作是1 x2,应反映在actionpath输入的尺寸。
我希望这可以帮助。
1评论
恩里科密欧
恩里科密欧 2019年6月12日
嗨Emmanouil,
很多谢谢你的帮助!
它的工作原理。我想补充,那么你需要一个重塑块在仿真软件中,但这是没有问题。金宝app它与一个额外的速度远远超过一个映射用c s函数。

登录置评。

答案(1)

kqha1025 kqha1025
kqha1025 kqha1025 2022年6月23日
你好,
你有什么功能”找到 行动 ”一般情况下有多个动作,例如3分别与三个数组操作?(这种情况下有两个操作数组)
非常感谢。

下载188bet金宝搏


释放

R2019a

社区寻宝

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

开始狩猎!

翻译的