Matlab 强化学习
我想使用这个q-learning(强化学习)代码。代码似乎是正确的,但我遇到了错误,我不知道为什么:Matlab 强化学习,matlab,machine-learning,reinforcement-learning,Matlab,Machine Learning,Reinforcement Learning,我想使用这个q-learning(强化学习)代码。代码似乎是正确的,但我遇到了错误,我不知道为什么: function q=ReinforcementLearning clc; format short; format compact; int state=0; R= [-inf,-inf,-inf,-inf, 0,-inf; -inf,-inf,-inf, 0,-inf, 100; -inf,-inf,-inf, 0,-inf,-inf; -inf, 0, 0,-
function q=ReinforcementLearning
clc;
format short;
format compact;
int state=0;
R= [-inf,-inf,-inf,-inf, 0,-inf;
-inf,-inf,-inf, 0,-inf, 100;
-inf,-inf,-inf, 0,-inf,-inf;
-inf, 0, 0,-inf, 0,-inf;
0,-inf,-inf, 0,-inf, 100;
-inf, 0,-inf,-inf, 0, 100];
gamma=0.8;
q=zero(size(R));
q1=one(size(R))*inf;
count=0;
for episode = 0:20000;
y=randperm(size(R,1));
state=y(1);
x=find(R(state,:)>=0);
if size(x,1)>0,
x1=RandomPermutation(x);
x1=x1(1);
end
qMax=max(q,[],2);
q(state,x1)=R(state,x1)+ gamma* qMax(x1);
int state=x1;
if sum(sum(abs(q1-q)))<0.0001 && sum(sum(q>0))
if count > 1000;
break
else
count=count+1;
end
else
q1=q;
count=0;
end
end
此代码可在以下链接中找到: 没有
int state=0;
int state=x1;
在matlab中。这就是C风格。在matlab中,int是一个内置函数,表示其他内容。
此外,它应该是
q=zeros(size(R));
q1=ones(size(R))*inf;
记住下载他的随机排列函数,否则就用randperm代替。什么是y=randperm(size(R,1))
<代码>R的大小已经是6*6。在重组时,它将产生另一个6*6矩阵,对吗?
q=zeros(size(R));
q1=ones(size(R))*inf;