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

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 行含まれている必要があります。空白文字、コメント、docstring のみを含むブロックは、AlphaEvolve が進化させるための可変ロジックがないため、検証エラーで拒否されます。
  • ネストなし: ネストされた evolve ブロックはサポートされていません。

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

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

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

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

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

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

検索スペースを過度に制限しない

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

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

目標に合わせた戦略的なブロック配置

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

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

構造適合性の最適化: 線形フレームワークを維持しながら、複雑な分析式やカスタムの数学変換を検出する場合は、可変ブロックを特徴変換ロジックの周囲に厳密に分離し、ダウンストリーム モデル アーキテクチャを固定して不変に保ちます。

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