R(報酬)が確率的時間依存変数であり、const時間間隔deltaTの後にリアルタイムで到着する環境で、Qラーニングを実装しようとしています。状態 S (スカラー) も const 時間間隔 deltaT の後に到着します。エージェントのタスクは、(S(n deltaT),R(n deltaT)) を得た後に最適なアクションを与えることです。
私の問題は、私がRLに非常に慣れていないことです。このアルゴリズムをどのように実装する必要があるのか わかりません。Qラーニングアルゴリズムを説明するほとんどの論文は「科学的な英語」であり、役に立ちません。
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 ラーニングの適切な実装ですか? n*deltaT -> inf の場合、これが最適に機能しないのはなぜですか。非常に重要です。助けてください。