Q ラーニング アルゴリズムを使用して、デバイスの電源管理に取り組んでいます。デバイスには、アイドルとスリープの 2 つの電力モードがあります。デバイスがスリープ状態の場合、処理の要求はキューにバッファリングされます。Q 学習アルゴリズムは、即時の消費電力とアクションによって発生する遅延の加重合計であるコスト関数を最小化するように探します。
c(s,a)=lambda*p_avg+(1-lambda)*avg_latency
各状態で、学習アルゴリズムはアクション (タイムアウト値の実行) を実行し、次の状態で実行されたアクションの効果を評価します (上記の式を使用)。アクションは、事前定義されたタイムアウト値のプールから特定のタイムアウト値を実行することによって実行されます。上記の式のパラメーターlambdaは、電力性能パラメーター ( 0 _< lambda < 1 ) です。アルゴリズムが省電力 (ラムダ --> 1) を探すか、レイテンシの最小化 (ラムダ --> 0) を探すかを定義します。各リクエストのレイテンシーは、queuing-time + execution-timeとして計算されます。
問題は、学習アルゴリズムがスリープ状態でのタイムアウト値を常に小さくすることです。これは、タイムアウト値が小さい場合の平均レイテンシが常に低く、そのためコストも小さいためです。ラムダの値を低い値から高い値に変更しても、最終的な出力ポリシーに何の影響も見られません。ポリシーは常に、各状態でのベスト アクションとして小さいタイムアウト値を選択します。各状態の平均電力と平均レイテンシの代わりに、全体の平均消費電力と全体の平均レイテンシを使用して、状態とアクションのペアのコストを計算しようとしましたが、役に立ちません。また、各状態とアクションのペアでコストを計算するためのすべての要求によって経験される総エネルギー消費量と総待ち時間を使用しようとしましたが、どちらも役に立ちません。私の質問は次のとおりです。このシナリオのより良いコスト関数は何ですか? 次のように Q 値を更新します。
Q(s,a)=Q(s,a)+alpha*[c(s,a)+gamma*min_a Q(s',a')-Q(s,a)]
ここで、 alphaは学習率 (ゆっくりと減少) であり、gamma=0.9は割引係数です。