executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
model-markov-chain遷移行列の構築、状態分類、定常分布の計算、平均初到達時間を含む離散または連続 マルコフ連鎖の構築と分析。観測された遷移カウントまたはレートを持つ記憶のない システムをモデル化する時、長期的な定常状態確率を計算する時、期待到達時間また は吸収確率を決定する時、状態を一時的または再帰的に分類する時、または隠れ マルコフモデルや強化学習MDPの基礎を構築する時に使用する。
Independent GitHub snapshot · Automated classification · Original documentation governs
生の遷移データまたはドメイン仕様から離散時間または連続時間マルコフ連鎖を構築、分類、分析し、定常分布、平均初到達時間、シミュレーションベースの検証を生成する。DTMCとCTMCの両方のワークフローをエンドツーエンドで網羅する。
| 入力 | 型 | 説明 |
|---|---|---|
state_space | list/vector | 連鎖内のすべての状態の網羅的列挙 |
transition_data | matrix, data frame, or edge list | 生の遷移カウント、確率行列、またはレート行列(CTMCの場合) |
chain_type | string | "discrete"(DTMC)または"continuous"(CTMC) |
| 入力 | 型 | デフォルト | 説明 |
|---|---|---|---|
initial_distribution | vector | uniform | 開始状態確率 |
time_horizon | integer/float | 100 | シミュレーションのステップ数(DTMC)または時間単位(CTMC) |
tolerance | float | 1e-10 | 反復計算の収束許容度 |
absorbing_states | list | auto-detect | 吸収的と明示的にマークされた状態 |
labels | list | state indices | 各状態の人間が読める名前 |
method | string | "eigen" | ソルバー方法: "eigen"、"power"、または"linear_system" |
1.1. すべての異なる状態を列挙する。リストが網羅的かつ排他的であることを確認する。
1.2. 生の観測から作業する場合、遷移カウントをn x nのカウント行列Cに集計する。ここでC[i,j]は状態iから状態jへの観測された遷移数である。
1.3. 連続時間連鎖の場合、遷移先と共に各状態での滞在時間を収集する。
1.4. すべての観測された起点と目的地が状態空間に含まれることを確認し、列挙から欠落している状態がないか検証する。
1.5. データソース、観測期間、適用されたフィルタリングを文書化する。この来歴記録は分析の再現と異常の説明に不可欠である。
期待結果: サイズnの明確に定義された状態空間と、すべての観測された遷移をカバーするカウント行列または(起点、目的地、レート/カウント)タプルのリスト。状態空間は行列演算に十分小さくあるべきである(密な方法では通常n < 10000)。
失敗時: 状態が欠落している場合、ソースデータを再調査し列挙を拡張する。状態空間が行列方法には大きすぎる場合、まれな状態を集約「その他」状態にまとめるか、シミュレーションベースの分析に切り替えることを検討する。カウント行列が極度にスパースな場合、観測期間が典型的な遷移を捕捉するのに十分長いか検証する。
2.1. 離散時間(DTMC): カウント行列の各行を正規化して遷移確率行列Pを取得する:
P[i,j] = C[i,j] / sum(C[i,])2.2. 連続時間(CTMC): レート(生成子)行列Qを構築する:
Q[i,j] = iからjへの遷移レートQ[i,i] = -sum(Q[i,j] for j != i)2.3. ゼロカウント行(起点として一度も観測されなかった状態)をスムージング戦略で処理する: ラプラススムージング、吸収規約、またはレビュー用のフラグ立て。
2.4. 下流の計算に適した形式で行列を保存する(小さな連鎖には密、大きなものにはスパース)。
期待結果: 有効な確率的行列P(行の和が1)または生成子行列Q(行の和が0)。Pに負の非対角要素がなく、Qに正の対角要素がないこと。
失敗時: 行の和が許容度を超えて逸脱する場合、データの破損または浮動小数点の問題を確認する。再正規化またはソースデータの再調査を行う。
3.1. 遷移行列によって誘導される有向グラフの強連結成分を見つけることにより、通信クラスを計算する(正の確率を持つ辺のみ)。
3.2. 各通信クラスについて決定する:
P[i,i] = 1の単一状態で構成される場合は吸収的。3.3. クラス内の任意の状態から到達可能なすべてのサイクル長のGCDを計算して、各再帰クラスの周期性を確認する。
3.4. 連鎖が既約(単一通信クラス)か可約(複数クラス)かを決定する。
3.5. 要約する: 各クラスとそのタイプ(一時的/再帰的)、周期、吸収状態の有無をリストする。
期待結果: 完全な分類: すべての状態が通信クラスに割り当てられ、ラベル(一時的、正再帰的、零再帰的、吸収的)と周期性が付与されていること。
失敗時: グラフ分析が矛盾する場合、遷移行列に負のエントリがなく、行の和が正しいことを検証する。非常に大きな連鎖の場合、完全な行列べき乗の代わりに反復グラフアルゴリズムを使用する。
4.1. 既約非周期連鎖: sum(pi) = 1の制約の下でpi * P = piを解く。
pi * (P - I) = 0に正規化制約を加えて再定式化する。piは固有値1に対応するPの左固有ベクトルであり、和が1になるよう正規化する。4.2. 既約周期連鎖: 定常分布は存在するが、連鎖は任意の初期状態からそれに収束しない。4.1と同じ方法で計算する。
4.3. 可約連鎖: 各再帰クラスの定常分布を独立に計算する。全体の定常分布は一時的状態からの吸収確率に依存する凸結合である。
4.4. CTMC: sum(pi) = 1の下でpi * Q = 0を解く。
4.5. 検証: 計算されたpiをP(またはQ)に乗じ、結果が許容度内でpiに等しいことを確認する。
4.6. 可約連鎖の場合、各一時的状態から各再帰クラスへの吸収確率を計算する。これらの確率をクラス別定常分布と組み合わせることで、開始状態に条件付けた長期的な挙動が得られる。
4.7. スペクトルギャップ(最大と2番目に大きい固有値の大きさの差)を記録する。この量は定常状態への収束率を支配し、ステップ6で必要なシミュレーションステップ数の決定に有用である。
期待結果: 長さnの確率ベクトルpi。すべてのエントリが非負、和が1、許容度内で平衡方程式を満たすこと。非周期既約連鎖ではスペクトルギャップが正であるべきである。
失敗時: 固有値ソルバーが収束しない場合、反復べき乗法(pi_k+1 = pi_k * Pを収束まで)を試みる。複数の固有値が1に等しい場合、連鎖は可約である — ステップ4.3に従って処理する。スペクトルギャップが極めて小さい場合、連鎖の混合が遅く、検証に非常に長いシミュレーションが必要になる。
5.1. 平均初到達時間m[i,j]を、状態iから開始して状態jに到達するまでの期待ステップ数として定義する。
5.2. 既約連鎖の場合、線形方程式系を解く:
m[i,j] = 1 + sum(P[i,k] * m[k,j] for k != j) すべてのi != jに対してm[j,j] = 1 / pi[j](平均再帰時間)5.3. 吸収連鎖の場合、吸収確率と吸収までの期待時間を計算する:
Pを一時的(Q_t)ブロックと吸収ブロックに分割する。N = (I - Q_t)^{-1}N * 1(1の列ベクトル)N * R ここでRは一時的から吸収的へのブロック。5.4. CTMCの場合、生成子行列を使用してステップカウントを期待滞在時間で置換する。
5.5. 主要な状態ペアのペアワイズ初到達時間の行列またはテーブルとして結果を提示する。
期待結果: 対角エントリが平均再帰時間(1/pi[j])に等しく、通信する状態ペアの非対角エントリが有限である平均初到達時間の行列。
失敗時: 線形系が特異な場合、連鎖にターゲットに到達できない一時的状態がある。到達不可能なペアを無限大として報告する。ステップ3の連鎖構造を検証する。
6.1. 初期分布から開始して、連鎖のK本の独立なサンプルパスを各Tステップシミュレートする。
6.2. バーンイン期間を除外した後、すべてのパスにわたる状態占有頻度をカウントして、定常分布を経験的に推定する。
6.3. シミュレートされた頻度を解析的定常分布と比較する。全変動距離またはカイ二乗統計量を計算する。
6.4. 反復にわたって各ターゲット状態の初到達時間を記録し、平均初到達時間を経験的に推定する。
6.5. 一致の指標を報告する:
6.6. 不一致が許容度を超える場合、遷移行列の構築と分類ステップを再調査する。
期待結果: シミュレートされた定常分布が解析解の全変動距離0.01以内にあること(十分に長い実行の場合)。シミュレートされた平均初到達時間が解析値の10%以内にあること。
失敗時: シミュレーション長Tまたは反復数Kを増加する。不一致が持続する場合、解析解に数値エラーがある可能性がある — より高い精度で再計算する。
Pのすべてのエントリが非負で、各行の和が1であること(CTMCの場合Qの行の和が0)piがpi * P = piを満たす有効な確率ベクトルであることjについて平均再帰時間が1/pi[j]に等しいことPのすべての固有値の大きさが最大1で、再帰クラスごとにちょうど1つの固有値が1に等しいことN = (I - Q_t)^{-1}のすべてのエントリが正であること(期待訪問カウントは正)i,jに対してpi[i] * P[i,j] = pi[j] * P[j,i]pi[i] * P[i,j] = pi[j] * P[j,i]を検証すること。pi * Pを多数回反復すると丸め誤差が蓄積する。べき乗反復中に定期的にpiを和が1になるよう再正規化すること。