SearchSpace#

Layer 4: Extend Framework

SearchSpace は候補の表現と、その表現を扱うためのサービスを定義します。 アルゴリズムや代理モデルは空間の内部表現を直接変更せず、空間が提供する GenomeBatch とサービスを利用します。

SearchSpaceの役割#

SearchSpace は representation、services、sample()、validate() を提供します。 GenomeBatch は候補を行方向にまとめた値であり、候補IDや目的値を直接所有するデータ構造ではありません。 validate() は各行の妥当性とバッチ全体のエラーを ValidationResult で返します。

ServiceRegistry は空間が提供するサービスを名前で登録します。 サンプリング、検証、複製、同値性、距離、ゲノムのシリアライズなどはSearchSpace servicesとして、必要な空間が公開します。 EvaluationAdapter はGenomeBatchを評価Payloadへ変換する評価境界のAdapterです。 FeatureEncoder は GenomeBatch → FeatureEncoder → FeatureBatch → Surrogate の意味変換を担うAdapter subtypeです。SamplingServiceなどの空間の能力とは性格が異なり、代理モデルが学習できる特徴を決めます。 公開importは from saealib.space import FeatureEncoder です。

SearchSpaceが保持するもの#

組み込み空間は表現の制約に応じて次のように分かれます。

  • VectorSpace:固定幅の密な数値ベクトルを扱います。

  • ObjectSpace:任意のオブジェクト表現を保持する最小の空間です。

  • SequenceSpace:長さが変化する系列を扱います。

  • PermutationSpace:順列制約を満たす表現を扱います。

各空間は共通の SearchSpace 契約を満たしますが、サービスの集合と RepresentationSpec の内容は異なります。 たとえば ObjectSpace は既定のサービスを登録しないため、アルゴリズムが要求するサービスを別途提供できる構成にする必要があります。

不変条件#

RepresentationSpec はパラメータの種類、形状、表現種別を記述します。 表現の記述は、候補をどのように保存するかを示すものであり、サンプリングや特徴量化の実装そのものではありません。

サービスはこの差を埋める実行可能な境界です。 現在の実装ではSurrogateManagerの契約がServiceRequirement("FeatureEncoder")を宣言し、VectorSpaceは既定のエンコーダをサービスとして登録するため、数値ベクトル空間では追加設定なしに解決されます。ObjectSpace、PermutationSpace、SequenceSpaceなどでは、利用者がFeatureEncoderを用意しない限り解決されずエラーになります。代理モデルへ何を入力するかは利用者が決めます。

SearchSpaceの拡張#

SearchSpaceは候補の表現、候補生成サービス、表現の妥当性を管理します。 候補の目的関数値、観測の由来、コンポーネント状態、Graphの実行順序は管理しません。 空間はGenomeBatch値の表現規則とサービスを管理し、Populationは実行中のゲノム格納領域を管理します。 Population.genomesはその格納領域を読み取り専用ビューとして公開しますが、不変スナップショットではありません。後続のPopulation更新で内容が変わることがあります。 候補IDやFeedback結果を暗黙に追加することもありません。

新しい候補表現を追加するときは、そのRepresentationSpec、サンプリング、検証、必要なサービスを1つのSearchSpace境界内で定義します。RepresentationSpecをComponentContractへ移さず、ポートのDataSpecとの接続と必要なサービスをCompilerで宣言します。

よくある失敗#

RepresentationSpecとサービス集合は空間の構築時に固定され、CompilerはコンポーネントのServiceRequirementと照合します。sample()が返すGenomeBatchは空間のRepresentationSpecに適合し、validate()は不一致を黙って修復せずValidationResultで報告します。SearchSpaceはサービス実装の状態を所有し、コンポーネントは登録済みサービスを要求して使用します。種別や形状の不一致、必要なサービスの欠落、無効なGenomeBatch値は、CompilerまたはValidationResultのDiagnosticsになります。

候補表現の拡張はフレームワーク拡張を、ポートとDataSpecの境界は宣言要素(Specs)を、候補に対する観測の対応はFeedbackを参照してください。 公開型のimport経路はAPIリファレンスで確認してください。

関連コンポーネント#

  • Problem:目的関数、制約、最適化方向とSearchSpaceを組み合わせます。

  • Population:GenomeBatchと個体の評価結果を扱います。

  • SurrogateManager:FeatureEncoderサービスを要求します。

参照#