首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强化学习

强化学习
EN

Stack Overflow用户
提问于 2013-11-22 01:53:13
回答 1查看 2.3K关注 0票数 6

我想使用这个Q学习(强化学习)代码。代码似乎是正确的,但我得到了错误,我不知道为什么:

代码语言:javascript
复制
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

但我收到了以下警告和错误:

代码语言:javascript
复制
 enter code here
Warning: The method char/int will be removed in a
future relase. Use sym/int instead. For example
int(sym('x^2')). 
> In char.int at 10
  In ReinforcementLearning at 6 
Error using mupadmex
Error in MuPAD command: Invalid integrand. [int]
Error in sym/int (line 107)
   rSym =
   mupadmex('symobj::intindef',f.s,x.s,options);
Error in char/int (line 12)
y = int(sym(f),varargin{:});
Error in ReinforcementLearning (line 6)
int state=0;

这段代码可以在以下链接中找到:http://people.revoledu.com/kardi/tutorial/ReinforcementLearning/Q-Learning-Matlab.htm

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-22 04:55:08

没有

代码语言:javascript
复制
int state=0;
int state=x1;

在matlab里。那是C风格。在matlab中,int是一个内置函数,意思是其他的东西。另外,应该是

代码语言:javascript
复制
q=zeros(size(R));
q1=ones(size(R))*inf;

请记住下载他的RandomPermutation函数,否则只需使用randperm。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20135529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档