本文へスキップ
DispatchAtlas
検索

クイックスタート

2つのコマンドで最初のスケジューリングキャンペーンを実行します。どちらもコピー&ペースト可能で、 全体のパスは新規クローン上で数秒で完了し、すべての結果は決定論的です — 再実行すると同じ数値が出力されます。

最初の実行までの2つのコマンド

# 1 — install the workspace (one time)
uv sync --all-extras --group dev
 
# 2 — build and run the bundled smoke campaign
uv run python experiments/scripts/run_smoke_pilot.py

このスクリプトは設定を experiments/configs/smoke-pilot.json にシリアライズします — これは dispatchatlas-lab --config CLI が読み込むのと同じ JSON です — そのため、スクリプトとトラブルシューティングガイド内の CLI の例は同一のレシピを実行します。

次のような短いサマリーが表示されるはずです:

campaign_id: smoke-pilot
config: ...\experiments\configs\smoke-pilot.json
planned_runs: 4
estimated_wall_time_seconds: 2.0
completed_runs: 4
failed_attempts: 0

completed_runs: 4 かつ failed_attempts: 0 は成功を意味します: 2つのソルバーがそれぞれ2つのベンチマークインスタンスに対して実行され、すべての実行が有効な スケジュールを生成しました。それ以外の結果は不完全なインストールを示しています — トラブルシューティングを参照してください。

🧩 初回利用の用語

上記のサマリーはいくつかのドメイン用語を使用しています。ツールキット全体は これらの上に構築されています:

  • ベンチマークインスタンス — 生成された1つのスケジューリング問題: タスクの集合、 それらを実行するリソース、そしてそれらの間の制約。
  • ソルバー — タスクを時間軸上でリソースに割り当て、スケジュールを返す アルゴリズム。
  • Objective(目的) — ソルバーが最適化する量。スモークキャンペーンは makespan を使用します: 最後のタスクが終了する時点(小さいほど良い)。
  • キャンペーン — 選択されたソルバーを選択されたベンチマークに対して 指定された回数だけ実行し、すべての実行をエビデンスとして記録するバッチ。
  • シード/決定論的 — すべてのランダムな選択を再現可能にする固定された数値で、 同じ入力が常に同じスケジュールを生成するようにします。
  • Feasible(実行可能) — すべてのタスクが配置され、どのリソースも 過剰割り当てされておらず、すべての依存関係が尊重されているスケジュール。

🛠️ 自分で解を構築する

バンドルされたキャンペーンを実行する代わりにコードで単一の解を構築するには、 チェックアウト内の任意の場所にこれを quickstart.py として保存し、 uv run python quickstart.py で実行します:

from dispatchatlas.bench import smoke_benchmark_provider
from dispatchatlas.core import DisclosureLabel, TerminationPolicy, derive_seed
from dispatchatlas.solve import default_solver_registry
 
provider = smoke_benchmark_provider(root_seed=20260527)
problem = provider.get_problem(provider.list_problem_ids()[0])
 
registry = default_solver_registry()
solvers = registry.select(
    objective="makespan",
    disclosure_label=DisclosureLabel.CORE,
)
 
solver = registry.create(solvers[0].solver_id)
run = solver.solve(
    problem=problem,
    stop=TerminationPolicy(max_iterations=solvers[0].default_stop.max_iterations),
    seed=derive_seed(20260527, "docs.quickstart", 0),
)
 
print(run.result.feasible)

これは True を出力します: 選択されたソルバーが実行可能なスケジュールを生成しました。 3つの可動部分は上記のキャンペーンを反映しています — smoke_benchmark_provider は 1つのシードから決定論的なベンチマークカタログを具現化し、 registry.select は公開 core エビデンスティアで makespan 目的を サポートするソルバーにフィルタリングし、solver.solve は安定した座標から 導出されたシードと明示的な停止基準のもとで実行されるため、実行は同一に再現されます。

🧭 次に進む先

  1. ガイドツアーに参加しましょう — 実行したばかりの スモークキャンペーンを土台に、生成 → 解決 → 分析 → 探索という全体の流れを 小規模にたどる、ナレーション付きのウォークスルーです。
  2. チュートリアルに取り組みましょう — まず1つのベンチマークインスタンスで 2つのソルバーを比較し、次に小さなキャンペーンを実行してその結果を読みます。
  3. チェックポイント付きで再開可能な実行のために、キャンペーンエンジン再現可能なキャンペーンワークスペースへとステップアップします。
  4. 同じメタデータがどのように ベンチマークカタログ結果プレビューソルバーレコメンダーを駆動するかを探ります。