Быстрый старт
Запустите свою первую кампанию планирования в двух командах. Обе можно скопировать и вставить, весь путь завершается за секунды на свежем клоне, и каждый результат детерминирован — повторный запуск выводит те же числа.
⚡ Две команды до первого прогона
# 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 — тот же JSON, который потребляет CLI
dispatchatlas-lab --config, — так что скрипт и примеры 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: 0completed_runs: 4 с failed_attempts: 0 означает, что всё сработало: два
решателя запустились каждый против двух экземпляров бенчмарков, и каждый прогон
произвёл допустимое расписание. Любой другой результат указывает на неполную
установку — см. устранение неполадок.
🧩 Термины для первого использования
В сводке выше используется несколько доменных терминов. Весь набор инструментов построен на них:
- Экземпляр бенчмарка — одна сгенерированная задача планирования: набор задач, ресурсы, которые их выполняют, и ограничения между ними.
- Решатель — алгоритм, который назначает задачи ресурсам во времени и возвращает расписание.
- Objective (целевая функция) — величина, которую оптимизирует решатель. Smoke-кампания использует 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: выбранный решатель произвёл допустимое расписание. Три
подвижные части отражают кампанию выше — smoke_benchmark_provider
материализует детерминированный каталог бенчмарков из одного сида,
registry.select фильтрует решатели до тех, что поддерживают цель makespan на
публичном уровне доказательств core, а solver.solve запускается с явными
критериями остановки и сидом, выведенным из стабильных координат, так что прогон
воспроизводится идентично.
🧭 Куда идти дальше
- Пройдите пошаговый обзор — рассказанная небольшая прогулка по всему пути генерация → решение → анализ → исследование, которая опирается на smoke-кампанию, что вы только что запустили.
- Проработайте руководства — сначала сравните два решателя на одном экземпляре бенчмарка, затем запустите небольшую кампанию и прочитайте её результаты.
- Перейдите к движку кампаний и рабочему пространству воспроизводимых кампаний для прогонов с контрольными точками и возможностью возобновления.
- Изучите, как те же метаданные управляют каталогом бенчмарков, предпросмотром результатов и рекомендателем решателей.