検索スペースと決定変数を定義する

AlphaEvolve のユースケースの検索空間と決定変数を定義するには、問題をコードとして適切に定式化し、進化論的ヒューリスティックが反復して改善できるベースライン ソリューションを提供する必要があります。

このプロセスには次の操作が含まれます。

  • ターゲット コンテキストの提供: 最適化ユースケースの背景、ドメインルール、パフォーマンスの境界を確立します。

  • クリーンなベースラインを提供する: 対象の問題に対するベースライン ソリューションを正しく実装する、明確で構造化されたコードを提供します。

  • 自由度のタグ付け: 明示的な EVOLVE-BLOCK コメントでコードベースにアノテーションを付け、エージェントが変更して探索し、パフォーマンスの高いソリューションを特定できる特定の決定変数、ロジック構造、ルーチンをマークします。

初期プログラムの構造

初期プログラムは、進化型検索の境界を決定する 2 つの主要なブロックタイプで構成されます。

  1. 不変コードブロック: 検索空間を制約するボイラープレート コード、ヘルパー関数、依存関係、またはソリューションのパフォーマンスに影響しないタスク(標準の前処理ステップやデータ処理ルーティンなど)を実行する依存関係。

  2. 変更可能なコードブロック(EVOLVE-BLOCK): エージェントが探索して変更できる特定の決定変数、ロジック構造、分析式を含むターゲット リージョン。

    import numpy as np
    # Code to constrain the search space (Immutable)
    def def_preprocessing():
        """Feature engineering and preprocessing."""
        pass
    
    # EVOLVE-BLOCK-START
    # Mutable block: Provides degrees of freedom for AlphaEvolve to optimize
    def model_tuning():
        """Model tuning function: parametrized to take features."""
        pass
    # EVOLVE-BLOCK-END
    
    # Boilerplate code that does not impact solution performance (Immutable)
    def batch_predictions():
        """Inference function: batch predictions to test performance."""
        pass
    

EVOLVE-BLOCK の形式設定のルールは次のとおりです。

  • 単独の行: EVOLVE-BLOCK-START と EVOLVE-BLOCK-END のコメント マーカーは、単独の行に単独で記述する必要があります。空白文字やコメントの接頭辞(# や // など)を除き、マーカーと同じ行にコードやその他のコンテンツを配置しないでください。
  • 編集可能なコードが必要: 開始マーカーと終了マーカーの間の領域には、編集可能なコードが少なくとも 1 行含まれている必要があります。空白文字、コメント、ドキュメント文字列のみを含むブロックは、AlphaEvolve が進化するための変更可能なロジックがないため、検証エラーで拒否されます。
  • ネストなし: ネストされた evolve ブロックはサポートされていません。

検索空間を制約するためのベスト プラクティス

不変のインポートをどのように配置し、進化ブロックを明示的に配置するかは、AlphaEvolve の運用境界を示しています。

ライブラリのインポートと依存関係を管理する

AlphaEvolve は、本番環境で有効な外部ライブラリを本質的に判断できません。

オープン探索を許可するには: 指標を最大化するために機械学習パッケージまたは数学パッケージが許容される場合は、変更可能な EVOLVE-BLOCK の内部にインポートを配置します。これにより、AlphaEvolve は代替フレームワークを自由に置き換えることができます(sklearn を TensorFlow や xgboost に置き換えるなど)。

厳格なツールチェーンを適用するには: すべてのモデルが特定のパッケージから取得される必要がある場合は、そのパッケージを進化ブロックの外側の不変インポートとして宣言します。AlphaEvolve が検索中にそのパッケージから追加の内部モジュールを必要とする場合でも、グローバル制約に違反することなく、変更可能なスペース内でローカルにインポートできます。

制約が多すぎる検索スペースを避ける

可能な限り多くのハード制約を、初期プログラムまたはユーザーが提供した追加のテキスト コンテキスト内の不変のコードブロックとして定式化します。これにより、エージェントが構造的に実行不可能な解決策を探索する可能性を最小限に抑えることができます。

ただし、進化論的アプローチが冗長になるほど検索空間を狭めないでください。たとえば、AlphaEvolve で単一パラメータの線形回帰のみを使用するように強制すると、問題は標準のグリッド検索ユーティリティで解析できる狭い構成スペースに縮小されます。代わりに、評価基準でソフト制約を負のペナルティとして使用して、探索を妨げることなくガイドします。

目標を達成するための戦略的なブロック配置

EVOLVE-BLOCK のスコープを変更すると、パイプラインの最適化目標全体がシフトします。

アウトオブサンプル(OOS)キャリブレーションの最適化: 広範なアルゴリズムの検出が目標の場合は、モデルのチューニングと初期化ルーチン全体をブロックで囲みます。

構造的適合性の最適化: 線形フレームワークを維持しながら、複雑な分析式やカスタムの数学的変換を見つけたい場合は、下流のモデル アーキテクチャを固定して不変に保ちながら、特徴変換ロジックの周りに可変ブロックを厳密に分離します。

モジュール階層の保持(HDL/Verilog の例): 構造コードブロックの構成を最適化するときは、EVOLVE-BLOCK-START タグと EVOLVE-BLOCK-END タグをモジュール定義の境界内に厳密に保持します。これにより、検索ヒューリスティックが、単一のクリーンに包含されたモジュールを複数のマッピングされていないフローティング サブモジュールに置き換えようとするなど、構造的に無効な移動を行うのを防ぎます。