我正在尝试在R(奖励)是随机时间相关变量的环境中实现Q学习,并且它们在const时间间隔deltaT之后实时到达。状态S(标量)也在const时间间隔deltaT之后到达。代理的任务是在获得最佳操作后(S(n deltaT),R(n deltaT))。
我的问题是我对RL很新,而且我不明白这个算法应该如何实现,大多数描述Q-learning算法的论文都在"科学英语"这对我没有帮助。
OnTimer()在固定间隔后执行:
double a = 0.95;
double g = 0.95;
double old_state = 0;
action new_action = null;
action old_action = random_action;
void OnTimer()
{
double new_state = environment.GetNewState();
double Qmax = 0;
foreach(action a in Actions)
{
if(Q(new_state, a) > Qmax)
Qmax = Q(new_state, a);
new_action = a;
}
double reward = environment.Reward(old_state, old_action);
Q(old_state, old_action) = Q(old_state, old_action) + a*(reward + g*Qmax - Q(old_state, old_action));
old_state = new_state;
old_action = new_action;
agent.ExecuteInEnvironment(new_action);
}
问题:
这是在线Q-learning的正确实施,因为它似乎不起作用?当n * deltaT - >时,为什么这不起作用? inf,请帮助它非常重要。
答案 0 :(得分:0)
如果没有更多信息,很难确切地说出了什么问题,但看起来你并没有正确地实现算法。通常,算法是:
您是否知道您选择的行动实际上导致您的代理人移动到预期状态的可能性,或者您必须通过观察估计的事情?如果国家只是随意到达并且您无法控制所发生的事情,那么这可能不适合应用强化学习。