SearchSpace#
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サービスを要求します。