進化アルゴリズムの実装において、テンソル化組織把“种群是什么、评价得怎样、运行到哪一步”从零散对象与列表统一映射为规则张量。其本质是建立种群、评价与状态的统一数据契约,使批量计算、设备驻留与后续并行调度具备共同内存语义。
個体群のテンソル化:[N, D] へのエンコード
N 個の候補解をバッチ次元で整理し、形状 [N, D] のエンコードテンソルとする。連続変数・離散変数・多段エンコードはフィールドテンソルやグループブロックで表現し、統一したデータ型とデバイス位置を維持する。
- バッチ次元を外側に:通常 N を最外層に置き、同じ演算子をバッチ全体でベクトル化して実行する。
- フィールド分割:個体が複数段のパラメータで構成される場合、[N, D1] + [N, D2] + … に分割し、連続した格納を維持する。
- 可変長の処理:可変長個体はパディング+マスクまたはバケッティングで処理し、異種構造がバッチ計算を阻害しないようにする。
評価結果の行列化:[N, M] と [N, K]
1 回のバッチ評価で [N, M] の適応度行列を生成する。多目的・多制約および追加指標は [N, M+K] として並べるかテーブル分割して格納でき、個体ごとのループで評価関数を呼び出すことを避けられる。
状態テンソルの一元管理
世代数・乱数状態・戦略ハイパーパラメータ・最適解・履歴キャッシュ・ランキングやサンプリング状態などもテンソルまたは構造化された状態コンテナに格納し、再現性・追跡性・一括更新性を保証する。
事例:N=1024、D=50、M=2
個体群は [1024, 50] テンソル、評価値は [1024, 2] テンソル、制約は [1024, K] で表す。世代数 generation、最適解 best_x、乱数状態 rng_state は状態テンソルとして統一的にデバイスへ常駐させる。各世代の更新は個体ごとの Python ループではなく、同じバッチ次元で一括して行える。
組織化のメリットと限界
統一テンソルはホストとデバイス間の往復を減らし、ループのオーバーヘッドを抑え、その後の演算子並列化にデータ基盤を提供する。ただし、マスクの有効性、パディングの無駄、多目的規模の増大、状態同期のコストに対処する必要がある。
